From b53974b75b86d9f9f7fd7c55e3f52707146d594a Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 5 Dec 2024 17:40:29 -0600 Subject: [PATCH 1/2] validator management passing --- .../ERC20TokenStakingManager.go | 1391 +--------- .../NativeTokenStakingManager.go | 1391 +--------- .../PoAValidatorManager.go | 1428 +--------- .../ValidatorManager/ValidatorManager.go | 2448 +++++++++++++++++ .../IACP99ValidatorManager.go | 431 +++ .../IPoSValidatorManager.go | 1076 +------- .../IValidatorManager/IValidatorManager.go | 80 +- .../ERC20TokenStakingManager.sol | 2 +- .../NativeTokenStakingManager.sol | 2 +- .../validator-manager/PoAValidatorManager.sol | 58 +- .../validator-manager/PoSValidatorManager.sol | 121 +- .../validator-manager/ValidatorManager.sol | 83 +- .../validator-manager/ValidatorMessages.sol | 2 +- .../interfaces/IACP99ValidatorManager.sol | 99 + .../interfaces/IERC20TokenStakingManager.sol | 2 +- .../interfaces/INativeTokenStakingManager.sol | 2 +- .../interfaces/IPoAValidatorManager.sol | 4 +- .../interfaces/IPoSValidatorManager.sol | 11 +- .../interfaces/IValidatorManager.sol | 95 +- scripts/abi_bindings.sh | 2 +- .../validator-manager/erc20_token_staking.go | 314 +-- .../validator-manager/native_token_staking.go | 508 ++-- tests/flows/validator-manager/poa_to_pos.go | 470 ++-- .../validator_manager_suite_test.go | 20 +- tests/utils/validator_manager.go | 1621 ++++++----- 25 files changed, 5056 insertions(+), 6605 deletions(-) create mode 100644 abi-bindings/go/validator-manager/ValidatorManager/ValidatorManager.go create mode 100644 abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go create mode 100644 contracts/validator-manager/interfaces/IACP99ValidatorManager.sol diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 5feff8582..a14b47ac4 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -52,7 +52,7 @@ type PChainOwner struct { // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { - BaseSettings ValidatorManagerSettings + ValidatorManager common.Address MinimumStakeAmount *big.Int MaximumStakeAmount *big.Int MinimumStakeDuration uint64 @@ -63,24 +63,6 @@ type PoSValidatorManagerSettings struct { UptimeBlockchainID [32]byte } -// Validator is an auto generated low-level Go binding around an user-defined struct. -type Validator struct { - Status uint8 - NodeID []byte - StartingWeight uint64 - MessageNonce uint64 - Weight uint64 - StartedAt uint64 - EndedAt uint64 -} - -// ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. -type ValidatorManagerSettings struct { - SubnetID [32]byte - ChurnPeriodSeconds uint64 - MaximumChurnPercentage uint8 -} - // ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. type ValidatorMessagesValidationPeriod struct { SubnetID [32]byte @@ -103,8 +85,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615fc4380380615fc483398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615e778061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637d8d2f7711610140578063afb98096116100bf578063c974d1b611610084578063c974d1b614610532578063d5f20ff61461053a578063df93d8de1461055a578063e4a63c4014610564578063fb8b11dd14610578578063fd7ac5e71461058b575f80fd5b8063afb98096146104c3578063b771b3bc146104ea578063ba3a4b97146104f8578063bc5fbfec1461050b578063bee0a03f1461051f575f80fd5b80639ae06447116101055780639ae06447146104775780639e1bc4ef1461048a5780639e478eea1461049d578063a3a65e48146104b0578063a9778a7a146102f9575f80fd5b80637d8d2f771461042357806380dd672f146104365780638280a25a146104495780638ef34c981461045157806393e2459814610464575f80fd5b8063467ef06f116101cc578063620658561161019157806362065856146103b257806366435abf146103c5578063732214f8146103d857806376f78621146103df578063785e9e86146103f2575f80fd5b8063467ef06f1461033b5780634bee00401461034e5780635dd6a6cb1461036f57806360305d621461038257806360ad77841461039f575f80fd5b806325e1c7761161021257806325e1c776146102bb5780632e2194d8146102ce57806335455ded146102f957806337b9be8f146103155780633a1cfff614610328575f80fd5b80630118acc41461024e5780630322ed9814610263578063151d30d1146102765780631ec447241461029557806320d91b7a146102a8575b5f80fd5b61026161025c366004614dbb565b61059e565b005b610261610271366004614df6565b6105af565b61027e600a81565b60405160ff90911681526020015b60405180910390f35b6102616102a3366004614dbb565b61083f565b6102616102b6366004614e0d565b61084b565b6102616102c9366004614e5b565b610e01565b6102e16102dc366004614df6565b610e75565b6040516001600160401b03909116815260200161028c565b61030261271081565b60405161ffff909116815260200161028c565b610261610323366004614e90565b610ec9565b610261610336366004614dbb565b610edc565b610261610349366004614ede565b610ee8565b61036161035c366004614f1c565b610fcd565b60405190815260200161028c565b61026161037d366004614e90565b611002565b61038a601481565b60405163ffffffff909116815260200161028c565b6102616103ad366004614e5b565b61100e565b6103616103c0366004614f83565b6112d6565b6102e16103d3366004614df6565b6112f6565b6103615f81565b6102616103ed366004614dbb565b61130a565b5f80516020615dc2833981519152546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b610261610431366004614e90565b611316565b610261610444366004614e5b565b611322565b61027e603081565b61026161045f366004614f9e565b61155c565b610261610472366004614df6565b61163d565b610261610485366004614e90565b6116d1565b610361610498366004614fcc565b6116dd565b6102616104ab366004614fec565b611709565b6102616104be366004614ede565b6117e8565b6103617f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b61040b6005600160991b0181565b610261610506366004614df6565b6119de565b6103615f80516020615de283398151915281565b61026161052d366004614df6565b611c37565b61027e601481565b61054d610548366004614df6565b611d73565b60405161028c9190615094565b6102e16202a30081565b6103615f80516020615dc283398151915281565b610261610586366004614f9e565b611ec2565b610361610599366004615114565b611f89565b6105aa8383835f611fe4565b505050565b5f8181525f80516020615e028339815191526020526040808220815160e0810190925280545f80516020615de283398151915293929190829060ff1660058111156105fc576105fc61501f565b600581111561060d5761060d61501f565b81526020016001820180546106219061517f565b80601f016020809104026020016040519081016040528092919081815260200182805461064d9061517f565b80156106985780601f1061066f57610100808354040283529160200191610698565b820191905f5260205f20905b81548152906001019060200180831161067b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156107035761070361501f565b1461073f575f8381526005830160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156107b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107dd91908101906152c0565b6040518263ffffffff1660e01b81526004016107f991906152f1565b6020604051808303815f875af1158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190615303565b50505050565b6108398383835f612010565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020615de28339815191529060ff161561089d57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109049190615303565b83602001351461092d576040516372b0a7e760e11b815260208401356004820152602401610736565b3061093e606085016040860161531a565b6001600160a01b0316146109815761095c606084016040850161531a565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610736565b5f61098f6060850185615335565b905090505f805b828163ffffffff161015610bf7575f6109b26060880188615335565b8363ffffffff168181106109c8576109c861537a565b90506020028101906109da919061538e565b6109e3906153f9565b80516040519192505f9160068801916109fb91615474565b90815260200160405180910390205414610a2b57805160405163a41f772f60e01b815261073691906004016152f1565b5f6002885f013584604051602001610a5a92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a7491615474565b602060405180830381855afa158015610a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ab29190615303565b90508086600601835f0151604051610aca9190615474565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610b0a90826154c9565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610b8a9085615598565b8251604051919550610b9b91615474565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610bf0906155b8565b9050610996565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610c3a910460ff16836155da565b6001600160401b03161015610c6d57604051633e1a785160e01b81526001600160401b0382166004820152602401610736565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c918761233d565b604001516040518263ffffffff1660e01b8152600401610cb191906152f1565b602060405180830381865af4158015610ccc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf09190615303565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610d2a9190615730565b5f60405180830381865af4158015610d44573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d6b91908101906152c0565b90505f600282604051610d7e9190615474565b602060405180830381855afa158015610d99573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610dbc9190615303565b9050828114610de85760405163baaea89d60e01b81526004810182905260248101849052604401610736565b5050506007909201805460ff1916600117905550505050565b610e0a82612453565b610e2a576040516330efa98b60e01b815260048101839052602401610736565b5f610e3483611d73565b5190506002816005811115610e4b57610e4b61501f565b14610e6b578060405163170cc93360e21b815260040161073691906151b7565b610839838361247c565b5f80610e7f61271b565b60030154610e8d90846157c4565b9050801580610ea257506001600160401b0381115b15610ec35760405163222d164360e21b815260048101849052602401610736565b92915050565b610ed584848484612010565b5050505050565b6108398383835f61273f565b610ef0612961565b5f610ef961271b565b90505f80610f0684612998565b91509150610f1382612453565b610f1f57505050610fb4565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f56575080610f74565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f8957610f8961501f565b03610f9857610f988185612d50565b610fae82610fa985604001516112d6565b612d7a565b50505050505b610fca60015f80516020615e2283398151915255565b50565b5f610fd6612961565b610fe285858585612db0565b9050610ffa60015f80516020615e2283398151915255565b949350505050565b61083984848484612f15565b5f61101761271b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156110505761105061501f565b60038111156110615761106161501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6110d782611d73565b90506001835160038111156110ee576110ee61501f565b1461110f578251604051633b0d540d60e21b815261073691906004016157e3565b6004815160058111156111245761112461501f565b0361113a5761113286612f41565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61115f8961233d565b604001516040518263ffffffff1660e01b815260040161117f91906152f1565b606060405180830381865af415801561119a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111be91906157fd565b50915091508184146111eb57846040015160405163089938b360e11b815260040161073691815260200190565b806001600160401b031683606001516001600160401b031610806112245750806001600160401b03168560a001516001600160401b0316115b1561124d57604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6112df61271b565b60030154610ec3906001600160401b03841661583d565b5f61130082611d73565b6080015192915050565b6105aa8383835f612f15565b610ed58484848461273f565b61132a612961565b5f61133361271b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561136c5761136c61501f565b600381111561137d5761137d61501f565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113f6576113f661501f565b14611417578051604051633b0d540d60e21b815261073691906004016157e3565b60046114268260400151611d73565b5160058111156114385761143861501f565b14611537575f6114478461233d565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161148691906152f1565b606060405180830381865af41580156114a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c591906157fd565b5091509150818460400151146114f15760405163089938b360e11b815260048101839052602401610736565b806001600160401b03168460c001516001600160401b0316111561153357604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5050505b61154084612f41565b505061155860015f80516020615e2283398151915255565b5050565b5f61156561271b565b90506001600160a01b0382166115995760405163caa903f960e01b81526001600160a01b0383166004820152602401610736565b5f8381526006820160205260409020546001600160a01b031633146115df57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610736565b336001600160a01b0383160361160e575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f61164661271b565b90505f61165283611d73565b51905060048160058111156116695761166961501f565b14611689578060405163170cc93360e21b815260040161073691906151b7565b5f8381526006830160205260409020546001600160a01b031633146116ae57336115ba565b5f8381526006830160205260409020546105aa906001600160a01b031684612d50565b61083984848484611fe4565b5f6116e6612961565b6116f183338461314e565b9050610ec360015f80516020615e2283398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611752575080546001600160401b03808416911610155b156117705760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561179b8484613393565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615de28339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61181b8661233d565b604001516040518263ffffffff1660e01b815260040161183b91906152f1565b6040805180830381865af4158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190615854565b915091508061189f57604051632d07135360e01b81528115156004820152602401610736565b5f828152600484016020526040902080546118b99061517f565b90505f036118dd5760405163089938b360e11b815260048101839052602401610736565b60015f838152600580860160205260409091205460ff16908111156119045761190461501f565b14611937575f8281526005840160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b5f828152600484016020526040812061194f91614d0a565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f6119e761271b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a2057611a2061501f565b6003811115611a3157611a3161501f565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611aaa57611aaa61501f565b14158015611acb5750600381516003811115611ac857611ac861501f565b14155b15611aec578051604051633b0d540d60e21b815261073691906004016157e3565b5f611afa8260400151611d73565b905080606001516001600160401b03165f03611b2c576040516339b894f960e21b815260048101859052602401610736565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b9a93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611bb4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bdb91908101906152c0565b6040518263ffffffff1660e01b8152600401611bf791906152f1565b6020604051808303815f875af1158015611c13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed59190615303565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020615de28339815191529190611c7e9061517f565b90505f03611ca25760405163089938b360e11b815260048101839052602401610736565b60015f838152600580840160205260409091205460ff1690811115611cc957611cc961501f565b14611cfc575f8281526005820160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92611d339201615877565b6020604051808303815f875af1158015611d4f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa9190615303565b611d7b614d41565b5f8281525f80516020615e02833981519152602052604090819020815160e0810190925280545f80516020615de2833981519152929190829060ff166005811115611dc857611dc861501f565b6005811115611dd957611dd961501f565b8152602001600182018054611ded9061517f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e199061517f565b8015611e645780601f10611e3b57610100808354040283529160200191611e64565b820191905f5260205f20905b815481529060010190602001808311611e4757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ef45760405163caa903f960e01b81526001600160a01b0382166004820152602401610736565b5f611efd61271b565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611f2b57336115ba565b336001600160a01b03831603611f5a575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615de2833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0690611fcc9086908690615901565b90815260200160405180910390205491505092915050565b611ff084848484612010565b61083957604051631036cf9160e11b815260048101859052602401610736565b5f8061201a61271b565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156120535761205361501f565b60038111156120645761206461501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6120da82611d73565b90506002835160038111156120f1576120f161501f565b14612112578251604051633b0d540d60e21b815261073691906004016157e3565b60208301516001600160a01b031633146121ae575f8281526006850160205260409020546001600160a01b0316331461214b57336115ba565b5f82815260068501602052604090205460a082015161217a91600160b01b90046001600160401b031690615598565b6001600160401b03164210156121ae5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b6002815160058111156121c3576121c361501f565b036122e557600284015460808401516121e5916001600160401b031690615598565b6001600160401b03164210156122195760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b871561222b57612229828861247c565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161226491849161225f9190615910565b6133ad565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b03909316929092179091556122a784888c613584565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610ffa9350505050565b6004815160058111156122fa576122fa61501f565b036123215761230a83878b613584565b5061231489612f41565b6001945050505050610ffa565b805160405163170cc93360e21b815261073691906004016151b7565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c89190810190615930565b91509150806123ea57604051636b2f19e960e01b815260040160405180910390fd5b815115612410578151604051636ba589a560e01b81526004810191909152602401610736565b60208201516001600160a01b03161561244c576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5092915050565b5f8061245d61271b565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156124c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124ee9190810190615930565b915091508061251057604051636b2f19e960e01b815260040160405180910390fd5b5f61251961271b565b6005810154845191925014612547578251604051636ba589a560e01b81526004810191909152602401610736565b60208301516001600160a01b031615612583576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b60208301516001600160a01b0316156125bf576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125fc91906152f1565b6040805180830381865af4158015612616573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061263a91906159c0565b915091508188146126615760405163089938b360e11b815260048101899052602401610736565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126f2575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612710565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f8061274961271b565b90505f61275587613769565b905061276087612453565b61276f57600192505050610ffa565b5f8781526006830160205260409020546001600160a01b0316331461279457336115ba565b5f87815260068301602052604090205460a08201516127c391600160b01b90046001600160401b031690615598565b6001600160401b03168160c001516001600160401b0316101561280a5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610736565b5f86156128225761281b888761247c565b9050612840565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612865906112d6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156128ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f29190615303565b90508084600a015f8b81526020019081526020015f205f82825461291691906159e3565b90915550506001600160a01b03861615612953575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615e2283398151915280546001190161299257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129a1614d41565b5f80516020615de28339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6129d48861233d565b604001516040518263ffffffff1660e01b81526004016129f491906152f1565b6040805180830381865af4158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190615854565b915091508015612a5957604051632d07135360e01b81528115156004820152602401610736565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612a9057612a9061501f565b6005811115612aa157612aa161501f565b8152602001600182018054612ab59061517f565b80601f0160208091040260200160405190810160405280929190818152602001828054612ae19061517f565b8015612b2c5780601f10612b0357610100808354040283529160200191612b2c565b820191905f5260205f20905b815481529060010190602001808311612b0f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b9757612b9761501f565b14158015612bb85750600181516005811115612bb557612bb561501f565b14155b15612bd957805160405163170cc93360e21b815261073691906004016151b7565b600381516005811115612bee57612bee61501f565b03612bfc5760048152612c01565b600581525b836006018160200151604051612c179190615474565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612c5a57612c5a61501f565b021790555060208201516001820190612c7390826154c9565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612d1957612d1961501f565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d5961271b565b5f838152600a82016020526040812080549190559091506108398482613a4e565b5f80516020615dc283398151915254611558906001600160a01b03168383613ac4565b60015f80516020615e2283398151915255565b5f80612dba61271b565b600281015490915061ffff600160401b90910481169086161080612de3575061271061ffff8616115b15612e0757604051635f12e6c360e11b815261ffff86166004820152602401610736565b60028101546001600160401b039081169085161015612e43576040516202a06d60e11b81526001600160401b0385166004820152602401610736565b8054831080612e555750806001015483115b15612e765760405163222d164360e21b815260048101849052602401610736565b5f612e8084613b23565b90505f612e8c82610e75565b90505f612e998983613b46565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612f218484848461273f565b61083957604051635bff683f60e11b815260048101859052602401610736565b5f612f4a61271b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f8357612f8361501f565b6003811115612f9457612f9461501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506130317fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b82608001516130409190615598565b6001600160401b03164210156130745760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130c4575060208201516130e2565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130ef8388866140b8565b915091506131088560200151610fa987606001516112d6565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f8061315861271b565b90505f6131676102dc85613b23565b90505f61317387611d73565b905061317e87612453565b61319e576040516330efa98b60e01b815260048101889052602401610736565b6002815160058111156131b3576131b361501f565b146131d457805160405163170cc93360e21b815261073691906004016151b7565b5f8282608001516131e59190615598565b905083600201600a9054906101000a90046001600160401b0316826040015161320e91906155da565b6001600160401b0316816001600160401b0316111561324b57604051636d51fe0560e11b81526001600160401b0382166004820152602401610736565b5f806132578a846133ad565b915091505f8a8360405160200161328592919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b61339b614165565b6133a4826141b0565b6115588161422a565b5f8281525f80516020615e02833981519152602052604081206002015481905f80516020615de283398151915290600160801b90046001600160401b03166133f58582614292565b5f6133ff876144fc565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156134a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134cf91908101906152c0565b6040518263ffffffff1660e01b81526004016134eb91906152f1565b6020604051808303815f875af1158015613507573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352b9190615303565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061358e61271b565b90505f61359e8660400151611d73565b90505f6003825160058111156135b6576135b661501f565b14806135d457506004825160058111156135d2576135d261501f565b145b156135e4575060c0810151613621565b6002825160058111156135f9576135f961501f565b03613605575042613621565b815160405163170cc93360e21b815261073691906004016151b7565b86608001516001600160401b0316816001600160401b031611613649575f935050505061338c565b600483015460608801515f916001600160a01b031690634f22429f9061366e906112d6565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156136ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137139190615303565b5f878152600886016020526040902081905590506001600160a01b03871615612710575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b613771614d41565b5f8281525f80516020615e028339815191526020526040808220815160e0810190925280545f80516020615de283398151915293929190829060ff1660058111156137be576137be61501f565b60058111156137cf576137cf61501f565b81526020016001820180546137e39061517f565b80601f016020809104026020016040519081016040528092919081815260200182805461380f9061517f565b801561385a5780601f106138315761010080835404028352916020019161385a565b820191905f5260205f20905b81548152906001019060200180831161383d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156138c8576138c861501f565b146138fb575f8481526005830160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff19169060019084908111156139405761394061501f565b02179055506020820151600182019061395990826154c9565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139f785826133ad565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b5f5f80516020615dc283398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613aa9575f80fd5b505af1158015613abb573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b038381166024830152604482018390526105aa91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614571565b5f610ec3825f80516020615dc2833981519152546001600160a01b0316906145d2565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613b8a57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615de283398151915242613ba96060860160408701614f83565b6001600160401b0316111580613be35750613bc76202a300426159e3565b613bd76060860160408701614f83565b6001600160401b031610155b15613c1d57613bf86060850160408601614f83565b604051635879da1360e11b81526001600160401b039091166004820152602401610736565b60038101546001600160401b0390613c4090600160401b900482168583166159e3565b1115613c6a57604051633e1a785160e01b81526001600160401b0384166004820152602401610736565b613c7f613c7a60608601866159f6565b6145de565b613c8f613c7a60808601866159f6565b6030613c9e6020860186615a0a565b905014613cd057613cb26020850185615a0a565b6040516326475b2f60e11b8152610736925060040190815260200190565b613cda8480615a0a565b90505f03613d0757613cec8480615a0a565b604051633e08a12560e11b8152600401610736929190615a4c565b5f60068201613d168680615a0a565b604051613d24929190615901565b90815260200160405180910390205414613d5d57613d428480615a0a565b60405163a41f772f60e01b8152600401610736929190615a4c565b613d67835f614292565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613da48a80615a0a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613dec908b018b615a0a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613e3560608b0160408c01614f83565b6001600160401b03168152602001613e5060608b018b6159f6565b613e5990615a5f565b8152602001613e6b60808b018b6159f6565b613e7490615a5f565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613ea29190615b8c565b5f60405180830381865af4158015613ebc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ee39190810190615c43565b5f82815260048601602052604090209193509150613f0182826154c9565b508160068401613f118880615a0a565b604051613f1f929190615901565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f5b9085906004016152f1565b6020604051808303815f875af1158015613f77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9b9190615303565b5f8481526005860160205260409020805460ff191660011790559050613fc18780615a0a565b5f858152600587016020526040902060010191613fdf919083615c86565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061403e8880615a0a565b60405161404c929190615901565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061408a9190614f83565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140c361271b565b5f86815260088201602052604081208054908290559192509081908015614157575f8781526006850160205260409020546127109061410d90600160a01b900461ffff168361583d565b61411791906157c4565b91508184600a015f8981526020019081526020015f205f82825461413b91906159e3565b9091555061414b90508282615d3f565b92506141578984613a4e565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166141ae57604051631afcd79f60e31b815260040160405180910390fd5b565b6141b8614165565b6141c181614747565b6141c9614760565b610fca606082013560808301356141e660c0850160a08601614f83565b6141f660e0860160c08701615d52565b614207610100870160e08801615d6b565b61010087013561421f61014089016101208a0161531a565b886101400135614770565b614232614165565b5f80516020615dc28339815191526001600160a01b03821661427257604051637330680360e01b81526001600160a01b0383166004820152602401610736565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615de28339815191525f6001600160401b0380841690851611156142c6576142bf8385615910565b90506142d3565b6142d08484615910565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061434057506001840154815161433c916001600160401b0316906159e3565b8210155b15614368576001600160401b0380841660608301528282526040820151166020820152614387565b828160600181815161437a9190615598565b6001600160401b03169052505b60608101516143979060646155da565b602082015160018601546001600160401b0392909216916143c29190600160401b900460ff166155da565b6001600160401b031610156143fb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610736565b858160400181815161440d9190615598565b6001600160401b031690525060408101805186919061442d908390615910565b6001600160401b03169052506001840154604082015160649161445b91600160401b90910460ff16906155da565b6001600160401b03161015614494576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610736565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020615e028339815191526020526040812060020180545f80516020615de2833981519152919060089061454690600160401b90046001600160401b0316615d8b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6145856001600160a01b03841683614955565b905080515f141580156145a95750808060200190518101906145a79190615da6565b155b156105aa57604051635274afe760e01b81526001600160a01b0384166004820152602401610736565b5f61338c833384614962565b6145eb6020820182614ede565b63ffffffff1615801561460b57506146066020820182615335565b151590505b156146525761461d6020820182614ede565b61462a6020830183615335565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610736565b61465f6020820182615335565b905061466e6020830183614ede565b63ffffffff1611156146875761461d6020820182614ede565b60015b6146976020830183615335565b9050811015611558576146ad6020830183615335565b6146b8600184615d3f565b8181106146c7576146c761537a565b90506020020160208101906146dc919061531a565b6001600160a01b03166146f26020840184615335565b838181106147025761470261537a565b9050602002016020810190614717919061531a565b6001600160a01b0316101561473f57604051630dbc8d5f60e31b815260040160405180910390fd5b60010161468a565b61474f614165565b614757614ac5565b610fca81614acd565b614768614165565b6141ae614bb5565b614778614165565b5f61478161271b565b905061ffff86161580614799575061271061ffff8716115b156147bd57604051635f12e6c360e11b815261ffff87166004820152602401610736565b878911156147e15760405163222d164360e21b8152600481018a9052602401610736565b60ff851615806147f45750600a60ff8616115b156148175760405163170db35960e31b815260ff86166004820152602401610736565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b0316101561487e576040516202a06d60e11b81526001600160401b0388166004820152602401610736565b835f0361489e5760405163a733007160e01b815260040160405180910390fd5b816148bf57604051632f6bd1db60e01b815260048101839052602401610736565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061338c83835f614bbd565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156149a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149cc9190615303565b90506149e36001600160a01b038616853086614c4c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614a27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a4b9190615303565b9050818111614ab15760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610736565b614abb8282615d3f565b9695505050505050565b6141ae614165565b614ad5614165565b80355f80516020615de28339815191529081556014614afa6060840160408501615d6b565b60ff161180614b195750614b146060830160408401615d6b565b60ff16155b15614b4d57614b2e6060830160408401615d6b565b604051634a59bbff60e11b815260ff9091166004820152602401610736565b614b5d6060830160408401615d6b565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614b8e6040830160208401614f83565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d9d614165565b606081471015614be25760405163cd78605960e01b8152306004820152602401610736565b5f80856001600160a01b03168486604051614bfd9190615474565b5f6040518083038185875af1925050503d805f8114614c37576040519150601f19603f3d011682016040523d82523d5f602084013e614c3c565b606091505b5091509150614abb868383614c85565b6040516001600160a01b0384811660248301528381166044830152606482018390526108399186918216906323b872dd90608401613af1565b606082614c9a57614c9582614ce1565b61338c565b8151158015614cb157506001600160a01b0384163b155b15614cda57604051639996b31560e01b81526001600160a01b0385166004820152602401610736565b508061338c565b805115614cf15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614d169061517f565b5f825580601f10614d25575050565b601f0160209004905f5260205f2090810190610fca9190614d7e565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614d92575f8155600101614d7f565b5090565b8015158114610fca575f80fd5b803563ffffffff81168114614db6575f80fd5b919050565b5f805f60608486031215614dcd575f80fd5b833592506020840135614ddf81614d96565b9150614ded60408501614da3565b90509250925092565b5f60208284031215614e06575f80fd5b5035919050565b5f8060408385031215614e1e575f80fd5b82356001600160401b03811115614e33575f80fd5b830160808186031215614e44575f80fd5b9150614e5260208401614da3565b90509250929050565b5f8060408385031215614e6c575f80fd5b82359150614e5260208401614da3565b6001600160a01b0381168114610fca575f80fd5b5f805f8060808587031215614ea3575f80fd5b843593506020850135614eb581614d96565b9250614ec360408601614da3565b91506060850135614ed381614e7c565b939692955090935050565b5f60208284031215614eee575f80fd5b61338c82614da3565b803561ffff81168114614db6575f80fd5b6001600160401b0381168114610fca575f80fd5b5f805f8060808587031215614f2f575f80fd5b84356001600160401b03811115614f44575f80fd5b850160a08188031215614f55575f80fd5b9350614f6360208601614ef7565b92506040850135614f7381614f08565b9396929550929360600135925050565b5f60208284031215614f93575f80fd5b813561338c81614f08565b5f8060408385031215614faf575f80fd5b823591506020830135614fc181614e7c565b809150509250929050565b5f8060408385031215614fdd575f80fd5b50508035926020909101359150565b5f80828403610180811215614fff575f80fd5b6101608082121561500e575f80fd5b8493508301359050614fc181614e7c565b634e487b7160e01b5f52602160045260245ffd5b600681106150435761504361501f565b9052565b5f5b83811015615061578181015183820152602001615049565b50505f910152565b5f8151808452615080816020860160208601615047565b601f01601f19169290920160200192915050565b602081526150a6602082018351615033565b5f602083015160e060408401526150c1610100840182615069565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215615125575f80fd5b82356001600160401b038082111561513b575f80fd5b818501915085601f83011261514e575f80fd5b81358181111561515c575f80fd5b86602082850101111561516d575f80fd5b60209290920196919550909350505050565b600181811c9082168061519357607f821691505b6020821081036151b157634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ec38284615033565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156151fb576151fb6151c5565b60405290565b604080519081016001600160401b03811182821017156151fb576151fb6151c5565b604051601f8201601f191681016001600160401b038111828210171561524b5761524b6151c5565b604052919050565b5f6001600160401b0382111561526b5761526b6151c5565b50601f01601f191660200190565b5f82601f830112615288575f80fd5b815161529b61529682615253565b615223565b8181528460208386010111156152af575f80fd5b610ffa826020830160208701615047565b5f602082840312156152d0575f80fd5b81516001600160401b038111156152e5575f80fd5b610ffa84828501615279565b602081525f61338c6020830184615069565b5f60208284031215615313575f80fd5b5051919050565b5f6020828403121561532a575f80fd5b813561338c81614e7c565b5f808335601e1984360301811261534a575f80fd5b8301803591506001600160401b03821115615363575f80fd5b6020019150600581901b360382131561357d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126153a2575f80fd5b9190910192915050565b5f82601f8301126153bb575f80fd5b81356153c961529682615253565b8181528460208386010111156153dd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615409575f80fd5b6154116151d9565b82356001600160401b0380821115615427575f80fd5b615433368387016153ac565b83526020850135915080821115615448575f80fd5b50615455368286016153ac565b602083015250604083013561546981614f08565b604082015292915050565b5f82516153a2818460208701615047565b601f8211156105aa57805f5260205f20601f840160051c810160208510156154aa5750805b601f840160051c820191505b81811015610ed5575f81556001016154b6565b81516001600160401b038111156154e2576154e26151c5565b6154f6816154f0845461517f565b84615485565b602080601f831160018114615529575f84156155125750858301515b5f19600386901b1c1916600185901b178555611132565b5f85815260208120601f198616915b8281101561555757888601518255948401946001909101908401615538565b508582101561557457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908082111561244c5761244c615584565b5f63ffffffff8083168181036155d0576155d0615584565b6001019392505050565b6001600160401b038181168382160280821691908281146155fd576155fd615584565b505092915050565b5f808335601e1984360301811261561a575f80fd5b83016020810192503590506001600160401b03811115615638575f80fd5b80360382131561357d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561572357848303601f19018952813536889003605e190181126156aa575f80fd5b870160606156b88280615605565b8287526156c88388018284615646565b925050506156d886830183615605565b868303888801526156ea838284615646565b9250505060408083013592506156ff83614f08565b6001600160401b039290921694909101939093529783019790830190600101615685565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561575481614e7c565b6001600160a01b031660608381019190915283013536849003601e1901811261577b575f80fd5b83016020810190356001600160401b03811115615796575f80fd5b8060051b36038213156157a7575f80fd5b6080808501526157bb60a08501828461566e565b95945050505050565b5f826157de57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106157f7576157f761501f565b91905290565b5f805f6060848603121561580f575f80fd5b83519250602084015161582181614f08565b604085015190925061583281614f08565b809150509250925092565b8082028115828204841417610ec357610ec3615584565b5f8060408385031215615865575f80fd5b825191506020830151614fc181614d96565b5f60208083525f84546158898161517f565b806020870152604060018084165f81146158aa57600181146158c6576158f3565b60ff19851660408a0152604084151560051b8a010195506158f3565b895f5260205f205f5b858110156158ea5781548b82018601529083019088016158cf565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0382811682821603908082111561244c5761244c615584565b5f8060408385031215615941575f80fd5b82516001600160401b0380821115615957575f80fd5b908401906060828703121561596a575f80fd5b6159726151d9565b82518152602083015161598481614e7c565b602082015260408301518281111561599a575f80fd5b6159a688828601615279565b6040830152508094505050506020830151614fc181614d96565b5f80604083850312156159d1575f80fd5b825191506020830151614fc181614f08565b80820180821115610ec357610ec3615584565b5f8235603e198336030181126153a2575f80fd5b5f808335601e19843603018112615a1f575f80fd5b8301803591506001600160401b03821115615a38575f80fd5b60200191503681900382131561357d575f80fd5b602081525f610ffa602083018486615646565b5f60408236031215615a6f575f80fd5b615a77615201565b615a8083614da3565b81526020808401356001600160401b0380821115615a9c575f80fd5b9085019036601f830112615aae575f80fd5b813581811115615ac057615ac06151c5565b8060051b9150615ad1848301615223565b8181529183018401918481019036841115615aea575f80fd5b938501935b83851015615b145784359250615b0483614e7c565b8282529385019390850190615aef565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615b815784516001600160a01b03168252938301936001929092019190830190615b58565b509695505050505050565b60208152815160208201525f602083015160e06040840152615bb2610100840182615069565b90506040840151601f1980858403016060860152615bd08383615069565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615c008383615b26565b925060a08601519150808584030160c086015250615c1e8282615b26565b91505060c0840151615c3b60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615c54575f80fd5b8251915060208301516001600160401b03811115615c70575f80fd5b615c7c85828601615279565b9150509250929050565b6001600160401b03831115615c9d57615c9d6151c5565b615cb183615cab835461517f565b83615485565b5f601f841160018114615ce2575f8515615ccb5750838201355b5f19600387901b1c1916600186901b178355610ed5565b5f83815260208120601f198716915b82811015615d115786850135825560209485019460019092019101615cf1565b5086821015615d2d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610ec357610ec3615584565b5f60208284031215615d62575f80fd5b61338c82614ef7565b5f60208284031215615d7b575f80fd5b813560ff8116811461338c575f80fd5b5f6001600160401b038083168181036155d0576155d0615584565b5f60208284031215615db6575f80fd5b815161338c81614d9656fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026c2eadba6547bb2f7267c122bc78f893cbc1371e1143d68c5b5bb8b2dc7c54d64736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051613e71380380613e7183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613d248061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063785e9e86116100fe578063a3a65e481161009e578063b771b3bc1161006e578063b771b3bc14610413578063ba3a4b9714610421578063e4a63c4014610434578063fb8b11dd14610448575f80fd5b8063a3a65e48146103c6578063a9778a7a1461025a578063afb98096146103d9578063b5c9349814610400575f80fd5b80638ef34c98116100d95780638ef34c981461037a57806393e245981461038d5780639ae06447146103a05780639e1bc4ef146103b3575f80fd5b8063785e9e86146103235780637d8d2f771461035457806380dd672f14610367575f80fd5b80633a1cfff61161017457806360ad77841161014457806360ad7784146102e357806362065856146102f6578063732214f81461030957806376f7862114610310575f80fd5b80633a1cfff614610289578063467ef06f1461029c5780634bee0040146102af5780635dd6a6cb146102d0575f80fd5b806325e1c776116101af57806325e1c7761461021c5780632e2194d81461022f57806335455ded1461025a57806337b9be8f14610276575f80fd5b80630118acc4146101d5578063151d30d1146101ea5780631ec4472414610209575b5f80fd5b6101e86101e336600461338b565b61045b565b005b6101f2600a81565b60405160ff90911681526020015b60405180910390f35b6101e861021736600461338b565b61046c565b6101e861022a3660046133c6565b61047e565b61024261023d3660046133f0565b610561565b6040516001600160401b039091168152602001610200565b61026361271081565b60405161ffff9091168152602001610200565b6101e861028436600461341b565b6105b5565b6101e861029736600461338b565b6105c8565b6101e86102aa366004613469565b610636565b6102c26102bd3660046134a7565b6106bf565b604051908152602001610200565b6101e86102de36600461341b565b6106f4565b6101e86102f13660046133c6565b610700565b6102c261030436600461350e565b610a37565b6102c25f81565b6101e861031e36600461338b565b610a57565b5f80516020613caf833981519152546001600160a01b03165b6040516001600160a01b039091168152602001610200565b6101e861036236600461341b565b610a63565b6101e86103753660046133c6565b610ad1565b6101e8610388366004613529565b610d7c565b6101e861039b3660046133f0565b610e5d565b6101e86103ae36600461341b565b610f5b565b6102c26103c1366004613557565b610f67565b6101e86103d4366004613469565b610f93565b6102c27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101e861040e366004613577565b61100d565b61033c6005600160991b0181565b6101e861042f3660046133f0565b6110f1565b6102c25f80516020613caf83398151915281565b6101e8610456366004613529565b6113bb565b6104678383835f611482565b505050565b6104788383835f6114ae565b50505050565b610487826118bd565b6104ac576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f6104b56118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156104f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610520919081019061369b565b519050600281600581111561053757610537613768565b14610557578060405163170cc93360e21b81526004016104a3919061377c565b610478838361190a565b5f8061056b6118e6565b6004015461057990846137aa565b905080158061058e57506001600160401b0381115b156105af5760405163222d164360e21b8152600481018490526024016104a3565b92915050565b6105c1848484846114ae565b5050505050565b5f6105d16118e6565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610614575f80fd5b505af1158015610626573d5f803e3d5ffd5b505050506105c18484845f611ba9565b5f61063f6118e6565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610690573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b491906137c9565b905061046781611e35565b5f6106c8611f57565b6106d485858585611f8e565b90506106ec60015f80516020613ccf83398151915255565b949350505050565b61047884848484612172565b5f6107096118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561074257610742613768565b600381111561075357610753613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6107c86118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610833919081019061369b565b905060018351600381111561084a5761084a613768565b1461086b578251604051633b0d540d60e21b81526104a391906004016137e0565b60048151600581111561088057610880613768565b036108965761088e86612200565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6108bb89612444565b604001516040518263ffffffff1660e01b81526004016108db919061381f565b606060405180830381865af41580156108f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091a9190613831565b509150915081841461094757846040015160405163089938b360e11b81526004016104a391815260200190565b806001600160401b031683606001516001600160401b031610806109805750806001600160401b03168560a001516001600160401b0316115b156109a957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610a406118e6565b600401546105af906001600160401b038416613871565b6104678383835f612172565b5f610a6c6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610aaf575f80fd5b505af1158015610ac1573d5f803e3d5ffd5b5050505061088e85858585611ba9565b610ad9611f57565b5f610ae26118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610b1b57610b1b613768565b6003811115610b2c57610b2c613768565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610ba557610ba5613768565b14610bc6578051604051633b0d540d60e21b81526104a391906004016137e0565b6004610bd06118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610c059160040190815260200190565b5f60405180830381865afa158015610c1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c46919081019061369b565b516005811115610c5857610c58613768565b14610d57575f610c6784612444565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610ca6919061381f565b606060405180830381865af4158015610cc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce59190613831565b509150915081846040015114610d115760405163089938b360e11b8152600481018390526024016104a3565b806001600160401b03168460c001516001600160401b03161115610d5357604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5050505b610d6084612200565b5050610d7860015f80516020613ccf83398151915255565b5050565b5f610d856118e6565b90506001600160a01b038216610db95760405163caa903f960e01b81526001600160a01b03831660048201526024016104a3565b5f8381526007820160205260409020546001600160a01b03163314610dff57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104a3565b336001600160a01b03831603610e2e575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610e666118e6565b90505f610e716118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610edc919081019061369b565b5190506004816005811115610ef357610ef3613768565b14610f13578060405163170cc93360e21b81526004016104a3919061377c565b5f8381526007830160205260409020546001600160a01b03163314610f385733610dda565b5f838152600783016020526040902054610467906001600160a01b03168461255a565b61047884848484611482565b5f610f70611f57565b610f7b833384612584565b90506105af60015f80516020613ccf83398151915255565b5f610f9c6118e6565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af1158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046791906137c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611056575080546001600160401b03808416911610155b156110745760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561109f8484612897565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6110fa6118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561113357611133613768565b600381111561114457611144613768565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156111bd576111bd613768565b141580156111de57506003815160038111156111db576111db613768565b14155b156111ff578051604051633b0d540d60e21b81526104a391906004016137e0565b5f6112086118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff69161123d9160040190815260200190565b5f60405180830381865afa158015611257573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127e919081019061369b565b905080606001516001600160401b03165f036112b0576040516339b894f960e21b8152600481018590526024016104a3565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361131e93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611338573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135f9190810190613888565b6040518263ffffffff1660e01b815260040161137b919061381f565b6020604051808303815f875af1158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c191906137c9565b6001600160a01b0381166113ed5760405163caa903f960e01b81526001600160a01b03821660048201526024016104a3565b5f6113f66118e6565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146114245733610dda565b336001600160a01b03831603611453575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b61148e848484846114ae565b61047857604051631036cf9160e11b8152600481018590526024016104a3565b5f806114b86118e6565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114f1576114f1613768565b600381111561150257611502613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6115776118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e2919081019061369b565b90506002835160038111156115f9576115f9613768565b1461161a578251604051633b0d540d60e21b81526104a391906004016137e0565b60208301516001600160a01b031633146116b6575f8281526007850160205260409020546001600160a01b031633146116535733610dda565b5f82815260078501602052604090205460a082015161168291600160b01b90046001600160401b0316906138b9565b6001600160401b03164210156116b65760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b6002815160058111156116cb576116cb613768565b0361186557600384015460808401516116ed916001600160401b0316906138b9565b6001600160401b03164210156117215760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b871561173357611731828861190a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161177791906138d9565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156117c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e491906138f9565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561182784888c6128b1565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506106ec9350505050565b60048151600581111561187a5761187a613768565b036118a15761188a83878b6128b1565b5061189489612200565b60019450505050506106ec565b805160405163170cc93360e21b81526104a3919060040161377c565b5f806118c76118e6565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611955573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261197c9190810190613914565b915091508061199e57604051636b2f19e960e01b815260040160405180910390fd5b5f6119a76118e6565b60068101548451919250146119d5578251604051636ba589a560e01b815260048101919091526024016104a3565b60208301516001600160a01b031615611a11576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b60208301516001600160a01b031615611a4d576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611a8a919061381f565b6040805180830381865af4158015611aa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac891906139ba565b91509150818814611aef5760405163089938b360e11b8152600481018990526024016104a3565b5f8881526007840160205260409020600101546001600160401b039081169082161115611b80575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611b9e565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611bb36118e6565b90505f611bbe6118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611c02573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c29919081019061369b565b9050611c34876118bd565b611c43576001925050506106ec565b5f8781526007830160205260409020546001600160a01b03163314611c685733610dda565b5f87815260078301602052604090205460a0820151611c9791600160b01b90046001600160401b0316906138b9565b6001600160401b03168160c001516001600160401b03161015611cde5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104a3565b5f8615611cf657611cef888761190a565b9050611d14565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611d3990610a37565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc691906137c9565b90508084600b015f8b81526020019081526020015f205f828254611dea91906139dd565b90915550506001600160a01b03861615611e27575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611e3e6118e6565b90505f611e496118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611e8d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611eb4919081019061369b565b9050611ebf836118bd565b611ec857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680611eff575080611f1d565b5f858152600c85016020526040902080546001600160a01b03191690555b600483516005811115611f3257611f32613768565b03611f4157611f41818661255a565b6105c182611f528560400151610a37565b612b07565b5f80516020613ccf833981519152805460011901611f8857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f80611f986118e6565b600381015490915061ffff600160401b90910481169086161080611fc1575061271061ffff8616115b15611fe557604051635f12e6c360e11b815261ffff861660048201526024016104a3565b60038101546001600160401b039081169085161015612021576040516202a06d60e11b81526001600160401b03851660048201526024016104a3565b80600101548310806120365750806002015483115b156120575760405163222d164360e21b8152600481018490526024016104a3565b5f61206184612b2a565b90505f61206d82610561565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906120a3908c908690600401613b19565b6020604051808303815f875af11580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e391906137c9565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b60015f80516020613ccf83398151915255565b5f61217b6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156121be575f80fd5b505af11580156121d0573d5f803e3d5ffd5b505050506121e085858585611ba9565b6105c157604051635bff683f60e11b8152600481018690526024016104a3565b5f6122096118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561224257612242613768565b600381111561225357612253613768565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612303573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232791906138f9565b826080015161233691906138b9565b6001600160401b031642101561236a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806123ba575060208201516123d8565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806123e5838886612b4d565b915091506123fe8560200151611f528760600151610a37565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156124a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124cf9190810190613914565b91509150806124f157604051636b2f19e960e01b815260040160405180910390fd5b815115612517578151604051636ba589a560e01b815260048101919091526024016104a3565b60208201516001600160a01b031615612553576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5092915050565b5f6125636118e6565b5f838152600b82016020526040812080549190559091506104788482612bfa565b5f8061258e6118e6565b90505f61259d61023d85612b2a565b90505f6125a86118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156125ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612613919081019061369b565b905061261e876118bd565b61263e576040516330efa98b60e01b8152600481018890526024016104a3565b60028151600581111561265357612653613768565b1461267457805160405163170cc93360e21b81526104a3919060040161377c565b5f82826080015161268591906138b9565b905083600301600a9054906101000a90046001600160401b031682604001516126ae9190613be6565b6001600160401b0316816001600160401b031611156126eb57604051636d51fe0560e11b81526001600160401b03821660048201526024016104a3565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276591906138f9565b90505f898260405160200161279192919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a4955050505050505b9392505050565b61289f612c70565b6128a882612cbb565b610d7881612d39565b5f806128bb6118e6565b90505f6128c66118e6565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916128fb9160040190815260200190565b5f60405180830381865afa158015612915573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293c919081019061369b565b90505f60038251600581111561295457612954613768565b1480612972575060048251600581111561297057612970613768565b145b15612982575060c08101516129bf565b60028251600581111561299757612997613768565b036129a35750426129bf565b815160405163170cc93360e21b81526104a3919060040161377c565b86608001516001600160401b0316816001600160401b0316116129e7575f9350505050612890565b600583015460608801515f916001600160a01b031690634f22429f90612a0c90610a37565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612a8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab191906137c9565b5f878152600986016020526040902081905590506001600160a01b03871615611b9e575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f80516020613caf83398151915254610d78906001600160a01b03168383612da1565b5f6105af825f80516020613caf833981519152546001600160a01b031690612e00565b5f805f612b586118e6565b5f86815260098201602052604081208054908290559192509081908015612bec575f87815260078501602052604090205461271090612ba290600160a01b900461ffff1683613871565b612bac91906137aa565b91508184600b015f8981526020019081526020015f205f828254612bd091906139dd565b90915550612be090508282613c11565b9250612bec8984612bfa565b509097909650945050505050565b5f5f80516020613caf83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612c55575f80fd5b505af1158015612c67573d5f803e3d5ffd5b50505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612cb957604051631afcd79f60e31b815260040160405180910390fd5b565b612cc3612c70565b612ccb612e0c565b612d36612cdb6020830183613c24565b60208301356040840135612cf5608086016060870161350e565b612d0560a0870160808801613c3f565b612d1560c0880160a08901613c58565b60c0880135612d2b6101008a0160e08b01613c24565b896101000135612e1c565b50565b612d41612c70565b5f80516020613caf8339815191526001600160a01b038216612d8157604051637330680360e01b81526001600160a01b03831660048201526024016104a3565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0383811660248301526044820183905261046791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613045565b5f6128908333846130a6565b612e14612c70565b612cb9613209565b612e24612c70565b5f612e2d6118e6565b905061ffff86161580612e45575061271061ffff8716115b15612e6957604051635f12e6c360e11b815261ffff871660048201526024016104a3565b87891115612e8d5760405163222d164360e21b8152600481018a90526024016104a3565b60ff85161580612ea05750600a60ff8616115b15612ec35760405163170db35960e31b815260ff861660048201526024016104a3565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2391906138f9565b6001600160401b0316876001600160401b03161015612f5f576040516202a06d60e11b81526001600160401b03881660048201526024016104a3565b835f03612f7f5760405163a733007160e01b815260040160405180910390fd5b81612fa057604051632f6bd1db60e01b8152600481018390526024016104a3565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f6130596001600160a01b03841683613211565b905080515f1415801561307d57508080602001905181019061307b9190613c78565b155b1561046757604051635274afe760e01b81526001600160a01b03841660048201526024016104a3565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156130ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061311091906137c9565b90506131276001600160a01b03861685308661321e565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561316b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061318f91906137c9565b90508181116131f55760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104a3565b6131ff8282613c11565b9695505050505050565b61215f612c70565b606061289083835f613257565b6040516001600160a01b0384811660248301528381166044830152606482018390526104789186918216906323b872dd90608401612dce565b60608147101561327c5760405163cd78605960e01b81523060048201526024016104a3565b5f80856001600160a01b031684866040516132979190613c93565b5f6040518083038185875af1925050503d805f81146132d1576040519150601f19603f3d011682016040523d82523d5f602084013e6132d6565b606091505b50915091506131ff8683836060826132f6576132f18261333d565b612890565b815115801561330d57506001600160a01b0384163b155b1561333657604051639996b31560e01b81526001600160a01b03851660048201526024016104a3565b5080612890565b80511561334d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b8015158114612d36575f80fd5b803563ffffffff81168114613386575f80fd5b919050565b5f805f6060848603121561339d575f80fd5b8335925060208401356133af81613366565b91506133bd60408501613373565b90509250925092565b5f80604083850312156133d7575f80fd5b823591506133e760208401613373565b90509250929050565b5f60208284031215613400575f80fd5b5035919050565b6001600160a01b0381168114612d36575f80fd5b5f805f806080858703121561342e575f80fd5b84359350602085013561344081613366565b925061344e60408601613373565b9150606085013561345e81613407565b939692955090935050565b5f60208284031215613479575f80fd5b61289082613373565b803561ffff81168114613386575f80fd5b6001600160401b0381168114612d36575f80fd5b5f805f80608085870312156134ba575f80fd5b84356001600160401b038111156134cf575f80fd5b850160a081880312156134e0575f80fd5b93506134ee60208601613482565b925060408501356134fe81613493565b9396929550929360600135925050565b5f6020828403121561351e575f80fd5b813561289081613493565b5f806040838503121561353a575f80fd5b82359150602083013561354c81613407565b809150509250929050565b5f8060408385031215613568575f80fd5b50508035926020909101359150565b5f8082840361014081121561358a575f80fd5b61012080821215613599575f80fd5b849350830135905061354c81613407565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156135e0576135e06135aa565b60405290565b805160068110613386575f80fd5b5f5b8381101561360e5781810151838201526020016135f6565b50505f910152565b5f82601f830112613625575f80fd5b81516001600160401b038082111561363f5761363f6135aa565b604051601f8301601f19908116603f01168101908282118183101715613667576136676135aa565b8160405283815286602085880101111561367f575f80fd5b6131ff8460208301602089016135f4565b805161338681613493565b5f602082840312156136ab575f80fd5b81516001600160401b03808211156136c1575f80fd5b9083019060e082860312156136d4575f80fd5b6136dc6135be565b6136e5836135e6565b81526020830151828111156136f8575f80fd5b61370487828601613616565b60208301525061371660408401613690565b604082015261372760608401613690565b606082015261373860808401613690565b608082015261374960a08401613690565b60a082015261375a60c08401613690565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061379057613790613768565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826137c457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156137d9575f80fd5b5051919050565b602081016004831061379057613790613768565b5f815180845261380b8160208601602086016135f4565b601f01601f19169290920160200192915050565b602081525f61289060208301846137f4565b5f805f60608486031215613843575f80fd5b83519250602084015161385581613493565b604085015190925061386681613493565b809150509250925092565b80820281158282048414176105af576105af613796565b5f60208284031215613898575f80fd5b81516001600160401b038111156138ad575f80fd5b6106ec84828501613616565b6001600160401b0381811683821601908082111561255357612553613796565b6001600160401b0382811682821603908082111561255357612553613796565b5f60208284031215613909575f80fd5b815161289081613493565b5f8060408385031215613925575f80fd5b82516001600160401b038082111561393b575f80fd5b908401906060828703121561394e575f80fd5b604051606081018181108382111715613969576139696135aa565b60405282518152602083015161397e81613407565b6020820152604083015182811115613994575f80fd5b6139a088828601613616565b604083015250809450505050602083015161354c81613366565b5f80604083850312156139cb575f80fd5b82519150602083015161354c81613493565b808201808211156105af576105af613796565b5f808335601e19843603018112613a05575f80fd5b83016020810192503590506001600160401b03811115613a23575f80fd5b803603821315613a31575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e19833603018112613a74575f80fd5b90910192915050565b5f6040830163ffffffff613a9084613373565b168452602080840135601e19853603018112613aaa575f80fd5b84016020810190356001600160401b03811115613ac5575f80fd5b8060051b3603821315613ad6575f80fd5b6040602088015292839052915f90606087015b81831015611b9e578435613afc81613407565b6001600160a01b0316815293830193600192909201918301613ae9565b604081525f613b2884856139f0565b60a06040850152613b3d60e085018284613a38565b915050613b4d60208601866139f0565b603f1980868503016060870152613b65848385613a38565b935060408801359250613b7783613493565b6001600160401b0391508183166080870152613b966060890189613a60565b9250808685030160a0870152613bac8484613a7d565b9350613bbb6080890189613a60565b9250808685030160c087015250613bd28383613a7d565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613c0957613c09613796565b505092915050565b818103818111156105af576105af613796565b5f60208284031215613c34575f80fd5b813561289081613407565b5f60208284031215613c4f575f80fd5b61289082613482565b5f60208284031215613c68575f80fd5b813560ff81168114612890575f80fd5b5f60208284031215613c88575f80fd5b815161289081613366565b5f8251613ca48184602087016135f4565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122089bc226e3548669376f8122795bdb77aabe290cc8849535c50d47279a32e7a1764736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -277,37 +259,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _ERC20TokenStakingManager.Contract.ADDRESSLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) @@ -339,37 +290,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONV return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _ERC20TokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - // ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // // Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) @@ -401,37 +321,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STA return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) } -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ERC20TokenStakingManager.CallOpts) -} - // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) @@ -463,37 +352,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMD return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ERC20TokenStakingManager.CallOpts) -} - // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) @@ -587,37 +445,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBL return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) -} - // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) @@ -680,99 +507,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) Erc20() return _ERC20TokenStakingManager.Contract.Erc20(&_ERC20TokenStakingManager.CallOpts) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.RegisteredValidators(&_ERC20TokenStakingManager.CallOpts, nodeID) -} - // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) @@ -1066,23 +800,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Forc return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation0(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } -// Initialize is a paid mutator transaction binding the contract method 0x9e478eea. +// Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) } -// Initialize is a paid mutator transaction binding the contract method 0x9e478eea. +// Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) } -// Initialize is a paid mutator transaction binding the contract method 0x9e478eea. +// Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) } @@ -1213,69 +947,6 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Init return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorSet(&_ERC20TokenStakingManager.TransactOpts, conversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendRegisterValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) -} - // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() @@ -1542,19 +1213,18 @@ func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Close() error { // ERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the ERC20TokenStakingManager contract. type ERC20TokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20TokenStakingManagerDelegatorAddedIterator, error) { var delegationIDRule []interface{} @@ -1577,9 +1247,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat return &ERC20TokenStakingManagerDelegatorAddedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} @@ -1627,9 +1297,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato }), nil } -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*ERC20TokenStakingManagerDelegatorAdded, error) { event := new(ERC20TokenStakingManagerDelegatorAdded) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { @@ -1946,9 +1616,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegato return event, nil } -// ERC20TokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { - Event *ERC20TokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitializedIterator struct { + Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1962,7 +1632,7 @@ type ERC20TokenStakingManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { +func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1971,7 +1641,7 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1986,7 +1656,7 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2002,61 +1672,41 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { +func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error { +func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight uint64 - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2066,8 +1716,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialV select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2088,21 +1738,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialV }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitializedIterator struct { - Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log +// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdatedIterator struct { + Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2116,7 +1766,7 @@ type ERC20TokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2125,7 +1775,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2140,7 +1790,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2156,162 +1806,28 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _ERC20TokenStakingManager.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(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdatedIterator struct { - Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -2379,783 +1895,10 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUp return event, nil } -// ERC20TokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreatedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight uint64 - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { - event := new(ERC20TokenStakingManagerValidationPeriodCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEndedIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ERC20TokenStakingManagerValidationPeriodEnded, error) { - event := new(ERC20TokenStakingManagerValidationPeriodEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *ERC20TokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight uint64 - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { - event := new(ERC20TokenStakingManagerValidationPeriodRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight uint64 - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdateIterator struct { - Event *ERC20TokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - Weight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { - event := new(ERC20TokenStakingManagerValidatorWeightUpdate) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea2646970667358221220195ae55415373c0b17ffe6a3bfeb5bce00f43c97d28a367c9b31b608481bce4864736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 902d5b281..1d54d5302 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -52,7 +52,7 @@ type PChainOwner struct { // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { - BaseSettings ValidatorManagerSettings + ValidatorManager common.Address MinimumStakeAmount *big.Int MaximumStakeAmount *big.Int MinimumStakeDuration uint64 @@ -63,24 +63,6 @@ type PoSValidatorManagerSettings struct { UptimeBlockchainID [32]byte } -// Validator is an auto generated low-level Go binding around an user-defined struct. -type Validator struct { - Status uint8 - NodeID []byte - StartingWeight uint64 - MessageNonce uint64 - Weight uint64 - StartedAt uint64 - EndedAt uint64 -} - -// ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. -type ValidatorManagerSettings struct { - SubnetID [32]byte - ChurnPeriodSeconds uint64 - MaximumChurnPercentage uint8 -} - // ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. type ValidatorMessagesValidationPeriod struct { SubnetID [32]byte @@ -103,8 +85,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615cff380380615cff83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bb28061014d5f395ff3fe608060405260043610610233575f3560e01c80637d8d2f7711610129578063b771b3bc116100a8578063c974d1b61161006d578063c974d1b614610690578063d5f20ff6146106a4578063df93d8de146106d0578063fb8b11dd146106e6578063fd7ac5e714610705575f80fd5b8063b771b3bc14610605578063ba3a4b971461061f578063bc5fbfec1461063e578063bee0a03f1461065e578063c599e24f1461067d575f80fd5b80639ae06447116100ee5780639ae0644714610581578063a3a65e48146105a0578063a9778a7a14610387578063af2f5feb146105bf578063afb98096146105d2575f80fd5b80637d8d2f77146104f157806380dd672f146105105780638280a25a1461052f5780638ef34c981461054357806393e2459814610562575f80fd5b806337b9be8f116101b557806360ad77841161017a57806360ad778414610454578063620658561461047357806366435abf146104a0578063732214f8146104bf57806376f78621146104d2575f80fd5b806337b9be8f146103af5780633a1cfff6146103ce578063467ef06f146103ed5780635dd6a6cb1461040c57806360305d621461042b575f80fd5b806320d91b7a116101fb57806320d91b7a146102e057806325e1c776146102ff5780632e2194d81461031e578063329c3e121461035557806335455ded14610387575f80fd5b80630118acc4146102375780630322ed98146102585780630ba512d114610277578063151d30d1146102965780631ec44724146102c1575b5f80fd5b348015610242575f80fd5b50610256610251366004614b84565b610724565b005b348015610263575f80fd5b50610256610272366004614bbf565b610735565b348015610282575f80fd5b50610256610291366004614bd6565b6109c5565b3480156102a1575f80fd5b506102aa600a81565b60405160ff90911681526020015b60405180910390f35b3480156102cc575f80fd5b506102566102db366004614b84565b610aa2565b3480156102eb575f80fd5b506102566102fa366004614bed565b610aae565b34801561030a575f80fd5b50610256610319366004614c3b565b611064565b348015610329575f80fd5b5061033d610338366004614bbf565b6110d8565b6040516001600160401b0390911681526020016102b8565b348015610360575f80fd5b5061036f6001600160991b0181565b6040516001600160a01b0390911681526020016102b8565b348015610392575f80fd5b5061039c61271081565b60405161ffff90911681526020016102b8565b3480156103ba575f80fd5b506102566103c9366004614c70565b61112c565b3480156103d9575f80fd5b506102566103e8366004614b84565b61113f565b3480156103f8575f80fd5b50610256610407366004614cbe565b61114b565b348015610417575f80fd5b50610256610426366004614c70565b611230565b348015610436575f80fd5b5061043f601481565b60405163ffffffff90911681526020016102b8565b34801561045f575f80fd5b5061025661046e366004614c3b565b61123c565b34801561047e575f80fd5b5061049261048d366004614ceb565b611504565b6040519081526020016102b8565b3480156104ab575f80fd5b5061033d6104ba366004614bbf565b611524565b3480156104ca575f80fd5b506104925f81565b3480156104dd575f80fd5b506102566104ec366004614b84565b611538565b3480156104fc575f80fd5b5061025661050b366004614c70565b611544565b34801561051b575f80fd5b5061025661052a366004614c3b565b611550565b34801561053a575f80fd5b506102aa603081565b34801561054e575f80fd5b5061025661055d366004614d06565b61178a565b34801561056d575f80fd5b5061025661057c366004614bbf565b61186b565b34801561058c575f80fd5b5061025661059b366004614c70565b6118ff565b3480156105ab575f80fd5b506102566105ba366004614cbe565b61190b565b6104926105cd366004614d45565b611b01565b3480156105dd575f80fd5b506104927f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610610575f80fd5b5061036f6005600160991b0181565b34801561062a575f80fd5b50610256610639366004614bbf565b611b35565b348015610649575f80fd5b506104925f80516020615b1d83398151915281565b348015610669575f80fd5b50610256610678366004614bbf565b611d8e565b61049261068b366004614bbf565b611eca565b34801561069b575f80fd5b506102aa601481565b3480156106af575f80fd5b506106c36106be366004614bbf565b611efb565b6040516102b89190614e1b565b3480156106db575f80fd5b5061033d6202a30081565b3480156106f1575f80fd5b50610256610700366004614d06565b61204a565b348015610710575f80fd5b5061049261071f366004614e9b565b612111565b6107308383835f61216c565b505050565b5f8181525f80516020615b3d8339815191526020526040808220815160e0810190925280545f80516020615b1d83398151915293929190829060ff16600581111561078257610782614da6565b600581111561079357610793614da6565b81526020016001820180546107a790614f06565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390614f06565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561088957610889614da6565b146108c5575f8381526005830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561093c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109639190810190615041565b6040518263ffffffff1660e01b815260040161097f9190615072565b6020604051808303815f875af115801561099b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190615084565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a0e575080546001600160401b03808416911610155b15610a2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a5683612198565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6109bf8383835f6121a9565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020615b1d8339815191529060ff1615610b0057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190615084565b836020013514610b90576040516372b0a7e760e11b8152602084013560048201526024016108bc565b30610ba1606085016040860161509b565b6001600160a01b031614610be457610bbf606084016040850161509b565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016108bc565b5f610bf260608501856150b6565b905090505f805b828163ffffffff161015610e5a575f610c1560608801886150b6565b8363ffffffff16818110610c2b57610c2b6150fb565b9050602002810190610c3d919061510f565b610c469061517a565b80516040519192505f916006880191610c5e916151f5565b90815260200160405180910390205414610c8e57805160405163a41f772f60e01b81526108bc9190600401615072565b5f6002885f013584604051602001610cbd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cd7916151f5565b602060405180830381855afa158015610cf2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d159190615084565b90508086600601835f0151604051610d2d91906151f5565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610d6d908261524a565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610ded9085615319565b8251604051919550610dfe916151f5565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610e5390615339565b9050610bf9565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610e9d910460ff168361535b565b6001600160401b03161015610ed057604051633e1a785160e01b81526001600160401b03821660048201526024016108bc565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610ef4876124de565b604001516040518263ffffffff1660e01b8152600401610f149190615072565b602060405180830381865af4158015610f2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f539190615084565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610f8d91906154b1565b5f60405180830381865af4158015610fa7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fce9190810190615041565b90505f600282604051610fe191906151f5565b602060405180830381855afa158015610ffc573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061101f9190615084565b905082811461104b5760405163baaea89d60e01b815260048101829052602481018490526044016108bc565b5050506007909201805460ff1916600117905550505050565b61106d826125f4565b61108d576040516330efa98b60e01b8152600481018390526024016108bc565b5f61109783611efb565b51905060028160058111156110ae576110ae614da6565b146110ce578060405163170cc93360e21b81526004016108bc9190614f38565b6109bf838361261d565b5f806110e26128bc565b600301546110f09084615545565b905080158061110557506001600160401b0381115b156111265760405163222d164360e21b8152600481018490526024016108bc565b92915050565b611138848484846121a9565b5050505050565b6109bf8383835f6128e0565b611153612b02565b5f61115c6128bc565b90505f8061116984612b39565b91509150611176826125f4565b61118257505050611217565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806111b95750806111d7565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156111ec576111ec614da6565b036111fb576111fb8185612ef1565b6112118261120c8560400151611504565b612f1b565b50505050505b61122d60015f80516020615b5d83398151915255565b50565b6109bf84848484612f41565b5f6112456128bc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127e5761127e614da6565b600381111561128f5761128f614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61130582611efb565b905060018351600381111561131c5761131c614da6565b1461133d578251604051633b0d540d60e21b81526108bc9190600401615564565b60048151600581111561135257611352614da6565b036113685761136086612f6d565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61138d896124de565b604001516040518263ffffffff1660e01b81526004016113ad9190615072565b606060405180830381865af41580156113c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ec919061557e565b509150915081841461141957846040015160405163089938b360e11b81526004016108bc91815260200190565b806001600160401b031683606001516001600160401b031610806114525750806001600160401b03168560a001516001600160401b0316115b1561147b57604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61150d6128bc565b60030154611126906001600160401b0384166155b3565b5f61152e82611efb565b6080015192915050565b6107308383835f612f41565b611138848484846128e0565b611558612b02565b5f6115616128bc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561159a5761159a614da6565b60038111156115ab576115ab614da6565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561162457611624614da6565b14611645578051604051633b0d540d60e21b81526108bc9190600401615564565b60046116548260400151611efb565b51600581111561166657611666614da6565b14611765575f611675846124de565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116b49190615072565b606060405180830381865af41580156116cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f3919061557e565b50915091508184604001511461171f5760405163089938b360e11b8152600481018390526024016108bc565b806001600160401b03168460c001516001600160401b0316111561176157604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5050505b61176e84612f6d565b505061178660015f80516020615b5d83398151915255565b5050565b5f6117936128bc565b90506001600160a01b0382166117c75760405163caa903f960e01b81526001600160a01b03831660048201526024016108bc565b5f8381526006820160205260409020546001600160a01b0316331461180d57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016108bc565b336001600160a01b0383160361183c575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f6118746128bc565b90505f61188083611efb565b519050600481600581111561189757611897614da6565b146118b7578060405163170cc93360e21b81526004016108bc9190614f38565b5f8381526006830160205260409020546001600160a01b031633146118dc57336117e8565b5f838152600683016020526040902054610730906001600160a01b031684612ef1565b6109bf8484848461216c565b5f80516020615b1d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61193e866124de565b604001516040518263ffffffff1660e01b815260040161195e9190615072565b6040805180830381865af4158015611978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199c91906155ca565b91509150806119c257604051632d07135360e01b815281151560048201526024016108bc565b5f828152600484016020526040902080546119dc90614f06565b90505f03611a005760405163089938b360e11b8152600481018390526024016108bc565b60015f838152600580860160205260409091205460ff1690811115611a2757611a27614da6565b14611a5a575f8281526005840160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b5f8281526004840160205260408120611a7291614ad8565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611b0a612b02565b611b168484843461317a565b9050611b2e60015f80516020615b5d83398151915255565b9392505050565b5f611b3e6128bc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b7757611b77614da6565b6003811115611b8857611b88614da6565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611c0157611c01614da6565b14158015611c225750600381516003811115611c1f57611c1f614da6565b14155b15611c43578051604051633b0d540d60e21b81526108bc9190600401615564565b5f611c518260400151611efb565b905080606001516001600160401b03165f03611c83576040516339b894f960e21b8152600481018590526024016108bc565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611cf193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611d0b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d329190810190615041565b6040518263ffffffff1660e01b8152600401611d4e9190615072565b6020604051808303815f875af1158015611d6a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111389190615084565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020615b1d8339815191529190611dd590614f06565b90505f03611df95760405163089938b360e11b8152600481018390526024016108bc565b60015f838152600580840160205260409091205460ff1690811115611e2057611e20614da6565b14611e53575f8281526005820160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92611e8a92016155ed565b6020604051808303815f875af1158015611ea6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107309190615084565b5f611ed3612b02565b611ede8233346132d4565b9050611ef660015f80516020615b5d83398151915255565b919050565b611f03614b0f565b5f8281525f80516020615b3d833981519152602052604090819020815160e0810190925280545f80516020615b1d833981519152929190829060ff166005811115611f5057611f50614da6565b6005811115611f6157611f61614da6565b8152602001600182018054611f7590614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa190614f06565b8015611fec5780601f10611fc357610100808354040283529160200191611fec565b820191905f5260205f20905b815481529060010190602001808311611fcf57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b03811661207c5760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f6120856128bc565b5f8481526007820160205260409020549091506001600160a01b036101009091041633146120b357336117e8565b336001600160a01b038316036120e2575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615b1d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906121549086908690615677565b90815260200160405180910390205491505092915050565b612178848484846121a9565b6109bf57604051631036cf9160e11b8152600481018590526024016108bc565b6121a0613514565b61122d8161355f565b5f806121b36128bc565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121ec576121ec614da6565b60038111156121fd576121fd614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61227382611efb565b905060028351600381111561228a5761228a614da6565b146122ab578251604051633b0d540d60e21b81526108bc9190600401615564565b60208301516001600160a01b03163314612347575f8281526006850160205260409020546001600160a01b031633146122e457336117e8565b5f82815260068501602052604090205460a082015161231391600160b01b90046001600160401b031690615319565b6001600160401b03164210156123475760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b60028151600581111561235c5761235c614da6565b0361247e576002840154608084015161237e916001600160401b031690615319565b6001600160401b03164210156123b25760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b87156123c4576123c2828861261d565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123fd9184916123f89190615686565b6135d9565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561244084888c6137b0565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506124d69350505050565b60048151600581111561249357612493614da6565b036124ba576124a383878b6137b0565b506124ad89612f6d565b60019450505050506124d6565b805160405163170cc93360e21b81526108bc9190600401614f38565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612542573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261256991908101906156a6565b915091508061258b57604051636b2f19e960e01b815260040160405180910390fd5b8151156125b1578151604051636ba589a560e01b815260048101919091526024016108bc565b60208201516001600160a01b0316156125ed576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5092915050565b5f806125fe6128bc565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612668573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261268f91908101906156a6565b91509150806126b157604051636b2f19e960e01b815260040160405180910390fd5b5f6126ba6128bc565b60058101548451919250146126e8578251604051636ba589a560e01b815260048101919091526024016108bc565b60208301516001600160a01b031615612724576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b60208301516001600160a01b031615612760576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b815260040161279d9190615072565b6040805180830381865af41580156127b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127db9190615736565b915091508188146128025760405163089938b360e11b8152600481018990526024016108bc565b5f8881526006840160205260409020600101546001600160401b039081169082161115612893575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26128b1565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128ea6128bc565b90505f6128f687613995565b9050612901876125f4565b612910576001925050506124d6565b5f8781526006830160205260409020546001600160a01b0316331461293557336117e8565b5f87815260068301602052604090205460a082015161296491600160b01b90046001600160401b031690615319565b6001600160401b03168160c001516001600160401b031610156129ab5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016108bc565b5f86156129c3576129bc888761261d565b90506129e1565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612a0690611504565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a939190615084565b90508084600a015f8b81526020019081526020015f205f828254612ab79190615759565b90915550506001600160a01b03861615612af4575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615b5d833981519152805460011901612b3357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b42614b0f565b5f80516020615b1d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b75886124de565b604001516040518263ffffffff1660e01b8152600401612b959190615072565b6040805180830381865af4158015612baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bd391906155ca565b915091508015612bfa57604051632d07135360e01b815281151560048201526024016108bc565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612c3157612c31614da6565b6005811115612c4257612c42614da6565b8152602001600182018054612c5690614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8290614f06565b8015612ccd5780601f10612ca457610100808354040283529160200191612ccd565b820191905f5260205f20905b815481529060010190602001808311612cb057829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d3857612d38614da6565b14158015612d595750600181516005811115612d5657612d56614da6565b14155b15612d7a57805160405163170cc93360e21b81526108bc9190600401614f38565b600381516005811115612d8f57612d8f614da6565b03612d9d5760048152612da2565b600581525b836006018160200151604051612db891906151f5565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612dfb57612dfb614da6565b021790555060208201516001820190612e14908261524a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612eba57612eba614da6565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612efa6128bc565b5f838152600a82016020526040812080549190559091506109bf8482613c7a565b6117866001600160a01b03831682613cd8565b60015f80516020615b5d83398151915255565b612f4d848484846128e0565b6109bf57604051635bff683f60e11b8152600481018590526024016108bc565b5f612f766128bc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612faf57612faf614da6565b6003811115612fc057612fc0614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061305d7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161306c9190615319565b6001600160401b03164210156130a05760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130f05750602082015161310e565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061311b838886613d6b565b91509150613134856020015161120c8760600151611504565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131846128bc565b600281015490915061ffff600160401b909104811690861610806131ad575061271061ffff8616115b156131d157604051635f12e6c360e11b815261ffff861660048201526024016108bc565b60028101546001600160401b03908116908516101561320d576040516202a06d60e11b81526001600160401b03851660048201526024016108bc565b805483108061321f5750806001015483115b156132405760405163222d164360e21b8152600481018490526024016108bc565b825f61324b826110d8565b90505f6132588983613e18565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806132de6128bc565b90505f6132ea846110d8565b90505f6132f687611efb565b9050613301876125f4565b613321576040516330efa98b60e01b8152600481018890526024016108bc565b60028151600581111561333657613336614da6565b1461335757805160405163170cc93360e21b81526108bc9190600401614f38565b5f8282608001516133689190615319565b905083600201600a9054906101000a90046001600160401b03168260400151613391919061535b565b6001600160401b0316816001600160401b031611156133ce57604051636d51fe0560e11b81526001600160401b03821660048201526024016108bc565b5f806133da8a846135d9565b915091505f8a8360405160200161340892919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661355d57604051631afcd79f60e31b815260040160405180910390fd5b565b613567613514565b6135708161438a565b6135786143a3565b61122d6060820135608083013561359560c0850160a08601614ceb565b6135a560e0860160c0870161576c565b6135b6610100870160e08801615785565b6101008701356135ce61014089016101208a0161509b565b8861014001356143b3565b5f8281525f80516020615b3d833981519152602052604081206002015481905f80516020615b1d83398151915290600160801b90046001600160401b03166136218582614598565b5f61362b87614802565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156136d4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136fb9190810190615041565b6040518263ffffffff1660e01b81526004016137179190615072565b6020604051808303815f875af1158015613733573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137579190615084565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137ba6128bc565b90505f6137ca8660400151611efb565b90505f6003825160058111156137e2576137e2614da6565b148061380057506004825160058111156137fe576137fe614da6565b145b15613810575060c081015161384d565b60028251600581111561382557613825614da6565b0361383157504261384d565b815160405163170cc93360e21b81526108bc9190600401614f38565b86608001516001600160401b0316816001600160401b031611613875575f9350505050611b2e565b600483015460608801515f916001600160a01b031690634f22429f9061389a90611504565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561391b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393f9190615084565b5f878152600886016020526040902081905590506001600160a01b038716156128b1575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61399d614b0f565b5f8281525f80516020615b3d8339815191526020526040808220815160e0810190925280545f80516020615b1d83398151915293929190829060ff1660058111156139ea576139ea614da6565b60058111156139fb576139fb614da6565b8152602001600182018054613a0f90614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054613a3b90614f06565b8015613a865780601f10613a5d57610100808354040283529160200191613a86565b820191905f5260205f20905b815481529060010190602001808311613a6957829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613af457613af4614da6565b14613b27575f8481526005830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613b6c57613b6c614da6565b021790555060208201516001820190613b85908261524a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613c2385826135d9565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613cc6575f80fd5b505af1158015611360573d5f803e3d5ffd5b80471015613cfb5760405163cd78605960e01b81523060048201526024016108bc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d44576040519150601f19603f3d011682016040523d82523d5f602084013e613d49565b606091505b505090508061073057604051630a12f52160e11b815260040160405180910390fd5b5f805f613d766128bc565b5f86815260088201602052604081208054908290559192509081908015613e0a575f87815260068501602052604090205461271090613dc090600160a01b900461ffff16836155b3565b613dca9190615545565b91508184600a015f8981526020019081526020015f205f828254613dee9190615759565b90915550613dfe905082826157a5565b9250613e0a8984613c7a565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613e5c57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615b1d83398151915242613e7b6060860160408701614ceb565b6001600160401b0316111580613eb55750613e996202a30042615759565b613ea96060860160408701614ceb565b6001600160401b031610155b15613eef57613eca6060850160408601614ceb565b604051635879da1360e11b81526001600160401b0390911660048201526024016108bc565b60038101546001600160401b0390613f1290600160401b90048216858316615759565b1115613f3c57604051633e1a785160e01b81526001600160401b03841660048201526024016108bc565b613f51613f4c60608601866157b8565b614877565b613f61613f4c60808601866157b8565b6030613f7060208601866157cc565b905014613fa257613f8460208501856157cc565b6040516326475b2f60e11b81526108bc925060040190815260200190565b613fac84806157cc565b90505f03613fd957613fbe84806157cc565b604051633e08a12560e11b81526004016108bc92919061580e565b5f60068201613fe886806157cc565b604051613ff6929190615677565b9081526020016040518091039020541461402f5761401484806157cc565b60405163a41f772f60e01b81526004016108bc92919061580e565b614039835f614598565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016140768a806157cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140be908b018b6157cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161410760608b0160408c01614ceb565b6001600160401b0316815260200161412260608b018b6157b8565b61412b90615821565b815260200161413d60808b018b6157b8565b61414690615821565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401614174919061594e565b5f60405180830381865af415801561418e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b59190810190615a05565b5f828152600486016020526040902091935091506141d3828261524a565b5081600684016141e388806157cc565b6040516141f1929190615677565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061422d908590600401615072565b6020604051808303815f875af1158015614249573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061426d9190615084565b5f8481526005860160205260409020805460ff19166001179055905061429387806157cc565b5f8581526005870160205260409020600101916142b1919083615a48565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061431088806157cc565b60405161431e929190615677565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061435c9190614ceb565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614392613514565b61439a6149e0565b61122d816149e8565b6143ab613514565b61355d614ad0565b6143bb613514565b5f6143c46128bc565b905061ffff861615806143dc575061271061ffff8716115b1561440057604051635f12e6c360e11b815261ffff871660048201526024016108bc565b878911156144245760405163222d164360e21b8152600481018a90526024016108bc565b60ff851615806144375750600a60ff8616115b1561445a5760405163170db35960e31b815260ff861660048201526024016108bc565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b031610156144c1576040516202a06d60e11b81526001600160401b03881660048201526024016108bc565b835f036144e15760405163a733007160e01b815260040160405180910390fd5b8161450257604051632f6bd1db60e01b8152600481018390526024016108bc565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f80516020615b1d8339815191525f6001600160401b0380841690851611156145cc576145c58385615686565b90506145d9565b6145d68484615686565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b9004909216606082015242911580614646575060018401548151614642916001600160401b031690615759565b8210155b1561466e576001600160401b038084166060830152828252604082015116602082015261468d565b82816060018181516146809190615319565b6001600160401b03169052505b606081015161469d90606461535b565b602082015160018601546001600160401b0392909216916146c89190600160401b900460ff1661535b565b6001600160401b0316101561470157606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016108bc565b85816040018181516147139190615319565b6001600160401b0316905250604081018051869190614733908390615686565b6001600160401b03169052506001840154604082015160649161476191600160401b90910460ff169061535b565b6001600160401b0316101561479a576040808201519051633e1a785160e01b81526001600160401b0390911660048201526024016108bc565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020615b3d8339815191526020526040812060020180545f80516020615b1d833981519152919060089061484c90600160401b90046001600160401b0316615b01565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6148846020820182614cbe565b63ffffffff161580156148a4575061489f60208201826150b6565b151590505b156148eb576148b66020820182614cbe565b6148c360208301836150b6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016108bc565b6148f860208201826150b6565b90506149076020830183614cbe565b63ffffffff161115614920576148b66020820182614cbe565b60015b61493060208301836150b6565b90508110156117865761494660208301836150b6565b6149516001846157a5565b818110614960576149606150fb565b9050602002016020810190614975919061509b565b6001600160a01b031661498b60208401846150b6565b8381811061499b5761499b6150fb565b90506020020160208101906149b0919061509b565b6001600160a01b031610156149d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614923565b61355d613514565b6149f0613514565b80355f80516020615b1d8339815191529081556014614a156060840160408501615785565b60ff161180614a345750614a2f6060830160408401615785565b60ff16155b15614a6857614a496060830160408401615785565b604051634a59bbff60e11b815260ff90911660048201526024016108bc565b614a786060830160408401615785565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614aa96040830160208401614ceb565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612f2e613514565b508054614ae490614f06565b5f825580601f10614af3575050565b601f0160209004905f5260205f209081019061122d9190614b4c565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b60575f8155600101614b4d565b5090565b801515811461122d575f80fd5b803563ffffffff81168114611ef6575f80fd5b5f805f60608486031215614b96575f80fd5b833592506020840135614ba881614b64565b9150614bb660408501614b71565b90509250925092565b5f60208284031215614bcf575f80fd5b5035919050565b5f6101608284031215614be7575f80fd5b50919050565b5f8060408385031215614bfe575f80fd5b82356001600160401b03811115614c13575f80fd5b830160808186031215614c24575f80fd5b9150614c3260208401614b71565b90509250929050565b5f8060408385031215614c4c575f80fd5b82359150614c3260208401614b71565b6001600160a01b038116811461122d575f80fd5b5f805f8060808587031215614c83575f80fd5b843593506020850135614c9581614b64565b9250614ca360408601614b71565b91506060850135614cb381614c5c565b939692955090935050565b5f60208284031215614cce575f80fd5b611b2e82614b71565b6001600160401b038116811461122d575f80fd5b5f60208284031215614cfb575f80fd5b8135611b2e81614cd7565b5f8060408385031215614d17575f80fd5b823591506020830135614d2981614c5c565b809150509250929050565b803561ffff81168114611ef6575f80fd5b5f805f60608486031215614d57575f80fd5b83356001600160401b03811115614d6c575f80fd5b840160a08187031215614d7d575f80fd5b9250614d8b60208501614d34565b91506040840135614d9b81614cd7565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60068110614dca57614dca614da6565b9052565b5f5b83811015614de8578181015183820152602001614dd0565b50505f910152565b5f8151808452614e07816020860160208601614dce565b601f01601f19169290920160200192915050565b60208152614e2d602082018351614dba565b5f602083015160e06040840152614e48610100840182614df0565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614eac575f80fd5b82356001600160401b0380821115614ec2575f80fd5b818501915085601f830112614ed5575f80fd5b813581811115614ee3575f80fd5b866020828501011115614ef4575f80fd5b60209290920196919550909350505050565b600181811c90821680614f1a57607f821691505b602082108103614be757634e487b7160e01b5f52602260045260245ffd5b602081016111268284614dba565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f7c57614f7c614f46565b60405290565b604080519081016001600160401b0381118282101715614f7c57614f7c614f46565b604051601f8201601f191681016001600160401b0381118282101715614fcc57614fcc614f46565b604052919050565b5f6001600160401b03821115614fec57614fec614f46565b50601f01601f191660200190565b5f82601f830112615009575f80fd5b815161501c61501782614fd4565b614fa4565b818152846020838601011115615030575f80fd5b6124d6826020830160208701614dce565b5f60208284031215615051575f80fd5b81516001600160401b03811115615066575f80fd5b6124d684828501614ffa565b602081525f611b2e6020830184614df0565b5f60208284031215615094575f80fd5b5051919050565b5f602082840312156150ab575f80fd5b8135611b2e81614c5c565b5f808335601e198436030181126150cb575f80fd5b8301803591506001600160401b038211156150e4575f80fd5b6020019150600581901b36038213156137a9575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615123575f80fd5b9190910192915050565b5f82601f83011261513c575f80fd5b813561514a61501782614fd4565b81815284602083860101111561515e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561518a575f80fd5b615192614f5a565b82356001600160401b03808211156151a8575f80fd5b6151b43683870161512d565b835260208501359150808211156151c9575f80fd5b506151d63682860161512d565b60208301525060408301356151ea81614cd7565b604082015292915050565b5f8251615123818460208701614dce565b601f82111561073057805f5260205f20601f840160051c8101602085101561522b5750805b601f840160051c820191505b81811015611138575f8155600101615237565b81516001600160401b0381111561526357615263614f46565b615277816152718454614f06565b84615206565b602080601f8311600181146152aa575f84156152935750858301515b5f19600386901b1c1916600185901b178555611360565b5f85815260208120601f198616915b828110156152d8578886015182559484019460019091019084016152b9565b50858210156152f557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156125ed576125ed615305565b5f63ffffffff80831681810361535157615351615305565b6001019392505050565b6001600160401b0381811683821602808216919082811461537e5761537e615305565b505092915050565b5f808335601e1984360301811261539b575f80fd5b83016020810192503590506001600160401b038111156153b9575f80fd5b8036038213156137a9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154a457848303601f19018952813536889003605e1901811261542b575f80fd5b870160606154398280615386565b82875261544983880182846153c7565b9250505061545986830183615386565b8683038888015261546b8382846153c7565b92505050604080830135925061548083614cd7565b6001600160401b039290921694909101939093529783019790830190600101615406565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154d581614c5c565b6001600160a01b031660608381019190915283013536849003601e190181126154fc575f80fd5b83016020810190356001600160401b03811115615517575f80fd5b8060051b3603821315615528575f80fd5b60808085015261553c60a0850182846153ef565b95945050505050565b5f8261555f57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061557857615578614da6565b91905290565b5f805f60608486031215615590575f80fd5b8351925060208401516155a281614cd7565b6040850151909250614d9b81614cd7565b808202811582820484141761112657611126615305565b5f80604083850312156155db575f80fd5b825191506020830151614d2981614b64565b5f60208083525f84546155ff81614f06565b806020870152604060018084165f8114615620576001811461563c57615669565b60ff19851660408a0152604084151560051b8a01019550615669565b895f5260205f205f5b858110156156605781548b8201860152908301908801615645565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038281168282160390808211156125ed576125ed615305565b5f80604083850312156156b7575f80fd5b82516001600160401b03808211156156cd575f80fd5b90840190606082870312156156e0575f80fd5b6156e8614f5a565b8251815260208301516156fa81614c5c565b6020820152604083015182811115615710575f80fd5b61571c88828601614ffa565b6040830152508094505050506020830151614d2981614b64565b5f8060408385031215615747575f80fd5b825191506020830151614d2981614cd7565b8082018082111561112657611126615305565b5f6020828403121561577c575f80fd5b611b2e82614d34565b5f60208284031215615795575f80fd5b813560ff81168114611b2e575f80fd5b8181038181111561112657611126615305565b5f8235603e19833603018112615123575f80fd5b5f808335601e198436030181126157e1575f80fd5b8301803591506001600160401b038211156157fa575f80fd5b6020019150368190038213156137a9575f80fd5b602081525f6124d66020830184866153c7565b5f60408236031215615831575f80fd5b615839614f82565b61584283614b71565b81526020808401356001600160401b038082111561585e575f80fd5b9085019036601f830112615870575f80fd5b81358181111561588257615882614f46565b8060051b9150615893848301614fa4565b81815291830184019184810190368411156158ac575f80fd5b938501935b838510156158d657843592506158c683614c5c565b82825293850193908501906158b1565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156159435784516001600160a01b0316825293830193600192909201919083019061591a565b509695505050505050565b60208152815160208201525f602083015160e06040840152615974610100840182614df0565b90506040840151601f19808584030160608601526159928383614df0565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c283836158e8565b925060a08601519150808584030160c0860152506159e082826158e8565b91505060c08401516159fd60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a16575f80fd5b8251915060208301516001600160401b03811115615a32575f80fd5b615a3e85828601614ffa565b9150509250929050565b6001600160401b03831115615a5f57615a5f614f46565b615a7383615a6d8354614f06565b83615206565b5f601f841160018114615aa4575f8515615a8d5750838201355b5f19600387901b1c1916600186901b178355611138565b5f83815260208120601f198716915b82811015615ad35786850135825560209485019460019092019101615ab3565b5086821015615aef575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b038083168181036153515761535161530556fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220518758d0a039f6c47e1f96e3b4d2fa09cf0bd8e79d8bdddfd29c212664c10d2864736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051613b22380380613b2283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6139d58061014d5f395ff3fe6080604052600436106101ba575f3560e01c8063732214f8116100f2578063a3a65e4811610092578063b771b3bc11610062578063b771b3bc146104f2578063ba3a4b971461050c578063c599e24f1461052b578063fb8b11dd1461053e575f80fd5b8063a3a65e481461048d578063a9778a7a146102d0578063af2f5feb146104ac578063afb98096146104bf575f80fd5b806380dd672f116100cd57806380dd672f146104115780638ef34c981461043057806393e245981461044f5780639ae064471461046e575f80fd5b8063732214f8146103c057806376f78621146103d35780637d8d2f77146103f2575f80fd5b806335455ded1161015d578063467ef06f11610138578063467ef06f146103365780635dd6a6cb1461035557806360ad7784146103745780636206585614610393575f80fd5b806335455ded146102d057806337b9be8f146102f85780633a1cfff614610317575f80fd5b80631ec44724116101985780631ec447241461022957806325e1c776146102485780632e2194d814610267578063329c3e121461029e575f80fd5b80630118acc4146101be5780630d436317146101df578063151d30d1146101fe575b5f80fd5b3480156101c9575f80fd5b506101dd6101d83660046130d5565b61055d565b005b3480156101ea575f80fd5b506101dd6101f9366004613110565b61056e565b348015610209575f80fd5b50610212600a81565b60405160ff90911681526020015b60405180910390f35b348015610234575f80fd5b506101dd6102433660046130d5565b610650565b348015610253575f80fd5b506101dd610262366004613127565b610662565b348015610272575f80fd5b50610286610281366004613151565b610745565b6040516001600160401b039091168152602001610220565b3480156102a9575f80fd5b506102b86001600160991b0181565b6040516001600160a01b039091168152602001610220565b3480156102db575f80fd5b506102e561271081565b60405161ffff9091168152602001610220565b348015610303575f80fd5b506101dd61031236600461317c565b610799565b348015610322575f80fd5b506101dd6103313660046130d5565b6107ac565b348015610341575f80fd5b506101dd6103503660046131ca565b61081a565b348015610360575f80fd5b506101dd61036f36600461317c565b6108a3565b34801561037f575f80fd5b506101dd61038e366004613127565b6108af565b34801561039e575f80fd5b506103b26103ad3660046131f7565b610be6565b604051908152602001610220565b3480156103cb575f80fd5b506103b25f81565b3480156103de575f80fd5b506101dd6103ed3660046130d5565b610c06565b3480156103fd575f80fd5b506101dd61040c36600461317c565b610c12565b34801561041c575f80fd5b506101dd61042b366004613127565b610c80565b34801561043b575f80fd5b506101dd61044a366004613212565b610f2b565b34801561045a575f80fd5b506101dd610469366004613151565b61100c565b348015610479575f80fd5b506101dd61048836600461317c565b61110a565b348015610498575f80fd5b506101dd6104a73660046131ca565b611116565b6103b26104ba366004613251565b611190565b3480156104ca575f80fd5b506103b27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104fd575f80fd5b506102b86005600160991b0181565b348015610517575f80fd5b506101dd610526366004613151565b6111c4565b6103b2610539366004613151565b61148e565b348015610549575f80fd5b506101dd610558366004613212565b6114bf565b6105698383835f611586565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806105b7575080546001600160401b03808416911610155b156105d55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556105ff836115b2565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61065c8383835f6115c6565b50505050565b61066b826119dd565b610690576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610699611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156106dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070491908101906133ad565b519050600281600581111561071b5761071b61347a565b1461073b578060405163170cc93360e21b8152600401610687919061348e565b61065c8383611a2a565b5f8061074f611a06565b6004015461075d90846134bc565b905080158061077257506001600160401b0381115b156107935760405163222d164360e21b815260048101849052602401610687565b92915050565b6107a5848484846115c6565b5050505050565b5f6107b5611a06565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156107f8575f80fd5b505af115801561080a573d5f803e3d5ffd5b505050506107a58484845f611cc9565b5f610823611a06565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610874573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089891906134db565b905061056981611f55565b61065c84848484612077565b5f6108b8611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156108f1576108f161347a565b60038111156109025761090261347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610977611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156109bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109e291908101906133ad565b90506001835160038111156109f9576109f961347a565b14610a1a578251604051633b0d540d60e21b815261068791906004016134f2565b600481516005811115610a2f57610a2f61347a565b03610a4557610a3d86612105565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f610a6a89612349565b604001516040518263ffffffff1660e01b8152600401610a8a9190613531565b606060405180830381865af4158015610aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190613543565b5091509150818414610af657846040015160405163089938b360e11b815260040161068791815260200190565b806001600160401b031683606001516001600160401b03161080610b2f5750806001600160401b03168560a001516001600160401b0316115b15610b5857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610bef611a06565b60040154610793906001600160401b038416613578565b6105698383835f612077565b5f610c1b611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610c5e575f80fd5b505af1158015610c70573d5f803e3d5ffd5b50505050610a3d85858585611cc9565b610c8861245f565b5f610c91611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610cca57610cca61347a565b6003811115610cdb57610cdb61347a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610d5457610d5461347a565b14610d75578051604051633b0d540d60e21b815261068791906004016134f2565b6004610d7f611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610db49160040190815260200190565b5f60405180830381865afa158015610dce573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df591908101906133ad565b516005811115610e0757610e0761347a565b14610f06575f610e1684612349565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610e559190613531565b606060405180830381865af4158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613543565b509150915081846040015114610ec05760405163089938b360e11b815260048101839052602401610687565b806001600160401b03168460c001516001600160401b03161115610f0257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5050505b610f0f84612105565b5050610f2760015f8051602061398083398151915255565b5050565b5f610f34611a06565b90506001600160a01b038216610f685760405163caa903f960e01b81526001600160a01b0383166004820152602401610687565b5f8381526007820160205260409020546001600160a01b03163314610fae57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610687565b336001600160a01b03831603610fdd575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611015611a06565b90505f611020611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611064573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261108b91908101906133ad565b51905060048160058111156110a2576110a261347a565b146110c2578060405163170cc93360e21b8152600401610687919061348e565b5f8381526007830160205260409020546001600160a01b031633146110e75733610f89565b5f838152600783016020526040902054610569906001600160a01b0316846124a9565b61065c84848484611586565b5f61111f611a06565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af115801561116c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056991906134db565b5f61119961245f565b6111a5848484346124d3565b90506111bd60015f8051602061398083398151915255565b9392505050565b5f6111cd611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156112065761120661347a565b60038111156112175761121761347a565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156112905761129061347a565b141580156112b157506003815160038111156112ae576112ae61347a565b14155b156112d2578051604051633b0d540d60e21b815261068791906004016134f2565b5f6112db611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916113109160040190815260200190565b5f60405180830381865afa15801561132a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135191908101906133ad565b905080606001516001600160401b03165f03611383576040516339b894f960e21b815260048101859052602401610687565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f936113f193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561140b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611432919081019061358f565b6040518263ffffffff1660e01b815260040161144e9190613531565b6020604051808303815f875af115801561146a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a591906134db565b5f61149761245f565b6114a2823334612699565b90506114ba60015f8051602061398083398151915255565b919050565b6001600160a01b0381166114f15760405163caa903f960e01b81526001600160a01b0382166004820152602401610687565b5f6114fa611a06565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146115285733610f89565b336001600160a01b03831603611557575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b611592848484846115c6565b61065c57604051631036cf9160e11b815260048101859052602401610687565b6115ba6129a7565b6115c3816129f2565b50565b5f806115d0611a06565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156116095761160961347a565b600381111561161a5761161a61347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61168f611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156116d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116fa91908101906133ad565b90506002835160038111156117115761171161347a565b14611732578251604051633b0d540d60e21b815261068791906004016134f2565b60208301516001600160a01b031633146117ce575f8281526007850160205260409020546001600160a01b0316331461176b5733610f89565b5f82815260078501602052604090205460a082015161179a91600160b01b90046001600160401b0316906135c0565b6001600160401b03164210156117ce5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b6002815160058111156117e3576117e361347a565b0361197d5760038401546080840151611805916001600160401b0316906135c0565b6001600160401b03164210156118395760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b871561184b576118498288611a2a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161188f91906135e0565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156118d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fc9190613600565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561193f84888c612a6d565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506119d59350505050565b6004815160058111156119925761199261347a565b036119b9576119a283878b612a6d565b506119ac89612105565b60019450505050506119d5565b805160405163170cc93360e21b8152610687919060040161348e565b949350505050565b5f806119e7611a06565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611a75573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a9c919081019061361b565b9150915080611abe57604051636b2f19e960e01b815260040160405180910390fd5b5f611ac7611a06565b6006810154845191925014611af5578251604051636ba589a560e01b81526004810191909152602401610687565b60208301516001600160a01b031615611b31576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b60208301516001600160a01b031615611b6d576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611baa9190613531565b6040805180830381865af4158015611bc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be891906136c1565b91509150818814611c0f5760405163089938b360e11b815260048101899052602401610687565b5f8881526007840160205260409020600101546001600160401b039081169082161115611ca0575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611cbe565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611cd3611a06565b90505f611cde611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611d22573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d4991908101906133ad565b9050611d54876119dd565b611d63576001925050506119d5565b5f8781526007830160205260409020546001600160a01b03163314611d885733610f89565b5f87815260078301602052604090205460a0820151611db791600160b01b90046001600160401b0316906135c0565b6001600160401b03168160c001516001600160401b03161015611dfe5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610687565b5f8615611e1657611e0f8887611a2a565b9050611e34565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611e5990610be6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee691906134db565b90508084600b015f8b81526020019081526020015f205f828254611f0a91906136e4565b90915550506001600160a01b03861615611f47575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611f5e611a06565b90505f611f69611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611fad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611fd491908101906133ad565b9050611fdf836119dd565b611fe857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b0391821691168061201f57508061203d565b5f858152600c85016020526040902080546001600160a01b03191690555b6004835160058111156120525761205261347a565b036120615761206181866124a9565b6107a5826120728560400151610be6565b612cc3565b5f612080611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156120c3575f80fd5b505af11580156120d5573d5f803e3d5ffd5b505050506120e585858585611cc9565b6107a557604051635bff683f60e11b815260048101869052602401610687565b5f61210e611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121475761214761347a565b60038111156121585761215861347a565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222c9190613600565b826080015161223b91906135c0565b6001600160401b031642101561226f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806122bf575060208201516122dd565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806122ea838886612cd6565b9150915061230385602001516120728760600151610be6565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156123ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d4919081019061361b565b91509150806123f657604051636b2f19e960e01b815260040160405180910390fd5b81511561241c578151604051636ba589a560e01b81526004810191909152602401610687565b60208201516001600160a01b031615612458576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5092915050565b5f8051602061398083398151915280546001190161249057604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f8051602061398083398151915255565b5f6124b2611a06565b5f838152600b820160205260408120805491905590915061065c8482612d83565b5f806124dd611a06565b600381015490915061ffff600160401b90910481169086161080612506575061271061ffff8616115b1561252a57604051635f12e6c360e11b815261ffff86166004820152602401610687565b60038101546001600160401b039081169085161015612566576040516202a06d60e11b81526001600160401b0385166004820152602401610687565b806001015483108061257b5750806002015483115b1561259c5760405163222d164360e21b815260048101849052602401610687565b825f6125a782610745565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906125dd908c908690600401613820565b6020604051808303815f875af11580156125f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261d91906134db565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806126a3611a06565b90505f6126af84610745565b90505f6126ba611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156126fe573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261272591908101906133ad565b9050612730876119dd565b612750576040516330efa98b60e01b815260048101889052602401610687565b6002815160058111156127655761276561347a565b1461278657805160405163170cc93360e21b8152610687919060040161348e565b5f82826080015161279791906135c0565b905083600301600a9054906101000a90046001600160401b031682604001516127c091906138ed565b6001600160401b0316816001600160401b031611156127fd57604051636d51fe0560e11b81526001600160401b0382166004820152602401610687565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128779190613600565b90505f89826040516020016128a392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a49998505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129f057604051631afcd79f60e31b815260040160405180910390fd5b565b6129fa6129a7565b612a02612de1565b6115c3612a126020830183613918565b60208301356040840135612a2c60808601606087016131f7565b612a3c60a0870160808801613933565b612a4c60c0880160a0890161394c565b60c0880135612a626101008a0160e08b01613918565b896101000135612df1565b5f80612a77611a06565b90505f612a82611a06565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691612ab79160040190815260200190565b5f60405180830381865afa158015612ad1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612af891908101906133ad565b90505f600382516005811115612b1057612b1061347a565b1480612b2e5750600482516005811115612b2c57612b2c61347a565b145b15612b3e575060c0810151612b7b565b600282516005811115612b5357612b5361347a565b03612b5f575042612b7b565b815160405163170cc93360e21b8152610687919060040161348e565b86608001516001600160401b0316816001600160401b031611612ba3575f93505050506111bd565b600583015460608801515f916001600160a01b031690634f22429f90612bc890610be6565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6d91906134db565b5f878152600986016020526040902081905590506001600160a01b03871615611cbe575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b610f276001600160a01b0383168261301a565b5f805f612ce1611a06565b5f86815260098201602052604081208054908290559192509081908015612d75575f87815260078501602052604090205461271090612d2b90600160a01b900461ffff1683613578565b612d3591906134bc565b91508184600b015f8981526020019081526020015f205f828254612d5991906136e4565b90915550612d699050828261396c565b9250612d758984612d83565b509097909650945050505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612dcf575f80fd5b505af1158015610a3d573d5f803e3d5ffd5b612de96129a7565b6129f06130ad565b612df96129a7565b5f612e02611a06565b905061ffff86161580612e1a575061271061ffff8716115b15612e3e57604051635f12e6c360e11b815261ffff87166004820152602401610687565b87891115612e625760405163222d164360e21b8152600481018a9052602401610687565b60ff85161580612e755750600a60ff8616115b15612e985760405163170db35960e31b815260ff86166004820152602401610687565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef89190613600565b6001600160401b0316876001600160401b03161015612f34576040516202a06d60e11b81526001600160401b0388166004820152602401610687565b835f03612f545760405163a733007160e01b815260040160405180910390fd5b81612f7557604051632f6bd1db60e01b815260048101839052602401610687565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b8047101561303d5760405163cd78605960e01b8152306004820152602401610687565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613086576040519150601f19603f3d011682016040523d82523d5f602084013e61308b565b606091505b505090508061056957604051630a12f52160e11b815260040160405180910390fd5b6124966129a7565b80151581146115c3575f80fd5b803563ffffffff811681146114ba575f80fd5b5f805f606084860312156130e7575f80fd5b8335925060208401356130f9816130b5565b9150613107604085016130c2565b90509250925092565b5f6101208284031215613121575f80fd5b50919050565b5f8060408385031215613138575f80fd5b82359150613148602084016130c2565b90509250929050565b5f60208284031215613161575f80fd5b5035919050565b6001600160a01b03811681146115c3575f80fd5b5f805f806080858703121561318f575f80fd5b8435935060208501356131a1816130b5565b92506131af604086016130c2565b915060608501356131bf81613168565b939692955090935050565b5f602082840312156131da575f80fd5b6111bd826130c2565b6001600160401b03811681146115c3575f80fd5b5f60208284031215613207575f80fd5b81356111bd816131e3565b5f8060408385031215613223575f80fd5b82359150602083013561323581613168565b809150509250929050565b803561ffff811681146114ba575f80fd5b5f805f60608486031215613263575f80fd5b83356001600160401b03811115613278575f80fd5b840160a08187031215613289575f80fd5b925061329760208501613240565b915060408401356132a7816131e3565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156132e8576132e86132b2565b60405290565b8051600681106114ba575f80fd5b5f5b838110156133165781810151838201526020016132fe565b50505f910152565b5f82601f83011261332d575f80fd5b81516001600160401b0380821115613347576133476132b2565b604051601f8301601f19908116603f0116810190828211818310171561336f5761336f6132b2565b81604052838152866020858801011115613387575f80fd5b6133988460208301602089016132fc565b9695505050505050565b80516114ba816131e3565b5f602082840312156133bd575f80fd5b81516001600160401b03808211156133d3575f80fd5b9083019060e082860312156133e6575f80fd5b6133ee6132c6565b6133f7836132ee565b815260208301518281111561340a575f80fd5b6134168782860161331e565b602083015250613428604084016133a2565b6040820152613439606084016133a2565b606082015261344a608084016133a2565b608082015261345b60a084016133a2565b60a082015261346c60c084016133a2565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106134a2576134a261347a565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826134d657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156134eb575f80fd5b5051919050565b60208101600483106134a2576134a261347a565b5f815180845261351d8160208601602086016132fc565b601f01601f19169290920160200192915050565b602081525f6111bd6020830184613506565b5f805f60608486031215613555575f80fd5b835192506020840151613567816131e3565b60408501519092506132a7816131e3565b8082028115828204841417610793576107936134a8565b5f6020828403121561359f575f80fd5b81516001600160401b038111156135b4575f80fd5b6119d58482850161331e565b6001600160401b03818116838216019080821115612458576124586134a8565b6001600160401b03828116828216039080821115612458576124586134a8565b5f60208284031215613610575f80fd5b81516111bd816131e3565b5f806040838503121561362c575f80fd5b82516001600160401b0380821115613642575f80fd5b9084019060608287031215613655575f80fd5b604051606081018181108382111715613670576136706132b2565b60405282518152602083015161368581613168565b602082015260408301518281111561369b575f80fd5b6136a78882860161331e565b6040830152508094505050506020830151613235816130b5565b5f80604083850312156136d2575f80fd5b825191506020830151613235816131e3565b80820180821115610793576107936134a8565b5f808335601e1984360301811261370c575f80fd5b83016020810192503590506001600160401b0381111561372a575f80fd5b803603821315613738575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e1983360301811261377b575f80fd5b90910192915050565b5f6040830163ffffffff613797846130c2565b168452602080840135601e198536030181126137b1575f80fd5b84016020810190356001600160401b038111156137cc575f80fd5b8060051b36038213156137dd575f80fd5b6040602088015292839052915f90606087015b81831015611cbe57843561380381613168565b6001600160a01b03168152938301936001929092019183016137f0565b604081525f61382f84856136f7565b60a0604085015261384460e08501828461373f565b91505061385460208601866136f7565b603f198086850301606087015261386c84838561373f565b93506040880135925061387e836131e3565b6001600160401b039150818316608087015261389d6060890189613767565b9250808685030160a08701526138b38484613784565b93506138c26080890189613767565b9250808685030160c0870152506138d98383613784565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613910576139106134a8565b505092915050565b5f60208284031215613928575f80fd5b81356111bd81613168565b5f60208284031215613943575f80fd5b6111bd82613240565b5f6020828403121561395c575f80fd5b813560ff811681146111bd575f80fd5b81810381811115610793576107936134a856fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220d6d0b213b72cff6dbea973a984f14a751bc5771c2d8f5e68c26dda6477b1993d64736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -277,37 +259,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transa return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _NativeTokenStakingManager.Contract.ADDRESSLENGTH(&_NativeTokenStakingManager.CallOpts) -} - // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) @@ -339,68 +290,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCO return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) } -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _NativeTokenStakingManager.Contract.BLSPUBLICKEYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_NativeTokenStakingManager.CallOpts) -} - // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) @@ -432,37 +321,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMU return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) } -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_NativeTokenStakingManager.CallOpts) -} - // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) @@ -587,37 +445,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAIN return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) -} - // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) @@ -649,99 +476,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPME return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _NativeTokenStakingManager.Contract.RegisteredValidators(&_NativeTokenStakingManager.CallOpts, nodeID) -} - // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) @@ -1035,23 +769,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Fo return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation0(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } -// Initialize is a paid mutator transaction binding the contract method 0x0ba512d1. +// Initialize is a paid mutator transaction binding the contract method 0x0d436317. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) } -// Initialize is a paid mutator transaction binding the contract method 0x0ba512d1. +// Initialize is a paid mutator transaction binding the contract method 0x0d436317. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } -// Initialize is a paid mutator transaction binding the contract method 0x0ba512d1. +// Initialize is a paid mutator transaction binding the contract method 0x0d436317. // -// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() +// Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } @@ -1182,69 +916,6 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) In return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorSet(&_NativeTokenStakingManager.TransactOpts, conversionData, messageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendRegisterValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) -} - // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() @@ -1511,19 +1182,18 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { // NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. type NativeTokenStakingManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { var delegationIDRule []interface{} @@ -1546,9 +1216,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} @@ -1596,9 +1266,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega }), nil } -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { event := new(NativeTokenStakingManagerDelegatorAdded) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { @@ -1915,9 +1585,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelega return event, nil } -// NativeTokenStakingManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { - Event *NativeTokenStakingManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitializedIterator struct { + Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1931,7 +1601,7 @@ type NativeTokenStakingManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { +func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1940,7 +1610,7 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1955,7 +1625,7 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1971,61 +1641,41 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { +func (it *NativeTokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() error { +func (it *NativeTokenStakingManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight uint64 - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2035,8 +1685,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2057,21 +1707,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitializedIterator struct { - Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log +// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdatedIterator struct { + Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2085,7 +1735,7 @@ type NativeTokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2094,7 +1744,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2109,7 +1759,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2125,162 +1775,28 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitializedIterator) Error() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerInitializedIterator) Close() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerUptimeUpdated struct { + ValidationID [32]byte + Uptime uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.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 (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _NativeTokenStakingManager.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(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.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 (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdatedIterator struct { - Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdated struct { - ValidationID [32]byte - Uptime uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. -// -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { @@ -2348,783 +1864,10 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptime return event, nil } -// NativeTokenStakingManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreatedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight uint64 - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { - event := new(NativeTokenStakingManagerValidationPeriodCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEndedIterator struct { - Event *NativeTokenStakingManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*NativeTokenStakingManagerValidationPeriodEnded, error) { - event := new(NativeTokenStakingManagerValidationPeriodEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegisteredIterator struct { - Event *NativeTokenStakingManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight uint64 - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { - event := new(NativeTokenStakingManagerValidationPeriodRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight uint64 - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerValidatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// NativeTokenStakingManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdateIterator struct { - Event *NativeTokenStakingManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - Weight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { - event := new(NativeTokenStakingManagerValidatorWeightUpdate) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea2646970667358221220195ae55415373c0b17ffe6a3bfeb5bce00f43c97d28a367c9b31b608481bce4864736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 06dddf2b3..9c8e92041 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -50,24 +50,6 @@ type PChainOwner struct { Addresses []common.Address } -// Validator is an auto generated low-level Go binding around an user-defined struct. -type Validator struct { - Status uint8 - NodeID []byte - StartingWeight uint64 - MessageNonce uint64 - Weight uint64 - StartedAt uint64 - EndedAt uint64 -} - -// ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. -type ValidatorManagerSettings struct { - SubnetID [32]byte - ChurnPeriodSeconds uint64 - MaximumChurnPercentage uint8 -} - // ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. type ValidatorMessagesValidationPeriod struct { SubnetID [32]byte @@ -90,8 +72,8 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161380838038061380883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136bb8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461280a565b610312565b005b610149610159366004612839565b6105a2565b61014961016c366004612887565b610b5d565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461280a565b610b6b565b6040516001600160401b03909116815260200161018a565b610149610b7f565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461280a565b610b92565b6101cd61025a3660046128b6565b610ba7565b61014961026d366004612887565b610bc3565b6102216005600160991b0181565b6101cd5f8051602061364683398151915281565b6101496102a236600461280a565b610db9565b6101e3601481565b6101496102bd36600461290f565b610ef5565b6102d56102d036600461280a565b611003565b60405161018a91906129cc565b6101a66202a30081565b6101496102fa366004612a4c565b611152565b6101cd61030d366004612a6e565b61118f565b5f8181525f805160206136668339815191526020526040808220815160e0810190925280545f8051602061364683398151915293929190829060ff16600581111561035f5761035f61294b565b60058111156103705761037061294b565b815260200160018201805461038490612ad9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612ad9565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104665761046661294b565b146104a2575f8381526005830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c22565b6040518263ffffffff1660e01b815260040161055c9190612c53565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612c65565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f805160206136468339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612c65565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612a4c565b6001600160a01b0316146106d8576106b36060840160408501612a4c565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612c7c565b905090505f805b828163ffffffff16101561094e575f6107096060880188612c7c565b8363ffffffff1681811061071f5761071f612cc1565b90506020028101906107319190612cd5565b61073a90612d40565b80516040519192505f91600688019161075291612db9565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612c53565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612db9565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612c65565b90508086600601835f01516040516108219190612db9565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff1916600217815582516001909101906108619082612e15565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff191690556108e19085612ee8565b82516040519195506108f291612db9565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a350508061094790612f08565b90506106ed565b506003830180546fffffffffffffffff00000000000000001916600160401b6001600160401b0384168102919091179091556001840154606491610996910460ff1683612f2a565b6001600160401b031610156109c957604051633e1a785160e01b81526001600160401b0382166004820152602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846109ed876111ea565b604001516040518263ffffffff1660e01b8152600401610a0d9190612c53565b602060405180830381865af4158015610a28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612c65565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610a869190613078565b5f60405180830381865af4158015610aa0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ac79190810190612c22565b90505f600282604051610ada9190612db9565b602060405180830381855afa158015610af5573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b189190612c65565b9050828114610b445760405163baaea89d60e01b81526004810182905260248101849052604401610499565b5050506007909201805460ff1916600117905550505050565b610b6681611300565b505050565b5f610b7582611003565b6080015192915050565b610b876116b8565b610b905f611713565b565b610b9a6116b8565b610ba381611783565b5050565b5f610bb06116b8565b610bba8383611a68565b90505b92915050565b5f805160206136468339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bf6866111ea565b604001516040518263ffffffff1660e01b8152600401610c169190612c53565b6040805180830381865af4158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c54919061311b565b9150915080610c7a57604051632d07135360e01b81528115156004820152602401610499565b5f82815260048401602052604090208054610c9490612ad9565b90505f03610cb85760405163089938b360e11b815260048101839052602401610499565b60015f838152600580860160205260409091205460ff1690811115610cdf57610cdf61294b565b14610d12575f8281526005840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b5f8281526004840160205260408120610d2a9161277e565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f805160206136468339815191529190610e0090612ad9565b90505f03610e245760405163089938b360e11b815260048101839052602401610499565b60015f838152600580840160205260409091205460ff1690811115610e4b57610e4b61294b565b14610e7e575f8281526005820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92610eb5920161313c565b6020604051808303815f875af1158015610ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b669190612c65565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f395750825b90505f826001600160401b03166001148015610f545750303b155b905081158015610f62575080155b15610f805760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610faa57845460ff60401b1916600160401b1785555b610fb48787611fda565b8315610ffa57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61100b6127b5565b5f8281525f80516020613666833981519152602052604090819020815160e0810190925280545f80516020613646833981519152929190829060ff1660058111156110585761105861294b565b60058111156110695761106961294b565b815260200160018201805461107d90612ad9565b80601f01602080910402602001604051908101604052809291908181526020018280546110a990612ad9565b80156110f45780601f106110cb576101008083540402835291602001916110f4565b820191905f5260205f20905b8154815290600101906020018083116110d757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b61115a6116b8565b6001600160a01b03811661118357604051631e4fbdf760e01b81525f6004820152602401610499565b61118c81611713565b50565b6040515f905f80516020613646833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906111d290869086906131c6565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561124e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127591908101906131d5565b915091508061129757604051636b2f19e960e01b815260040160405180910390fd5b8151156112bd578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b0316156112f9576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f6113096127b5565b5f805160206136468339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61133c886111ea565b604001516040518263ffffffff1660e01b815260040161135c9190612c53565b6040805180830381865af4158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a919061311b565b9150915080156113c157604051632d07135360e01b81528115156004820152602401610499565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff909116908111156113f8576113f861294b565b60058111156114095761140961294b565b815260200160018201805461141d90612ad9565b80601f016020809104026020016040519081016040528092919081815260200182805461144990612ad9565b80156114945780601f1061146b57610100808354040283529160200191611494565b820191905f5260205f20905b81548152906001019060200180831161147757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156114ff576114ff61294b565b14158015611520575060018151600581111561151d5761151d61294b565b14155b1561154157805160405163170cc93360e21b81526104999190600401612b11565b6003815160058111156115565761155661294b565b036115645760048152611569565b600581525b83600601816020015160405161157f9190612db9565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff19169060019084908111156115c2576115c261294b565b0217905550602082015160018201906115db9082612e15565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116815761168161294b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336116ea7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b905760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61178b6127b5565b5f8281525f805160206136668339815191526020526040808220815160e0810190925280545f8051602061364683398151915293929190829060ff1660058111156117d8576117d861294b565b60058111156117e9576117e961294b565b81526020016001820180546117fd90612ad9565b80601f016020809104026020016040519081016040528092919081815260200182805461182990612ad9565b80156118745780601f1061184b57610100808354040283529160200191611874565b820191905f5260205f20905b81548152906001019060200180831161185757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156118e2576118e261294b565b14611915575f8481526005830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff191690600190849081111561195a5761195a61294b565b0217905550602082015160018201906119739082612e15565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a118582611ff4565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16611aac57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061364683398151915242611acb6060860160408701613262565b6001600160401b0316111580611b055750611ae96202a3004261327b565b611af96060860160408701613262565b6001600160401b031610155b15611b3f57611b1a6060850160408601613262565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b60038101546001600160401b0390611b6290600160401b9004821685831661327b565b1115611b8c57604051633e1a785160e01b81526001600160401b0384166004820152602401610499565b611ba1611b9c606086018661328e565b6121cb565b611bb1611b9c608086018661328e565b6030611bc060208601866132a2565b905014611bf257611bd460208501856132a2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bfc84806132a2565b90505f03611c2957611c0e84806132a2565b604051633e08a12560e11b81526004016104999291906132e4565b5f60068201611c3886806132a2565b604051611c469291906131c6565b90815260200160405180910390205414611c7f57611c6484806132a2565b60405163a41f772f60e01b81526004016104999291906132e4565b611c89835f612334565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611cc68a806132a2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d0e908b018b6132a2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d5760608b0160408c01613262565b6001600160401b03168152602001611d7260608b018b61328e565b611d7b906132f7565b8152602001611d8d60808b018b61328e565b611d96906132f7565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dc49190613424565b5f60405180830381865af4158015611dde573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e0591908101906134db565b5f82815260048601602052604090209193509150611e238282612e15565b508160068401611e3388806132a2565b604051611e419291906131c6565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e7d908590600401612c53565b6020604051808303815f875af1158015611e99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebd9190612c65565b5f8481526005860160205260409020805460ff191660011790559050611ee387806132a2565b5f858152600587016020526040902060010191611f0191908361351e565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611f6088806132a2565b604051611f6e9291906131c6565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b6040016020810190611fac9190613262565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611fe261259e565b611feb826125e7565b610ba381612600565b5f8281525f80516020613666833981519152602052604081206002015481905f8051602061364683398151915290600160801b90046001600160401b031661203c8582612334565b5f61204687612611565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156120ef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121169190810190612c22565b6040518263ffffffff1660e01b81526004016121329190612c53565b6020604051808303815f875af115801561214e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121729190612c65565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6121d86020820182612887565b63ffffffff161580156121f857506121f36020820182612c7c565b151590505b1561223f5761220a6020820182612887565b6122176020830183612c7c565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b61224c6020820182612c7c565b905061225b6020830183612887565b63ffffffff1611156122745761220a6020820182612887565b60015b6122846020830183612c7c565b9050811015610ba35761229a6020830183612c7c565b6122a56001846135d7565b8181106122b4576122b4612cc1565b90506020020160208101906122c99190612a4c565b6001600160a01b03166122df6020840184612c7c565b838181106122ef576122ef612cc1565b90506020020160208101906123049190612a4c565b6001600160a01b0316101561232c57604051630dbc8d5f60e31b815260040160405180910390fd5b600101612277565b5f805160206136468339815191525f6001600160401b0380841690851611156123685761236183856135ea565b9050612375565b61237284846135ea565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b90049092166060820152429115806123e25750600184015481516123de916001600160401b03169061327b565b8210155b1561240a576001600160401b0380841660608301528282526040820151166020820152612429565b828160600181815161241c9190612ee8565b6001600160401b03169052505b6060810151612439906064612f2a565b602082015160018601546001600160401b0392909216916124649190600160401b900460ff16612f2a565b6001600160401b0316101561249d57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b85816040018181516124af9190612ee8565b6001600160401b03169052506040810180518691906124cf9083906135ea565b6001600160401b0316905250600184015460408201516064916124fd91600160401b90910460ff1690612f2a565b6001600160401b03161015612536576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610499565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b9057604051631afcd79f60e31b815260040160405180910390fd5b6125ef61259e565b6125f7612686565b61118c8161268e565b61260861259e565b61118c81612776565b5f8181525f805160206136668339815191526020526040812060020180545f80516020613646833981519152919060089061265b90600160401b90046001600160401b031661360a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610b9061259e565b61269661259e565b80355f8051602061364683398151915290815560146126bb6060840160408501613625565b60ff1611806126da57506126d56060830160408401613625565b60ff16155b1561270e576126ef6060830160408401613625565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61271e6060830160408401613625565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561274f6040830160208401613262565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61115a61259e565b50805461278a90612ad9565b5f825580601f10612799575050565b601f0160209004905f5260205f209081019061118c91906127f2565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612806575f81556001016127f3565b5090565b5f6020828403121561281a575f80fd5b5035919050565b803563ffffffff81168114612834575f80fd5b919050565b5f806040838503121561284a575f80fd5b82356001600160401b0381111561285f575f80fd5b830160808186031215612870575f80fd5b915061287e60208401612821565b90509250929050565b5f60208284031215612897575f80fd5b610bba82612821565b80356001600160401b0381168114612834575f80fd5b5f80604083850312156128c7575f80fd5b82356001600160401b038111156128dc575f80fd5b830160a081860312156128ed575f80fd5b915061287e602084016128a0565b6001600160a01b038116811461118c575f80fd5b5f808284036080811215612921575f80fd5b606081121561292e575f80fd5b508291506060830135612940816128fb565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b6006811061297b57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612999578181015183820152602001612981565b50505f910152565b5f81518084526129b881602086016020860161297f565b601f01601f19169290920160200192915050565b602081526129de60208201835161295f565b5f602083015160e060408401526129f96101008401826129a1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612a5c575f80fd5b8135612a67816128fb565b9392505050565b5f8060208385031215612a7f575f80fd5b82356001600160401b0380821115612a95575f80fd5b818501915085601f830112612aa8575f80fd5b813581811115612ab6575f80fd5b866020828501011115612ac7575f80fd5b60209290920196919550909350505050565b600181811c90821680612aed57607f821691505b602082108103612b0b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610bbd828461295f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612b5557612b55612b1f565b60405290565b604080519081016001600160401b0381118282101715612b5557612b55612b1f565b604051601f8201601f191681016001600160401b0381118282101715612ba557612ba5612b1f565b604052919050565b5f6001600160401b03821115612bc557612bc5612b1f565b50601f01601f191660200190565b5f82601f830112612be2575f80fd5b8151612bf5612bf082612bad565b612b7d565b818152846020838601011115612c09575f80fd5b612c1a82602083016020870161297f565b949350505050565b5f60208284031215612c32575f80fd5b81516001600160401b03811115612c47575f80fd5b612c1a84828501612bd3565b602081525f610bba60208301846129a1565b5f60208284031215612c75575f80fd5b5051919050565b5f808335601e19843603018112612c91575f80fd5b8301803591506001600160401b03821115612caa575f80fd5b6020019150600581901b36038213156121c4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612ce9575f80fd5b9190910192915050565b5f82601f830112612d02575f80fd5b8135612d10612bf082612bad565b818152846020838601011115612d24575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612d50575f80fd5b612d58612b33565b82356001600160401b0380821115612d6e575f80fd5b612d7a36838701612cf3565b83526020850135915080821115612d8f575f80fd5b50612d9c36828601612cf3565b602083015250612dae604084016128a0565b604082015292915050565b5f8251612ce981846020870161297f565b601f821115610b6657805f5260205f20601f840160051c81016020851015612def5750805b601f840160051c820191505b81811015612e0e575f8155600101612dfb565b5050505050565b81516001600160401b03811115612e2e57612e2e612b1f565b612e4281612e3c8454612ad9565b84612dca565b602080601f831160018114612e75575f8415612e5e5750858301515b5f19600386901b1c1916600185901b178555612ecc565b5f85815260208120601f198616915b82811015612ea357888601518255948401946001909101908401612e84565b5085821015612ec057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156112f9576112f9612ed4565b5f63ffffffff808316818103612f2057612f20612ed4565b6001019392505050565b6001600160401b03818116838216028082169190828114612f4d57612f4d612ed4565b505092915050565b5f808335601e19843603018112612f6a575f80fd5b83016020810192503590506001600160401b03811115612f88575f80fd5b8036038213156121c4575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561306b57848303601f19018952813536889003605e19018112612ffa575f80fd5b870160606130088280612f55565b8287526130188388018284612f96565b9250505061302886830183612f55565b8683038888015261303a838284612f96565b9250505060406001600160401b036130538285016128a0565b16950194909452509783019790830190600101612fd5565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561309c816128fb565b6001600160a01b031660608381019190915283013536849003601e190181126130c3575f80fd5b83016020810190356001600160401b038111156130de575f80fd5b8060051b36038213156130ef575f80fd5b60808085015261310360a085018284612fbe565b95945050505050565b80518015158114612834575f80fd5b5f806040838503121561312c575f80fd5b8251915061287e6020840161310c565b5f60208083525f845461314e81612ad9565b806020870152604060018084165f811461316f576001811461318b576131b8565b60ff19851660408a0152604084151560051b8a010195506131b8565b895f5260205f205f5b858110156131af5781548b8201860152908301908801613194565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156131e6575f80fd5b82516001600160401b03808211156131fc575f80fd5b908401906060828703121561320f575f80fd5b613217612b33565b825181526020830151613229816128fb565b602082015260408301518281111561323f575f80fd5b61324b88828601612bd3565b604083015250935061287e9150506020840161310c565b5f60208284031215613272575f80fd5b610bba826128a0565b80820180821115610bbd57610bbd612ed4565b5f8235603e19833603018112612ce9575f80fd5b5f808335601e198436030181126132b7575f80fd5b8301803591506001600160401b038211156132d0575f80fd5b6020019150368190038213156121c4575f80fd5b602081525f612c1a602083018486612f96565b5f60408236031215613307575f80fd5b61330f612b5b565b61331883612821565b81526020808401356001600160401b0380821115613334575f80fd5b9085019036601f830112613346575f80fd5b81358181111561335857613358612b1f565b8060051b9150613369848301612b7d565b8181529183018401918481019036841115613382575f80fd5b938501935b838510156133ac578435925061339c836128fb565b8282529385019390850190613387565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134195784516001600160a01b031682529383019360019290920191908301906133f0565b509695505050505050565b60208152815160208201525f602083015160e0604084015261344a6101008401826129a1565b90506040840151601f198085840301606086015261346883836129a1565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261349883836133be565b925060a08601519150808584030160c0860152506134b682826133be565b91505060c08401516134d360e08501826001600160401b03169052565b509392505050565b5f80604083850312156134ec575f80fd5b8251915060208301516001600160401b03811115613508575f80fd5b61351485828601612bd3565b9150509250929050565b6001600160401b0383111561353557613535612b1f565b613549836135438354612ad9565b83612dca565b5f601f84116001811461357a575f85156135635750838201355b5f19600387901b1c1916600186901b178355612e0e565b5f83815260208120601f198716915b828110156135a95786850135825560209485019460019092019101613589565b50868210156135c5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610bbd57610bbd612ed4565b6001600160401b038281168282160390808211156112f9576112f9612ed4565b5f6001600160401b03808316818103612f2057612f20612ed4565b5f60208284031215613635575f80fd5b813560ff81168114612a67575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb05a2646970667358221220046e4a56ab445a134397de8ba81f586fa290b8931c197a97ddaf31dfdbeaa00364736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POA_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051610af9380380610af983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6109ac8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c806397fb70d41161006357806397fb70d4146101035780639ba96b8614610116578063a3a65e4814610137578063bd5607df1461014a578063f2fde38b1461015e575f80fd5b8063467ef06f14610094578063485cc955146100a9578063715018a6146100bc5780638da5cb5b146100c4575b5f80fd5b6100a76100a236600461063a565b610171565b005b6100a76100b736600461066e565b6101f5565b6100a7610305565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b6100a76101113660046106a5565b610318565b6101296101243660046106d3565b61038c565b6040519081526020016100fa565b6100a761014536600461063a565b61041c565b6101295f8051602061095783398151915281565b6100a761016c366004610722565b61045f565b5f80516020610957833981519152805460405163467ef06f60e01b815263ffffffff841660048201526001600160a01b039091169063467ef06f906024015b6020604051808303815f875af11580156101cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f0919061073d565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561023a5750825b90505f8267ffffffffffffffff1660011480156102565750303b155b905081158015610264575080155b156102825760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102ac57845460ff60401b1916600160401b1785555b6102b687876104a1565b83156102fc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61030d6104bf565b6103165f61051a565b565b6103206104bf565b5f5f8051602061095783398151915280546040516325fedc3560e21b8152600481018590529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610372575f80fd5b505af1158015610384573d5f803e3d5ffd5b505050505050565b5f6103956104bf565b5f805160206109578339815191528054604051634dd4b5c360e11b81526001600160a01b0390911690639ba96b86906103d4908790879060040161088a565b6020604051808303815f875af11580156103f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610414919061073d565b949350505050565b5f805160206109578339815191528054604051631474cbc960e31b815263ffffffff841660048201526001600160a01b039091169063a3a65e48906024016101b0565b6104676104bf565b6001600160a01b03811661049557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61049e8161051a565b50565b6104a961058a565b6104b2826105d3565b6104bb816105e4565b5050565b336104f17f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146103165760405163118cdaa760e01b815233600482015260240161048c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661031657604051631afcd79f60e31b815260040160405180910390fd5b6105db61058a565b61049e8161061a565b6105ec61058a565b5f8051602061095783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61046761058a565b803563ffffffff81168114610635575f80fd5b919050565b5f6020828403121561064a575f80fd5b61065382610622565b9392505050565b6001600160a01b038116811461049e575f80fd5b5f806040838503121561067f575f80fd5b823561068a8161065a565b9150602083013561069a8161065a565b809150509250929050565b5f602082840312156106b5575f80fd5b5035919050565b803567ffffffffffffffff81168114610635575f80fd5b5f80604083850312156106e4575f80fd5b823567ffffffffffffffff8111156106fa575f80fd5b830160a0818603121561070b575f80fd5b9150610719602084016106bc565b90509250929050565b5f60208284031215610732575f80fd5b81356106538161065a565b5f6020828403121561074d575f80fd5b5051919050565b5f808335601e19843603018112610769575f80fd5b830160208101925035905067ffffffffffffffff811115610788575f80fd5b803603821315610796575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e198336030181126107d9575f80fd5b90910192915050565b5f6040830163ffffffff6107f584610622565b168452602080840135601e1985360301811261080f575f80fd5b840160208101903567ffffffffffffffff81111561082b575f80fd5b8060051b360382131561083c575f80fd5b6040602088015292839052915f90606087015b8183101561087f5784356108628161065a565b6001600160a01b031681529383019360019290920191830161084f565b979650505050505050565b604081525f6108998485610754565b60a060408501526108ae60e08501828461079d565b9150506108be6020860186610754565b603f19808685030160608701526108d684838561079d565b93506108e4604089016106bc565b925067ffffffffffffffff9150818316608087015261090660608901896107c5565b9250808685030160a087015261091c84846107e2565b935061092b60808901896107c5565b9250808685030160c08701525061094283836107e2565b93508086166020860152505050939250505056fe81773fca73a14ca21edf1cadc6ec0b26d6a44966f6e97607e90422658d423500a26469706673582212200a2a20208285517447dafc91b64e589ee1471dbf6c57e91b8bba62b32da4683764736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -112,9 +94,6 @@ func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - PoAValidatorManagerBin = strings.ReplaceAll(PoAValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) if err != nil { return common.Address{}, nil, nil, err @@ -264,167 +243,12 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bin return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) } -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) -} - -// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. -// -// Solidity: function ADDRESS_LENGTH() view returns(uint32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { - return _PoAValidatorManager.Contract.ADDRESSLENGTH(&_PoAValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. -// -// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { - return _PoAValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. -// -// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { - return _PoAValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. -// -// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { - return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) -} - -// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. -// -// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) POAVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + err := _PoAValidatorManager.contract.Call(opts, &out, "POA_VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -436,111 +260,18 @@ func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELO } -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) -} - -// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) -} - -// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. -// -// Solidity: function WARP_MESSENGER() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. -// -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getValidator", validationID) - - if err != nil { - return *new(Validator), err - } - - out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) - - return out0, err - -} - -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) } -// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // -// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { - return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "getWeight", validationID) - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) -} - -// GetWeight is a free data retrieval call binding the contract method 0x66435abf. -// -// Solidity: function getWeight(bytes32 validationID) view returns(uint64) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { - return _PoAValidatorManager.Contract.GetWeight(&_PoAValidatorManager.CallOpts, validationID) +// Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoAValidatorManager.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -574,37 +305,6 @@ func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Ad return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) -} - -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. -// -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) -} - // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() @@ -647,25 +347,25 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValida return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) +// Solidity: function initialize(address initialOwner, address validatorManager) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initialize", initialOwner, validatorManager) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +// Solidity: function initialize(address initialOwner, address validatorManager) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner, validatorManager) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) +// Solidity: function initialize(address initialOwner, address validatorManager) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner, validatorManager) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. @@ -710,27 +410,6 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeVali return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, conversionData, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorSet(&_PoAValidatorManager.TransactOpts, conversionData, messageIndex) -} - // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -752,48 +431,6 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwners return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendEndValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.ResendRegisterValidatorMessage(&_PoAValidatorManager.TransactOpts, validationID) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -815,9 +452,9 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwners return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) } -// PoAValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreatedIterator struct { - Event *PoAValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log +// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitializedIterator struct { + Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -831,7 +468,7 @@ type PoAValidatorManagerInitialValidatorCreatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *PoAValidatorManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -840,7 +477,7 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -855,7 +492,7 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialValidatorCreated) + it.Event = new(PoAValidatorManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -871,61 +508,41 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *PoAValidatorManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *PoAValidatorManagerInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight uint64 - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. +type PoAValidatorManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -935,8 +552,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -957,21 +574,21 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { - event := new(PoAValidatorManagerInitialValidatorCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { +// Solidity: event Initialized(uint64 version) +func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { + event := new(PoAValidatorManagerInitialized) + if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitializedIterator struct { - Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log +// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferredIterator struct { + Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -985,7 +602,7 @@ type PoAValidatorManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitializedIterator) Next() bool { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -994,7 +611,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(PoAValidatorManagerOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1009,7 +626,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(PoAValidatorManagerOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1025,159 +642,25 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitializedIterator) Error() error { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerInitializedIterator) Close() error { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos +// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. +type PoAValidatorManagerOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + 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 (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.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 (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { - - logs, sub, err := _PoAValidatorManager.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(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.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 (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferredIterator struct { - Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferred 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. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { @@ -1256,783 +739,10 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferr return event, nil } -// PoAValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreatedIterator struct { - Event *PoAValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight uint64 - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { - event := new(PoAValidatorManagerValidationPeriodCreated) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEndedIterator struct { - Event *PoAValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*PoAValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodEndedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*PoAValidatorManagerValidationPeriodEnded, error) { - event := new(PoAValidatorManagerValidationPeriodEnded) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegisteredIterator struct { - Event *PoAValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight uint64 - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { - event := new(PoAValidatorManagerValidationPeriodRegistered) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitializedIterator struct { - Event *PoAValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight uint64 - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { - event := new(PoAValidatorManagerValidatorRemovalInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PoAValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdateIterator struct { - Event *PoAValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PoAValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PoAValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the PoAValidatorManager contract. -type PoAValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - Weight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &PoAValidatorManagerValidatorWeightUpdateIterator{contract: _PoAValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { - event := new(PoAValidatorManagerValidatorWeightUpdate) - if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea2646970667358221220195ae55415373c0b17ffe6a3bfeb5bce00f43c97d28a367c9b31b608481bce4864736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ValidatorManager/ValidatorManager.go b/abi-bindings/go/validator-manager/ValidatorManager/ValidatorManager.go new file mode 100644 index 000000000..d79b7f0aa --- /dev/null +++ b/abi-bindings/go/validator-manager/ValidatorManager/ValidatorManager.go @@ -0,0 +1,2448 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package validatormanager + +import ( + "errors" + "math/big" + "strings" + + "github.com/ava-labs/subnet-evm/accounts/abi" + "github.com/ava-labs/subnet-evm/accounts/abi/bind" + "github.com/ava-labs/subnet-evm/core/types" + "github.com/ava-labs/subnet-evm/interfaces" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = interfaces.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ConversionData is an auto generated low-level Go binding around an user-defined struct. +type ConversionData struct { + SubnetID [32]byte + ValidatorManagerBlockchainID [32]byte + ValidatorManagerAddress common.Address + InitialValidators []InitialValidator +} + +// InitialValidator is an auto generated low-level Go binding around an user-defined struct. +type InitialValidator struct { + NodeID []byte + BlsPublicKey []byte + Weight uint64 +} + +// PChainOwner is an auto generated low-level Go binding around an user-defined struct. +type PChainOwner struct { + Threshold uint32 + Addresses []common.Address +} + +// Validator is an auto generated low-level Go binding around an user-defined struct. +type Validator struct { + Status uint8 + NodeID []byte + StartingWeight uint64 + MessageNonce uint64 + Weight uint64 + StartedAt uint64 + EndedAt uint64 +} + +// ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. +type ValidatorManagerSettings struct { + SubnetID [32]byte + ChurnPeriodSeconds uint64 + MaximumChurnPercentage uint8 +} + +// ValidatorMessagesValidationPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorMessagesValidationPeriod struct { + SubnetID [32]byte + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner + Weight uint64 +} + +// ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. +type ValidatorRegistrationInput struct { + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner +} + +// ValidatorManagerMetaData contains all meta data concerning the ValidatorManager contract. +var ValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"completeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChurnPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSecurityModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorWeightChange\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"setSecurityModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161382438038061382483398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136d78061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c80639ba96b86116100bf578063cdeea3c911610079578063cdeea3c9146102d2578063d588c18f146102da578063d5f20ff6146102ed578063df93d8de1461030d578063e3bb123414610317578063fd7ac5e71461032a575f80fd5b80639ba96b8614610244578063a3a65e4814610257578063b771b3bc1461026a578063bc5fbfec14610290578063bee0a03f146102b7578063c974d1b6146102ca575f80fd5b806360305d621161011057806360305d62146101cd57806366435abf146101ea578063732214f8146101fd5780638280a25a1461020457806397fb70d41461021e5780639a68b05014610231575f80fd5b80630322ed981461014c57806309c1df661461016157806320d91b7a14610186578063467ef06f146101995780635fb0236c146101ba575b5f80fd5b61015f61015a3660046127ed565b61033d565b005b6101696105c2565b6040516001600160401b0390911681526020015b60405180910390f35b61015f610194366004612817565b6105dd565b6101ac6101a7366004612865565b610b78565b60405190815260200161017d565b61015f6101c83660046127ed565b610f4f565b6101d5601481565b60405163ffffffff909116815260200161017d565b6101696101f83660046127ed565b610f82565b6101ac5f81565b61020c603081565b60405160ff909116815260200161017d565b61015f61022c3660046127ed565b610f96565b61015f61023f366004612899565b610fd3565b6101ac6102523660046128ca565b610ffd565b6101ac610265366004612865565b61158a565b6102786005600160991b0181565b6040516001600160a01b03909116815260200161017d565b6101ac7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b61015f6102c53660046127ed565b6117af565b61020c601481565b6102786118d1565b61015f6102e836600461290f565b6118e9565b6103006102fb3660046127ed565b6119f7565b60405161017d91906129cc565b6101696202a30081565b610169610325366004612a4c565b611b69565b6101ac610338366004612a6d565b611bae565b5f610346611be6565b5f838152600682016020526040808220815160e0810190925280549394509192909190829060ff16600581111561037f5761037f61294b565b60058111156103905761039061294b565b81526020016001820180546103a490612ad8565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090612ad8565b801561041b5780601f106103f25761010080835404028352916020019161041b565b820191905f5260205f20905b8154815290600101906020018083116103fe57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104865761048661294b565b146104c2575f8381526006830160205260409081902054905163170cc93360e21b81526104b99160ff1690600401612b10565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610539573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105609190810190612c21565b6040518263ffffffff1660e01b815260040161057c9190612c52565b6020604051808303815f875af1158015610598573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105bc9190612c64565b50505050565b5f6105cb611be6565b600201546001600160401b0316919050565b5f6105e6611be6565b600881015490915060ff161561060f57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610652573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106769190612c64565b83602001351461069f576040516372b0a7e760e11b8152602084013560048201526024016104b9565b306106b06060850160408601612899565b6001600160a01b0316146106f3576106ce6060840160408501612899565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016104b9565b5f6107016060850185612c7b565b905090505f805b828163ffffffff161015610969575f6107246060880188612c7b565b8363ffffffff1681811061073a5761073a612cc0565b905060200281019061074c9190612cd4565b61075590612d3f565b80516040519192505f91600788019161076d91612db8565b9081526020016040518091039020541461079d57805160405163a41f772f60e01b81526104b99190600401612c52565b5f6002885f0135846040516020016107cc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107e691612db8565b602060405180830381855afa158015610801573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108249190612c64565b90508086600701835f015160405161083c9190612db8565b90815260408051918290036020908101909220929092555f8381526006890190915220805460ff19166002178155825160019091019061087c9082612e14565b50604082810180515f84815260068a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff191690556108fc9085612ee7565b825160405191955061090d91612db8565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a350508061096290612f07565b9050610708565b506004830180546fffffffffffffffff00000000000000001916600160401b6001600160401b03841681029190911790915560028401546064916109b1910460ff1683612f29565b6001600160401b031610156109e457604051633e1a785160e01b81526001600160401b03821660048201526024016104b9565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610a0887611c0a565b604001516040518263ffffffff1660e01b8152600401610a289190612c52565b602060405180830381865af4158015610a43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a679190612c64565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610aa19190613077565b5f60405180830381865af4158015610abb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ae29190810190612c21565b90505f600282604051610af59190612db8565b602060405180830381855afa158015610b10573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b339190612c64565b9050828114610b5f5760405163baaea89d60e01b815260048101829052602481018490526044016104b9565b5050506008909201805460ff1916600117905550505050565b5f610b81611be6565b546001600160a01b03163314610ba95760405162461bcd60e51b81526004016104b99061310b565b5f610bb2611be6565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bd987611c0a565b604001516040518263ffffffff1660e01b8152600401610bf99190612c52565b6040805180830381865af4158015610c13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c379190613177565b915091508015610c5e57604051632d07135360e01b815281151560048201526024016104b9565b5f828152600684016020526040808220815160e081019092528054829060ff166005811115610c8f57610c8f61294b565b6005811115610ca057610ca061294b565b8152602001600182018054610cb490612ad8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090612ad8565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610d9657610d9661294b565b14158015610db75750600181516005811115610db457610db461294b565b14155b15610dd857805160405163170cc93360e21b81526104b99190600401612b10565b600381516005811115610ded57610ded61294b565b03610dfb5760048152610e00565b600581525b836007018160200151604051610e169190612db8565b90815260408051602092819003830190205f908190558581526006870190925290208151815483929190829060ff19166001836005811115610e5a57610e5a61294b565b021790555060208201516001820190610e739082612e14565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115610f1957610f1961294b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a35090925050505b919050565b610f57611be6565b546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016104b99061310b565b50565b5f610f8c826119f7565b6080015192915050565b610f9e611be6565b546001600160a01b03163314610fc65760405162461bcd60e51b81526004016104b99061310b565b610fcf81611d20565b5050565b80610fdc611be6565b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f611006611be6565b546001600160a01b0316331461102e5760405162461bcd60e51b81526004016104b99061310b565b611036611be6565b6008015460ff1661105a57604051637fab81e560e01b815260040160405180910390fd5b5f611063611be6565b9050426110766060860160408701613198565b6001600160401b03161115806110b057506110946202a300426131b1565b6110a46060860160408701613198565b6001600160401b031610155b156110ea576110c56060850160408601613198565b604051635879da1360e11b81526001600160401b0390911660048201526024016104b9565b60048101546001600160401b039061110d90600160401b900482168583166131b1565b111561113757604051633e1a785160e01b81526001600160401b03841660048201526024016104b9565b61114c61114760608601866131c4565b612029565b61115c61114760808601866131c4565b603061116b60208601866131d8565b90501461119d5761117f60208501856131d8565b6040516326475b2f60e11b81526104b9925060040190815260200190565b6111a784806131d8565b90505f036111d4576111b984806131d8565b604051633e08a12560e11b81526004016104b992919061321a565b5f600782016111e386806131d8565b6040516111f192919061322d565b9081526020016040518091039020541461122a5761120f84806131d8565b60405163a41f772f60e01b81526004016104b992919061321a565b611234835f612192565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63eb97ce516040518060e001604052808660010154815260200189805f019061127491906131d8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906112bc908b018b6131d8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161130560608b0160408c01613198565b6001600160401b0316815260200161132060608b018b6131c4565b6113299061323c565b815260200161133b60808b018b6131c4565b6113449061323c565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016113729190613369565b5f60405180830381865af415801561138c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113b39190810190613420565b5f828152600586016020526040902091935091506113d18282612e14565b5081600784016113e188806131d8565b6040516113ef92919061322d565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061142b908590600401612c52565b6020604051808303815f875af1158015611447573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146b9190612c64565b5f8481526006860160205260409020805460ff19166001179055905061149187806131d8565b5f8581526006870160205260409020600101916114af919083613463565b505f83815260068501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061150e88806131d8565b60405161151c92919061322d565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061155a9190613198565b604080516001600160401b0393841681529290911660208301520160405180910390a45090925050505b92915050565b5f611593611be6565b546001600160a01b031633146115bb5760405162461bcd60e51b81526004016104b99061310b565b5f6115c4611be6565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6115eb87611c0a565b604001516040518263ffffffff1660e01b815260040161160b9190612c52565b6040805180830381865af4158015611625573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116499190613177565b915091508061166f57604051632d07135360e01b815281151560048201526024016104b9565b5f8281526005840160205260409020805461168990612ad8565b90505f036116ad5760405163089938b360e11b8152600481018390526024016104b9565b60015f83815260068501602052604090205460ff1660058111156116d3576116d361294b565b14611706575f8281526006840160205260409081902054905163170cc93360e21b81526104b99160ff1690600401612b10565b5f828152600584016020526040812061171e916127a3565b5f828152600684016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a2509392505050565b5f6117b8611be6565b5f83815260058201602052604090208054919250906117d690612ad8565b90505f036117fa5760405163089938b360e11b8152600481018390526024016104b9565b60015f83815260068301602052604090205460ff1660058111156118205761182061294b565b14611853575f8281526006820160205260409081902054905163170cc93360e21b81526104b99160ff1690600401612b10565b5f82815260058201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb9161188c919060040161351c565b6020604051808303815f875af11580156118a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190612c64565b505050565b5f6118da611be6565b546001600160a01b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561192d5750825b90505f826001600160401b031660011480156119485750303b155b905081158015611956575080155b156119745760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561199e57845460ff60401b1916600160401b1785555b6119a887876123ff565b83156119ee57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6040805160e0810182525f8082526060602083018190529282018190529181018290526080810182905260a0810182905260c0810182905290611a38611be6565b5f84815260068201602052604090819020815160e0810190925280549293509091829060ff166005811115611a6f57611a6f61294b565b6005811115611a8057611a8061294b565b8152602001600182018054611a9490612ad8565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac090612ad8565b8015611b0b5780601f10611ae257610100808354040283529160200191611b0b565b820191905f5260205f20905b815481529060010190602001808311611aee57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b5f611b72611be6565b546001600160a01b03163314611b9a5760405162461bcd60e51b81526004016104b99061310b565b5f611ba58484612419565b50949350505050565b5f80611bb8611be6565b9050806007018484604051611bce92919061322d565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611c6e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c9591908101906135a6565b9150915080611cb757604051636b2f19e960e01b815260040160405180910390fd5b815115611cdd578151604051636ba589a560e01b815260048101919091526024016104b9565b60208201516001600160a01b031615611d19576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104b9565b5092915050565b6040805160e0810182525f8082526060602083018190529282018190529181018290526080810182905260a0810182905260c0810182905290611d61611be6565b5f848152600682016020526040808220815160e0810190925280549394509192909190829060ff166005811115611d9a57611d9a61294b565b6005811115611dab57611dab61294b565b8152602001600182018054611dbf90612ad8565b80601f0160208091040260200160405190810160405280929190818152602001828054611deb90612ad8565b8015611e365780601f10611e0d57610100808354040283529160200191611e36565b820191905f5260205f20905b815481529060010190602001808311611e1957829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115611ea457611ea461294b565b14611ed7575f8481526006830160205260409081902054905163170cc93360e21b81526104b99160ff1690600401612b10565b60038152426001600160401b031660c08201525f84815260068301602052604090208151815483929190829060ff19166001836005811115611f1b57611f1b61294b565b021790555060208201516001820190611f349082612e14565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611fd28582612419565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6120366020820182612865565b63ffffffff1615801561205657506120516020820182612c7b565b151590505b1561209d576120686020820182612865565b6120756020830183612c7b565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016104b9565b6120aa6020820182612c7b565b90506120b96020830183612865565b63ffffffff1611156120d2576120686020820182612865565b60015b6120e26020830183612c7b565b9050811015610fcf576120f86020830183612c7b565b612103600184613633565b81811061211257612112612cc0565b90506020020160208101906121279190612899565b6001600160a01b031661213d6020840184612c7b565b8381811061214d5761214d612cc0565b90506020020160208101906121629190612899565b6001600160a01b0316101561218a57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016120d5565b5f61219b611be6565b90505f826001600160401b0316846001600160401b031611156121c9576121c28385613646565b90506121d6565b6121d38484613646565b90505b60408051608081018252600384015480825260048501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061224357506002840154815161223f916001600160401b0316906131b1565b8210155b1561226b576001600160401b038084166060830152828252604082015116602082015261228a565b828160600181815161227d9190612ee7565b6001600160401b03169052505b606081015161229a906064612f29565b602082015160028601546001600160401b0392909216916122c59190600160401b900460ff16612f29565b6001600160401b031610156122fe57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016104b9565b85816040018181516123109190612ee7565b6001600160401b0316905250604081018051869190612330908390613646565b6001600160401b03169052506002840154604082015160649161235e91600160401b90910460ff1690612f29565b6001600160401b03161015612397576040808201519051633e1a785160e01b81526001600160401b0390911660048201526024016104b9565b8051600385015560208101516004909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b6124076125e3565b61240f61262e565b610fcf8282612636565b5f805f612424611be6565b5f868152600682016020526040902060020154909150600160801b90046001600160401b03166124548582612192565b5f61245e8761273a565b5f888152600685016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015612507573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261252e9190810190612c21565b6040518263ffffffff1660e01b815260040161254a9190612c52565b6020604051808303815f875af1158015612566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258a9190612c64565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661262c57604051631afcd79f60e31b815260040160405180910390fd5b565b61262c6125e3565b61263e6125e3565b5f612647611be6565b83356001820155905060146126626060850160408601613666565b60ff161180612681575061267c6060840160408501613666565b60ff16155b156126b5576126966060840160408501613666565b604051634a59bbff60e11b815260ff90911660048201526024016104b9565b6126c56060840160408501613666565b60028201805460ff92909216600160401b0260ff60401b199092169190911790556126f66040840160208501613198565b60028201805467ffffffffffffffff19166001600160401b039290921691909117905580546001600160a01b0319166001600160a01b039290921691909117905550565b5f80612744611be6565b5f848152600682016020526040902060020180549192509060089061277890600160401b90046001600160401b0316613686565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5080546127af90612ad8565b5f825580601f106127be575050565b601f0160209004905f5260205f2090810190610f7f91905b808211156127e9575f81556001016127d6565b5090565b5f602082840312156127fd575f80fd5b5035919050565b803563ffffffff81168114610f4a575f80fd5b5f8060408385031215612828575f80fd5b82356001600160401b0381111561283d575f80fd5b83016080818603121561284e575f80fd5b915061285c60208401612804565b90509250929050565b5f60208284031215612875575f80fd5b61287e82612804565b9392505050565b6001600160a01b0381168114610f7f575f80fd5b5f602082840312156128a9575f80fd5b813561287e81612885565b80356001600160401b0381168114610f4a575f80fd5b5f80604083850312156128db575f80fd5b82356001600160401b038111156128f0575f80fd5b830160a08186031215612901575f80fd5b915061285c602084016128b4565b5f808284036080811215612921575f80fd5b606081121561292e575f80fd5b50829150606083013561294081612885565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b6006811061297b57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612999578181015183820152602001612981565b50505f910152565b5f81518084526129b881602086016020860161297f565b601f01601f19169290920160200192915050565b602081526129de60208201835161295f565b5f602083015160e060408401526129f96101008401826129a1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060408385031215612a5d575f80fd5b8235915061285c602084016128b4565b5f8060208385031215612a7e575f80fd5b82356001600160401b0380821115612a94575f80fd5b818501915085601f830112612aa7575f80fd5b813581811115612ab5575f80fd5b866020828501011115612ac6575f80fd5b60209290920196919550909350505050565b600181811c90821680612aec57607f821691505b602082108103612b0a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101611584828461295f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612b5457612b54612b1e565b60405290565b604080519081016001600160401b0381118282101715612b5457612b54612b1e565b604051601f8201601f191681016001600160401b0381118282101715612ba457612ba4612b1e565b604052919050565b5f6001600160401b03821115612bc457612bc4612b1e565b50601f01601f191660200190565b5f82601f830112612be1575f80fd5b8151612bf4612bef82612bac565b612b7c565b818152846020838601011115612c08575f80fd5b612c1982602083016020870161297f565b949350505050565b5f60208284031215612c31575f80fd5b81516001600160401b03811115612c46575f80fd5b612c1984828501612bd2565b602081525f61287e60208301846129a1565b5f60208284031215612c74575f80fd5b5051919050565b5f808335601e19843603018112612c90575f80fd5b8301803591506001600160401b03821115612ca9575f80fd5b6020019150600581901b36038213156125dc575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612ce8575f80fd5b9190910192915050565b5f82601f830112612d01575f80fd5b8135612d0f612bef82612bac565b818152846020838601011115612d23575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612d4f575f80fd5b612d57612b32565b82356001600160401b0380821115612d6d575f80fd5b612d7936838701612cf2565b83526020850135915080821115612d8e575f80fd5b50612d9b36828601612cf2565b602083015250612dad604084016128b4565b604082015292915050565b5f8251612ce881846020870161297f565b601f8211156118cc57805f5260205f20601f840160051c81016020851015612dee5750805b601f840160051c820191505b81811015612e0d575f8155600101612dfa565b5050505050565b81516001600160401b03811115612e2d57612e2d612b1e565b612e4181612e3b8454612ad8565b84612dc9565b602080601f831160018114612e74575f8415612e5d5750858301515b5f19600386901b1c1916600185901b178555612ecb565b5f85815260208120601f198616915b82811015612ea257888601518255948401946001909101908401612e83565b5085821015612ebf57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019080821115611d1957611d19612ed3565b5f63ffffffff808316818103612f1f57612f1f612ed3565b6001019392505050565b6001600160401b03818116838216028082169190828114612f4c57612f4c612ed3565b505092915050565b5f808335601e19843603018112612f69575f80fd5b83016020810192503590506001600160401b03811115612f87575f80fd5b8036038213156125dc575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561306a57848303601f19018952813536889003605e19018112612ff9575f80fd5b870160606130078280612f54565b8287526130178388018284612f95565b9250505061302786830183612f54565b86830388880152613039838284612f95565b9250505060406001600160401b036130528285016128b4565b16950194909452509783019790830190600101612fd4565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561309b81612885565b6001600160a01b031660608381019190915283013536849003601e190181126130c2575f80fd5b83016020810190356001600160401b038111156130dd575f80fd5b8060051b36038213156130ee575f80fd5b60808085015261310260a085018284612fbd565b95945050505050565b60208082526038908201527f414350393956616c696461746f724d616e616765723a2063616c6c657220697360408201527f206e6f7420746865207365637572697479206d6f64756c650000000000000000606082015260800190565b80518015158114610f4a575f80fd5b5f8060408385031215613188575f80fd5b8251915061285c60208401613168565b5f602082840312156131a8575f80fd5b61287e826128b4565b8082018082111561158457611584612ed3565b5f8235603e19833603018112612ce8575f80fd5b5f808335601e198436030181126131ed575f80fd5b8301803591506001600160401b03821115613206575f80fd5b6020019150368190038213156125dc575f80fd5b602081525f612c19602083018486612f95565b818382375f9101908152919050565b5f6040823603121561324c575f80fd5b613254612b5a565b61325d83612804565b81526020808401356001600160401b0380821115613279575f80fd5b9085019036601f83011261328b575f80fd5b81358181111561329d5761329d612b1e565b8060051b91506132ae848301612b7c565b81815291830184019184810190368411156132c7575f80fd5b938501935b838510156132f157843592506132e183612885565b82825293850193908501906132cc565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561335e5784516001600160a01b03168252938301936001929092019190830190613335565b509695505050505050565b60208152815160208201525f602083015160e0604084015261338f6101008401826129a1565b90506040840151601f19808584030160608601526133ad83836129a1565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526133dd8383613303565b925060a08601519150808584030160c0860152506133fb8282613303565b91505060c084015161341860e08501826001600160401b03169052565b509392505050565b5f8060408385031215613431575f80fd5b8251915060208301516001600160401b0381111561344d575f80fd5b61345985828601612bd2565b9150509250929050565b6001600160401b0383111561347a5761347a612b1e565b61348e836134888354612ad8565b83612dc9565b5f601f8411600181146134bf575f85156134a85750838201355b5f19600387901b1c1916600186901b178355612e0d565b5f83815260208120601f198716915b828110156134ee57868501358255602094850194600190920191016134ce565b508682101561350a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208083525f845461352e81612ad8565b806020870152604060018084165f811461354f576001811461356b57613598565b60ff19851660408a0152604084151560051b8a01019550613598565b895f5260205f205f5b8581101561358f5781548b8201860152908301908801613574565b8a016040019650505b509398975050505050505050565b5f80604083850312156135b7575f80fd5b82516001600160401b03808211156135cd575f80fd5b90840190606082870312156135e0575f80fd5b6135e8612b32565b8251815260208301516135fa81612885565b6020820152604083015182811115613610575f80fd5b61361c88828601612bd2565b604083015250935061285c91505060208401613168565b8181038181111561158457611584612ed3565b6001600160401b03828116828216039080821115611d1957611d19612ed3565b5f60208284031215613676575f80fd5b813560ff8116811461287e575f80fd5b5f6001600160401b03808316818103612f1f57612f1f612ed356fea2646970667358221220409d3bf8680e7f24b43c15046457ee356f78c62c8d40bd9e26293f27efde933e64736f6c63430008190033", +} + +// ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorManagerMetaData.ABI instead. +var ValidatorManagerABI = ValidatorManagerMetaData.ABI + +// ValidatorManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorManagerMetaData.Bin instead. +var ValidatorManagerBin = ValidatorManagerMetaData.Bin + +// DeployValidatorManager deploys a new Ethereum contract, binding an instance of ValidatorManager to it. +func DeployValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ValidatorManager, error) { + parsed, err := ValidatorManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) + ValidatorManagerBin = strings.ReplaceAll(ValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil +} + +// ValidatorManager is an auto generated Go binding around an Ethereum contract. +type ValidatorManager struct { + ValidatorManagerCaller // Read-only binding to the contract + ValidatorManagerTransactor // Write-only binding to the contract + ValidatorManagerFilterer // Log filterer for contract events +} + +// ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorManagerSession struct { + Contract *ValidatorManager // 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 +} + +// ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorManagerCallerSession struct { + Contract *ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorManagerTransactorSession struct { + Contract *ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorManagerRaw struct { + Contract *ValidatorManager // Generic contract binding to access the raw methods on +} + +// ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorManagerCallerRaw struct { + Contract *ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorManagerTransactorRaw struct { + Contract *ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorManager creates a new instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManager(address common.Address, backend bind.ContractBackend) (*ValidatorManager, error) { + contract, err := bindValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorManager{ValidatorManagerCaller: ValidatorManagerCaller{contract: contract}, ValidatorManagerTransactor: ValidatorManagerTransactor{contract: contract}, ValidatorManagerFilterer: ValidatorManagerFilterer{contract: contract}}, nil +} + +// NewValidatorManagerCaller creates a new read-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ValidatorManagerCaller, error) { + contract, err := bindValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerCaller{contract: contract}, nil +} + +// NewValidatorManagerTransactor creates a new write-only instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorManagerTransactor, error) { + contract, err := bindValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorManagerTransactor{contract: contract}, nil +} + +// NewValidatorManagerFilterer creates a new log filterer instance of ValidatorManager, bound to a specific deployed contract. +func NewValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorManagerFilterer, error) { + contract, err := bindValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorManagerFilterer{contract: contract}, nil +} + +// bindValidatorManager binds a generic wrapper to an already deployed contract. +func bindValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorManagerMetaData.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 (_ValidatorManager *ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.Contract.ValidatorManagerCaller.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 (_ValidatorManager *ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.ValidatorManagerTransactor.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 (_ValidatorManager *ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorManager.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 (_ValidatorManager *ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorManager *ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "ADDRESS_LENGTH") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ValidatorManager *ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ValidatorManager.Contract.ADDRESSLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "BLS_PUBLIC_KEY_LENGTH") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_CHURN_PERCENTAGE_LIMIT") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "MAXIMUM_REGISTRATION_EXPIRY_LENGTH") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "VALIDATOR_MANAGER_STORAGE_LOCATION") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "WARP_MESSENGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ValidatorManager.Contract.WARPMESSENGER(&_ValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getChurnPeriodSeconds") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ValidatorManager.Contract.GetChurnPeriodSeconds(&_ValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ValidatorManager.Contract.GetChurnPeriodSeconds(&_ValidatorManager.CallOpts) +} + +// GetSecurityModule is a free data retrieval call binding the contract method 0xcdeea3c9. +// +// Solidity: function getSecurityModule() view returns(address) +func (_ValidatorManager *ValidatorManagerCaller) GetSecurityModule(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getSecurityModule") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetSecurityModule is a free data retrieval call binding the contract method 0xcdeea3c9. +// +// Solidity: function getSecurityModule() view returns(address) +func (_ValidatorManager *ValidatorManagerSession) GetSecurityModule() (common.Address, error) { + return _ValidatorManager.Contract.GetSecurityModule(&_ValidatorManager.CallOpts) +} + +// GetSecurityModule is a free data retrieval call binding the contract method 0xcdeea3c9. +// +// Solidity: function getSecurityModule() view returns(address) +func (_ValidatorManager *ValidatorManagerCallerSession) GetSecurityModule() (common.Address, error) { + return _ValidatorManager.Contract.GetSecurityModule(&_ValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_ValidatorManager *ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ValidatorManager.Contract.GetValidator(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "getWeight", validationID) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ValidatorManager *ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ValidatorManager.Contract.GetWeight(&_ValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorManager.contract.Call(opts, &out, "registeredValidators", nodeID) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ValidatorManager *ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ValidatorManager.Contract.RegisteredValidators(&_ValidatorManager.CallOpts, nodeID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteEndValidation(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorRegistration(&_ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) CompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "completeValidatorWeightChange", validationID) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) CompleteValidatorWeightChange(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorWeightChange(&_ValidatorManager.TransactOpts, validationID) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) CompleteValidatorWeightChange(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.CompleteValidatorWeightChange(&_ValidatorManager.TransactOpts, validationID) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address securityModule) returns() +func (_ValidatorManager *ValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initialize", settings, securityModule) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address securityModule) returns() +func (_ValidatorManager *ValidatorManagerSession) Initialize(settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.Initialize(&_ValidatorManager.TransactOpts, settings, securityModule) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address securityModule) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.Initialize(&_ValidatorManager.TransactOpts, settings, securityModule) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeEndValidation(&_ValidatorManager.TransactOpts, validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeEndValidation(&_ValidatorManager.TransactOpts, validationID) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", input, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorRegistration(&_ValidatorManager.TransactOpts, input, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorRegistration(&_ValidatorManager.TransactOpts, input, weight) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, conversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorSet(&_ValidatorManager.TransactOpts, conversionData, messageIndex) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_ValidatorManager *ValidatorManagerTransactor) InitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "initializeValidatorWeightChange", validationID, weight) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_ValidatorManager *ValidatorManagerSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorWeightChange(&_ValidatorManager.TransactOpts, validationID, weight) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_ValidatorManager *ValidatorManagerTransactorSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _ValidatorManager.Contract.InitializeValidatorWeightChange(&_ValidatorManager.TransactOpts, validationID, weight) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendEndValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ValidatorManager.TransactOpts, validationID) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ValidatorManager *ValidatorManagerTransactor) SetSecurityModule(opts *bind.TransactOpts, securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.contract.Transact(opts, "setSecurityModule", securityModule) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ValidatorManager *ValidatorManagerSession) SetSecurityModule(securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.SetSecurityModule(&_ValidatorManager.TransactOpts, securityModule) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ValidatorManager *ValidatorManagerTransactorSession) SetSecurityModule(securityModule common.Address) (*types.Transaction, error) { + return _ValidatorManager.Contract.SetSecurityModule(&_ValidatorManager.TransactOpts, securityModule) +} + +// ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreatedIterator struct { + Event *ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ValidatorManager contract. +type ValidatorManagerInitialValidatorCreated struct { + ValidationID [32]byte + NodeID common.Hash + Weight uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) +func (_ValidatorManager *ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ValidatorManagerInitialValidatorCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerInitialValidatorCreatedIterator{contract: _ValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil +} + +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) +func (_ValidatorManager *ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) +func (_ValidatorManager *ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ValidatorManagerInitialValidatorCreated, error) { + event := new(ValidatorManagerInitialValidatorCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ValidatorManager contract. +type ValidatorManagerInitializedIterator struct { + Event *ValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerInitialized represents a Initialized event raised by the ValidatorManager contract. +type ValidatorManagerInitialized 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 (_ValidatorManager *ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatorManagerInitializedIterator, error) { + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ValidatorManagerInitializedIterator{contract: _ValidatorManager.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 (_ValidatorManager *ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _ValidatorManager.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(ValidatorManagerInitialized) + if err := _ValidatorManager.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 (_ValidatorManager *ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ValidatorManagerInitialized, error) { + event := new(ValidatorManagerInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreatedIterator struct { + Event *ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodCreated struct { + ValidationID [32]byte + NodeID common.Hash + RegisterValidationMessageID [32]byte + Weight uint64 + RegistrationExpiry uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ValidatorManagerValidationPeriodCreatedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodCreatedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nodeIDRule []interface{} + for _, nodeIDItem := range nodeID { + nodeIDRule = append(nodeIDRule, nodeIDItem) + } + var registerValidationMessageIDRule []interface{} + for _, registerValidationMessageIDItem := range registerValidationMessageID { + registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ValidatorManagerValidationPeriodCreated, error) { + event := new(ValidatorManagerValidationPeriodCreated) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEndedIterator struct { + Event *ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodEnded struct { + ValidationID [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ValidatorManagerValidationPeriodEndedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodEndedIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var statusRule []interface{} + for _, statusItem := range status { + statusRule = append(statusRule, statusItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// +// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ValidatorManagerValidationPeriodEnded, error) { + event := new(ValidatorManagerValidationPeriodEnded) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegisteredIterator struct { + Event *ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ValidatorManager contract. +type ValidatorManagerValidationPeriodRegistered struct { + ValidationID [32]byte + Weight uint64 + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidationPeriodRegisteredIterator{contract: _ValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil +} + +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ValidatorManagerValidationPeriodRegistered, error) { + event := new(ValidatorManagerValidationPeriodRegistered) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitializedIterator struct { + Event *ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ValidatorManager contract. +type ValidatorManagerValidatorRemovalInitialized struct { + ValidationID [32]byte + SetWeightMessageID [32]byte + Weight uint64 + EndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ValidatorManagerValidatorRemovalInitializedIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidatorRemovalInitializedIterator{contract: _ValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil +} + +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var setWeightMessageIDRule []interface{} + for _, setWeightMessageIDItem := range setWeightMessageID { + setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ValidatorManagerValidatorRemovalInitialized, error) { + event := new(ValidatorManagerValidatorRemovalInitialized) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdateIterator struct { + Event *ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub interfaces.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ValidatorManager contract. +type ValidatorManagerValidatorWeightUpdate struct { + ValidationID [32]byte + Nonce uint64 + Weight uint64 + SetWeightMessageID [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ValidatorManagerValidatorWeightUpdateIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &ValidatorManagerValidatorWeightUpdateIterator{contract: _ValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil +} + +// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + var nonceRule []interface{} + for _, nonceItem := range nonce { + nonceRule = append(nonceRule, nonceItem) + } + + logs, sub, err := _ValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) +func (_ValidatorManager *ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ValidatorManagerValidatorWeightUpdate, error) { + event := new(ValidatorManagerValidatorWeightUpdate) + if err := _ValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. +var ValidatorMessagesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea2646970667358221220195ae55415373c0b17ffe6a3bfeb5bce00f43c97d28a367c9b31b608481bce4864736f6c63430008190033", +} + +// ValidatorMessagesABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatorMessagesMetaData.ABI instead. +var ValidatorMessagesABI = ValidatorMessagesMetaData.ABI + +// ValidatorMessagesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ValidatorMessagesMetaData.Bin instead. +var ValidatorMessagesBin = ValidatorMessagesMetaData.Bin + +// DeployValidatorMessages deploys a new Ethereum contract, binding an instance of ValidatorMessages to it. +func DeployValidatorMessages(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ValidatorMessages, error) { + parsed, err := ValidatorMessagesMetaData.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(ValidatorMessagesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// ValidatorMessages is an auto generated Go binding around an Ethereum contract. +type ValidatorMessages struct { + ValidatorMessagesCaller // Read-only binding to the contract + ValidatorMessagesTransactor // Write-only binding to the contract + ValidatorMessagesFilterer // Log filterer for contract events +} + +// ValidatorMessagesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatorMessagesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatorMessagesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatorMessagesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatorMessagesSession struct { + Contract *ValidatorMessages // 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 +} + +// ValidatorMessagesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatorMessagesCallerSession struct { + Contract *ValidatorMessagesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatorMessagesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatorMessagesTransactorSession struct { + Contract *ValidatorMessagesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatorMessagesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatorMessagesRaw struct { + Contract *ValidatorMessages // Generic contract binding to access the raw methods on +} + +// ValidatorMessagesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatorMessagesCallerRaw struct { + Contract *ValidatorMessagesCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatorMessagesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatorMessagesTransactorRaw struct { + Contract *ValidatorMessagesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatorMessages creates a new instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessages(address common.Address, backend bind.ContractBackend) (*ValidatorMessages, error) { + contract, err := bindValidatorMessages(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ValidatorMessages{ValidatorMessagesCaller: ValidatorMessagesCaller{contract: contract}, ValidatorMessagesTransactor: ValidatorMessagesTransactor{contract: contract}, ValidatorMessagesFilterer: ValidatorMessagesFilterer{contract: contract}}, nil +} + +// NewValidatorMessagesCaller creates a new read-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesCaller(address common.Address, caller bind.ContractCaller) (*ValidatorMessagesCaller, error) { + contract, err := bindValidatorMessages(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesCaller{contract: contract}, nil +} + +// NewValidatorMessagesTransactor creates a new write-only instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatorMessagesTransactor, error) { + contract, err := bindValidatorMessages(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatorMessagesTransactor{contract: contract}, nil +} + +// NewValidatorMessagesFilterer creates a new log filterer instance of ValidatorMessages, bound to a specific deployed contract. +func NewValidatorMessagesFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatorMessagesFilterer, error) { + contract, err := bindValidatorMessages(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatorMessagesFilterer{contract: contract}, nil +} + +// bindValidatorMessages binds a generic wrapper to an already deployed contract. +func bindValidatorMessages(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatorMessagesMetaData.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 (_ValidatorMessages *ValidatorMessagesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.Contract.ValidatorMessagesCaller.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 (_ValidatorMessages *ValidatorMessagesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.ValidatorMessagesTransactor.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 (_ValidatorMessages *ValidatorMessagesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ValidatorMessages.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 (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ValidatorMessages *ValidatorMessagesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ValidatorMessages.Contract.contract.Transact(opts, method, params...) +} + +// PackConversionData is a free data retrieval call binding the contract method 0x51f48008. +// +// Solidity: function packConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackConversionData(opts *bind.CallOpts, conversionData ConversionData) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packConversionData", conversionData) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackConversionData is a free data retrieval call binding the contract method 0x51f48008. +// +// Solidity: function packConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackConversionData(conversionData ConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackConversionData(&_ValidatorMessages.CallOpts, conversionData) +} + +// PackConversionData is a free data retrieval call binding the contract method 0x51f48008. +// +// Solidity: function packConversionData((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackConversionData(conversionData ConversionData) ([]byte, error) { + return _ValidatorMessages.Contract.PackConversionData(&_ValidatorMessages.CallOpts, conversionData) +} + +// PackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xa699c135. +// +// Solidity: function packL1ValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackL1ValidatorRegistrationMessage(opts *bind.CallOpts, validationID [32]byte, valid bool) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packL1ValidatorRegistrationMessage", validationID, valid) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xa699c135. +// +// Solidity: function packL1ValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackL1ValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackL1ValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0xa699c135. +// +// Solidity: function packL1ValidatorRegistrationMessage(bytes32 validationID, bool valid) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackL1ValidatorRegistrationMessage(validationID [32]byte, valid bool) ([]byte, error) { + return _ValidatorMessages.Contract.PackL1ValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, validationID, valid) +} + +// PackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x854a893f. +// +// Solidity: function packL1ValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackL1ValidatorWeightMessage(opts *bind.CallOpts, validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packL1ValidatorWeightMessage", validationID, nonce, weight) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x854a893f. +// +// Solidity: function packL1ValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackL1ValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackL1ValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x854a893f. +// +// Solidity: function packL1ValidatorWeightMessage(bytes32 validationID, uint64 nonce, uint64 weight) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackL1ValidatorWeightMessage(validationID [32]byte, nonce uint64, weight uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackL1ValidatorWeightMessage(&_ValidatorMessages.CallOpts, validationID, nonce, weight) +} + +// PackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0xe0d5478f. +// +// Solidity: function packRegisterL1ValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackRegisterL1ValidatorMessage(opts *bind.CallOpts, validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packRegisterL1ValidatorMessage", validationPeriod) + + if err != nil { + return *new([32]byte), *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) + + return out0, out1, err + +} + +// PackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0xe0d5478f. +// +// Solidity: function packRegisterL1ValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackRegisterL1ValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterL1ValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0xe0d5478f. +// +// Solidity: function packRegisterL1ValidatorMessage((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64) validationPeriod) pure returns(bytes32, bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackRegisterL1ValidatorMessage(validationPeriod ValidatorMessagesValidationPeriod) ([32]byte, []byte, error) { + return _ValidatorMessages.Contract.PackRegisterL1ValidatorMessage(&_ValidatorMessages.CallOpts, validationPeriod) +} + +// PackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x7f7c427a. +// +// Solidity: function packSubnetToL1ConversionMessage(bytes32 conversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackSubnetToL1ConversionMessage(opts *bind.CallOpts, conversionID [32]byte) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packSubnetToL1ConversionMessage", conversionID) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x7f7c427a. +// +// Solidity: function packSubnetToL1ConversionMessage(bytes32 conversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackSubnetToL1ConversionMessage(conversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetToL1ConversionMessage(&_ValidatorMessages.CallOpts, conversionID) +} + +// PackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x7f7c427a. +// +// Solidity: function packSubnetToL1ConversionMessage(bytes32 conversionID) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackSubnetToL1ConversionMessage(conversionID [32]byte) ([]byte, error) { + return _ValidatorMessages.Contract.PackSubnetToL1ConversionMessage(&_ValidatorMessages.CallOpts, conversionID) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCaller) PackValidationUptimeMessage(opts *bind.CallOpts, validationID [32]byte, uptime uint64) ([]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "packValidationUptimeMessage", validationID, uptime) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// PackValidationUptimeMessage is a free data retrieval call binding the contract method 0xe1d68f30. +// +// Solidity: function packValidationUptimeMessage(bytes32 validationID, uint64 uptime) pure returns(bytes) +func (_ValidatorMessages *ValidatorMessagesCallerSession) PackValidationUptimeMessage(validationID [32]byte, uptime uint64) ([]byte, error) { + return _ValidatorMessages.Contract.PackValidationUptimeMessage(&_ValidatorMessages.CallOpts, validationID, uptime) +} + +// UnpackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x021de88f. +// +// Solidity: function unpackL1ValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackL1ValidatorRegistrationMessage(opts *bind.CallOpts, input []byte) ([32]byte, bool, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackL1ValidatorRegistrationMessage", input) + + if err != nil { + return *new([32]byte), *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(bool)).(*bool) + + return out0, out1, err + +} + +// UnpackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x021de88f. +// +// Solidity: function unpackL1ValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackL1ValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackL1ValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackL1ValidatorRegistrationMessage is a free data retrieval call binding the contract method 0x021de88f. +// +// Solidity: function unpackL1ValidatorRegistrationMessage(bytes input) pure returns(bytes32, bool) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackL1ValidatorRegistrationMessage(input []byte) ([32]byte, bool, error) { + return _ValidatorMessages.Contract.UnpackL1ValidatorRegistrationMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x50782b0f. +// +// Solidity: function unpackL1ValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackL1ValidatorWeightMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackL1ValidatorWeightMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + out2 := *abi.ConvertType(out[2], new(uint64)).(*uint64) + + return out0, out1, out2, err + +} + +// UnpackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x50782b0f. +// +// Solidity: function unpackL1ValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackL1ValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackL1ValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackL1ValidatorWeightMessage is a free data retrieval call binding the contract method 0x50782b0f. +// +// Solidity: function unpackL1ValidatorWeightMessage(bytes input) pure returns(bytes32, uint64, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackL1ValidatorWeightMessage(input []byte) ([32]byte, uint64, uint64, error) { + return _ValidatorMessages.Contract.UnpackL1ValidatorWeightMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0x9b835465. +// +// Solidity: function unpackRegisterL1ValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackRegisterL1ValidatorMessage(opts *bind.CallOpts, input []byte) (ValidatorMessagesValidationPeriod, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackRegisterL1ValidatorMessage", input) + + if err != nil { + return *new(ValidatorMessagesValidationPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorMessagesValidationPeriod)).(*ValidatorMessagesValidationPeriod) + + return out0, err + +} + +// UnpackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0x9b835465. +// +// Solidity: function unpackRegisterL1ValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackRegisterL1ValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterL1ValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackRegisterL1ValidatorMessage is a free data retrieval call binding the contract method 0x9b835465. +// +// Solidity: function unpackRegisterL1ValidatorMessage(bytes input) pure returns((bytes32,bytes,bytes,uint64,(uint32,address[]),(uint32,address[]),uint64)) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackRegisterL1ValidatorMessage(input []byte) (ValidatorMessagesValidationPeriod, error) { + return _ValidatorMessages.Contract.UnpackRegisterL1ValidatorMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x4d847884. +// +// Solidity: function unpackSubnetToL1ConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackSubnetToL1ConversionMessage(opts *bind.CallOpts, input []byte) ([32]byte, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackSubnetToL1ConversionMessage", input) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// UnpackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x4d847884. +// +// Solidity: function unpackSubnetToL1ConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackSubnetToL1ConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetToL1ConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackSubnetToL1ConversionMessage is a free data retrieval call binding the contract method 0x4d847884. +// +// Solidity: function unpackSubnetToL1ConversionMessage(bytes input) pure returns(bytes32) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackSubnetToL1ConversionMessage(input []byte) ([32]byte, error) { + return _ValidatorMessages.Contract.UnpackSubnetToL1ConversionMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCaller) UnpackValidationUptimeMessage(opts *bind.CallOpts, input []byte) ([32]byte, uint64, error) { + var out []interface{} + err := _ValidatorMessages.contract.Call(opts, &out, "unpackValidationUptimeMessage", input) + + if err != nil { + return *new([32]byte), *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out1 := *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return out0, out1, err + +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} + +// UnpackValidationUptimeMessage is a free data retrieval call binding the contract method 0x088c2463. +// +// Solidity: function unpackValidationUptimeMessage(bytes input) pure returns(bytes32, uint64) +func (_ValidatorMessages *ValidatorMessagesCallerSession) UnpackValidationUptimeMessage(input []byte) ([32]byte, uint64, error) { + return _ValidatorMessages.Contract.UnpackValidationUptimeMessage(&_ValidatorMessages.CallOpts, input) +} diff --git a/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go new file mode 100644 index 000000000..4507c9481 --- /dev/null +++ b/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go @@ -0,0 +1,431 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iacp99validatormanager + +import ( + "errors" + "math/big" + "strings" + + "github.com/ava-labs/subnet-evm/accounts/abi" + "github.com/ava-labs/subnet-evm/accounts/abi/bind" + "github.com/ava-labs/subnet-evm/core/types" + "github.com/ava-labs/subnet-evm/interfaces" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = interfaces.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ConversionData is an auto generated low-level Go binding around an user-defined struct. +type ConversionData struct { + SubnetID [32]byte + ValidatorManagerBlockchainID [32]byte + ValidatorManagerAddress common.Address + InitialValidators []InitialValidator +} + +// InitialValidator is an auto generated low-level Go binding around an user-defined struct. +type InitialValidator struct { + NodeID []byte + BlsPublicKey []byte + Weight uint64 +} + +// PChainOwner is an auto generated low-level Go binding around an user-defined struct. +type PChainOwner struct { + Threshold uint32 + Addresses []common.Address +} + +// Validator is an auto generated low-level Go binding around an user-defined struct. +type Validator struct { + Status uint8 + NodeID []byte + StartingWeight uint64 + MessageNonce uint64 + Weight uint64 + StartedAt uint64 + EndedAt uint64 +} + +// ValidatorRegistrationInput is an auto generated low-level Go binding around an user-defined struct. +type ValidatorRegistrationInput struct { + NodeID []byte + BlsPublicKey []byte + RegistrationExpiry uint64 + RemainingBalanceOwner PChainOwner + DisableOwner PChainOwner +} + +// IACP99ValidatorManagerMetaData contains all meta data concerning the IACP99ValidatorManager contract. +var IACP99ValidatorManagerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"completeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChurnPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorWeightChange\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IACP99ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IACP99ValidatorManagerMetaData.ABI instead. +var IACP99ValidatorManagerABI = IACP99ValidatorManagerMetaData.ABI + +// IACP99ValidatorManager is an auto generated Go binding around an Ethereum contract. +type IACP99ValidatorManager struct { + IACP99ValidatorManagerCaller // Read-only binding to the contract + IACP99ValidatorManagerTransactor // Write-only binding to the contract + IACP99ValidatorManagerFilterer // Log filterer for contract events +} + +// IACP99ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IACP99ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IACP99ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IACP99ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IACP99ValidatorManagerSession struct { + Contract *IACP99ValidatorManager // 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 +} + +// IACP99ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IACP99ValidatorManagerCallerSession struct { + Contract *IACP99ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IACP99ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IACP99ValidatorManagerTransactorSession struct { + Contract *IACP99ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IACP99ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IACP99ValidatorManagerRaw struct { + Contract *IACP99ValidatorManager // Generic contract binding to access the raw methods on +} + +// IACP99ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IACP99ValidatorManagerCallerRaw struct { + Contract *IACP99ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IACP99ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IACP99ValidatorManagerTransactorRaw struct { + Contract *IACP99ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIACP99ValidatorManager creates a new instance of IACP99ValidatorManager, bound to a specific deployed contract. +func NewIACP99ValidatorManager(address common.Address, backend bind.ContractBackend) (*IACP99ValidatorManager, error) { + contract, err := bindIACP99ValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IACP99ValidatorManager{IACP99ValidatorManagerCaller: IACP99ValidatorManagerCaller{contract: contract}, IACP99ValidatorManagerTransactor: IACP99ValidatorManagerTransactor{contract: contract}, IACP99ValidatorManagerFilterer: IACP99ValidatorManagerFilterer{contract: contract}}, nil +} + +// NewIACP99ValidatorManagerCaller creates a new read-only instance of IACP99ValidatorManager, bound to a specific deployed contract. +func NewIACP99ValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IACP99ValidatorManagerCaller, error) { + contract, err := bindIACP99ValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IACP99ValidatorManagerCaller{contract: contract}, nil +} + +// NewIACP99ValidatorManagerTransactor creates a new write-only instance of IACP99ValidatorManager, bound to a specific deployed contract. +func NewIACP99ValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IACP99ValidatorManagerTransactor, error) { + contract, err := bindIACP99ValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IACP99ValidatorManagerTransactor{contract: contract}, nil +} + +// NewIACP99ValidatorManagerFilterer creates a new log filterer instance of IACP99ValidatorManager, bound to a specific deployed contract. +func NewIACP99ValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IACP99ValidatorManagerFilterer, error) { + contract, err := bindIACP99ValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IACP99ValidatorManagerFilterer{contract: contract}, nil +} + +// bindIACP99ValidatorManager binds a generic wrapper to an already deployed contract. +func bindIACP99ValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IACP99ValidatorManagerMetaData.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 (_IACP99ValidatorManager *IACP99ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IACP99ValidatorManager.Contract.IACP99ValidatorManagerCaller.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 (_IACP99ValidatorManager *IACP99ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.IACP99ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IACP99ValidatorManager *IACP99ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.IACP99ValidatorManagerTransactor.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 (_IACP99ValidatorManager *IACP99ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IACP99ValidatorManager.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 (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IACP99ValidatorManager.contract.Call(opts, &out, "getChurnPeriodSeconds") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _IACP99ValidatorManager.Contract.GetChurnPeriodSeconds(&_IACP99ValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _IACP99ValidatorManager.Contract.GetChurnPeriodSeconds(&_IACP99ValidatorManager.CallOpts) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IACP99ValidatorManager *IACP99ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _IACP99ValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _IACP99ValidatorManager.Contract.GetValidator(&_IACP99ValidatorManager.CallOpts, validationID) +} + +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. +// +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IACP99ValidatorManager *IACP99ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _IACP99ValidatorManager.Contract.GetValidator(&_IACP99ValidatorManager.CallOpts, validationID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteEndValidation(&_IACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteEndValidation(&_IACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) CompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "completeValidatorWeightChange", validationID) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) CompleteValidatorWeightChange(validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x5fb0236c. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) CompleteValidatorWeightChange(validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeEndValidation(&_IACP99ValidatorManager.TransactOpts, validationID) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// +// Solidity: function initializeEndValidation(bytes32 validationID) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeEndValidation(&_IACP99ValidatorManager.TransactOpts, validationID) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", input, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, input, weight) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, input, weight) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorSet(&_IACP99ValidatorManager.TransactOpts, conversionData, messageIndex) +} + +// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// +// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messageIndex) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorSet(&_IACP99ValidatorManager.TransactOpts, conversionData, messageIndex) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeValidatorWeightChange", validationID, weight) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, weight) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0xe3bb1234. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) returns(uint64) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, weight) +} diff --git a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go index 5acc40a14..7e79a849f 100644 --- a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go @@ -29,24 +29,9 @@ var ( _ = abi.ConvertType ) -// ConversionData is an auto generated low-level Go binding around an user-defined struct. -type ConversionData struct { - SubnetID [32]byte - ValidatorManagerBlockchainID [32]byte - ValidatorManagerAddress common.Address - InitialValidators []InitialValidator -} - -// InitialValidator is an auto generated low-level Go binding around an user-defined struct. -type InitialValidator struct { - NodeID []byte - BlsPublicKey []byte - Weight uint64 -} - // IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. var IPoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // IPoSValidatorManagerABI is the input ABI used to generate the binding from. @@ -300,48 +285,6 @@ func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndD return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, messageIndex) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndValidation(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteValidatorRegistration(&_IPoSValidatorManager.TransactOpts, messageIndex) -} - // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() @@ -510,69 +453,6 @@ func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEn return _IPoSValidatorManager.Contract.InitializeEndValidation0(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, conversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeValidatorSet(&_IPoSValidatorManager.TransactOpts, conversionData, messsageIndex) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. -// -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendEndValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - -// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. -// -// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendRegisterValidatorMessage(&_IPoSValidatorManager.TransactOpts, validationID) -} - // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() @@ -839,19 +719,18 @@ func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { // IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. type IPoSValidatorManagerDelegatorAdded struct { - DelegationID [32]byte - ValidationID [32]byte - DelegatorAddress common.Address - Nonce uint64 - ValidatorWeight uint64 - DelegatorWeight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos + DelegationID [32]byte + ValidationID [32]byte + DelegatorAddress common.Address + Nonce uint64 + ValidatorWeight uint64 + DelegatorWeight uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { var delegationIDRule []interface{} @@ -874,9 +753,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded( return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} @@ -924,9 +803,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(o }), nil } -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) +// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { event := new(IPoSValidatorManagerDelegatorAdded) if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { @@ -1243,160 +1122,6 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemoval return event, nil } -// IPoSValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreatedIterator struct { - Event *IPoSValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreated struct { - ValidationID [32]byte - NodeID common.Hash - Weight uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil -} - -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. -// -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { - event := new(IPoSValidatorManagerInitialValidatorCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. type IPoSValidatorManagerUptimeUpdatedIterator struct { Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log @@ -1541,776 +1266,3 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(lo event.Raw = log return event, nil } - -// IPoSValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreatedIterator struct { - Event *IPoSValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodCreated struct { - ValidationID [32]byte - NodeID common.Hash - RegisterValidationMessageID [32]byte - Weight uint64 - RegistrationExpiry uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nodeIDRule []interface{} - for _, nodeIDItem := range nodeID { - nodeIDRule = append(nodeIDRule, nodeIDItem) - } - var registerValidationMessageIDRule []interface{} - for _, registerValidationMessageIDItem := range registerValidationMessageID { - registerValidationMessageIDRule = append(registerValidationMessageIDRule, registerValidationMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. -// -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { - event := new(IPoSValidatorManagerValidationPeriodCreated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEndedIterator struct { - Event *IPoSValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodEnded struct { - ValidationID [32]byte - Status uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*IPoSValidatorManagerValidationPeriodEndedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodEndedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodEnded, validationID [][32]byte, status []uint8) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var statusRule []interface{} - for _, statusItem := range status { - statusRule = append(statusRule, statusItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. -// -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*IPoSValidatorManagerValidationPeriodEnded, error) { - event := new(IPoSValidatorManagerValidationPeriodEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegisteredIterator struct { - Event *IPoSValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidationPeriodRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidationPeriodRegistered struct { - ValidationID [32]byte - Weight uint64 - Timestamp *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil -} - -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. -// -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { - event := new(IPoSValidatorManagerValidationPeriodRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorRemovalInitialized struct { - ValidationID [32]byte - SetWeightMessageID [32]byte - Weight uint64 - EndTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil -} - -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var setWeightMessageIDRule []interface{} - for _, setWeightMessageIDItem := range setWeightMessageID { - setWeightMessageIDRule = append(setWeightMessageIDRule, setWeightMessageIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. -// -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerValidatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IPoSValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdateIterator struct { - Event *IPoSValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub interfaces.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerValidatorWeightUpdate) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerValidatorWeightUpdate struct { - ValidationID [32]byte - Nonce uint64 - Weight uint64 - SetWeightMessageID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerValidatorWeightUpdateIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil -} - -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var nonceRule []interface{} - for _, nonceItem := range nonce { - nonceRule = append(nonceRule, nonceItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. -// -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { - event := new(IPoSValidatorManagerValidatorWeightUpdate) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go index 9135c7b1b..d6a564089 100644 --- a/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go @@ -29,24 +29,9 @@ var ( _ = abi.ConvertType ) -// ConversionData is an auto generated low-level Go binding around an user-defined struct. -type ConversionData struct { - SubnetID [32]byte - ValidatorManagerBlockchainID [32]byte - ValidatorManagerAddress common.Address - InitialValidators []InitialValidator -} - -// InitialValidator is an auto generated low-level Go binding around an user-defined struct. -type InitialValidator struct { - NodeID []byte - BlsPublicKey []byte - Weight uint64 -} - // IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. var IValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // IValidatorManagerABI is the input ABI used to generate the binding from. @@ -195,69 +180,6 @@ func (_IValidatorManager *IValidatorManagerTransactorRaw) Transact(opts *bind.Tr return _IValidatorManager.Contract.contract.Transact(opts, method, params...) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. -// -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteEndValidation(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. -// -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.contract.Transact(opts, "initializeValidatorSet", conversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, conversionData, messsageIndex) -} - -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. -// -// Solidity: function initializeValidatorSet((bytes32,bytes32,address,(bytes,bytes,uint64)[]) conversionData, uint32 messsageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messsageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.InitializeValidatorSet(&_IValidatorManager.TransactOpts, conversionData, messsageIndex) -} - // ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. // // Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20TokenStakingManager.sol index a5e6af656..3f648449b 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20TokenStakingManager.sol @@ -7,7 +7,6 @@ pragma solidity 0.8.25; import {PoSValidatorManager} from "./PoSValidatorManager.sol"; import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol"; -import {ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; import {IERC20TokenStakingManager} from "./interfaces/IERC20TokenStakingManager.sol"; import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; @@ -15,6 +14,7 @@ import {SafeERC20TransferFrom} from "@utilities/SafeERC20TransferFrom.sol"; import {Initializable} from "@openzeppelin/contracts-upgradeable@5.0.2/proxy/utils/Initializable.sol"; import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; +import {ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Implementation of the {IERC20TokenStakingManager} interface. diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenStakingManager.sol index b641a94b5..66180ba8e 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenStakingManager.sol @@ -7,7 +7,6 @@ pragma solidity 0.8.25; import {PoSValidatorManager} from "./PoSValidatorManager.sol"; import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol"; -import {ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; import {INativeTokenStakingManager} from "./interfaces/INativeTokenStakingManager.sol"; import {INativeMinter} from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/INativeMinter.sol"; @@ -15,6 +14,7 @@ import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import {Address} from "@openzeppelin/contracts@5.0.2/utils/Address.sol"; import {Initializable} from "@openzeppelin/contracts-upgradeable@5.0.2/proxy/utils/Initializable.sol"; +import {ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Implementation of the {INativeTokenStakingManager} interface. diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index ad38db6eb..12e9d828f 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -6,21 +6,38 @@ pragma solidity 0.8.25; import {ValidatorManager} from "./ValidatorManager.sol"; -import { - ValidatorManagerSettings, - ValidatorRegistrationInput -} from "./interfaces/IValidatorManager.sol"; import {IPoAValidatorManager} from "./interfaces/IPoAValidatorManager.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; +import {IACP99ValidatorManager, ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Implementation of the {IPoAValidatorManager} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -contract PoAValidatorManager is IPoAValidatorManager, ValidatorManager, OwnableUpgradeable { +contract PoAValidatorManager is IPoAValidatorManager, OwnableUpgradeable { + + struct PoAValidatorManagerStorage { + IACP99ValidatorManager validatorManager; + } + + // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.PoAValidatorManager")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 public constant POA_VALIDATOR_MANAGER_STORAGE_LOCATION = + 0x81773fca73a14ca21edf1cadc6ec0b26d6a44966f6e97607e90422658d423500; + + function _getPoAValidatorManagerStorage() + private + pure + returns (PoAValidatorManagerStorage storage $) + { + // solhint-disable-next-line no-inline-assembly + assembly { + $.slot := POA_VALIDATOR_MANAGER_STORAGE_LOCATION + } + } + constructor(ICMInitializable init) { if (init == ICMInitializable.Disallowed) { _disableInitializers(); @@ -28,23 +45,26 @@ contract PoAValidatorManager is IPoAValidatorManager, ValidatorManager, OwnableU } function initialize( - ValidatorManagerSettings calldata settings, - address initialOwner + address initialOwner, + IACP99ValidatorManager validatorManager ) external initializer { - __PoAValidatorManager_init(settings, initialOwner); + __PoAValidatorManager_init(initialOwner, validatorManager); } // solhint-disable func-name-mixedcase, ordering function __PoAValidatorManager_init( - ValidatorManagerSettings calldata settings, - address initialOwner + address initialOwner, + IACP99ValidatorManager validatorManager ) internal onlyInitializing { - __ValidatorManager_init(settings); __Ownable_init(initialOwner); + __PoAValidatorManager_init_unchained(validatorManager); } // solhint-disable-next-line no-empty-blocks - function __PoAValidatorManager_init_unchained() internal onlyInitializing {} + function __PoAValidatorManager_init_unchained(IACP99ValidatorManager validatorManager) internal onlyInitializing { + PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + $.validatorManager = validatorManager; + } // solhint-enable func-name-mixedcase @@ -55,7 +75,13 @@ contract PoAValidatorManager is IPoAValidatorManager, ValidatorManager, OwnableU ValidatorRegistrationInput calldata registrationInput, uint64 weight ) external onlyOwner returns (bytes32 validationID) { - return _initializeValidatorRegistration(registrationInput, weight); + PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + return $.validatorManager.initializeValidatorRegistration(registrationInput, weight); + } + + function completeValidatorRegistration(uint32 messageIndex) external { + PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + $.validatorManager.completeValidatorRegistration(messageIndex); } // solhint-enable ordering @@ -63,13 +89,15 @@ contract PoAValidatorManager is IPoAValidatorManager, ValidatorManager, OwnableU * @notice See {IPoAValidatorManager-initializeEndValidation}. */ function initializeEndValidation(bytes32 validationID) external override onlyOwner { - _initializeEndValidation(validationID); + PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + $.validatorManager.initializeEndValidation(validationID); } /** * @notice See {IValidatorManager-completeEndValidation}. */ function completeEndValidation(uint32 messageIndex) external { - _completeEndValidation(messageIndex); + PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + $.validatorManager.completeEndValidation(messageIndex); } } diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 4243b850b..decfc5071 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -5,7 +5,6 @@ pragma solidity 0.8.25; -import {ValidatorManager} from "./ValidatorManager.sol"; import {ValidatorMessages} from "./ValidatorMessages.sol"; import { Delegator, @@ -14,16 +13,15 @@ import { PoSValidatorInfo, PoSValidatorManagerSettings } from "./interfaces/IPoSValidatorManager.sol"; -import { - Validator, - ValidatorRegistrationInput, - ValidatorStatus -} from "./interfaces/IValidatorManager.sol"; import {IRewardCalculator} from "./interfaces/IRewardCalculator.sol"; -import {WarpMessage} from +import {IWarpMessenger, WarpMessage} from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/utils/ReentrancyGuardUpgradeable.sol"; +import {IValidatorManager} from "./interfaces/IValidatorManager.sol"; +import {ContextUpgradeable} from + "@openzeppelin/contracts-upgradeable@5.0.2/utils/ContextUpgradeable.sol"; +import {Validator, ValidatorStatus, ValidatorRegistrationInput, IACP99ValidatorManager} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Implementation of the {IPoSValidatorManager} interface. @@ -32,12 +30,13 @@ import {ReentrancyGuardUpgradeable} from */ abstract contract PoSValidatorManager is IPoSValidatorManager, - ValidatorManager, + ContextUpgradeable, ReentrancyGuardUpgradeable { // solhint-disable private-vars-leading-underscore /// @custom:storage-location erc7201:avalanche-icm.storage.PoSValidatorManager struct PoSValidatorManagerStorage { + IACP99ValidatorManager validatorManager; /// @notice The minimum amount of stake required to be a validator. uint256 _minimumStakeAmount; /// @notice The maximum amount of stake allowed to be a validator. @@ -82,6 +81,11 @@ abstract contract PoSValidatorManager is uint16 public constant BIPS_CONVERSION_FACTOR = 10000; + bytes32 public constant P_CHAIN_BLOCKCHAIN_ID = bytes32(0); + + IWarpMessenger public constant WARP_MESSENGER = + IWarpMessenger(0x0200000000000000000000000000000000000005); + error InvalidDelegationFee(uint16 delegationFeeBips); error InvalidDelegationID(bytes32 delegationID); error InvalidDelegatorStatus(DelegatorStatus status); @@ -99,6 +103,13 @@ abstract contract PoSValidatorManager is error ZeroWeightToValueFactor(); error InvalidUptimeBlockchainID(bytes32 uptimeBlockchainID); + error InvalidWarpOriginSenderAddress(address senderAddress); + error InvalidWarpSourceChainID(bytes32 sourceChainID); + error InvalidValidationID(bytes32 validationID); + error InvalidValidatorStatus(ValidatorStatus status); + error InvalidWarpMessage(); + + // solhint-disable ordering function _getPoSValidatorManagerStorage() private @@ -116,9 +127,9 @@ abstract contract PoSValidatorManager is internal onlyInitializing { - __ValidatorManager_init(settings.baseSettings); __ReentrancyGuard_init(); __POS_Validator_Manager_init_unchained({ + validatorManager: settings.validatorManager, minimumStakeAmount: settings.minimumStakeAmount, maximumStakeAmount: settings.maximumStakeAmount, minimumStakeDuration: settings.minimumStakeDuration, @@ -132,6 +143,7 @@ abstract contract PoSValidatorManager is // solhint-disable-next-line func-name-mixedcase function __POS_Validator_Manager_init_unchained( + IACP99ValidatorManager validatorManager, uint256 minimumStakeAmount, uint256 maximumStakeAmount, uint64 minimumStakeDuration, @@ -154,7 +166,7 @@ abstract contract PoSValidatorManager is revert InvalidStakeMultiplier(maximumStakeMultiplier); } // Minimum stake duration should be at least one churn period in order to prevent churn tracker abuse. - if (minimumStakeDuration < _getChurnPeriodSeconds()) { + if (minimumStakeDuration < validatorManager.getChurnPeriodSeconds()) { revert InvalidMinStakeDuration(minimumStakeDuration); } if (weightToValueFactor == 0) { @@ -164,6 +176,7 @@ abstract contract PoSValidatorManager is revert InvalidUptimeBlockchainID(uptimeBlockchainID); } + $.validatorManager = validatorManager; $._minimumStakeAmount = minimumStakeAmount; $._maximumStakeAmount = maximumStakeAmount; $._minimumStakeDuration = minimumStakeDuration; @@ -174,6 +187,18 @@ abstract contract PoSValidatorManager is $._uptimeBlockchainID = uptimeBlockchainID; } + function completeValidatorRegistration(uint32 messageIndex) external { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + $.validatorManager.completeValidatorRegistration(messageIndex); + } + + function completeEndValidation(uint32 messageIndex) external { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + bytes32 validationID = $.validatorManager.completeEndValidation(messageIndex); + + _completeEndValidation(validationID); + } + /** * @notice See {IPoSValidatorManager-submitUptimeProof}. */ @@ -181,7 +206,7 @@ abstract contract PoSValidatorManager is if (!_isPoSValidator(validationID)) { revert ValidatorNotPoS(validationID); } - ValidatorStatus status = getValidator(validationID).status; + ValidatorStatus status = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID).status; if (status != ValidatorStatus.Active) { revert InvalidValidatorStatus(status); } @@ -196,7 +221,7 @@ abstract contract PoSValidatorManager is function claimDelegationFees(bytes32 validationID) external { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - ValidatorStatus status = getValidator(validationID).status; + ValidatorStatus status = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID).status; if (status != ValidatorStatus.Completed) { revert InvalidValidatorStatus(status); } @@ -241,6 +266,9 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) internal { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + $.validatorManager.initializeEndValidation(validationID); + if ( !_initializeEndPoSValidation( validationID, includeUptimeProof, messageIndex, rewardRecipient @@ -258,6 +286,9 @@ abstract contract PoSValidatorManager is bool includeUptimeProof, uint32 messageIndex ) external { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + $.validatorManager.initializeEndValidation(validationID); + // Ignore the return value here to force end validation, regardless of possible missed rewards _initializeEndPoSValidation(validationID, includeUptimeProof, messageIndex, address(0)); } @@ -271,6 +302,9 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) external { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + $.validatorManager.initializeEndValidation(validationID); + // Ignore the return value here to force end validation, regardless of possible missed rewards _initializeEndPoSValidation(validationID, includeUptimeProof, messageIndex, rewardRecipient); } @@ -321,6 +355,7 @@ abstract contract PoSValidatorManager is * @dev Helper function that initializes the end of a PoS validation period. * Returns false if it is possible for the validator to claim rewards, but it is not eligible. * Returns true otherwise. + * Invariant: Requires that validatorManager.initializeEndValidation has been called. */ function _initializeEndPoSValidation( bytes32 validationID, @@ -330,7 +365,7 @@ abstract contract PoSValidatorManager is ) internal returns (bool) { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - Validator memory validator = _initializeEndValidation(validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); // Non-PoS validators are required to boostrap the network, but are not eligible for rewards. if (!_isPoSValidator(validationID)) { @@ -374,13 +409,10 @@ abstract contract PoSValidatorManager is return (reward > 0); } - /** - * @notice See {IValidatorManager-completeEndValidation}. - */ - function completeEndValidation(uint32 messageIndex) external nonReentrant { + function _completeEndValidation(bytes32 validationID) internal { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - (bytes32 validationID, Validator memory validator) = _completeEndValidation(messageIndex); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); // Return now if this was originally a PoA validator that was later migrated to this PoS manager, // or the validator was part of the initial validator set. @@ -454,7 +486,7 @@ abstract contract PoSValidatorManager is uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount - ) internal virtual returns (bytes32) { + ) internal returns (bytes32) { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); // Validate and save the validator requirements if ( @@ -477,7 +509,7 @@ abstract contract PoSValidatorManager is uint256 lockedValue = _lock(stakeAmount); uint64 weight = valueToWeight(lockedValue); - bytes32 validationID = _initializeValidatorRegistration(registrationInput, weight); + bytes32 validationID = $.validatorManager.initializeValidatorRegistration(registrationInput, weight); $._posValidatorInfo[validationID].owner = _msgSender(); $._posValidatorInfo[validationID].delegationFeeBips = delegationFeeBips; @@ -525,10 +557,10 @@ abstract contract PoSValidatorManager is uint256 delegationAmount ) internal returns (bytes32) { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - uint64 weight = valueToWeight(_lock(delegationAmount)); + uint64 weight = valueToWeight(_lock(delegationAmount)); // TODONOW: Use the sender's address // Ensure the validation period is active - Validator memory validator = getValidator(validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); // Check that the validation ID is a PoS validator if (!_isPoSValidator(validationID)) { revert ValidatorNotPoS(validationID); @@ -543,8 +575,7 @@ abstract contract PoSValidatorManager is revert MaxWeightExceeded(newValidatorWeight); } - (uint64 nonce, bytes32 messageID) = _setValidatorWeight(validationID, newValidatorWeight); - + uint64 nonce = $.validatorManager.initializeValidatorWeightChange(validationID, newValidatorWeight); bytes32 delegationID = keccak256(abi.encodePacked(validationID, nonce)); // Store the delegation information. Set the delegator status to pending added, @@ -564,8 +595,7 @@ abstract contract PoSValidatorManager is delegatorAddress: delegatorAddress, nonce: nonce, validatorWeight: newValidatorWeight, - delegatorWeight: weight, - setWeightMessageID: messageID + delegatorWeight: weight }); return delegationID; } @@ -578,7 +608,7 @@ abstract contract PoSValidatorManager is Delegator memory delegator = $._delegatorStakes[delegationID]; bytes32 validationID = delegator.validationID; - Validator memory validator = getValidator(validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); // Ensure the delegator is pending added. Since anybody can call this function once // delegator registration has been initialized, we need to make sure that this function is only @@ -702,7 +732,7 @@ abstract contract PoSValidatorManager is Delegator memory delegator = $._delegatorStakes[delegationID]; bytes32 validationID = delegator.validationID; - Validator memory validator = getValidator(validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); // Ensure the delegator is active if (delegator.status != DelegatorStatus.Active) { @@ -740,8 +770,8 @@ abstract contract PoSValidatorManager is // initialize the removal. $._delegatorStakes[delegationID].status = DelegatorStatus.PendingRemoved; - ($._delegatorStakes[delegationID].endingNonce,) = - _setValidatorWeight(validationID, validator.weight - delegator.weight); + $._delegatorStakes[delegationID].endingNonce = + $.validatorManager.initializeValidatorWeightChange(validationID, validator.weight - delegator.weight); uint256 reward = _calculateAndSetDelegationReward(delegator, rewardRecipient, delegationID); @@ -771,7 +801,7 @@ abstract contract PoSValidatorManager is ) private returns (uint256) { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - Validator memory validator = getValidator(delegator.validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID); uint64 delegationEndTime; if ( @@ -823,7 +853,7 @@ abstract contract PoSValidatorManager is revert InvalidDelegatorStatus(delegator.status); } - Validator memory validator = getValidator(delegator.validationID); + Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID); if (validator.messageNonce == 0) { // Should be unreachable. revert InvalidDelegationID(delegationID); @@ -837,6 +867,27 @@ abstract contract PoSValidatorManager is ); } + function _getPChainWarpMessage(uint32 messageIndex) + internal + view + returns (WarpMessage memory) + { + (WarpMessage memory warpMessage, bool valid) = + WARP_MESSENGER.getVerifiedWarpMessage(messageIndex); + if (!valid) { + revert InvalidWarpMessage(); + } + // Must match to P-Chain blockchain id, which is 0. + if (warpMessage.sourceChainID != P_CHAIN_BLOCKCHAIN_ID) { + revert InvalidWarpSourceChainID(warpMessage.sourceChainID); + } + if (warpMessage.originSenderAddress != address(0)) { + revert InvalidWarpOriginSenderAddress(warpMessage.originSenderAddress); + } + + return warpMessage; + } + /** * @notice See {IPoSValidatorManager-completeEndDelegation}. */ @@ -854,7 +905,7 @@ abstract contract PoSValidatorManager is revert InvalidDelegatorStatus(delegator.status); } - if (getValidator(delegator.validationID).status != ValidatorStatus.Completed) { + if (_getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID).status != ValidatorStatus.Completed) { // Unpack the Warp message WarpMessage memory warpMessage = _getPChainWarpMessage(messageIndex); (bytes32 validationID, uint64 nonce,) = @@ -884,7 +935,7 @@ abstract contract PoSValidatorManager is // To prevent churn tracker abuse, check that one full churn period has passed, // so a delegator may not stake twice in the same churn period. - if (block.timestamp < delegator.startedAt + _getChurnPeriodSeconds()) { + if (block.timestamp < delegator.startedAt + $.validatorManager.getChurnPeriodSeconds()) { revert MinStakeDurationNotPassed(uint64(block.timestamp)); } @@ -958,4 +1009,4 @@ abstract contract PoSValidatorManager is return (delegationRewards, validatorFees); } -} +} \ No newline at end of file diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index b6d6070f3..f115214a0 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -7,15 +7,9 @@ pragma solidity 0.8.25; import {ValidatorMessages} from "./ValidatorMessages.sol"; import { - InitialValidator, IValidatorManager, - PChainOwner, - ConversionData, - Validator, ValidatorChurnPeriod, - ValidatorManagerSettings, - ValidatorRegistrationInput, - ValidatorStatus + ValidatorManagerSettings } from "./interfaces/IValidatorManager.sol"; import { IWarpMessenger, @@ -25,17 +19,19 @@ import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/utils/ContextUpgradeable.sol"; import {Initializable} from "@openzeppelin/contracts-upgradeable@5.0.2/proxy/utils/Initializable.sol"; - +import {IACP99ValidatorManager, Validator, ValidatorStatus, ValidatorRegistrationInput, ConversionData, PChainOwner, InitialValidator} from "./interfaces/IACP99ValidatorManager.sol"; +import {ICMInitializable} from "@utilities/ICMInitializable.sol"; /** * @dev Implementation of the {IValidatorManager} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValidatorManager { +contract ValidatorManager is IACP99ValidatorManager, Initializable, ContextUpgradeable, IValidatorManager { // solhint-disable private-vars-leading-underscore /// @custom:storage-location erc7201:avalanche-icm.storage.ValidatorManager struct ValidatorManagerStorage { + address securityModule; /// @notice The subnetID associated with this validator manager. bytes32 _subnetID; /// @notice The number of seconds after which to reset the churn tracker. @@ -103,17 +99,27 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida IWarpMessenger public constant WARP_MESSENGER = IWarpMessenger(0x0200000000000000000000000000000000000005); + constructor(ICMInitializable init) { + if (init == ICMInitializable.Disallowed) { + _disableInitializers(); + } + } + + function initialize(ValidatorManagerSettings calldata settings, address securityModule) external initializer { + __ValidatorManager_init(settings, securityModule); + } + // solhint-disable-next-line func-name-mixedcase - function __ValidatorManager_init(ValidatorManagerSettings calldata settings) + function __ValidatorManager_init(ValidatorManagerSettings calldata settings, address securityModule) internal onlyInitializing { __Context_init(); - __ValidatorManager_init_unchained(settings); + __ValidatorManager_init_unchained(settings, securityModule); } // solhint-disable-next-line func-name-mixedcase - function __ValidatorManager_init_unchained(ValidatorManagerSettings calldata settings) + function __ValidatorManager_init_unchained(ValidatorManagerSettings calldata settings, address securityModule) internal onlyInitializing { @@ -129,6 +135,35 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida $._maximumChurnPercentage = settings.maximumChurnPercentage; $._churnPeriodSeconds = settings.churnPeriodSeconds; + $.securityModule = securityModule; + } + + // ACP-99 methods + // TODO: calling this should be restricted to...who? + function setSecurityModule(address securityModule) external { + _getValidatorManagerStorage().securityModule = securityModule; + } + + function getSecurityModule() external view returns (address) { + return _getValidatorManagerStorage().securityModule; + } + + modifier onlySecurityModule() { + require(msg.sender == _getValidatorManagerStorage().securityModule, "ACP99ValidatorManager: caller is not the security module"); + _; + } + + function initializeEndValidation(bytes32 validationID) external onlySecurityModule{ + _initializeEndValidation(validationID); + } + + function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) external onlySecurityModule returns (uint64) { + (uint64 nonce, ) = _setValidatorWeight(validationID, weight); + return nonce; + } + + function completeValidatorWeightChange(bytes32 validationID) external onlySecurityModule { + // TODO: implement } modifier initializedValidatorSet() { @@ -139,7 +174,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida } /** - * @notice See {IValidatorManager-initializeValidatorSet}. + * @notice See {IACP99ValidatorManager-initializeValidatorSet}. */ function initializeValidatorSet( ConversionData calldata conversionData, @@ -233,10 +268,10 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida * @param input The inputs for a validator registration. * @param weight The weight of the validator being registered. */ - function _initializeValidatorRegistration( + function initializeValidatorRegistration( ValidatorRegistrationInput calldata input, uint64 weight - ) internal virtual initializedValidatorSet returns (bytes32) { + ) external onlySecurityModule initializedValidatorSet returns (bytes32) { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); if ( @@ -319,9 +354,9 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida } /** - * @notice See {IValidatorManager-completeValidatorRegistration}. + * @notice See {IACP99ValidatorManager-completeValidatorRegistration}. */ - function completeValidatorRegistration(uint32 messageIndex) external { + function completeValidatorRegistration(uint32 messageIndex) external onlySecurityModule returns (bytes32) { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); (bytes32 validationID, bool validRegistration) = ValidatorMessages .unpackL1ValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); @@ -343,6 +378,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida emit ValidationPeriodRegistered( validationID, $._validationPeriods[validationID].weight, block.timestamp ); + return validationID; } /** @@ -427,9 +463,10 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida * {registrationExpiry} being reached. * @return (Validation ID, Validator instance) representing the completed validation period. */ - function _completeEndValidation(uint32 messageIndex) - internal - returns (bytes32, Validator memory) + function completeEndValidation(uint32 messageIndex) + external + onlySecurityModule + returns (bytes32) { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); @@ -466,7 +503,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Emit event. emit ValidationPeriodEnded(validationID, validator.status); - return (validationID, validator); + return validationID; } /** @@ -532,7 +569,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida return (nonce, messageID); } - function _getChurnPeriodSeconds() internal view returns (uint64) { + function getChurnPeriodSeconds() external view returns (uint64) { return _getValidatorManagerStorage()._churnPeriodSeconds; } @@ -587,4 +624,4 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida $._churnTracker = churnTracker; } -} +} \ No newline at end of file diff --git a/contracts/validator-manager/ValidatorMessages.sol b/contracts/validator-manager/ValidatorMessages.sol index 9adcdc8aa..0d39c479e 100644 --- a/contracts/validator-manager/ValidatorMessages.sol +++ b/contracts/validator-manager/ValidatorMessages.sol @@ -4,7 +4,7 @@ // SPDX-License-Identifier: Ecosystem pragma solidity 0.8.25; -import {PChainOwner, ConversionData} from "./interfaces/IValidatorManager.sol"; +import {PChainOwner, ConversionData} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Packing utilities for the Warp message types used by the Validator Manager contracts, as specified in ACP-77: diff --git a/contracts/validator-manager/interfaces/IACP99ValidatorManager.sol b/contracts/validator-manager/interfaces/IACP99ValidatorManager.sol new file mode 100644 index 000000000..5bdfcca51 --- /dev/null +++ b/contracts/validator-manager/interfaces/IACP99ValidatorManager.sol @@ -0,0 +1,99 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +pragma solidity 0.8.25; + +/** + * @dev Validator status + */ +enum ValidatorStatus { + Unknown, + PendingAdded, + Active, + PendingRemoved, + Completed, + Invalidated +} + +/** + * @dev Contains the active state of a Validator + */ +struct Validator { + ValidatorStatus status; + bytes nodeID; + uint64 startingWeight; + uint64 messageNonce; + uint64 weight; + uint64 startedAt; + uint64 endedAt; +} + +/** + * @dev Specifies the owner of a validator's remaining balance or disable owner on the P-Chain. + * P-Chain addresses are also 20-bytes, so we use the address type to represent them. + */ +struct PChainOwner { + uint32 threshold; + address[] addresses; +} + +/** + * @dev Specifies an initial validator, used in the conversion data. + */ +struct InitialValidator { + bytes nodeID; + bytes blsPublicKey; + uint64 weight; +} + +/** + * @dev Description of the conversion data used to convert + * a subnet to an L1 on the P-Chain. + * This data is the pre-image of a hash that is authenticated by the P-Chain + * and verified by the Validator Manager. + */ +struct ConversionData { + bytes32 subnetID; + bytes32 validatorManagerBlockchainID; + address validatorManagerAddress; + InitialValidator[] initialValidators; +} + +/** + * @dev Specifies a validator to register. + */ +struct ValidatorRegistrationInput { + bytes nodeID; + bytes blsPublicKey; + uint64 registrationExpiry; + PChainOwner remainingBalanceOwner; + PChainOwner disableOwner; +} + +interface IACP99ValidatorManager { + function initializeValidatorSet( + ConversionData calldata conversionData, + uint32 messageIndex + ) external; + + function initializeValidatorRegistration( + ValidatorRegistrationInput calldata input, + uint64 weight + ) external returns (bytes32); + + function completeValidatorRegistration(uint32 messageIndex) external returns (bytes32) ; + + function initializeEndValidation(bytes32 validationID) external; + + function completeEndValidation(uint32 messageIndex) external returns (bytes32); + + function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) external returns (uint64) ; + + function completeValidatorWeightChange(bytes32 validationID) external; + + // These shouldn't be in this interface, but put them here for now + function getChurnPeriodSeconds() external view returns (uint64); + function getValidator(bytes32 validationID) external view returns (Validator memory); +} \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol b/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol index eb1b56a32..36e0c5540 100644 --- a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol +++ b/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.25; -import {ValidatorRegistrationInput} from "./IValidatorManager.sol"; +import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; /** diff --git a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol b/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol index c1cc4a2c9..c603f5b18 100644 --- a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol +++ b/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.25; -import {ValidatorRegistrationInput} from "./IValidatorManager.sol"; +import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; /** diff --git a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol b/contracts/validator-manager/interfaces/IPoAValidatorManager.sol index 94c1663d3..ae341e2ab 100644 --- a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoAValidatorManager.sol @@ -5,12 +5,12 @@ pragma solidity 0.8.25; -import {IValidatorManager, ValidatorRegistrationInput} from "./IValidatorManager.sol"; +import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; /** * @notice Interface for Proof of Authority Validator Manager contracts */ -interface IPoAValidatorManager is IValidatorManager { +interface IPoAValidatorManager { /** * @notice Begins the validator registration process, and sets the {weight} of the validator. * @param registrationInput The inputs for a validator registration. diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index c4c5b7bb4..b3df1ec86 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.25; -import {IValidatorManager, ValidatorManagerSettings} from "./IValidatorManager.sol"; +import {IACP99ValidatorManager} from "./IACP99ValidatorManager.sol"; import {IRewardCalculator} from "./IRewardCalculator.sol"; /** @@ -20,7 +20,6 @@ enum DelegatorStatus { /** * @notice PoS Validator Manager settings, used to initialize the PoS Validator Manager - * @notice baseSettings specified the base settings for the Validator Manager. See {IValidatorManager-ValidatorManagerSettings} * @notice minimumStakeAmount is the minimum amount of stake required to stake to a validator * @notice maximumStakeAmount is the maximum amount of stake that can be staked to a validator * @notice minimumStakeDuration is the minimum duration that validators must stake for @@ -33,7 +32,7 @@ enum DelegatorStatus { * This must be a blockchain validated by the subnetID that this contract manages. */ struct PoSValidatorManagerSettings { - ValidatorManagerSettings baseSettings; + IACP99ValidatorManager validatorManager; uint256 minimumStakeAmount; uint256 maximumStakeAmount; uint64 minimumStakeDuration; @@ -70,7 +69,7 @@ struct PoSValidatorInfo { /** * @notice Interface for Proof of Stake Validator Managers */ -interface IPoSValidatorManager is IValidatorManager { +interface IPoSValidatorManager { /** * @notice Event emitted when a delegator registration is initiated * @param delegationID The ID of the delegation @@ -79,7 +78,6 @@ interface IPoSValidatorManager is IValidatorManager { * @param nonce The message nonce used to update the validator weight * @param validatorWeight The updated validator weight that is sent to the P-Chain * @param delegatorWeight The weight of the delegator - * @param setWeightMessageID The ID of the Warp message that updates the validator's weight on the P-Chain */ event DelegatorAdded( bytes32 indexed delegationID, @@ -87,8 +85,7 @@ interface IPoSValidatorManager is IValidatorManager { address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, - uint64 delegatorWeight, - bytes32 setWeightMessageID + uint64 delegatorWeight ); /** diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index f04629bf5..e75a173ab 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -5,39 +5,7 @@ pragma solidity 0.8.25; -/** - * @dev Validator status - */ -enum ValidatorStatus { - Unknown, - PendingAdded, - Active, - PendingRemoved, - Completed, - Invalidated -} - -/** - * @dev Specifies the owner of a validator's remaining balance or disable owner on the P-Chain. - * P-Chain addresses are also 20-bytes, so we use the address type to represent them. - */ -struct PChainOwner { - uint32 threshold; - address[] addresses; -} - -/** - * @dev Contains the active state of a Validator - */ -struct Validator { - ValidatorStatus status; - bytes nodeID; - uint64 startingWeight; - uint64 messageNonce; - uint64 weight; - uint64 startedAt; - uint64 endedAt; -} +import {ConversionData,ValidatorStatus} from "./IACP99ValidatorManager.sol"; /** * @dev Describes the current churn period @@ -61,39 +29,6 @@ struct ValidatorManagerSettings { uint8 maximumChurnPercentage; } -/** - * @dev Description of the conversion data used to convert - * a subnet to an L1 on the P-Chain. - * This data is the pre-image of a hash that is authenticated by the P-Chain - * and verified by the Validator Manager. - */ -struct ConversionData { - bytes32 subnetID; - bytes32 validatorManagerBlockchainID; - address validatorManagerAddress; - InitialValidator[] initialValidators; -} - -/** - * @dev Specifies an initial validator, used in the conversion data. - */ -struct InitialValidator { - bytes nodeID; - bytes blsPublicKey; - uint64 weight; -} - -/** - * @dev Specifies a validator to register. - */ -struct ValidatorRegistrationInput { - bytes nodeID; - bytes blsPublicKey; - uint64 registrationExpiry; - PChainOwner remainingBalanceOwner; - PChainOwner disableOwner; -} - /** * @notice Interface for Validator Manager contracts that implement Subnet-only Validator management. */ @@ -171,16 +106,6 @@ interface IValidatorManager { bytes32 setWeightMessageID ); - /** - * @notice Verifies and sets the initial validator set for the chain through a P-Chain SubnetToL1ConversionMessage. - * @param conversionData The subnet conversion message data used to recompute and verify against the conversionID. - * @param messsageIndex The index that contains the SubnetToL1ConversionMessage Warp message containing the conversionID to be verified against the provided {ConversionData} - */ - function initializeValidatorSet( - ConversionData calldata conversionData, - uint32 messsageIndex - ) external; - /** * @notice Resubmits a validator registration message to be sent to the P-Chain. * Only necessary if the original message can't be delivered due to validator churn. @@ -188,28 +113,10 @@ interface IValidatorManager { */ function resendRegisterValidatorMessage(bytes32 validationID) external; - /** - * @notice Completes the validator registration process by returning an acknowledgement of the registration of a - * validationID from the P-Chain. - * @param messageIndex The index of the Warp message to be received providing the acknowledgement. - */ - function completeValidatorRegistration(uint32 messageIndex) external; - /** * @notice Resubmits a validator end message to be sent to the P-Chain. * Only necessary if the original message can't be delivered due to validator churn. * @param validationID The ID of the validation period being ended. */ function resendEndValidatorMessage(bytes32 validationID) external; - - /** - * @notice Completes the process of ending a validation period by receiving an acknowledgement from the P-Chain - * that the validation ID is not active and will never be active in the future. Returns the the stake associated - * with the validation. - * Note: This function can be used for successful validation periods that have been explicitly ended by calling - * {initializeEndValidation} or for validation periods that never began on the P-Chain due to the {registrationExpiry} being reached. - * @param messageIndex The index of the Warp message to be received providing the proof the validation is not active - * and never will be active on the P-Chain. - */ - function completeEndValidation(uint32 messageIndex) external; } diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 762af320d..5aaee5a7b 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -18,7 +18,7 @@ echo "ARCH set to $ARCH" DEFAULT_CONTRACT_LIST="TeleporterMessenger TeleporterRegistry ExampleERC20 ExampleRewardCalculator TestMessenger ValidatorSetSig NativeTokenStakingManager ERC20TokenStakingManager PoAValidatorManager TokenHome TokenRemote ERC20TokenHome ERC20TokenHomeUpgradeable ERC20TokenRemote ERC20TokenRemoteUpgradeable NativeTokenHome NativeTokenHomeUpgradeable NativeTokenRemote NativeTokenRemoteUpgradeable -WrappedNativeToken MockERC20SendAndCallReceiver MockNativeSendAndCallReceiver ExampleERC20Decimals IValidatorManager IPoSValidatorManager" +WrappedNativeToken MockERC20SendAndCallReceiver MockNativeSendAndCallReceiver ExampleERC20Decimals IValidatorManager IPoSValidatorManager IACP99ValidatorManager ValidatorManager" PROXY_LIST="TransparentUpgradeableProxy ProxyAdmin" SUBNET_EVM_LIST="INativeMinter" diff --git a/tests/flows/validator-manager/erc20_token_staking.go b/tests/flows/validator-manager/erc20_token_staking.go index fa7c33b54..b3e49e1a6 100644 --- a/tests/flows/validator-manager/erc20_token_staking.go +++ b/tests/flows/validator-manager/erc20_token_staking.go @@ -2,16 +2,14 @@ package staking import ( "context" - "log" - "math/big" "time" "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/units" "github.com/ava-labs/subnet-evm/accounts/abi/bind" exampleerc20 "github.com/ava-labs/teleporter/abi-bindings/go/mocks/ExampleERC20" - erc20tokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" - iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" + erc20stakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" + validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ValidatorManager" localnetwork "github.com/ava-labs/teleporter/tests/network" "github.com/ava-labs/teleporter/tests/utils" . "github.com/onsi/gomega" @@ -56,13 +54,19 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { fundedKey, false, ) - stakingManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) - erc20StakingManager, err := erc20tokenstakingmanager.NewERC20TokenStakingManager( - stakingManagerAddress, + validatorManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) + validatorManager, err := validatormanager.NewValidatorManager( + validatorManagerAddress, subnetAInfo.RPCClient, ) Expect(err).Should(BeNil()) - erc20Address, err := erc20StakingManager.Erc20(&bind.CallOpts{}) + securityModuleAddress, err := validatorManager.GetSecurityModule(&bind.CallOpts{}) + Expect(err).Should(BeNil()) + + securityModule, err := erc20stakingmanager.NewERC20TokenStakingManager(securityModuleAddress, subnetAInfo.RPCClient) + Expect(err).Should(BeNil()) + + erc20Address, err := securityModule.Erc20(&bind.CallOpts{}) Expect(err).Should(BeNil()) erc20, err := exampleerc20.NewExampleERC20(erc20Address, subnetAInfo.RPCClient) Expect(err).Should(BeNil()) @@ -70,16 +74,15 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { // // Delist one initial validator // - posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnetAInfo.RPCClient) - Expect(err).Should(BeNil()) - utils.InitializeAndCompleteEndInitialPoSValidation( + utils.InitializeAndCompleteEndInitialACP99PoSValidation( ctx, signatureAggregator, fundedKey, subnetAInfo, pChainInfo, - posStakingManager, - stakingManagerAddress, + securityModule, + securityModuleAddress, + validatorManager, initialValidationIDs[0], 0, nodes[0].Weight, @@ -91,14 +94,13 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { // Register the validator as PoS // expiry := uint64(time.Now().Add(24 * time.Hour).Unix()) - validationID := utils.InitializeAndCompleteERC20ValidatorRegistration( + validationID := utils.InitializeAndCompleteACP99ERC20ValidatorRegistration( ctx, signatureAggregator, fundedKey, subnetAInfo, pChainInfo, - erc20StakingManager, - stakingManagerAddress, + validatorManager, erc20, expiry, nodes[0], @@ -106,170 +108,172 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { network.GetNetworkID(), ) validatorStartTime := time.Now() + time.Sleep(5 * time.Second) // // Register a delegator // - var delegationID ids.ID - { - log.Println("Registering delegator") - delegatorStake, err := erc20StakingManager.WeightToValue( - &bind.CallOpts{}, - nodes[0].Weight, - ) - Expect(err).Should(BeNil()) - delegatorStake.Div(delegatorStake, big.NewInt(10)) - delegatorWeight, err := erc20StakingManager.ValueToWeight( - &bind.CallOpts{}, - delegatorStake, - ) - Expect(err).Should(BeNil()) - newValidatorWeight := nodes[0].Weight + delegatorWeight + // var delegationID ids.ID + // { + // log.Println("Registering delegator") + // delegatorStake, err := erc20StakingManager.WeightToValue( + // &bind.CallOpts{}, + // nodes[0].Weight, + // ) + // Expect(err).Should(BeNil()) + // delegatorStake.Div(delegatorStake, big.NewInt(10)) + // delegatorWeight, err := erc20StakingManager.ValueToWeight( + // &bind.CallOpts{}, + // delegatorStake, + // ) + // Expect(err).Should(BeNil()) + // newValidatorWeight := nodes[0].Weight + delegatorWeight - nonce := uint64(1) + // nonce := uint64(1) - receipt := utils.InitializeERC20DelegatorRegistration( - ctx, - fundedKey, - subnetAInfo, - validationID, - delegatorStake, - erc20, - stakingManagerAddress, - erc20StakingManager, - ) - initRegistrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - erc20StakingManager.ParseDelegatorAdded, - ) - Expect(err).Should(BeNil()) - delegationID = initRegistrationEvent.DelegationID + // receipt := utils.InitializeERC20DelegatorRegistration( + // ctx, + // fundedKey, + // subnetAInfo, + // validationID, + // delegatorStake, + // erc20, + // stakingManagerAddress, + // erc20StakingManager, + // ) + // initRegistrationEvent, err := utils.GetEventFromLogs( + // receipt.Logs, + // erc20StakingManager.ParseDelegatorAdded, + // ) + // Expect(err).Should(BeNil()) + // delegationID = initRegistrationEvent.DelegationID - // Gather subnet-evm Warp signatures for the SubnetValidatorWeightUpdateMessage & relay to the P-Chain - signedWarpMessage := utils.ConstructSignedWarpMessage( - context.Background(), - receipt, - subnetAInfo, - pChainInfo, - nil, - network.GetSignatureAggregator(), - ) + // // Gather subnet-evm Warp signatures for the SubnetValidatorWeightUpdateMessage & relay to the P-Chain + // signedWarpMessage := utils.ConstructSignedWarpMessage( + // context.Background(), + // receipt, + // subnetAInfo, + // pChainInfo, + // nil, + // network.GetSignatureAggregator(), + // ) - // Issue a tx to update the validator's weight on the P-Chain - network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) - utils.PChainProposerVMWorkaround(network.GetPChainWallet()) - utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) + // // Issue a tx to update the validator's weight on the P-Chain + // network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) + // utils.PChainProposerVMWorkaround(network.GetPChainWallet()) + // utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) - // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain - registrationSignedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( - validationID, - nonce, - newValidatorWeight, - subnetAInfo, - pChainInfo, - signatureAggregator, - network.GetNetworkID(), - ) + // // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain + // registrationSignedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( + // validationID, + // nonce, + // newValidatorWeight, + // subnetAInfo, + // pChainInfo, + // signatureAggregator, + // network.GetNetworkID(), + // ) - // Deliver the Warp message to the subnet - receipt = utils.CompleteDelegatorRegistration( - ctx, - fundedKey, - delegationID, - subnetAInfo, - stakingManagerAddress, - registrationSignedMessage, - ) - // Check that the validator is registered in the staking contract - registrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - erc20StakingManager.ParseDelegatorRegistered, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) - } + // // Deliver the Warp message to the subnet + // receipt = utils.CompleteDelegatorRegistration( + // ctx, + // fundedKey, + // delegationID, + // subnetAInfo, + // stakingManagerAddress, + // registrationSignedMessage, + // ) + // // Check that the validator is registered in the staking contract + // registrationEvent, err := utils.GetEventFromLogs( + // receipt.Logs, + // erc20StakingManager.ParseDelegatorRegistered, + // ) + // Expect(err).Should(BeNil()) + // Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) + // Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) + // } - // - // Delist the delegator - // - { - log.Println("Delisting delegator") - nonce := uint64(2) - receipt := utils.InitializeEndDelegation( - ctx, - fundedKey, - subnetAInfo, - stakingManagerAddress, - delegationID, - ) - delegatorRemovalEvent, err := utils.GetEventFromLogs( - receipt.Logs, - erc20StakingManager.ParseDelegatorRemovalInitialized, - ) - Expect(err).Should(BeNil()) - Expect(delegatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(delegatorRemovalEvent.DelegationID[:]).Should(Equal(delegationID[:])) + // // + // // Delist the delegator + // // + // { + // log.Println("Delisting delegator") + // nonce := uint64(2) + // receipt := utils.InitializeEndDelegation( + // ctx, + // fundedKey, + // subnetAInfo, + // stakingManagerAddress, + // delegationID, + // ) + // delegatorRemovalEvent, err := utils.GetEventFromLogs( + // receipt.Logs, + // erc20StakingManager.ParseDelegatorRemovalInitialized, + // ) + // Expect(err).Should(BeNil()) + // Expect(delegatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) + // Expect(delegatorRemovalEvent.DelegationID[:]).Should(Equal(delegationID[:])) - // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain - // (Sending to the P-Chain will be skipped for now) - signedWarpMessage := utils.ConstructSignedWarpMessage( - context.Background(), - receipt, - subnetAInfo, - pChainInfo, - nil, - network.GetSignatureAggregator(), - ) - Expect(err).Should(BeNil()) + // // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain + // // (Sending to the P-Chain will be skipped for now) + // signedWarpMessage := utils.ConstructSignedWarpMessage( + // context.Background(), + // receipt, + // subnetAInfo, + // pChainInfo, + // nil, + // network.GetSignatureAggregator(), + // ) + // Expect(err).Should(BeNil()) - // Issue a tx to update the validator's weight on the P-Chain - network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) - utils.PChainProposerVMWorkaround(network.GetPChainWallet()) - utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) + // // Issue a tx to update the validator's weight on the P-Chain + // network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) + // utils.PChainProposerVMWorkaround(network.GetPChainWallet()) + // utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) - // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain - signedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( - validationID, - nonce, - nodes[0].Weight, - subnetAInfo, - pChainInfo, - signatureAggregator, - network.GetNetworkID(), - ) + // // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain + // signedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( + // validationID, + // nonce, + // nodes[0].Weight, + // subnetAInfo, + // pChainInfo, + // signatureAggregator, + // network.GetNetworkID(), + // ) - // Deliver the Warp message to the subnet - receipt = utils.CompleteEndDelegation( - ctx, - fundedKey, - delegationID, - subnetAInfo, - stakingManagerAddress, - signedMessage, - ) + // // Deliver the Warp message to the subnet + // receipt = utils.CompleteEndDelegation( + // ctx, + // fundedKey, + // delegationID, + // subnetAInfo, + // stakingManagerAddress, + // signedMessage, + // ) - // Check that the delegator has been delisted from the staking contract - registrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - erc20StakingManager.ParseDelegationEnded, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) - } + // // Check that the delegator has been delisted from the staking contract + // registrationEvent, err := utils.GetEventFromLogs( + // receipt.Logs, + // erc20StakingManager.ParseDelegationEnded, + // ) + // Expect(err).Should(BeNil()) + // Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) + // Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) + // } // // Delist the validator // - utils.InitializeAndCompleteEndPoSValidation( + utils.InitializeAndCompleteEndACP99PoSValidation( ctx, signatureAggregator, fundedKey, subnetAInfo, pChainInfo, - posStakingManager, - stakingManagerAddress, + securityModule, + securityModuleAddress, + validatorManager, validationID, expiry, nodes[0], diff --git a/tests/flows/validator-manager/native_token_staking.go b/tests/flows/validator-manager/native_token_staking.go index 593bc41a1..2710f0732 100644 --- a/tests/flows/validator-manager/native_token_staking.go +++ b/tests/flows/validator-manager/native_token_staking.go @@ -1,275 +1,275 @@ package staking -import ( - "context" - "log" - "math/big" - "time" +// import ( +// "context" +// "log" +// "math/big" +// "time" - "github.com/ava-labs/avalanchego/ids" - "github.com/ava-labs/avalanchego/utils/units" - "github.com/ava-labs/subnet-evm/accounts/abi/bind" - nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" - iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" - localnetwork "github.com/ava-labs/teleporter/tests/network" - "github.com/ava-labs/teleporter/tests/utils" - . "github.com/onsi/gomega" -) +// "github.com/ava-labs/avalanchego/ids" +// "github.com/ava-labs/avalanchego/utils/units" +// "github.com/ava-labs/subnet-evm/accounts/abi/bind" +// nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" +// iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" +// localnetwork "github.com/ava-labs/teleporter/tests/network" +// "github.com/ava-labs/teleporter/tests/utils" +// . "github.com/onsi/gomega" +// ) -/* - * Registers a native token staking validator on a subnet. The steps are as follows: - * - Deploy the NativeTokenStakingManager - * - Initiate validator registration - * - Deliver the Warp message to the P-Chain (not implemented) - * - Aggregate P-Chain signatures on the response Warp message - * - Deliver the Warp message to the subnet - * - Verify that the validator is registered in the staking contract - * - * Delists the validator from the subnet. The steps are as follows: - * - Initiate validator delisting - * - Deliver the Warp message to the P-Chain (not implemented) - * - Aggregate P-Chain signatures on the response Warp message - * - Deliver the Warp message to the subnet - * - Verify that the validator is delisted from the staking contract - */ -func NativeTokenStakingManager(network *localnetwork.LocalNetwork) { - // Get the subnets info - cChainInfo := network.GetPrimaryNetworkInfo() - subnetAInfo, _ := network.GetTwoSubnets() - _, fundedKey := network.GetFundedAccountInfo() - pChainInfo := utils.GetPChainInfo(cChainInfo) +// /* +// * Registers a native token staking validator on a subnet. The steps are as follows: +// * - Deploy the NativeTokenStakingManager +// * - Initiate validator registration +// * - Deliver the Warp message to the P-Chain (not implemented) +// * - Aggregate P-Chain signatures on the response Warp message +// * - Deliver the Warp message to the subnet +// * - Verify that the validator is registered in the staking contract +// * +// * Delists the validator from the subnet. The steps are as follows: +// * - Initiate validator delisting +// * - Deliver the Warp message to the P-Chain (not implemented) +// * - Aggregate P-Chain signatures on the response Warp message +// * - Deliver the Warp message to the subnet +// * - Verify that the validator is delisted from the staking contract +// */ +// func NativeTokenStakingManager(network *localnetwork.LocalNetwork) { +// // Get the subnets info +// cChainInfo := network.GetPrimaryNetworkInfo() +// subnetAInfo, _ := network.GetTwoSubnets() +// _, fundedKey := network.GetFundedAccountInfo() +// pChainInfo := utils.GetPChainInfo(cChainInfo) - signatureAggregator := utils.NewSignatureAggregator( - cChainInfo.NodeURIs[0], - []ids.ID{ - subnetAInfo.SubnetID, - }, - ) - ctx := context.Background() +// signatureAggregator := utils.NewSignatureAggregator( +// cChainInfo.NodeURIs[0], +// []ids.ID{ +// subnetAInfo.SubnetID, +// }, +// ) +// ctx := context.Background() - nodes, initialValidationIDs, _ := network.ConvertSubnet( - ctx, - subnetAInfo, - utils.NativeTokenStakingManager, - []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits - fundedKey, - false, - ) - stakingManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) - nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( - stakingManagerAddress, - subnetAInfo.RPCClient, - ) - Expect(err).Should(BeNil()) - utils.AddNativeMinterAdmin(ctx, subnetAInfo, fundedKey, stakingManagerAddress) +// nodes, initialValidationIDs, _ := network.ConvertSubnet( +// ctx, +// subnetAInfo, +// utils.NativeTokenStakingManager, +// []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits +// fundedKey, +// false, +// ) +// stakingManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) +// nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( +// stakingManagerAddress, +// subnetAInfo.RPCClient, +// ) +// Expect(err).Should(BeNil()) +// utils.AddNativeMinterAdmin(ctx, subnetAInfo, fundedKey, stakingManagerAddress) - // - // Delist one initial validator - // - posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnetAInfo.RPCClient) - Expect(err).Should(BeNil()) - utils.InitializeAndCompleteEndInitialPoSValidation( - ctx, - signatureAggregator, - fundedKey, - subnetAInfo, - pChainInfo, - posStakingManager, - stakingManagerAddress, - initialValidationIDs[0], - 0, - nodes[0].Weight, - network.GetPChainWallet(), - network.GetNetworkID(), - ) +// // +// // Delist one initial validator +// // +// posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnetAInfo.RPCClient) +// Expect(err).Should(BeNil()) +// utils.InitializeAndCompleteEndInitialPoSValidation( +// ctx, +// signatureAggregator, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// posStakingManager, +// stakingManagerAddress, +// initialValidationIDs[0], +// 0, +// nodes[0].Weight, +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) - // - // Register the validator as PoS - // - expiry := uint64(time.Now().Add(24 * time.Hour).Unix()) - validationID := utils.InitializeAndCompleteNativeValidatorRegistration( - ctx, - signatureAggregator, - fundedKey, - subnetAInfo, - pChainInfo, - nativeStakingManager, - stakingManagerAddress, - expiry, - nodes[0], - network.GetPChainWallet(), - network.GetNetworkID(), - ) - validatorStartTime := time.Now() +// // +// // Register the validator as PoS +// // +// expiry := uint64(time.Now().Add(24 * time.Hour).Unix()) +// validationID := utils.InitializeAndCompleteNativeValidatorRegistration( +// ctx, +// signatureAggregator, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// nativeStakingManager, +// stakingManagerAddress, +// expiry, +// nodes[0], +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) +// validatorStartTime := time.Now() - // - // Register a delegator - // - var delegationID ids.ID - { - log.Println("Registering delegator") - delegatorStake, err := nativeStakingManager.WeightToValue( - &bind.CallOpts{}, - nodes[0].Weight, - ) - Expect(err).Should(BeNil()) - delegatorStake.Div(delegatorStake, big.NewInt(10)) - delegatorWeight, err := nativeStakingManager.ValueToWeight( - &bind.CallOpts{}, - delegatorStake, - ) - Expect(err).Should(BeNil()) - newValidatorWeight := nodes[0].Weight + delegatorWeight +// // +// // Register a delegator +// // +// var delegationID ids.ID +// { +// log.Println("Registering delegator") +// delegatorStake, err := nativeStakingManager.WeightToValue( +// &bind.CallOpts{}, +// nodes[0].Weight, +// ) +// Expect(err).Should(BeNil()) +// delegatorStake.Div(delegatorStake, big.NewInt(10)) +// delegatorWeight, err := nativeStakingManager.ValueToWeight( +// &bind.CallOpts{}, +// delegatorStake, +// ) +// Expect(err).Should(BeNil()) +// newValidatorWeight := nodes[0].Weight + delegatorWeight - nonce := uint64(1) +// nonce := uint64(1) - receipt := utils.InitializeNativeDelegatorRegistration( - ctx, - fundedKey, - subnetAInfo, - validationID, - delegatorStake, - stakingManagerAddress, - nativeStakingManager, - ) - initRegistrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - nativeStakingManager.ParseDelegatorAdded, - ) - Expect(err).Should(BeNil()) - delegationID = initRegistrationEvent.DelegationID +// receipt := utils.InitializeNativeDelegatorRegistration( +// ctx, +// fundedKey, +// subnetAInfo, +// validationID, +// delegatorStake, +// stakingManagerAddress, +// nativeStakingManager, +// ) +// initRegistrationEvent, err := utils.GetEventFromLogs( +// receipt.Logs, +// nativeStakingManager.ParseDelegatorAdded, +// ) +// Expect(err).Should(BeNil()) +// delegationID = initRegistrationEvent.DelegationID - // Gather subnet-evm Warp signatures for the SubnetValidatorWeightUpdateMessage & relay to the P-Chain - signedWarpMessage := utils.ConstructSignedWarpMessage( - context.Background(), - receipt, - subnetAInfo, - pChainInfo, - nil, - network.GetSignatureAggregator(), - ) +// // Gather subnet-evm Warp signatures for the SubnetValidatorWeightUpdateMessage & relay to the P-Chain +// signedWarpMessage := utils.ConstructSignedWarpMessage( +// context.Background(), +// receipt, +// subnetAInfo, +// pChainInfo, +// nil, +// network.GetSignatureAggregator(), +// ) - // Issue a tx to update the validator's weight on the P-Chain - network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) - utils.PChainProposerVMWorkaround(network.GetPChainWallet()) - utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) +// // Issue a tx to update the validator's weight on the P-Chain +// network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) +// utils.PChainProposerVMWorkaround(network.GetPChainWallet()) +// utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) - // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain - registrationSignedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( - validationID, - nonce, - newValidatorWeight, - subnetAInfo, - pChainInfo, - signatureAggregator, - network.GetNetworkID(), - ) +// // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain +// registrationSignedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( +// validationID, +// nonce, +// newValidatorWeight, +// subnetAInfo, +// pChainInfo, +// signatureAggregator, +// network.GetNetworkID(), +// ) - // Deliver the Warp message to the subnet - receipt = utils.CompleteDelegatorRegistration( - ctx, - fundedKey, - delegationID, - subnetAInfo, - stakingManagerAddress, - registrationSignedMessage, - ) - // Check that the validator is registered in the staking contract - registrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - nativeStakingManager.ParseDelegatorRegistered, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) - } - // - // Delist the delegator - // - { - log.Println("Delisting delegator") - nonce := uint64(2) - receipt := utils.InitializeEndDelegation( - ctx, - fundedKey, - subnetAInfo, - stakingManagerAddress, - delegationID, - ) - delegatorRemovalEvent, err := utils.GetEventFromLogs( - receipt.Logs, - nativeStakingManager.ParseDelegatorRemovalInitialized, - ) - Expect(err).Should(BeNil()) - Expect(delegatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(delegatorRemovalEvent.DelegationID[:]).Should(Equal(delegationID[:])) +// // Deliver the Warp message to the subnet +// receipt = utils.CompleteDelegatorRegistration( +// ctx, +// fundedKey, +// delegationID, +// subnetAInfo, +// stakingManagerAddress, +// registrationSignedMessage, +// ) +// // Check that the validator is registered in the staking contract +// registrationEvent, err := utils.GetEventFromLogs( +// receipt.Logs, +// nativeStakingManager.ParseDelegatorRegistered, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) +// } +// // +// // Delist the delegator +// // +// { +// log.Println("Delisting delegator") +// nonce := uint64(2) +// receipt := utils.InitializeEndDelegation( +// ctx, +// fundedKey, +// subnetAInfo, +// stakingManagerAddress, +// delegationID, +// ) +// delegatorRemovalEvent, err := utils.GetEventFromLogs( +// receipt.Logs, +// nativeStakingManager.ParseDelegatorRemovalInitialized, +// ) +// Expect(err).Should(BeNil()) +// Expect(delegatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(delegatorRemovalEvent.DelegationID[:]).Should(Equal(delegationID[:])) - // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain - // (Sending to the P-Chain will be skipped for now) - signedWarpMessage := utils.ConstructSignedWarpMessage( - context.Background(), - receipt, - subnetAInfo, - pChainInfo, - nil, - network.GetSignatureAggregator(), - ) - Expect(err).Should(BeNil()) +// // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain +// // (Sending to the P-Chain will be skipped for now) +// signedWarpMessage := utils.ConstructSignedWarpMessage( +// context.Background(), +// receipt, +// subnetAInfo, +// pChainInfo, +// nil, +// network.GetSignatureAggregator(), +// ) +// Expect(err).Should(BeNil()) - // Issue a tx to update the validator's weight on the P-Chain - network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) - utils.PChainProposerVMWorkaround(network.GetPChainWallet()) - utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) +// // Issue a tx to update the validator's weight on the P-Chain +// network.GetPChainWallet().IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) +// utils.PChainProposerVMWorkaround(network.GetPChainWallet()) +// utils.AdvanceProposerVM(ctx, subnetAInfo, fundedKey, 5) - // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain - signedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( - validationID, - nonce, - nodes[0].Weight, - subnetAInfo, - pChainInfo, - signatureAggregator, - network.GetNetworkID(), - ) +// // Construct a SubnetValidatorWeightUpdateMessage Warp message from the P-Chain +// signedMessage := utils.ConstructSubnetValidatorWeightUpdateMessage( +// validationID, +// nonce, +// nodes[0].Weight, +// subnetAInfo, +// pChainInfo, +// signatureAggregator, +// network.GetNetworkID(), +// ) - // Deliver the Warp message to the subnet - receipt = utils.CompleteEndDelegation( - ctx, - fundedKey, - delegationID, - subnetAInfo, - stakingManagerAddress, - signedMessage, - ) +// // Deliver the Warp message to the subnet +// receipt = utils.CompleteEndDelegation( +// ctx, +// fundedKey, +// delegationID, +// subnetAInfo, +// stakingManagerAddress, +// signedMessage, +// ) - // Check that the delegator has been delisted from the staking contract - registrationEvent, err := utils.GetEventFromLogs( - receipt.Logs, - nativeStakingManager.ParseDelegationEnded, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) - } +// // Check that the delegator has been delisted from the staking contract +// registrationEvent, err := utils.GetEventFromLogs( +// receipt.Logs, +// nativeStakingManager.ParseDelegationEnded, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(registrationEvent.DelegationID[:]).Should(Equal(delegationID[:])) +// } - // - // Delist the validator - // - utils.InitializeAndCompleteEndPoSValidation( - ctx, - signatureAggregator, - fundedKey, - subnetAInfo, - pChainInfo, - posStakingManager, - stakingManagerAddress, - validationID, - expiry, - nodes[0], - 1, - true, - validatorStartTime, - network.GetPChainWallet(), - network.GetNetworkID(), - ) -} +// // +// // Delist the validator +// // +// utils.InitializeAndCompleteEndPoSValidation( +// ctx, +// signatureAggregator, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// posStakingManager, +// stakingManagerAddress, +// validationID, +// expiry, +// nodes[0], +// 1, +// true, +// validatorStartTime, +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) +// } diff --git a/tests/flows/validator-manager/poa_to_pos.go b/tests/flows/validator-manager/poa_to_pos.go index 1d2d1cc14..3748d1a59 100644 --- a/tests/flows/validator-manager/poa_to_pos.go +++ b/tests/flows/validator-manager/poa_to_pos.go @@ -1,259 +1,259 @@ package staking -import ( - "context" - "math/big" - "time" +// import ( +// "context" +// "math/big" +// "time" - "github.com/ava-labs/avalanchego/ids" - "github.com/ava-labs/avalanchego/utils/units" - "github.com/ava-labs/subnet-evm/accounts/abi/bind" - nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" - poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" - iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" - localnetwork "github.com/ava-labs/teleporter/tests/network" - "github.com/ava-labs/teleporter/tests/utils" - "github.com/ethereum/go-ethereum/crypto" +// "github.com/ava-labs/avalanchego/ids" +// "github.com/ava-labs/avalanchego/utils/units" +// "github.com/ava-labs/subnet-evm/accounts/abi/bind" +// nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" +// poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" +// iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" +// localnetwork "github.com/ava-labs/teleporter/tests/network" +// "github.com/ava-labs/teleporter/tests/utils" +// "github.com/ethereum/go-ethereum/crypto" - . "github.com/onsi/gomega" -) +// . "github.com/onsi/gomega" +// ) -/* - * Register a PoA validator manager on a L1 with a proxy. The steps are as follows: - * - Generate random address to be the owner address - * - Fund native assets to the owner address - * - Deploy the PoAValidatorManager contract - * - Deploy a TransparentUpgradeableProxy contract that points to the PoAValidatorManager - * - Call initialize on the PoAValidatorManager through the proxy - * - Initialize and complete PoA validator registration - * - * Migrates the proxy to a PoS validator manager. The steps are as follows: - * - Deploy the PoSValidatorManager contract - * - Upgrade the TransparentUpgradeableProxy to point to the PoSValidatorManager - * - Call initialize on the PoSValidatorManager through the proxy - * - Check that previous validator is still active - * - Initialize and complete PoS validator registration - * - Attempt to delist previous PoA validator with wrong owner and check that it fails - * - Delist the previous PoA validator properly - * - Delist the PoS validator - */ -func PoAMigrationToPoS(network *localnetwork.LocalNetwork) { - cChainInfo := network.GetPrimaryNetworkInfo() - subnetAInfo, _ := network.GetTwoSubnets() - _, fundedKey := network.GetFundedAccountInfo() - pChainInfo := utils.GetPChainInfo(cChainInfo) +// /* +// * Register a PoA validator manager on a L1 with a proxy. The steps are as follows: +// * - Generate random address to be the owner address +// * - Fund native assets to the owner address +// * - Deploy the PoAValidatorManager contract +// * - Deploy a TransparentUpgradeableProxy contract that points to the PoAValidatorManager +// * - Call initialize on the PoAValidatorManager through the proxy +// * - Initialize and complete PoA validator registration +// * +// * Migrates the proxy to a PoS validator manager. The steps are as follows: +// * - Deploy the PoSValidatorManager contract +// * - Upgrade the TransparentUpgradeableProxy to point to the PoSValidatorManager +// * - Call initialize on the PoSValidatorManager through the proxy +// * - Check that previous validator is still active +// * - Initialize and complete PoS validator registration +// * - Attempt to delist previous PoA validator with wrong owner and check that it fails +// * - Delist the previous PoA validator properly +// * - Delist the PoS validator +// */ +// func PoAMigrationToPoS(network *localnetwork.LocalNetwork) { +// cChainInfo := network.GetPrimaryNetworkInfo() +// subnetAInfo, _ := network.GetTwoSubnets() +// _, fundedKey := network.GetFundedAccountInfo() +// pChainInfo := utils.GetPChainInfo(cChainInfo) - signatureAggregator := utils.NewSignatureAggregator( - cChainInfo.NodeURIs[0], - []ids.ID{ - subnetAInfo.SubnetID, - }, - ) +// signatureAggregator := utils.NewSignatureAggregator( +// cChainInfo.NodeURIs[0], +// []ids.ID{ +// subnetAInfo.SubnetID, +// }, +// ) - // Generate random address to be the owner address - ownerKey, err := crypto.GenerateKey() - Expect(err).Should(BeNil()) - ownerAddress := crypto.PubkeyToAddress(ownerKey.PublicKey) +// // Generate random address to be the owner address +// ownerKey, err := crypto.GenerateKey() +// Expect(err).Should(BeNil()) +// ownerAddress := crypto.PubkeyToAddress(ownerKey.PublicKey) - // Transfer native assets to the owner account - ctx := context.Background() - fundAmount := big.NewInt(1e18) // 10avax - fundAmount.Mul(fundAmount, big.NewInt(10)) - utils.SendNativeTransfer( - ctx, - subnetAInfo, - fundedKey, - ownerAddress, - fundAmount, - ) +// // Transfer native assets to the owner account +// ctx := context.Background() +// fundAmount := big.NewInt(1e18) // 10avax +// fundAmount.Mul(fundAmount, big.NewInt(10)) +// utils.SendNativeTransfer( +// ctx, +// subnetAInfo, +// fundedKey, +// ownerAddress, +// fundAmount, +// ) - // Deploy PoAValidatorManager contract with a proxy - nodes, initialValidationIDs, proxyAdmin := network.ConvertSubnet( - ctx, - subnetAInfo, - utils.PoAValidatorManager, - []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits - ownerKey, - true, - ) - proxyAddress := network.GetValidatorManager(subnetAInfo.SubnetID) - poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(proxyAddress, subnetAInfo.RPCClient) - Expect(err).Should(BeNil()) +// // Deploy PoAValidatorManager contract with a proxy +// nodes, initialValidationIDs, proxyAdmin := network.ConvertSubnet( +// ctx, +// subnetAInfo, +// utils.PoAValidatorManager, +// []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits +// ownerKey, +// true, +// ) +// proxyAddress := network.GetValidatorManager(subnetAInfo.SubnetID) +// poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(proxyAddress, subnetAInfo.RPCClient) +// Expect(err).Should(BeNil()) - // - // Delist one initial validator - // - utils.InitializeAndCompleteEndInitialPoAValidation( - ctx, - signatureAggregator, - ownerKey, - fundedKey, - subnetAInfo, - pChainInfo, - poaValidatorManager, - proxyAddress, - initialValidationIDs[0], - 0, - nodes[0].Weight, - network.GetPChainWallet(), - network.GetNetworkID(), - ) +// // +// // Delist one initial validator +// // +// utils.InitializeAndCompleteEndInitialPoAValidation( +// ctx, +// signatureAggregator, +// ownerKey, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// poaValidatorManager, +// proxyAddress, +// initialValidationIDs[0], +// 0, +// nodes[0].Weight, +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) - // Try to call with invalid owner - opts, err := bind.NewKeyedTransactorWithChainID(fundedKey, subnetAInfo.EVMChainID) - Expect(err).Should(BeNil()) +// // Try to call with invalid owner +// opts, err := bind.NewKeyedTransactorWithChainID(fundedKey, subnetAInfo.EVMChainID) +// Expect(err).Should(BeNil()) - _, err = poaValidatorManager.InitializeValidatorRegistration( - opts, - poavalidatormanager.ValidatorRegistrationInput{ - NodeID: nodes[0].NodeID[:], - RegistrationExpiry: uint64(time.Now().Add(24 * time.Hour).Unix()), - BlsPublicKey: nodes[0].NodePoP.PublicKey[:], - }, - nodes[0].Weight, - ) - Expect(err).ShouldNot(BeNil()) +// _, err = poaValidatorManager.InitializeValidatorRegistration( +// opts, +// poavalidatormanager.ValidatorRegistrationInput{ +// NodeID: nodes[0].NodeID[:], +// RegistrationExpiry: uint64(time.Now().Add(24 * time.Hour).Unix()), +// BlsPublicKey: nodes[0].NodePoP.PublicKey[:], +// }, +// nodes[0].Weight, +// ) +// Expect(err).ShouldNot(BeNil()) - // - // Re-register the validator as a SoV validator - // - expiry := uint64(time.Now().Add(24 * time.Hour).Unix()) - poaValidationID := utils.InitializeAndCompletePoAValidatorRegistration( - ctx, - signatureAggregator, - ownerKey, - fundedKey, - subnetAInfo, - pChainInfo, - poaValidatorManager, - proxyAddress, - expiry, - nodes[0], - network.GetPChainWallet(), - network.GetNetworkID(), - ) - poaValidator, err := poaValidatorManager.GetValidator(&bind.CallOpts{}, poaValidationID) - Expect(err).Should(BeNil()) - poaNodeID := poaValidator.NodeID +// // +// // Re-register the validator as a SoV validator +// // +// expiry := uint64(time.Now().Add(24 * time.Hour).Unix()) +// poaValidationID := utils.InitializeAndCompletePoAValidatorRegistration( +// ctx, +// signatureAggregator, +// ownerKey, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// poaValidatorManager, +// proxyAddress, +// expiry, +// nodes[0], +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) +// poaValidator, err := poaValidatorManager.GetValidator(&bind.CallOpts{}, poaValidationID) +// Expect(err).Should(BeNil()) +// poaNodeID := poaValidator.NodeID - /* - ****************** - * Migrate PoAValidatorManager to PoSValidatorManager - ****************** - */ +// /* +// ****************** +// * Migrate PoAValidatorManager to PoSValidatorManager +// ****************** +// */ - // Deploy PoSValidatorManager contract - newImplAddress, _ := utils.DeployValidatorManager( - ctx, - fundedKey, - subnetAInfo, - utils.NativeTokenStakingManager, - ) +// // Deploy PoSValidatorManager contract +// newImplAddress, _ := utils.DeployValidatorManager( +// ctx, +// fundedKey, +// subnetAInfo, +// utils.NativeTokenStakingManager, +// ) - // Upgrade the TransparentUpgradeableProxy contract to use the new logic contract - opts, err = bind.NewKeyedTransactorWithChainID(ownerKey, subnetAInfo.EVMChainID) - Expect(err).Should(BeNil()) - tx, err := proxyAdmin.UpgradeAndCall(opts, proxyAddress, newImplAddress, []byte{}) - Expect(err).Should(BeNil()) - utils.WaitForTransactionSuccess(ctx, subnetAInfo, tx.Hash()) +// // Upgrade the TransparentUpgradeableProxy contract to use the new logic contract +// opts, err = bind.NewKeyedTransactorWithChainID(ownerKey, subnetAInfo.EVMChainID) +// Expect(err).Should(BeNil()) +// tx, err := proxyAdmin.UpgradeAndCall(opts, proxyAddress, newImplAddress, []byte{}) +// Expect(err).Should(BeNil()) +// utils.WaitForTransactionSuccess(ctx, subnetAInfo, tx.Hash()) - // Change the proxy contract type to NativeTokenStakingManager and initialize it - nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( - proxyAddress, - subnetAInfo.RPCClient, - ) - Expect(err).Should(BeNil()) +// // Change the proxy contract type to NativeTokenStakingManager and initialize it +// nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( +// proxyAddress, +// subnetAInfo.RPCClient, +// ) +// Expect(err).Should(BeNil()) - utils.AddNativeMinterAdmin(ctx, subnetAInfo, fundedKey, proxyAddress) +// utils.AddNativeMinterAdmin(ctx, subnetAInfo, fundedKey, proxyAddress) - rewardCalculatorAddress, _ := utils.DeployExampleRewardCalculator( - ctx, - fundedKey, - subnetAInfo, - uint64(10), - ) +// rewardCalculatorAddress, _ := utils.DeployExampleRewardCalculator( +// ctx, +// fundedKey, +// subnetAInfo, +// uint64(10), +// ) - tx, err = nativeStakingManager.Initialize( - opts, - nativetokenstakingmanager.PoSValidatorManagerSettings{ - BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ - SubnetID: subnetAInfo.SubnetID, - ChurnPeriodSeconds: utils.DefaultChurnPeriodSeconds, - MaximumChurnPercentage: utils.DefaultMaxChurnPercentage, - }, - MinimumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMinStakeAmount), - MaximumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMaxStakeAmount), - MinimumStakeDuration: utils.DefaultMinStakeDurationSeconds, - MinimumDelegationFeeBips: utils.DefaultMinDelegateFeeBips, - MaximumStakeMultiplier: utils.DefaultMaxStakeMultiplier, - WeightToValueFactor: big.NewInt(0).SetUint64(utils.DefaultWeightToValueFactor), - RewardCalculator: rewardCalculatorAddress, - UptimeBlockchainID: subnetAInfo.BlockchainID, - }, - ) - Expect(err).Should(BeNil()) - utils.WaitForTransactionSuccess(context.Background(), subnetAInfo, tx.Hash()) +// tx, err = nativeStakingManager.Initialize( +// opts, +// nativetokenstakingmanager.PoSValidatorManagerSettings{ +// BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ +// SubnetID: subnetAInfo.SubnetID, +// ChurnPeriodSeconds: utils.DefaultChurnPeriodSeconds, +// MaximumChurnPercentage: utils.DefaultMaxChurnPercentage, +// }, +// MinimumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMinStakeAmount), +// MaximumStakeAmount: big.NewInt(0).SetUint64(utils.DefaultMaxStakeAmount), +// MinimumStakeDuration: utils.DefaultMinStakeDurationSeconds, +// MinimumDelegationFeeBips: utils.DefaultMinDelegateFeeBips, +// MaximumStakeMultiplier: utils.DefaultMaxStakeMultiplier, +// WeightToValueFactor: big.NewInt(0).SetUint64(utils.DefaultWeightToValueFactor), +// RewardCalculator: rewardCalculatorAddress, +// UptimeBlockchainID: subnetAInfo.BlockchainID, +// }, +// ) +// Expect(err).Should(BeNil()) +// utils.WaitForTransactionSuccess(context.Background(), subnetAInfo, tx.Hash()) - // Check that previous validator is still registered - validationID, err := nativeStakingManager.RegisteredValidators(&bind.CallOpts{}, poaNodeID) - Expect(err).Should(BeNil()) - Expect(validationID[:]).Should(Equal(poaValidationID[:])) +// // Check that previous validator is still registered +// validationID, err := nativeStakingManager.RegisteredValidators(&bind.CallOpts{}, poaNodeID) +// Expect(err).Should(BeNil()) +// Expect(validationID[:]).Should(Equal(poaValidationID[:])) - // - // Remove the PoA validator and re-register as a PoS validator - // - posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(proxyAddress, subnetAInfo.RPCClient) - Expect(err).Should(BeNil()) - utils.InitializeAndCompleteEndPoSValidation( - ctx, - signatureAggregator, - ownerKey, - subnetAInfo, - pChainInfo, - posStakingManager, - proxyAddress, - poaValidationID, - expiry, - nodes[0], - 1, - false, - time.Time{}, - network.GetPChainWallet(), - network.GetNetworkID(), - ) +// // +// // Remove the PoA validator and re-register as a PoS validator +// // +// posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(proxyAddress, subnetAInfo.RPCClient) +// Expect(err).Should(BeNil()) +// utils.InitializeAndCompleteEndPoSValidation( +// ctx, +// signatureAggregator, +// ownerKey, +// subnetAInfo, +// pChainInfo, +// posStakingManager, +// proxyAddress, +// poaValidationID, +// expiry, +// nodes[0], +// 1, +// false, +// time.Time{}, +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) - expiry2 := uint64(time.Now().Add(24 * time.Hour).Unix()) - posValidationID := utils.InitializeAndCompleteNativeValidatorRegistration( - ctx, - signatureAggregator, - fundedKey, - subnetAInfo, - pChainInfo, - nativeStakingManager, - proxyAddress, - expiry2, - nodes[0], - network.GetPChainWallet(), - network.GetNetworkID(), - ) - validatorStartTime := time.Now() +// expiry2 := uint64(time.Now().Add(24 * time.Hour).Unix()) +// posValidationID := utils.InitializeAndCompleteNativeValidatorRegistration( +// ctx, +// signatureAggregator, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// nativeStakingManager, +// proxyAddress, +// expiry2, +// nodes[0], +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) +// validatorStartTime := time.Now() - // Delist the PoS validator - utils.InitializeAndCompleteEndPoSValidation( - ctx, - signatureAggregator, - fundedKey, - subnetAInfo, - pChainInfo, - posStakingManager, - proxyAddress, - posValidationID, - expiry2, - nodes[0], - 1, - true, - validatorStartTime, - network.GetPChainWallet(), - network.GetNetworkID(), - ) -} +// // Delist the PoS validator +// utils.InitializeAndCompleteEndPoSValidation( +// ctx, +// signatureAggregator, +// fundedKey, +// subnetAInfo, +// pChainInfo, +// posStakingManager, +// proxyAddress, +// posValidationID, +// expiry2, +// nodes[0], +// 1, +// true, +// validatorStartTime, +// network.GetPChainWallet(), +// network.GetNetworkID(), +// ) +// } diff --git a/tests/suites/validator-manager/validator_manager_suite_test.go b/tests/suites/validator-manager/validator_manager_suite_test.go index 4e0d251fc..b6549ef5a 100644 --- a/tests/suites/validator-manager/validator_manager_suite_test.go +++ b/tests/suites/validator-manager/validator_manager_suite_test.go @@ -65,19 +65,19 @@ var _ = ginkgo.AfterEach(func() { var _ = ginkgo.Describe("[Validator manager integration tests]", func() { // Validator Manager tests - ginkgo.It("Native token staking manager", - ginkgo.Label(validatorManagerLabel), - func() { - validatorManagerFlows.NativeTokenStakingManager(LocalNetworkInstance) - }) + // ginkgo.It("Native token staking manager", + // ginkgo.Label(validatorManagerLabel), + // func() { + // validatorManagerFlows.NativeTokenStakingManager(LocalNetworkInstance) + // }) ginkgo.It("ERC20 token staking manager", ginkgo.Label(validatorManagerLabel), func() { validatorManagerFlows.ERC20TokenStakingManager(LocalNetworkInstance) }) - ginkgo.It("PoA migration to PoS", - ginkgo.Label(validatorManagerLabel), - func() { - validatorManagerFlows.PoAMigrationToPoS(LocalNetworkInstance) - }) + // ginkgo.It("PoA migration to PoS", + // ginkgo.Label(validatorManagerLabel), + // func() { + // validatorManagerFlows.PoAMigrationToPoS(LocalNetworkInstance) + // }) }) diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index 84f5c2185..bfb3c1aa6 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -36,13 +36,14 @@ import ( examplerewardcalculator "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ExampleRewardCalculator" nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" + validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ValidatorManager" + iacp99validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager" iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" ivalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IValidatorManager" "github.com/ava-labs/teleporter/tests/interfaces" "github.com/ethereum/go-ethereum/common" - "google.golang.org/protobuf/proto" - . "github.com/onsi/gomega" + "google.golang.org/protobuf/proto" ) const ( @@ -73,57 +74,29 @@ func DeployValidatorManager( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - managerType ValidatorManagerConcreteType, -) (common.Address, *ivalidatormanager.IValidatorManager) { + securityModuleAddress common.Address, +) (common.Address, *validatormanager.ValidatorManager) { opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) - var ( - tx *types.Transaction - address common.Address - validatorManager *ivalidatormanager.IValidatorManager - ) - switch managerType { - case PoAValidatorManager: - // Reset the global binary data for better test isolation - poavalidatormanager.PoAValidatorManagerBin = poavalidatormanager.PoAValidatorManagerMetaData.Bin - - address, tx, _, err = poavalidatormanager.DeployPoAValidatorManager( - opts, - subnet.RPCClient, - 0, // ICMInitializable.Allowed - ) - Expect(err).Should(BeNil()) - case ERC20TokenStakingManager: - // Reset the global binary data for better test isolation - erc20tokenstakingmanager.ERC20TokenStakingManagerBin = - erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.Bin - - address, tx, _, err = erc20tokenstakingmanager.DeployERC20TokenStakingManager( - opts, - subnet.RPCClient, - 0, // ICMInitializable.Allowed - ) - Expect(err).Should(BeNil()) - case NativeTokenStakingManager: - // Reset the global binary data for better test isolation - nativetokenstakingmanager.NativeTokenStakingManagerBin = - nativetokenstakingmanager.NativeTokenStakingManagerMetaData.Bin - - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - address, tx, _, err = nativetokenstakingmanager.DeployNativeTokenStakingManager( - opts, - subnet.RPCClient, - 0, // ICMInitializable.Allowed - ) - Expect(err).Should(BeNil()) - } + validatormanager.ValidatorManagerBin = validatormanager.ValidatorManagerMetaData.Bin + address, tx, _, err := validatormanager.DeployValidatorManager(opts, subnet.RPCClient, 0) + Expect(err).Should(BeNil()) - validatorManager, err = ivalidatormanager.NewIValidatorManager(address, subnet.RPCClient) + validatorManager, err := validatormanager.NewValidatorManager(address, subnet.RPCClient) Expect(err).Should(BeNil()) + validatorManager.Initialize( + opts, + validatormanager.ValidatorManagerSettings{ + SubnetID: subnet.SubnetID, + ChurnPeriodSeconds: DefaultChurnPeriodSeconds, + MaximumChurnPercentage: DefaultMaxChurnPercentage, + }, + securityModuleAddress, + ) // Wait for the transaction to be mined WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + return address, validatorManager } @@ -135,41 +108,35 @@ func DeployAndInitializeValidatorManager( managerType ValidatorManagerConcreteType, proxy bool, ) (common.Address, *proxyadmin.ProxyAdmin) { - validatorManagerAddress, _ := DeployValidatorManager( - ctx, - senderKey, - subnet, - managerType, - ) + // Deploy the security module opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) - var ( - tx *types.Transaction - proxyAdmin *proxyadmin.ProxyAdmin + tx *types.Transaction + securityModuleAddress common.Address + validatorManagerAddress common.Address + validatorManager *validatormanager.ValidatorManager ) - if proxy { - // Overwrite the manager address with the proxy address - validatorManagerAddress, proxyAdmin = DeployTransparentUpgradeableProxy( + switch managerType { + case PoAValidatorManager: + poavalidatormanager.PoAValidatorManagerBin = poavalidatormanager.PoAValidatorManagerMetaData.Bin + var poaValidatorManager *poavalidatormanager.PoAValidatorManager + securityModuleAddress, tx, poaValidatorManager, err = poavalidatormanager.DeployPoAValidatorManager(opts, subnet.RPCClient, 0) + Expect(err).Should(BeNil()) + WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + + // Deploy the validator manager + validatorManagerAddress, validatorManager = DeployValidatorManager( ctx, - subnet, senderKey, - validatorManagerAddress, + subnet, + securityModuleAddress, ) - } - switch managerType { - case PoAValidatorManager: - poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(validatorManagerAddress, subnet.RPCClient) - Expect(err).Should(BeNil()) tx, err = poaValidatorManager.Initialize( opts, - poavalidatormanager.ValidatorManagerSettings{ - SubnetID: subnet.SubnetID, - ChurnPeriodSeconds: uint64(0), - MaximumChurnPercentage: uint8(20), - }, PrivateKeyToAddress(senderKey), + validatorManagerAddress, ) Expect(err).Should(BeNil()) case ERC20TokenStakingManager: @@ -180,19 +147,28 @@ func DeployAndInitializeValidatorManager( subnet, uint64(10), ) - erc20StakingManager, err := erc20tokenstakingmanager.NewERC20TokenStakingManager( - validatorManagerAddress, + erc20tokenstakingmanager.ERC20TokenStakingManagerBin = erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.Bin + var erc20StakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager + securityModuleAddress, tx, erc20StakingManager, err = erc20tokenstakingmanager.DeployERC20TokenStakingManager( + opts, subnet.RPCClient, + 0, ) Expect(err).Should(BeNil()) + WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + + // Deploy the validator manager + validatorManagerAddress, validatorManager = DeployValidatorManager( + ctx, + senderKey, + subnet, + securityModuleAddress, + ) + tx, err = erc20StakingManager.Initialize( opts, erc20tokenstakingmanager.PoSValidatorManagerSettings{ - BaseSettings: erc20tokenstakingmanager.ValidatorManagerSettings{ - SubnetID: subnet.SubnetID, - ChurnPeriodSeconds: DefaultChurnPeriodSeconds, - MaximumChurnPercentage: DefaultMaxChurnPercentage, - }, + ValidatorManager: validatorManagerAddress, MinimumStakeAmount: big.NewInt(0).SetUint64(DefaultMinStakeAmount), MaximumStakeAmount: big.NewInt(0).SetUint64(DefaultMaxStakeAmount), MinimumStakeDuration: DefaultMinStakeDurationSeconds, @@ -212,19 +188,28 @@ func DeployAndInitializeValidatorManager( subnet, uint64(10), ) - nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( - validatorManagerAddress, + nativetokenstakingmanager.NativeTokenStakingManagerBin = nativetokenstakingmanager.NativeTokenStakingManagerMetaData.Bin + var nativeStakingManager *nativetokenstakingmanager.NativeTokenStakingManager + securityModuleAddress, tx, nativeStakingManager, err = nativetokenstakingmanager.DeployNativeTokenStakingManager( + opts, subnet.RPCClient, + 0, ) Expect(err).Should(BeNil()) + WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + + // Deploy the validator manager + validatorManagerAddress, validatorManager = DeployValidatorManager( + ctx, + senderKey, + subnet, + securityModuleAddress, + ) + tx, err = nativeStakingManager.Initialize( opts, nativetokenstakingmanager.PoSValidatorManagerSettings{ - BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ - SubnetID: subnet.SubnetID, - ChurnPeriodSeconds: DefaultChurnPeriodSeconds, - MaximumChurnPercentage: DefaultMaxChurnPercentage, - }, + ValidatorManager: validatorManagerAddress, MinimumStakeAmount: big.NewInt(0).SetUint64(DefaultMinStakeAmount), MaximumStakeAmount: big.NewInt(0).SetUint64(DefaultMaxStakeAmount), MinimumStakeDuration: DefaultMinStakeDurationSeconds, @@ -238,6 +223,32 @@ func DeployAndInitializeValidatorManager( Expect(err).Should(BeNil()) } WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + + // Initialize the validator manager + tx, err = validatorManager.Initialize( + opts, + validatormanager.ValidatorManagerSettings{ + SubnetID: subnet.SubnetID, + ChurnPeriodSeconds: DefaultChurnPeriodSeconds, + MaximumChurnPercentage: DefaultMaxChurnPercentage, + }, + securityModuleAddress, + ) + Expect(err).Should(BeNil()) + WaitForTransactionSuccess(ctx, subnet, tx.Hash()) + + var proxyAdmin *proxyadmin.ProxyAdmin + + if proxy { + // Overwrite the manager address with the proxy address + validatorManagerAddress, proxyAdmin = DeployTransparentUpgradeableProxy( + ctx, + subnet, + senderKey, + validatorManagerAddress, + ) + } + return validatorManagerAddress, proxyAdmin } @@ -278,14 +289,14 @@ func InitializeValidatorSet( ) []ids.ID { log.Println("Initializing validator set") initialValidators := make([]warpMessage.SubnetToL1ConverstionValidatorData, len(nodes)) - initialValidatorsABI := make([]ivalidatormanager.InitialValidator, len(nodes)) + initialValidatorsABI := make([]iacp99validatormanager.InitialValidator, len(nodes)) for i, node := range nodes { initialValidators[i] = warpMessage.SubnetToL1ConverstionValidatorData{ NodeID: node.NodeID.Bytes(), BLSPublicKey: node.NodePoP.PublicKey, Weight: nodes[i].Weight, } - initialValidatorsABI[i] = ivalidatormanager.InitialValidator{ + initialValidatorsABI[i] = iacp99validatormanager.InitialValidator{ NodeID: node.NodeID.Bytes(), BlsPublicKey: node.NodePoP.PublicKey[:], Weight: nodes[i].Weight, @@ -298,7 +309,7 @@ func InitializeValidatorSet( ManagerAddress: validatorManagerAddress[:], Validators: initialValidators, } - subnetConversionDataABI := ivalidatormanager.ConversionData{ + subnetConversionDataABI := iacp99validatormanager.ConversionData{ SubnetID: subnetInfo.SubnetID, ValidatorManagerBlockchainID: subnetInfo.BlockchainID, ValidatorManagerAddress: validatorManagerAddress, @@ -348,9 +359,9 @@ func DeliverSubnetConversion( subnet interfaces.SubnetTestInfo, validatorManagerAddress common.Address, subnetConversionSignedMessage *avalancheWarp.Message, - subnetConversionData ivalidatormanager.ConversionData, + subnetConversionData iacp99validatormanager.ConversionData, ) *types.Receipt { - abi, err := ivalidatormanager.IValidatorManagerMetaData.GetAbi() + abi, err := iacp99validatormanager.IACP99ValidatorManagerMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("initializeValidatorSet", subnetConversionData, uint32(0)) Expect(err).Should(BeNil()) @@ -368,54 +379,62 @@ func DeliverSubnetConversion( // Function call utils // -func InitializeNativeValidatorRegistration( +// func InitializeNativeValidatorRegistration( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// stakeAmount *big.Int, +// node Node, +// expiry uint64, +// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// ) (*types.Receipt, ids.ID) { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// opts.Value = stakeAmount + +// tx, err := stakingManager.InitializeValidatorRegistration( +// opts, +// nativetokenstakingmanager.ValidatorRegistrationInput{ +// NodeID: node.NodeID[:], +// RegistrationExpiry: expiry, +// BlsPublicKey: node.NodePoP.PublicKey[:], +// }, +// DefaultMinDelegateFeeBips, +// DefaultMinStakeDurationSeconds, +// ) +// Expect(err).Should(BeNil()) +// receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// registrationInitiatedEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodCreated, +// ) +// Expect(err).Should(BeNil()) +// return receipt, ids.ID(registrationInitiatedEvent.ValidationID) +// } + +func InitializeACP99ERC20ValidatorRegistration( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - stakeAmount *big.Int, + weight uint64, + token *exampleerc20.ExampleERC20, node Node, expiry uint64, - stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, + securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModuleAddress common.Address, + validatorManager *validatormanager.ValidatorManager, ) (*types.Receipt, ids.ID) { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - opts.Value = stakeAmount - - tx, err := stakingManager.InitializeValidatorRegistration( - opts, - nativetokenstakingmanager.ValidatorRegistrationInput{ - NodeID: node.NodeID[:], - RegistrationExpiry: expiry, - BlsPublicKey: node.NodePoP.PublicKey[:], - }, - DefaultMinDelegateFeeBips, - DefaultMinStakeDurationSeconds, - ) - Expect(err).Should(BeNil()) - receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) - registrationInitiatedEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodCreated, + stakeAmount, err := securityModule.WeightToValue( + &bind.CallOpts{}, + node.Weight, ) Expect(err).Should(BeNil()) - return receipt, ids.ID(registrationInitiatedEvent.ValidationID) -} -func InitializeERC20ValidatorRegistration( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - stakeAmount *big.Int, - token *exampleerc20.ExampleERC20, - stakingManagerAddress common.Address, - node Node, - expiry uint64, - stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, -) (*types.Receipt, ids.ID) { + // Approve ERC20 transfer to the validator manager, which delegatecall's the security module ERC20Approve( ctx, token, - stakingManagerAddress, + securityModuleAddress, stakeAmount, subnet, senderKey, @@ -424,7 +443,7 @@ func InitializeERC20ValidatorRegistration( opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) - tx, err := stakingManager.InitializeValidatorRegistration( + tx, err := securityModule.InitializeValidatorRegistration( opts, erc20tokenstakingmanager.ValidatorRegistrationInput{ NodeID: node.NodeID[:], @@ -437,36 +456,6 @@ func InitializeERC20ValidatorRegistration( ) Expect(err).Should(BeNil()) receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) - registrationInitiatedEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodCreated, - ) - Expect(err).Should(BeNil()) - return receipt, ids.ID(registrationInitiatedEvent.ValidationID) -} - -func InitializePoAValidatorRegistration( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - node Node, - expiry uint64, - validatorManager *poavalidatormanager.PoAValidatorManager, -) (*types.Receipt, ids.ID) { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - - tx, err := validatorManager.InitializeValidatorRegistration( - opts, - poavalidatormanager.ValidatorRegistrationInput{ - NodeID: node.NodeID[:], - RegistrationExpiry: expiry, - BlsPublicKey: node.NodePoP.PublicKey[:], - }, - node.Weight, - ) - Expect(err).Should(BeNil()) - receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) registrationInitiatedEvent, err := GetEventFromLogs( receipt.Logs, validatorManager.ParseValidationPeriodCreated, @@ -475,14 +464,88 @@ func InitializePoAValidatorRegistration( return receipt, ids.ID(registrationInitiatedEvent.ValidationID) } +// func InitializeERC20ValidatorRegistration( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// stakeAmount *big.Int, +// token *exampleerc20.ExampleERC20, +// stakingManagerAddress common.Address, +// node Node, +// expiry uint64, +// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// ) (*types.Receipt, ids.ID) { +// ERC20Approve( +// ctx, +// token, +// stakingManagerAddress, +// stakeAmount, +// subnet, +// senderKey, +// ) + +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) + +// tx, err := stakingManager.InitializeValidatorRegistration( +// opts, +// erc20tokenstakingmanager.ValidatorRegistrationInput{ +// NodeID: node.NodeID[:], +// RegistrationExpiry: expiry, +// BlsPublicKey: node.NodePoP.PublicKey[:], +// }, +// DefaultMinDelegateFeeBips, +// DefaultMinStakeDurationSeconds, +// stakeAmount, +// ) +// Expect(err).Should(BeNil()) +// receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// registrationInitiatedEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodCreated, +// ) +// Expect(err).Should(BeNil()) +// return receipt, ids.ID(registrationInitiatedEvent.ValidationID) +// } + +// func InitializePoAValidatorRegistration( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// node Node, +// expiry uint64, +// validatorManager *poavalidatormanager.PoAValidatorManager, +// ) (*types.Receipt, ids.ID) { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) + +// tx, err := validatorManager.InitializeValidatorRegistration( +// opts, +// poavalidatormanager.ValidatorRegistrationInput{ +// NodeID: node.NodeID[:], +// RegistrationExpiry: expiry, +// BlsPublicKey: node.NodePoP.PublicKey[:], +// }, +// node.Weight, +// ) +// Expect(err).Should(BeNil()) +// receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// registrationInitiatedEvent, err := GetEventFromLogs( +// receipt.Logs, +// validatorManager.ParseValidationPeriodCreated, +// ) +// Expect(err).Should(BeNil()) +// return receipt, ids.ID(registrationInitiatedEvent.ValidationID) +// } + func CompleteValidatorRegistration( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - stakingManagerContractAddress common.Address, + securityModuleAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := ivalidatormanager.IValidatorManagerMetaData.GetAbi() + abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeValidatorRegistration", uint32(0)) Expect(err).Should(BeNil()) @@ -491,7 +554,7 @@ func CompleteValidatorRegistration( callData, senderKey, subnet, - stakingManagerContractAddress, + securityModuleAddress, registrationSignedMessage.Bytes(), ) } @@ -523,37 +586,115 @@ func CallWarpReceiver( return SendTransactionAndWaitForSuccess(ctx, subnet, signedRegistrationTx) } -func InitializeAndCompleteNativeValidatorRegistration( +// func InitializeAndCompleteNativeValidatorRegistration( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// stakingManagerContractAddress common.Address, +// expiry uint64, +// node Node, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) ids.ID { +// stakeAmount, err := stakingManager.WeightToValue( +// &bind.CallOpts{}, +// node.Weight, +// ) +// Expect(err).Should(BeNil()) +// // Initiate validator registration +// receipt, validationID := InitializeNativeValidatorRegistration( +// ctx, +// fundedKey, +// subnetInfo, +// stakeAmount, +// node, +// expiry, +// stakingManager, +// ) + +// // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain +// // (Sending to the P-Chain will be skipped for now) +// signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) + +// _, err = pchainWallet.IssueRegisterL1ValidatorTx( +// 100*units.Avax, +// node.NodePoP.ProofOfPossession, +// signedWarpMessage.Bytes(), +// ) +// Expect(err).Should(BeNil()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing validator registration") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( +// validationID, +// expiry, +// node, +// true, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteValidatorRegistration( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManagerContractAddress, +// registrationSignedMessage, +// ) +// // Check that the validator is registered in the staking contract +// registrationEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodRegistered, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) + +// return validationID +// } + +func InitializeAndCompleteACP99ERC20ValidatorRegistration( ctx context.Context, signatureAggregator *aggregator.SignatureAggregator, fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, - stakingManagerContractAddress common.Address, + stakingManager *validatormanager.ValidatorManager, + erc20 *exampleerc20.ExampleERC20, expiry uint64, node Node, pchainWallet pwallet.Wallet, networkID uint32, ) ids.ID { - stakeAmount, err := stakingManager.WeightToValue( - &bind.CallOpts{}, - node.Weight, - ) - Expect(err).Should(BeNil()) // Initiate validator registration - receipt, validationID := InitializeNativeValidatorRegistration( + var receipt *types.Receipt + log.Println("Initializing validator v registration") + securityModuleAddress, err := stakingManager.GetSecurityModule(&bind.CallOpts{}) + Expect(err).Should(BeNil()) + securityModule, err := erc20tokenstakingmanager.NewERC20TokenStakingManager(securityModuleAddress, subnetInfo.RPCClient) + Expect(err).Should(BeNil()) + + receipt, validationID := InitializeACP99ERC20ValidatorRegistration( ctx, fundedKey, subnetInfo, - stakeAmount, + node.Weight, + erc20, node, expiry, + securityModule, + securityModuleAddress, stakingManager, ) // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain - // (Sending to the P-Chain will be skipped for now) signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) _, err = pchainWallet.IssueRegisterL1ValidatorTx( @@ -583,7 +724,7 @@ func InitializeAndCompleteNativeValidatorRegistration( ctx, fundedKey, subnetInfo, - stakingManagerContractAddress, + securityModuleAddress, registrationSignedMessage, ) // Check that the validator is registered in the staking contract @@ -597,216 +738,271 @@ func InitializeAndCompleteNativeValidatorRegistration( return validationID } -func InitializeAndCompleteERC20ValidatorRegistration( +// func InitializeAndCompleteERC20ValidatorRegistration( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// stakingManagerAddress common.Address, +// erc20 *exampleerc20.ExampleERC20, +// expiry uint64, +// node Node, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) ids.ID { +// stakeAmount, err := stakingManager.WeightToValue( +// &bind.CallOpts{}, +// node.Weight, +// ) +// Expect(err).Should(BeNil()) +// // Initiate validator registration +// var receipt *types.Receipt +// log.Println("Initializing validator registration") +// receipt, validationID := InitializeERC20ValidatorRegistration( +// ctx, +// fundedKey, +// subnetInfo, +// stakeAmount, +// erc20, +// stakingManagerAddress, +// node, +// expiry, +// stakingManager, +// ) + +// // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain +// signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) + +// _, err = pchainWallet.IssueRegisterL1ValidatorTx( +// 100*units.Avax, +// node.NodePoP.ProofOfPossession, +// signedWarpMessage.Bytes(), +// ) +// Expect(err).Should(BeNil()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing validator registration") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( +// validationID, +// expiry, +// node, +// true, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteValidatorRegistration( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManagerAddress, +// registrationSignedMessage, +// ) +// // Check that the validator is registered in the staking contract +// registrationEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodRegistered, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) + +// return validationID +// } + +// func InitializeAndCompletePoAValidatorRegistration( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// ownerKey *ecdsa.PrivateKey, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManagerAddress common.Address, +// expiry uint64, +// node Node, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) ids.ID { +// // Initiate validator registration +// receipt, validationID := InitializePoAValidatorRegistration( +// ctx, +// ownerKey, +// subnetInfo, +// node, +// expiry, +// validatorManager, +// ) + +// // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain +// signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) + +// _, err := pchainWallet.IssueRegisterL1ValidatorTx( +// 100*units.Avax, +// node.NodePoP.ProofOfPossession, +// signedWarpMessage.Bytes(), +// ) +// Expect(err).Should(BeNil()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing validator registration") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( +// validationID, +// expiry, +// node, +// true, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteValidatorRegistration( +// ctx, +// fundedKey, +// subnetInfo, +// validatorManagerAddress, +// registrationSignedMessage, +// ) +// // Check that the validator is registered in the staking contract +// registrationEvent, err := GetEventFromLogs( +// receipt.Logs, +// validatorManager.ParseValidationPeriodRegistered, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) + +// return validationID +// } + +// func InitializeEndPoSValidation( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// validationID ids.ID, +// ) *types.Receipt { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// tx, err := stakingManager.InitializeEndValidation0( +// opts, +// validationID, +// false, +// 0, +// ) +// Expect(err).Should(BeNil()) +// return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// } + +func InitializeEndACP99PoSValidation( ctx context.Context, - signatureAggregator *aggregator.SignatureAggregator, - fundedKey *ecdsa.PrivateKey, - subnetInfo interfaces.SubnetTestInfo, - pChainInfo interfaces.SubnetTestInfo, - stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, - stakingManagerAddress common.Address, - erc20 *exampleerc20.ExampleERC20, - expiry uint64, - node Node, - pchainWallet pwallet.Wallet, - networkID uint32, -) ids.ID { - stakeAmount, err := stakingManager.WeightToValue( - &bind.CallOpts{}, - node.Weight, - ) + senderKey *ecdsa.PrivateKey, + subnet interfaces.SubnetTestInfo, + securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + validationID ids.ID, + includeUptime bool, + messageIndex uint32, + rewardRecipient common.Address, +) *types.Receipt { + opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) - // Initiate validator registration - var receipt *types.Receipt - log.Println("Initializing validator registration") - receipt, validationID := InitializeERC20ValidatorRegistration( - ctx, - fundedKey, - subnetInfo, - stakeAmount, - erc20, - stakingManagerAddress, - node, - expiry, - stakingManager, - ) - // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain - signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) - - _, err = pchainWallet.IssueRegisterL1ValidatorTx( - 100*units.Avax, - node.NodePoP.ProofOfPossession, - signedWarpMessage.Bytes(), + tx, err := securityModule.ForceInitializeEndValidation( + opts, + validationID, + includeUptime, + messageIndex, ) Expect(err).Should(BeNil()) - PChainProposerVMWorkaround(pchainWallet) - AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +} - // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain - log.Println("Completing validator registration") - registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( - validationID, - expiry, - node, - true, - subnetInfo, - pChainInfo, +// func ForceInitializeEndPoSValidation( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// validationID ids.ID, +// ) *types.Receipt { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// tx, err := stakingManager.ForceInitializeEndValidation( +// opts, +// validationID, +// false, +// 0, +// ) +// Expect(err).Should(BeNil()) +// return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// } + +func ConstructUptimeProofMessage( + validationID ids.ID, + uptime uint64, + subnet interfaces.SubnetTestInfo, + networkID uint32, + signatureAggregator *aggregator.SignatureAggregator, +) *avalancheWarp.Message { + uptimePayload, err := messages.NewValidatorUptime(validationID, uptime) + Expect(err).Should(BeNil()) + addressedCall, err := warpPayload.NewAddressedCall(nil, uptimePayload.Bytes()) + Expect(err).Should(BeNil()) + uptimeProofUnsignedMessage, err := avalancheWarp.NewUnsignedMessage( networkID, - signatureAggregator, + subnet.BlockchainID, + addressedCall.Bytes(), ) + Expect(err).Should(BeNil()) - // Deliver the Warp message to the subnet - receipt = CompleteValidatorRegistration( - ctx, - fundedKey, - subnetInfo, - stakingManagerAddress, - registrationSignedMessage, - ) - // Check that the validator is registered in the staking contract - registrationEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodRegistered, + uptimeProofSignedMessage, err := signatureAggregator.CreateSignedMessage( + uptimeProofUnsignedMessage, + nil, + subnet.SubnetID, + 67, ) Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - - return validationID + return uptimeProofSignedMessage } -func InitializeAndCompletePoAValidatorRegistration( +func InitializeEndACP99PoSValidationWithUptime( ctx context.Context, - signatureAggregator *aggregator.SignatureAggregator, - ownerKey *ecdsa.PrivateKey, - fundedKey *ecdsa.PrivateKey, - subnetInfo interfaces.SubnetTestInfo, - pChainInfo interfaces.SubnetTestInfo, - validatorManager *poavalidatormanager.PoAValidatorManager, - validatorManagerAddress common.Address, - expiry uint64, - node Node, - pchainWallet pwallet.Wallet, networkID uint32, -) ids.ID { - // Initiate validator registration - receipt, validationID := InitializePoAValidatorRegistration( - ctx, - ownerKey, - subnetInfo, - node, - expiry, - validatorManager, - ) - - // Gather subnet-evm Warp signatures for the RegisterSubnetValidatorMessage & relay to the P-Chain - signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) - - _, err := pchainWallet.IssueRegisterL1ValidatorTx( - 100*units.Avax, - node.NodePoP.ProofOfPossession, - signedWarpMessage.Bytes(), - ) - Expect(err).Should(BeNil()) - PChainProposerVMWorkaround(pchainWallet) - AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) - - // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain - log.Println("Completing validator registration") - registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( - validationID, - expiry, - node, - true, - subnetInfo, - pChainInfo, - networkID, - signatureAggregator, - ) - - // Deliver the Warp message to the subnet - receipt = CompleteValidatorRegistration( - ctx, - fundedKey, - subnetInfo, - validatorManagerAddress, - registrationSignedMessage, - ) - // Check that the validator is registered in the staking contract - registrationEvent, err := GetEventFromLogs( - receipt.Logs, - validatorManager.ParseValidationPeriodRegistered, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) - - return validationID -} - -func InitializeEndPoSValidation( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - stakingManager *iposvalidatormanager.IPoSValidatorManager, - validationID ids.ID, -) *types.Receipt { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - tx, err := stakingManager.InitializeEndValidation0( - opts, - validationID, - false, - 0, - ) - Expect(err).Should(BeNil()) - return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) -} - -func ForceInitializeEndPoSValidation( - ctx context.Context, + signatureAggregator *aggregator.SignatureAggregator, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - stakingManager *iposvalidatormanager.IPoSValidatorManager, + securityModuleAddress common.Address, validationID ids.ID, + uptime uint64, ) *types.Receipt { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - tx, err := stakingManager.ForceInitializeEndValidation( - opts, + uptimeMsg := ConstructUptimeProofMessage( validationID, - false, - 0, + uptime, + subnet, + networkID, + signatureAggregator, ) - Expect(err).Should(BeNil()) - return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) -} -func ConstructUptimeProofMessage( - validationID ids.ID, - uptime uint64, - subnet interfaces.SubnetTestInfo, - networkID uint32, - signatureAggregator *aggregator.SignatureAggregator, -) *avalancheWarp.Message { - uptimePayload, err := messages.NewValidatorUptime(validationID, uptime) + abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - addressedCall, err := warpPayload.NewAddressedCall(nil, uptimePayload.Bytes()) - Expect(err).Should(BeNil()) - uptimeProofUnsignedMessage, err := avalancheWarp.NewUnsignedMessage( - networkID, - subnet.BlockchainID, - addressedCall.Bytes(), - ) + callData, err := abi.Pack("forceInitializeEndValidation", validationID, true, uint32(0)) Expect(err).Should(BeNil()) - - uptimeProofSignedMessage, err := signatureAggregator.CreateSignedMessage( - uptimeProofUnsignedMessage, - nil, - subnet.SubnetID, - 67, + return CallWarpReceiver( + ctx, + callData, + senderKey, + subnet, + securityModuleAddress, + uptimeMsg.Bytes(), ) - Expect(err).Should(BeNil()) - return uptimeProofSignedMessage } func ForceInitializeEndPoSValidationWithUptime( @@ -873,31 +1069,31 @@ func InitializeEndPoSValidationWithUptime( ) } -func InitializeEndPoAValidation( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - validatorManager *poavalidatormanager.PoAValidatorManager, - validationID ids.ID, -) *types.Receipt { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - tx, err := validatorManager.InitializeEndValidation( - opts, - validationID, - ) - Expect(err).Should(BeNil()) - return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) -} +// func InitializeEndPoAValidation( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// validatorManager *poavalidatormanager.PoAValidatorManager, +// validationID ids.ID, +// ) *types.Receipt { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// tx, err := validatorManager.InitializeEndValidation( +// opts, +// validationID, +// ) +// Expect(err).Should(BeNil()) +// return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// } func CompleteEndValidation( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - stakingManagerContractAddress common.Address, + securityModuleAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := ivalidatormanager.IValidatorManagerMetaData.GetAbi() + abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeEndValidation", uint32(0)) Expect(err).Should(BeNil()) @@ -906,74 +1102,74 @@ func CompleteEndValidation( callData, senderKey, subnet, - stakingManagerContractAddress, + securityModuleAddress, registrationSignedMessage.Bytes(), ) } -func InitializeERC20DelegatorRegistration( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - validationID ids.ID, - delegationAmount *big.Int, - token *exampleerc20.ExampleERC20, - stakingManagerAddress common.Address, - stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, -) *types.Receipt { - ERC20Approve( - ctx, - token, - stakingManagerAddress, - delegationAmount, - subnet, - senderKey, - ) - - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - - tx, err := stakingManager.InitializeDelegatorRegistration( - opts, - validationID, - delegationAmount, - ) - Expect(err).Should(BeNil()) - receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) - _, err = GetEventFromLogs( - receipt.Logs, - stakingManager.ParseDelegatorAdded, - ) - Expect(err).Should(BeNil()) - return receipt -} - -func InitializeNativeDelegatorRegistration( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - validationID ids.ID, - delegationAmount *big.Int, - stakingManagerAddress common.Address, - stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, -) *types.Receipt { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - opts.Value = delegationAmount - - tx, err := stakingManager.InitializeDelegatorRegistration( - opts, - validationID, - ) - Expect(err).Should(BeNil()) - receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) - _, err = GetEventFromLogs( - receipt.Logs, - stakingManager.ParseDelegatorAdded, - ) - Expect(err).Should(BeNil()) - return receipt -} +// func InitializeERC20DelegatorRegistration( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// validationID ids.ID, +// delegationAmount *big.Int, +// token *exampleerc20.ExampleERC20, +// stakingManagerAddress common.Address, +// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// ) *types.Receipt { +// ERC20Approve( +// ctx, +// token, +// stakingManagerAddress, +// delegationAmount, +// subnet, +// senderKey, +// ) + +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) + +// tx, err := stakingManager.InitializeDelegatorRegistration( +// opts, +// validationID, +// delegationAmount, +// ) +// Expect(err).Should(BeNil()) +// receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// _, err = GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseDelegatorAdded, +// ) +// Expect(err).Should(BeNil()) +// return receipt +// } + +// func InitializeNativeDelegatorRegistration( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// validationID ids.ID, +// delegationAmount *big.Int, +// stakingManagerAddress common.Address, +// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// ) *types.Receipt { +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// opts.Value = delegationAmount + +// tx, err := stakingManager.InitializeDelegatorRegistration( +// opts, +// validationID, +// ) +// Expect(err).Should(BeNil()) +// receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// _, err = GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseDelegatorAdded, +// ) +// Expect(err).Should(BeNil()) +// return receipt +// } func CompleteDelegatorRegistration( ctx context.Context, @@ -997,27 +1193,27 @@ func CompleteDelegatorRegistration( ) } -func InitializeEndDelegation( - ctx context.Context, - senderKey *ecdsa.PrivateKey, - subnet interfaces.SubnetTestInfo, - stakingManagerAddress common.Address, - delegationID ids.ID, -) *types.Receipt { - stakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnet.RPCClient) - Expect(err).Should(BeNil()) - WaitMinStakeDuration(ctx, subnet, senderKey) - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) - Expect(err).Should(BeNil()) - tx, err := stakingManager.ForceInitializeEndDelegation( - opts, - delegationID, - false, - 0, - ) - Expect(err).Should(BeNil()) - return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) -} +// func InitializeEndDelegation( +// ctx context.Context, +// senderKey *ecdsa.PrivateKey, +// subnet interfaces.SubnetTestInfo, +// stakingManagerAddress common.Address, +// delegationID ids.ID, +// ) *types.Receipt { +// stakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnet.RPCClient) +// Expect(err).Should(BeNil()) +// WaitMinStakeDuration(ctx, subnet, senderKey) +// opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) +// Expect(err).Should(BeNil()) +// tx, err := stakingManager.ForceInitializeEndDelegation( +// opts, +// delegationID, +// false, +// 0, +// ) +// Expect(err).Should(BeNil()) +// return WaitForTransactionSuccess(ctx, subnet, tx.Hash()) +// } func CompleteEndDelegation( ctx context.Context, @@ -1041,14 +1237,15 @@ func CompleteEndDelegation( ) } -func InitializeAndCompleteEndInitialPoSValidation( +func InitializeAndCompleteEndInitialACP99PoSValidation( ctx context.Context, signatureAggregator *aggregator.SignatureAggregator, fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - stakingManager *iposvalidatormanager.IPoSValidatorManager, - stakingManagerAddress common.Address, + securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModuleAddress common.Address, + validatorManager *validatormanager.ValidatorManager, validationID ids.ID, index uint32, weight uint64, @@ -1057,16 +1254,20 @@ func InitializeAndCompleteEndInitialPoSValidation( ) { log.Println("Initializing initial validator removal") WaitMinStakeDuration(ctx, subnetInfo, fundedKey) - receipt := ForceInitializeEndPoSValidation( + receipt := InitializeEndACP99PoSValidation( ctx, fundedKey, subnetInfo, - stakingManager, + securityModule, validationID, + false, + 0, + common.Address{}, ) + validatorRemovalEvent, err := GetEventFromLogs( receipt.Logs, - stakingManager.ParseValidatorRemovalInitialized, + validatorManager.ParseValidatorRemovalInitialized, ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) @@ -1105,27 +1306,105 @@ func InitializeAndCompleteEndInitialPoSValidation( ctx, fundedKey, subnetInfo, - stakingManagerAddress, + securityModuleAddress, registrationSignedMessage, ) // Check that the validator is has been delisted from the staking contract validationEndedEvent, err := GetEventFromLogs( receipt.Logs, - stakingManager.ParseValidationPeriodEnded, + validatorManager.ParseValidationPeriodEnded, ) Expect(err).Should(BeNil()) Expect(validationEndedEvent.ValidationID[:]).Should(Equal(validationID[:])) } -func InitializeAndCompleteEndPoSValidation( +// func InitializeAndCompleteEndInitialPoSValidation( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManagerAddress common.Address, +// validationID ids.ID, +// index uint32, +// weight uint64, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) { +// log.Println("Initializing initial validator removal") +// WaitMinStakeDuration(ctx, subnetInfo, fundedKey) +// receipt := ForceInitializeEndPoSValidation( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManager, +// validationID, +// ) +// validatorRemovalEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidatorRemovalInitialized, +// ) +// Expect(err).Should(BeNil()) +// Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) + +// // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain +// // (Sending to the P-Chain will be skipped for now) +// unsignedMessage := ExtractWarpMessageFromLog(ctx, receipt, subnetInfo) +// signedWarpMessage, err := signatureAggregator.CreateSignedMessage( +// unsignedMessage, +// nil, +// subnetInfo.SubnetID, +// 67, +// ) +// Expect(err).Should(BeNil()) + +// // Deliver the Warp message to the P-Chain +// pchainWallet.IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing initial validator removal") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessageForInitialValidator( +// validationID, +// index, +// false, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteEndValidation( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManagerAddress, +// registrationSignedMessage, +// ) + +// // Check that the validator is has been delisted from the staking contract +// validationEndedEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodEnded, +// ) +// Expect(err).Should(BeNil()) +// Expect(validationEndedEvent.ValidationID[:]).Should(Equal(validationID[:])) +// } + +func InitializeAndCompleteEndACP99PoSValidation( ctx context.Context, signatureAggregator *aggregator.SignatureAggregator, fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - stakingManager *iposvalidatormanager.IPoSValidatorManager, - stakingManagerAddress common.Address, + securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModuleAddress common.Address, + validatorManager *validatormanager.ValidatorManager, validationID ids.ID, expiry uint64, node Node, @@ -1141,29 +1420,32 @@ func InitializeAndCompleteEndPoSValidation( var receipt *types.Receipt if includeUptime { uptime := uint64(time.Since(validatorStartTime).Seconds()) - receipt = ForceInitializeEndPoSValidationWithUptime( + receipt = InitializeEndACP99PoSValidationWithUptime( ctx, networkID, signatureAggregator, fundedKey, subnetInfo, - stakingManagerAddress, + securityModuleAddress, validationID, uptime, ) } else { - receipt = ForceInitializeEndPoSValidation( + receipt = InitializeEndACP99PoSValidation( ctx, fundedKey, subnetInfo, - stakingManager, + securityModule, validationID, + false, + 0, + common.Address{}, ) } validatorRemovalEvent, err := GetEventFromLogs( receipt.Logs, - stakingManager.ParseValidatorRemovalInitialized, + validatorManager.ParseValidatorRemovalInitialized, ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) @@ -1202,152 +1484,7 @@ func InitializeAndCompleteEndPoSValidation( ctx, fundedKey, subnetInfo, - stakingManagerAddress, - registrationSignedMessage, - ) - - // Check that the validator is has been delisted from the staking contract - registrationEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodEnded, - ) - Expect(err).Should(BeNil()) - Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) -} - -func InitializeAndCompleteEndInitialPoAValidation( - ctx context.Context, - signatureAggregator *aggregator.SignatureAggregator, - ownerKey *ecdsa.PrivateKey, - fundedKey *ecdsa.PrivateKey, - subnetInfo interfaces.SubnetTestInfo, - pChainInfo interfaces.SubnetTestInfo, - stakingManager *poavalidatormanager.PoAValidatorManager, - stakingManagerAddress common.Address, - validationID ids.ID, - index uint32, - weight uint64, - pchainWallet pwallet.Wallet, - networkID uint32, -) { - log.Println("Initializing initial validator removal") - WaitMinStakeDuration(ctx, subnetInfo, fundedKey) - receipt := InitializeEndPoAValidation( - ctx, - ownerKey, - subnetInfo, - stakingManager, - validationID, - ) - validatorRemovalEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidatorRemovalInitialized, - ) - Expect(err).Should(BeNil()) - Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) - - // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain - // (Sending to the P-Chain will be skipped for now) - unsignedMessage := ExtractWarpMessageFromLog(ctx, receipt, subnetInfo) - signedWarpMessage, err := signatureAggregator.CreateSignedMessage( - unsignedMessage, - nil, - subnetInfo.SubnetID, - 67, - ) - Expect(err).Should(BeNil()) - - // Deliver the Warp message to the P-Chain - pchainWallet.IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) - PChainProposerVMWorkaround(pchainWallet) - AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) - - // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain - log.Println("Completing initial validator removal") - registrationSignedMessage := ConstructSubnetValidatorRegistrationMessageForInitialValidator( - validationID, - index, - false, - subnetInfo, - pChainInfo, - networkID, - signatureAggregator, - ) - - // Deliver the Warp message to the subnet - receipt = CompleteEndValidation( - ctx, - fundedKey, - subnetInfo, - stakingManagerAddress, - registrationSignedMessage, - ) - - // Check that the validator is has been delisted from the staking contract - validationEndedEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodEnded, - ) - Expect(err).Should(BeNil()) - Expect(validationEndedEvent.ValidationID[:]).Should(Equal(validationID[:])) -} - -func InitializeAndCompleteEndPoAValidation( - ctx context.Context, - signatureAggregator *aggregator.SignatureAggregator, - ownerKey *ecdsa.PrivateKey, - fundedKey *ecdsa.PrivateKey, - subnetInfo interfaces.SubnetTestInfo, - pChainInfo interfaces.SubnetTestInfo, - validatorManager *poavalidatormanager.PoAValidatorManager, - validatorManagerAddress common.Address, - validationID ids.ID, - weight uint64, - nonce uint64, - networkID uint32, -) { - receipt := InitializeEndPoAValidation( - ctx, - ownerKey, - subnetInfo, - validatorManager, - validationID, - ) - validatorRemovalEvent, err := GetEventFromLogs( - receipt.Logs, - validatorManager.ParseValidatorRemovalInitialized, - ) - Expect(err).Should(BeNil()) - Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) - - // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain - // (Sending to the P-Chain will be skipped for now) - signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) - Expect(err).Should(BeNil()) - - // Validate the Warp message, (this will be done on the P-Chain in the future) - ValidateSubnetValidatorWeightMessage(signedWarpMessage, validationID, 0, nonce) - - // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain - registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( - validationID, - 0, - Node{}, - false, - subnetInfo, - pChainInfo, - networkID, - signatureAggregator, - ) - - // Deliver the Warp message to the subnet - receipt = CompleteEndValidation( - ctx, - ownerKey, - subnetInfo, - validatorManagerAddress, + securityModuleAddress, registrationSignedMessage, ) @@ -1360,6 +1497,248 @@ func InitializeAndCompleteEndPoAValidation( Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) } +// func InitializeAndCompleteEndPoSValidation( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManagerAddress common.Address, +// validationID ids.ID, +// expiry uint64, +// node Node, +// nonce uint64, +// includeUptime bool, +// validatorStartTime time.Time, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) { +// log.Println("Initializing validator removal") +// WaitMinStakeDuration(ctx, subnetInfo, fundedKey) + +// var receipt *types.Receipt +// if includeUptime { +// uptime := uint64(time.Since(validatorStartTime).Seconds()) +// receipt = ForceInitializeEndPoSValidationWithUptime( +// ctx, +// networkID, +// signatureAggregator, +// fundedKey, +// subnetInfo, +// stakingManagerAddress, +// validationID, +// uptime, +// ) +// } else { +// receipt = ForceInitializeEndPoSValidation( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManager, +// validationID, +// ) +// } + +// validatorRemovalEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidatorRemovalInitialized, +// ) +// Expect(err).Should(BeNil()) +// Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(validatorRemovalEvent.Weight).Should(Equal(node.Weight)) + +// // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain +// unsignedMessage := ExtractWarpMessageFromLog(ctx, receipt, subnetInfo) +// signedWarpMessage, err := signatureAggregator.CreateSignedMessage( +// unsignedMessage, +// nil, +// subnetInfo.SubnetID, +// 67, +// ) +// Expect(err).Should(BeNil()) + +// // Deliver the Warp message to the P-Chain +// pchainWallet.IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing validator removal") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( +// validationID, +// expiry, +// node, +// false, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteEndValidation( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManagerAddress, +// registrationSignedMessage, +// ) + +// // Check that the validator is has been delisted from the staking contract +// registrationEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodEnded, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) +// } + +// func InitializeAndCompleteEndInitialPoAValidation( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// ownerKey *ecdsa.PrivateKey, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// stakingManager *poavalidatormanager.PoAValidatorManager, +// stakingManagerAddress common.Address, +// validationID ids.ID, +// index uint32, +// weight uint64, +// pchainWallet pwallet.Wallet, +// networkID uint32, +// ) { +// log.Println("Initializing initial validator removal") +// WaitMinStakeDuration(ctx, subnetInfo, fundedKey) +// receipt := InitializeEndPoAValidation( +// ctx, +// ownerKey, +// subnetInfo, +// stakingManager, +// validationID, +// ) +// validatorRemovalEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidatorRemovalInitialized, +// ) +// Expect(err).Should(BeNil()) +// Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) + +// // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain +// // (Sending to the P-Chain will be skipped for now) +// unsignedMessage := ExtractWarpMessageFromLog(ctx, receipt, subnetInfo) +// signedWarpMessage, err := signatureAggregator.CreateSignedMessage( +// unsignedMessage, +// nil, +// subnetInfo.SubnetID, +// 67, +// ) +// Expect(err).Should(BeNil()) + +// // Deliver the Warp message to the P-Chain +// pchainWallet.IssueSetL1ValidatorWeightTx(signedWarpMessage.Bytes()) +// PChainProposerVMWorkaround(pchainWallet) +// AdvanceProposerVM(ctx, subnetInfo, fundedKey, 5) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// log.Println("Completing initial validator removal") +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessageForInitialValidator( +// validationID, +// index, +// false, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteEndValidation( +// ctx, +// fundedKey, +// subnetInfo, +// stakingManagerAddress, +// registrationSignedMessage, +// ) + +// // Check that the validator is has been delisted from the staking contract +// validationEndedEvent, err := GetEventFromLogs( +// receipt.Logs, +// stakingManager.ParseValidationPeriodEnded, +// ) +// Expect(err).Should(BeNil()) +// Expect(validationEndedEvent.ValidationID[:]).Should(Equal(validationID[:])) +// } + +// func InitializeAndCompleteEndPoAValidation( +// ctx context.Context, +// signatureAggregator *aggregator.SignatureAggregator, +// ownerKey *ecdsa.PrivateKey, +// fundedKey *ecdsa.PrivateKey, +// subnetInfo interfaces.SubnetTestInfo, +// pChainInfo interfaces.SubnetTestInfo, +// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManagerAddress common.Address, +// validationID ids.ID, +// weight uint64, +// nonce uint64, +// networkID uint32, +// ) { +// receipt := InitializeEndPoAValidation( +// ctx, +// ownerKey, +// subnetInfo, +// validatorManager, +// validationID, +// ) +// validatorRemovalEvent, err := GetEventFromLogs( +// receipt.Logs, +// validatorManager.ParseValidatorRemovalInitialized, +// ) +// Expect(err).Should(BeNil()) +// Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) +// Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) + +// // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain +// // (Sending to the P-Chain will be skipped for now) +// signedWarpMessage := ConstructSignedWarpMessage(ctx, receipt, subnetInfo, pChainInfo, nil, signatureAggregator) +// Expect(err).Should(BeNil()) + +// // Validate the Warp message, (this will be done on the P-Chain in the future) +// ValidateSubnetValidatorWeightMessage(signedWarpMessage, validationID, 0, nonce) + +// // Construct a SubnetValidatorRegistrationMessage Warp message from the P-Chain +// registrationSignedMessage := ConstructSubnetValidatorRegistrationMessage( +// validationID, +// 0, +// Node{}, +// false, +// subnetInfo, +// pChainInfo, +// networkID, +// signatureAggregator, +// ) + +// // Deliver the Warp message to the subnet +// receipt = CompleteEndValidation( +// ctx, +// ownerKey, +// subnetInfo, +// validatorManagerAddress, +// registrationSignedMessage, +// ) + +// // Check that the validator is has been delisted from the staking contract +// registrationEvent, err := GetEventFromLogs( +// receipt.Logs, +// validatorManager.ParseValidationPeriodEnded, +// ) +// Expect(err).Should(BeNil()) +// Expect(registrationEvent.ValidationID[:]).Should(Equal(validationID[:])) +// } + // // P-Chain utils // From c033e1bf153fbb91dde54b322f15fa6189c9ab06 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 5 Dec 2024 17:59:37 -0600 Subject: [PATCH 2/2] rename manager -> security modules --- .../ERC20SecurityModule.go} | 766 +++++++++--------- .../NativeTokenSecurityModule.go} | 746 ++++++++--------- .../PoASecurityModule.go} | 346 ++++---- .../IPoSSecurityModule.go} | 520 ++++++------ ...ingManager.sol => ERC20SecurityModule.sol} | 48 +- ...ager.sol => NativeTokenSecurityModule.sol} | 32 +- ...datorManager.sol => PoASecurityModule.sol} | 36 +- ...datorManager.sol => PoSSecurityModule.sol} | 120 +-- contracts/validator-manager/README.md | 56 +- .../validator-manager/UptimeMessageSpec.md | 4 +- ...ngManager.sol => IERC20SecurityModule.sol} | 4 +- ...ger.sol => INativeTokenSecurityModule.sol} | 4 +- ...atorManager.sol => IPoASecurityModule.sol} | 2 +- ...atorManager.sol => IPoSSecurityModule.sol} | 12 +- .../tests/ERC20TokenStakingManagerTests.t.sol | 68 +- .../NativeTokenStakingManagerTests.t.sol | 62 +- .../tests/PoAValidatorManagerTests.t.sol | 12 +- .../tests/PoSValidatorManagerTests.t.sol | 76 +- scripts/abi_bindings.sh | 4 +- tests/flows/teleporter/validator_churn.go | 4 +- .../validator-manager/erc20_token_staking.go | 8 +- .../validator-manager/native_token_staking.go | 14 +- tests/flows/validator-manager/poa_to_pos.go | 42 +- .../teleporter/teleporter_suite_test.go | 2 +- .../validator_manager_suite_test.go | 4 +- tests/utils/validator_manager.go | 108 +-- 26 files changed, 1550 insertions(+), 1550 deletions(-) rename abi-bindings/go/validator-manager/{ERC20TokenStakingManager/ERC20TokenStakingManager.go => ERC20SecurityModule/ERC20SecurityModule.go} (74%) rename abi-bindings/go/validator-manager/{NativeTokenStakingManager/NativeTokenStakingManager.go => NativeTokenSecurityModule/NativeTokenSecurityModule.go} (81%) rename abi-bindings/go/validator-manager/{PoAValidatorManager/PoAValidatorManager.go => PoASecurityModule/PoASecurityModule.go} (80%) rename abi-bindings/go/validator-manager/interfaces/{IPoSValidatorManager/IPoSValidatorManager.go => IPoSSecurityModule/IPoSSecurityModule.go} (55%) rename contracts/validator-manager/{ERC20TokenStakingManager.sol => ERC20SecurityModule.sol} (74%) rename contracts/validator-manager/{NativeTokenStakingManager.sol => NativeTokenSecurityModule.sol} (73%) rename contracts/validator-manager/{PoAValidatorManager.sol => PoASecurityModule.sol} (67%) rename contracts/validator-manager/{PoSValidatorManager.sol => PoSSecurityModule.sol} (88%) rename contracts/validator-manager/interfaces/{IERC20TokenStakingManager.sol => IERC20SecurityModule.sol} (91%) rename contracts/validator-manager/interfaces/{INativeTokenStakingManager.sol => INativeTokenSecurityModule.sol} (90%) rename contracts/validator-manager/interfaces/{IPoAValidatorManager.sol => IPoASecurityModule.sol} (97%) rename contracts/validator-manager/interfaces/{IPoSValidatorManager.sol => IPoSSecurityModule.sol} (96%) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20SecurityModule/ERC20SecurityModule.go similarity index 74% rename from abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go rename to abi-bindings/go/validator-manager/ERC20SecurityModule/ERC20SecurityModule.go index a14b47ac4..85361bc10 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20SecurityModule/ERC20SecurityModule.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package erc20tokenstakingmanager +package erc20securitymodule import ( "errors" @@ -50,8 +50,8 @@ type PChainOwner struct { Addresses []common.Address } -// PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. -type PoSValidatorManagerSettings struct { +// PoSSecurityModuleSettings is an auto generated low-level Go binding around an user-defined struct. +type PoSSecurityModuleSettings struct { ValidatorManager common.Address MinimumStakeAmount *big.Int MaximumStakeAmount *big.Int @@ -83,23 +83,23 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. -var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051613e71380380613e7183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613d248061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063785e9e86116100fe578063a3a65e481161009e578063b771b3bc1161006e578063b771b3bc14610413578063ba3a4b9714610421578063e4a63c4014610434578063fb8b11dd14610448575f80fd5b8063a3a65e48146103c6578063a9778a7a1461025a578063afb98096146103d9578063b5c9349814610400575f80fd5b80638ef34c98116100d95780638ef34c981461037a57806393e245981461038d5780639ae06447146103a05780639e1bc4ef146103b3575f80fd5b8063785e9e86146103235780637d8d2f771461035457806380dd672f14610367575f80fd5b80633a1cfff61161017457806360ad77841161014457806360ad7784146102e357806362065856146102f6578063732214f81461030957806376f7862114610310575f80fd5b80633a1cfff614610289578063467ef06f1461029c5780634bee0040146102af5780635dd6a6cb146102d0575f80fd5b806325e1c776116101af57806325e1c7761461021c5780632e2194d81461022f57806335455ded1461025a57806337b9be8f14610276575f80fd5b80630118acc4146101d5578063151d30d1146101ea5780631ec4472414610209575b5f80fd5b6101e86101e336600461338b565b61045b565b005b6101f2600a81565b60405160ff90911681526020015b60405180910390f35b6101e861021736600461338b565b61046c565b6101e861022a3660046133c6565b61047e565b61024261023d3660046133f0565b610561565b6040516001600160401b039091168152602001610200565b61026361271081565b60405161ffff9091168152602001610200565b6101e861028436600461341b565b6105b5565b6101e861029736600461338b565b6105c8565b6101e86102aa366004613469565b610636565b6102c26102bd3660046134a7565b6106bf565b604051908152602001610200565b6101e86102de36600461341b565b6106f4565b6101e86102f13660046133c6565b610700565b6102c261030436600461350e565b610a37565b6102c25f81565b6101e861031e36600461338b565b610a57565b5f80516020613caf833981519152546001600160a01b03165b6040516001600160a01b039091168152602001610200565b6101e861036236600461341b565b610a63565b6101e86103753660046133c6565b610ad1565b6101e8610388366004613529565b610d7c565b6101e861039b3660046133f0565b610e5d565b6101e86103ae36600461341b565b610f5b565b6102c26103c1366004613557565b610f67565b6101e86103d4366004613469565b610f93565b6102c27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101e861040e366004613577565b61100d565b61033c6005600160991b0181565b6101e861042f3660046133f0565b6110f1565b6102c25f80516020613caf83398151915281565b6101e8610456366004613529565b6113bb565b6104678383835f611482565b505050565b6104788383835f6114ae565b50505050565b610487826118bd565b6104ac576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f6104b56118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156104f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610520919081019061369b565b519050600281600581111561053757610537613768565b14610557578060405163170cc93360e21b81526004016104a3919061377c565b610478838361190a565b5f8061056b6118e6565b6004015461057990846137aa565b905080158061058e57506001600160401b0381115b156105af5760405163222d164360e21b8152600481018490526024016104a3565b92915050565b6105c1848484846114ae565b5050505050565b5f6105d16118e6565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610614575f80fd5b505af1158015610626573d5f803e3d5ffd5b505050506105c18484845f611ba9565b5f61063f6118e6565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610690573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b491906137c9565b905061046781611e35565b5f6106c8611f57565b6106d485858585611f8e565b90506106ec60015f80516020613ccf83398151915255565b949350505050565b61047884848484612172565b5f6107096118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561074257610742613768565b600381111561075357610753613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6107c86118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610833919081019061369b565b905060018351600381111561084a5761084a613768565b1461086b578251604051633b0d540d60e21b81526104a391906004016137e0565b60048151600581111561088057610880613768565b036108965761088e86612200565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6108bb89612444565b604001516040518263ffffffff1660e01b81526004016108db919061381f565b606060405180830381865af41580156108f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091a9190613831565b509150915081841461094757846040015160405163089938b360e11b81526004016104a391815260200190565b806001600160401b031683606001516001600160401b031610806109805750806001600160401b03168560a001516001600160401b0316115b156109a957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610a406118e6565b600401546105af906001600160401b038416613871565b6104678383835f612172565b5f610a6c6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610aaf575f80fd5b505af1158015610ac1573d5f803e3d5ffd5b5050505061088e85858585611ba9565b610ad9611f57565b5f610ae26118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610b1b57610b1b613768565b6003811115610b2c57610b2c613768565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610ba557610ba5613768565b14610bc6578051604051633b0d540d60e21b81526104a391906004016137e0565b6004610bd06118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610c059160040190815260200190565b5f60405180830381865afa158015610c1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c46919081019061369b565b516005811115610c5857610c58613768565b14610d57575f610c6784612444565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610ca6919061381f565b606060405180830381865af4158015610cc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce59190613831565b509150915081846040015114610d115760405163089938b360e11b8152600481018390526024016104a3565b806001600160401b03168460c001516001600160401b03161115610d5357604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5050505b610d6084612200565b5050610d7860015f80516020613ccf83398151915255565b5050565b5f610d856118e6565b90506001600160a01b038216610db95760405163caa903f960e01b81526001600160a01b03831660048201526024016104a3565b5f8381526007820160205260409020546001600160a01b03163314610dff57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104a3565b336001600160a01b03831603610e2e575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610e666118e6565b90505f610e716118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610edc919081019061369b565b5190506004816005811115610ef357610ef3613768565b14610f13578060405163170cc93360e21b81526004016104a3919061377c565b5f8381526007830160205260409020546001600160a01b03163314610f385733610dda565b5f838152600783016020526040902054610467906001600160a01b03168461255a565b61047884848484611482565b5f610f70611f57565b610f7b833384612584565b90506105af60015f80516020613ccf83398151915255565b5f610f9c6118e6565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af1158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046791906137c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611056575080546001600160401b03808416911610155b156110745760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561109f8484612897565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6110fa6118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561113357611133613768565b600381111561114457611144613768565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156111bd576111bd613768565b141580156111de57506003815160038111156111db576111db613768565b14155b156111ff578051604051633b0d540d60e21b81526104a391906004016137e0565b5f6112086118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff69161123d9160040190815260200190565b5f60405180830381865afa158015611257573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127e919081019061369b565b905080606001516001600160401b03165f036112b0576040516339b894f960e21b8152600481018590526024016104a3565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361131e93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611338573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135f9190810190613888565b6040518263ffffffff1660e01b815260040161137b919061381f565b6020604051808303815f875af1158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c191906137c9565b6001600160a01b0381166113ed5760405163caa903f960e01b81526001600160a01b03821660048201526024016104a3565b5f6113f66118e6565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146114245733610dda565b336001600160a01b03831603611453575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b61148e848484846114ae565b61047857604051631036cf9160e11b8152600481018590526024016104a3565b5f806114b86118e6565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114f1576114f1613768565b600381111561150257611502613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6115776118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e2919081019061369b565b90506002835160038111156115f9576115f9613768565b1461161a578251604051633b0d540d60e21b81526104a391906004016137e0565b60208301516001600160a01b031633146116b6575f8281526007850160205260409020546001600160a01b031633146116535733610dda565b5f82815260078501602052604090205460a082015161168291600160b01b90046001600160401b0316906138b9565b6001600160401b03164210156116b65760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b6002815160058111156116cb576116cb613768565b0361186557600384015460808401516116ed916001600160401b0316906138b9565b6001600160401b03164210156117215760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b871561173357611731828861190a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161177791906138d9565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156117c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e491906138f9565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561182784888c6128b1565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506106ec9350505050565b60048151600581111561187a5761187a613768565b036118a15761188a83878b6128b1565b5061189489612200565b60019450505050506106ec565b805160405163170cc93360e21b81526104a3919060040161377c565b5f806118c76118e6565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611955573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261197c9190810190613914565b915091508061199e57604051636b2f19e960e01b815260040160405180910390fd5b5f6119a76118e6565b60068101548451919250146119d5578251604051636ba589a560e01b815260048101919091526024016104a3565b60208301516001600160a01b031615611a11576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b60208301516001600160a01b031615611a4d576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611a8a919061381f565b6040805180830381865af4158015611aa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac891906139ba565b91509150818814611aef5760405163089938b360e11b8152600481018990526024016104a3565b5f8881526007840160205260409020600101546001600160401b039081169082161115611b80575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611b9e565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611bb36118e6565b90505f611bbe6118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611c02573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c29919081019061369b565b9050611c34876118bd565b611c43576001925050506106ec565b5f8781526007830160205260409020546001600160a01b03163314611c685733610dda565b5f87815260078301602052604090205460a0820151611c9791600160b01b90046001600160401b0316906138b9565b6001600160401b03168160c001516001600160401b03161015611cde5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104a3565b5f8615611cf657611cef888761190a565b9050611d14565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611d3990610a37565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc691906137c9565b90508084600b015f8b81526020019081526020015f205f828254611dea91906139dd565b90915550506001600160a01b03861615611e27575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611e3e6118e6565b90505f611e496118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611e8d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611eb4919081019061369b565b9050611ebf836118bd565b611ec857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680611eff575080611f1d565b5f858152600c85016020526040902080546001600160a01b03191690555b600483516005811115611f3257611f32613768565b03611f4157611f41818661255a565b6105c182611f528560400151610a37565b612b07565b5f80516020613ccf833981519152805460011901611f8857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f80611f986118e6565b600381015490915061ffff600160401b90910481169086161080611fc1575061271061ffff8616115b15611fe557604051635f12e6c360e11b815261ffff861660048201526024016104a3565b60038101546001600160401b039081169085161015612021576040516202a06d60e11b81526001600160401b03851660048201526024016104a3565b80600101548310806120365750806002015483115b156120575760405163222d164360e21b8152600481018490526024016104a3565b5f61206184612b2a565b90505f61206d82610561565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906120a3908c908690600401613b19565b6020604051808303815f875af11580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e391906137c9565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b60015f80516020613ccf83398151915255565b5f61217b6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156121be575f80fd5b505af11580156121d0573d5f803e3d5ffd5b505050506121e085858585611ba9565b6105c157604051635bff683f60e11b8152600481018690526024016104a3565b5f6122096118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561224257612242613768565b600381111561225357612253613768565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612303573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232791906138f9565b826080015161233691906138b9565b6001600160401b031642101561236a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806123ba575060208201516123d8565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806123e5838886612b4d565b915091506123fe8560200151611f528760600151610a37565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156124a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124cf9190810190613914565b91509150806124f157604051636b2f19e960e01b815260040160405180910390fd5b815115612517578151604051636ba589a560e01b815260048101919091526024016104a3565b60208201516001600160a01b031615612553576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5092915050565b5f6125636118e6565b5f838152600b82016020526040812080549190559091506104788482612bfa565b5f8061258e6118e6565b90505f61259d61023d85612b2a565b90505f6125a86118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156125ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612613919081019061369b565b905061261e876118bd565b61263e576040516330efa98b60e01b8152600481018890526024016104a3565b60028151600581111561265357612653613768565b1461267457805160405163170cc93360e21b81526104a3919060040161377c565b5f82826080015161268591906138b9565b905083600301600a9054906101000a90046001600160401b031682604001516126ae9190613be6565b6001600160401b0316816001600160401b031611156126eb57604051636d51fe0560e11b81526001600160401b03821660048201526024016104a3565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276591906138f9565b90505f898260405160200161279192919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a4955050505050505b9392505050565b61289f612c70565b6128a882612cbb565b610d7881612d39565b5f806128bb6118e6565b90505f6128c66118e6565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916128fb9160040190815260200190565b5f60405180830381865afa158015612915573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293c919081019061369b565b90505f60038251600581111561295457612954613768565b1480612972575060048251600581111561297057612970613768565b145b15612982575060c08101516129bf565b60028251600581111561299757612997613768565b036129a35750426129bf565b815160405163170cc93360e21b81526104a3919060040161377c565b86608001516001600160401b0316816001600160401b0316116129e7575f9350505050612890565b600583015460608801515f916001600160a01b031690634f22429f90612a0c90610a37565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612a8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab191906137c9565b5f878152600986016020526040902081905590506001600160a01b03871615611b9e575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f80516020613caf83398151915254610d78906001600160a01b03168383612da1565b5f6105af825f80516020613caf833981519152546001600160a01b031690612e00565b5f805f612b586118e6565b5f86815260098201602052604081208054908290559192509081908015612bec575f87815260078501602052604090205461271090612ba290600160a01b900461ffff1683613871565b612bac91906137aa565b91508184600b015f8981526020019081526020015f205f828254612bd091906139dd565b90915550612be090508282613c11565b9250612bec8984612bfa565b509097909650945050505050565b5f5f80516020613caf83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612c55575f80fd5b505af1158015612c67573d5f803e3d5ffd5b50505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612cb957604051631afcd79f60e31b815260040160405180910390fd5b565b612cc3612c70565b612ccb612e0c565b612d36612cdb6020830183613c24565b60208301356040840135612cf5608086016060870161350e565b612d0560a0870160808801613c3f565b612d1560c0880160a08901613c58565b60c0880135612d2b6101008a0160e08b01613c24565b896101000135612e1c565b50565b612d41612c70565b5f80516020613caf8339815191526001600160a01b038216612d8157604051637330680360e01b81526001600160a01b03831660048201526024016104a3565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0383811660248301526044820183905261046791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613045565b5f6128908333846130a6565b612e14612c70565b612cb9613209565b612e24612c70565b5f612e2d6118e6565b905061ffff86161580612e45575061271061ffff8716115b15612e6957604051635f12e6c360e11b815261ffff871660048201526024016104a3565b87891115612e8d5760405163222d164360e21b8152600481018a90526024016104a3565b60ff85161580612ea05750600a60ff8616115b15612ec35760405163170db35960e31b815260ff861660048201526024016104a3565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2391906138f9565b6001600160401b0316876001600160401b03161015612f5f576040516202a06d60e11b81526001600160401b03881660048201526024016104a3565b835f03612f7f5760405163a733007160e01b815260040160405180910390fd5b81612fa057604051632f6bd1db60e01b8152600481018390526024016104a3565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f6130596001600160a01b03841683613211565b905080515f1415801561307d57508080602001905181019061307b9190613c78565b155b1561046757604051635274afe760e01b81526001600160a01b03841660048201526024016104a3565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156130ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061311091906137c9565b90506131276001600160a01b03861685308661321e565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561316b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061318f91906137c9565b90508181116131f55760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104a3565b6131ff8282613c11565b9695505050505050565b61215f612c70565b606061289083835f613257565b6040516001600160a01b0384811660248301528381166044830152606482018390526104789186918216906323b872dd90608401612dce565b60608147101561327c5760405163cd78605960e01b81523060048201526024016104a3565b5f80856001600160a01b031684866040516132979190613c93565b5f6040518083038185875af1925050503d805f81146132d1576040519150601f19603f3d011682016040523d82523d5f602084013e6132d6565b606091505b50915091506131ff8683836060826132f6576132f18261333d565b612890565b815115801561330d57506001600160a01b0384163b155b1561333657604051639996b31560e01b81526001600160a01b03851660048201526024016104a3565b5080612890565b80511561334d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b8015158114612d36575f80fd5b803563ffffffff81168114613386575f80fd5b919050565b5f805f6060848603121561339d575f80fd5b8335925060208401356133af81613366565b91506133bd60408501613373565b90509250925092565b5f80604083850312156133d7575f80fd5b823591506133e760208401613373565b90509250929050565b5f60208284031215613400575f80fd5b5035919050565b6001600160a01b0381168114612d36575f80fd5b5f805f806080858703121561342e575f80fd5b84359350602085013561344081613366565b925061344e60408601613373565b9150606085013561345e81613407565b939692955090935050565b5f60208284031215613479575f80fd5b61289082613373565b803561ffff81168114613386575f80fd5b6001600160401b0381168114612d36575f80fd5b5f805f80608085870312156134ba575f80fd5b84356001600160401b038111156134cf575f80fd5b850160a081880312156134e0575f80fd5b93506134ee60208601613482565b925060408501356134fe81613493565b9396929550929360600135925050565b5f6020828403121561351e575f80fd5b813561289081613493565b5f806040838503121561353a575f80fd5b82359150602083013561354c81613407565b809150509250929050565b5f8060408385031215613568575f80fd5b50508035926020909101359150565b5f8082840361014081121561358a575f80fd5b61012080821215613599575f80fd5b849350830135905061354c81613407565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156135e0576135e06135aa565b60405290565b805160068110613386575f80fd5b5f5b8381101561360e5781810151838201526020016135f6565b50505f910152565b5f82601f830112613625575f80fd5b81516001600160401b038082111561363f5761363f6135aa565b604051601f8301601f19908116603f01168101908282118183101715613667576136676135aa565b8160405283815286602085880101111561367f575f80fd5b6131ff8460208301602089016135f4565b805161338681613493565b5f602082840312156136ab575f80fd5b81516001600160401b03808211156136c1575f80fd5b9083019060e082860312156136d4575f80fd5b6136dc6135be565b6136e5836135e6565b81526020830151828111156136f8575f80fd5b61370487828601613616565b60208301525061371660408401613690565b604082015261372760608401613690565b606082015261373860808401613690565b608082015261374960a08401613690565b60a082015261375a60c08401613690565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061379057613790613768565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826137c457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156137d9575f80fd5b5051919050565b602081016004831061379057613790613768565b5f815180845261380b8160208601602086016135f4565b601f01601f19169290920160200192915050565b602081525f61289060208301846137f4565b5f805f60608486031215613843575f80fd5b83519250602084015161385581613493565b604085015190925061386681613493565b809150509250925092565b80820281158282048414176105af576105af613796565b5f60208284031215613898575f80fd5b81516001600160401b038111156138ad575f80fd5b6106ec84828501613616565b6001600160401b0381811683821601908082111561255357612553613796565b6001600160401b0382811682821603908082111561255357612553613796565b5f60208284031215613909575f80fd5b815161289081613493565b5f8060408385031215613925575f80fd5b82516001600160401b038082111561393b575f80fd5b908401906060828703121561394e575f80fd5b604051606081018181108382111715613969576139696135aa565b60405282518152602083015161397e81613407565b6020820152604083015182811115613994575f80fd5b6139a088828601613616565b604083015250809450505050602083015161354c81613366565b5f80604083850312156139cb575f80fd5b82519150602083015161354c81613493565b808201808211156105af576105af613796565b5f808335601e19843603018112613a05575f80fd5b83016020810192503590506001600160401b03811115613a23575f80fd5b803603821315613a31575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e19833603018112613a74575f80fd5b90910192915050565b5f6040830163ffffffff613a9084613373565b168452602080840135601e19853603018112613aaa575f80fd5b84016020810190356001600160401b03811115613ac5575f80fd5b8060051b3603821315613ad6575f80fd5b6040602088015292839052915f90606087015b81831015611b9e578435613afc81613407565b6001600160a01b0316815293830193600192909201918301613ae9565b604081525f613b2884856139f0565b60a06040850152613b3d60e085018284613a38565b915050613b4d60208601866139f0565b603f1980868503016060870152613b65848385613a38565b935060408801359250613b7783613493565b6001600160401b0391508183166080870152613b966060890189613a60565b9250808685030160a0870152613bac8484613a7d565b9350613bbb6080890189613a60565b9250808685030160c087015250613bd28383613a7d565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613c0957613c09613796565b505092915050565b818103818111156105af576105af613796565b5f60208284031215613c34575f80fd5b813561289081613407565b5f60208284031215613c4f575f80fd5b61289082613482565b5f60208284031215613c68575f80fd5b813560ff81168114612890575f80fd5b5f60208284031215613c88575f80fd5b815161289081613366565b5f8251613ca48184602087016135f4565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122089bc226e3548669376f8122795bdb77aabe290cc8849535c50d47279a32e7a1764736f6c63430008190033", +// ERC20SecurityModuleMetaData contains all meta data concerning the ERC20SecurityModule contract. +var ERC20SecurityModuleMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSSecurityModuleSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051613e71380380613e7183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613d248061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063785e9e86116100fe578063a3a65e481161009e578063b771b3bc1161006e578063b771b3bc14610413578063ba3a4b9714610421578063e4a63c4014610434578063fb8b11dd14610448575f80fd5b8063a3a65e48146103c6578063a9778a7a1461025a578063afb98096146103d9578063b5c9349814610400575f80fd5b80638ef34c98116100d95780638ef34c981461037a57806393e245981461038d5780639ae06447146103a05780639e1bc4ef146103b3575f80fd5b8063785e9e86146103235780637d8d2f771461035457806380dd672f14610367575f80fd5b80633a1cfff61161017457806360ad77841161014457806360ad7784146102e357806362065856146102f6578063732214f81461030957806376f7862114610310575f80fd5b80633a1cfff614610289578063467ef06f1461029c5780634bee0040146102af5780635dd6a6cb146102d0575f80fd5b806325e1c776116101af57806325e1c7761461021c5780632e2194d81461022f57806335455ded1461025a57806337b9be8f14610276575f80fd5b80630118acc4146101d5578063151d30d1146101ea5780631ec4472414610209575b5f80fd5b6101e86101e336600461338b565b61045b565b005b6101f2600a81565b60405160ff90911681526020015b60405180910390f35b6101e861021736600461338b565b61046c565b6101e861022a3660046133c6565b61047e565b61024261023d3660046133f0565b610561565b6040516001600160401b039091168152602001610200565b61026361271081565b60405161ffff9091168152602001610200565b6101e861028436600461341b565b6105b5565b6101e861029736600461338b565b6105c8565b6101e86102aa366004613469565b610636565b6102c26102bd3660046134a7565b6106bf565b604051908152602001610200565b6101e86102de36600461341b565b6106f4565b6101e86102f13660046133c6565b610700565b6102c261030436600461350e565b610a37565b6102c25f81565b6101e861031e36600461338b565b610a57565b5f80516020613caf833981519152546001600160a01b03165b6040516001600160a01b039091168152602001610200565b6101e861036236600461341b565b610a63565b6101e86103753660046133c6565b610ad1565b6101e8610388366004613529565b610d7c565b6101e861039b3660046133f0565b610e5d565b6101e86103ae36600461341b565b610f5b565b6102c26103c1366004613557565b610f67565b6101e86103d4366004613469565b610f93565b6102c27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101e861040e366004613577565b61100d565b61033c6005600160991b0181565b6101e861042f3660046133f0565b6110f1565b6102c25f80516020613caf83398151915281565b6101e8610456366004613529565b6113bb565b6104678383835f611482565b505050565b6104788383835f6114ae565b50505050565b610487826118bd565b6104ac576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f6104b56118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156104f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610520919081019061369b565b519050600281600581111561053757610537613768565b14610557578060405163170cc93360e21b81526004016104a3919061377c565b610478838361190a565b5f8061056b6118e6565b6004015461057990846137aa565b905080158061058e57506001600160401b0381115b156105af5760405163222d164360e21b8152600481018490526024016104a3565b92915050565b6105c1848484846114ae565b5050505050565b5f6105d16118e6565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610614575f80fd5b505af1158015610626573d5f803e3d5ffd5b505050506105c18484845f611ba9565b5f61063f6118e6565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610690573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b491906137c9565b905061046781611e35565b5f6106c8611f57565b6106d485858585611f8e565b90506106ec60015f80516020613ccf83398151915255565b949350505050565b61047884848484612172565b5f6107096118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561074257610742613768565b600381111561075357610753613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6107c86118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610833919081019061369b565b905060018351600381111561084a5761084a613768565b1461086b578251604051633b0d540d60e21b81526104a391906004016137e0565b60048151600581111561088057610880613768565b036108965761088e86612200565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6108bb89612444565b604001516040518263ffffffff1660e01b81526004016108db919061381f565b606060405180830381865af41580156108f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091a9190613831565b509150915081841461094757846040015160405163089938b360e11b81526004016104a391815260200190565b806001600160401b031683606001516001600160401b031610806109805750806001600160401b03168560a001516001600160401b0316115b156109a957604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610a406118e6565b600401546105af906001600160401b038416613871565b6104678383835f612172565b5f610a6c6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610aaf575f80fd5b505af1158015610ac1573d5f803e3d5ffd5b5050505061088e85858585611ba9565b610ad9611f57565b5f610ae26118e6565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610b1b57610b1b613768565b6003811115610b2c57610b2c613768565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610ba557610ba5613768565b14610bc6578051604051633b0d540d60e21b81526104a391906004016137e0565b6004610bd06118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610c059160040190815260200190565b5f60405180830381865afa158015610c1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c46919081019061369b565b516005811115610c5857610c58613768565b14610d57575f610c6784612444565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610ca6919061381f565b606060405180830381865af4158015610cc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce59190613831565b509150915081846040015114610d115760405163089938b360e11b8152600481018390526024016104a3565b806001600160401b03168460c001516001600160401b03161115610d5357604051632e19bc2d60e11b81526001600160401b03821660048201526024016104a3565b5050505b610d6084612200565b5050610d7860015f80516020613ccf83398151915255565b5050565b5f610d856118e6565b90506001600160a01b038216610db95760405163caa903f960e01b81526001600160a01b03831660048201526024016104a3565b5f8381526007820160205260409020546001600160a01b03163314610dff57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016104a3565b336001600160a01b03831603610e2e575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610e666118e6565b90505f610e716118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610edc919081019061369b565b5190506004816005811115610ef357610ef3613768565b14610f13578060405163170cc93360e21b81526004016104a3919061377c565b5f8381526007830160205260409020546001600160a01b03163314610f385733610dda565b5f838152600783016020526040902054610467906001600160a01b03168461255a565b61047884848484611482565b5f610f70611f57565b610f7b833384612584565b90506105af60015f80516020613ccf83398151915255565b5f610f9c6118e6565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af1158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046791906137c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611056575080546001600160401b03808416911610155b156110745760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561109f8484612897565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6110fa6118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561113357611133613768565b600381111561114457611144613768565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156111bd576111bd613768565b141580156111de57506003815160038111156111db576111db613768565b14155b156111ff578051604051633b0d540d60e21b81526104a391906004016137e0565b5f6112086118e6565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff69161123d9160040190815260200190565b5f60405180830381865afa158015611257573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127e919081019061369b565b905080606001516001600160401b03165f036112b0576040516339b894f960e21b8152600481018590526024016104a3565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361131e93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611338573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135f9190810190613888565b6040518263ffffffff1660e01b815260040161137b919061381f565b6020604051808303815f875af1158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c191906137c9565b6001600160a01b0381166113ed5760405163caa903f960e01b81526001600160a01b03821660048201526024016104a3565b5f6113f66118e6565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146114245733610dda565b336001600160a01b03831603611453575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b61148e848484846114ae565b61047857604051631036cf9160e11b8152600481018590526024016104a3565b5f806114b86118e6565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114f1576114f1613768565b600381111561150257611502613768565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6115776118e6565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e2919081019061369b565b90506002835160038111156115f9576115f9613768565b1461161a578251604051633b0d540d60e21b81526104a391906004016137e0565b60208301516001600160a01b031633146116b6575f8281526007850160205260409020546001600160a01b031633146116535733610dda565b5f82815260078501602052604090205460a082015161168291600160b01b90046001600160401b0316906138b9565b6001600160401b03164210156116b65760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b6002815160058111156116cb576116cb613768565b0361186557600384015460808401516116ed916001600160401b0316906138b9565b6001600160401b03164210156117215760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b871561173357611731828861190a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161177791906138d9565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156117c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e491906138f9565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561182784888c6128b1565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506106ec9350505050565b60048151600581111561187a5761187a613768565b036118a15761188a83878b6128b1565b5061189489612200565b60019450505050506106ec565b805160405163170cc93360e21b81526104a3919060040161377c565b5f806118c76118e6565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611955573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261197c9190810190613914565b915091508061199e57604051636b2f19e960e01b815260040160405180910390fd5b5f6119a76118e6565b60068101548451919250146119d5578251604051636ba589a560e01b815260048101919091526024016104a3565b60208301516001600160a01b031615611a11576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b60208301516001600160a01b031615611a4d576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611a8a919061381f565b6040805180830381865af4158015611aa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac891906139ba565b91509150818814611aef5760405163089938b360e11b8152600481018990526024016104a3565b5f8881526007840160205260409020600101546001600160401b039081169082161115611b80575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611b9e565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611bb36118e6565b90505f611bbe6118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611c02573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c29919081019061369b565b9050611c34876118bd565b611c43576001925050506106ec565b5f8781526007830160205260409020546001600160a01b03163314611c685733610dda565b5f87815260078301602052604090205460a0820151611c9791600160b01b90046001600160401b0316906138b9565b6001600160401b03168160c001516001600160401b03161015611cde5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016104a3565b5f8615611cf657611cef888761190a565b9050611d14565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611d3990610a37565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc691906137c9565b90508084600b015f8b81526020019081526020015f205f828254611dea91906139dd565b90915550506001600160a01b03861615611e27575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611e3e6118e6565b90505f611e496118e6565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611e8d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611eb4919081019061369b565b9050611ebf836118bd565b611ec857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680611eff575080611f1d565b5f858152600c85016020526040902080546001600160a01b03191690555b600483516005811115611f3257611f32613768565b03611f4157611f41818661255a565b6105c182611f528560400151610a37565b612b07565b5f80516020613ccf833981519152805460011901611f8857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f80611f986118e6565b600381015490915061ffff600160401b90910481169086161080611fc1575061271061ffff8616115b15611fe557604051635f12e6c360e11b815261ffff861660048201526024016104a3565b60038101546001600160401b039081169085161015612021576040516202a06d60e11b81526001600160401b03851660048201526024016104a3565b80600101548310806120365750806002015483115b156120575760405163222d164360e21b8152600481018490526024016104a3565b5f61206184612b2a565b90505f61206d82610561565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906120a3908c908690600401613b19565b6020604051808303815f875af11580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e391906137c9565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b60015f80516020613ccf83398151915255565b5f61217b6118e6565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156121be575f80fd5b505af11580156121d0573d5f803e3d5ffd5b505050506121e085858585611ba9565b6105c157604051635bff683f60e11b8152600481018690526024016104a3565b5f6122096118e6565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561224257612242613768565b600381111561225357612253613768565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612303573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232791906138f9565b826080015161233691906138b9565b6001600160401b031642101561236a5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016104a3565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806123ba575060208201516123d8565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806123e5838886612b4d565b915091506123fe8560200151611f528760600151610a37565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156124a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124cf9190810190613914565b91509150806124f157604051636b2f19e960e01b815260040160405180910390fd5b815115612517578151604051636ba589a560e01b815260048101919091526024016104a3565b60208201516001600160a01b031615612553576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016104a3565b5092915050565b5f6125636118e6565b5f838152600b82016020526040812080549190559091506104788482612bfa565b5f8061258e6118e6565b90505f61259d61023d85612b2a565b90505f6125a86118e6565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156125ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612613919081019061369b565b905061261e876118bd565b61263e576040516330efa98b60e01b8152600481018890526024016104a3565b60028151600581111561265357612653613768565b1461267457805160405163170cc93360e21b81526104a3919060040161377c565b5f82826080015161268591906138b9565b905083600301600a9054906101000a90046001600160401b031682604001516126ae9190613be6565b6001600160401b0316816001600160401b031611156126eb57604051636d51fe0560e11b81526001600160401b03821660048201526024016104a3565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612741573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276591906138f9565b90505f898260405160200161279192919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a4955050505050505b9392505050565b61289f612c70565b6128a882612cbb565b610d7881612d39565b5f806128bb6118e6565b90505f6128c66118e6565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916128fb9160040190815260200190565b5f60405180830381865afa158015612915573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293c919081019061369b565b90505f60038251600581111561295457612954613768565b1480612972575060048251600581111561297057612970613768565b145b15612982575060c08101516129bf565b60028251600581111561299757612997613768565b036129a35750426129bf565b815160405163170cc93360e21b81526104a3919060040161377c565b86608001516001600160401b0316816001600160401b0316116129e7575f9350505050612890565b600583015460608801515f916001600160a01b031690634f22429f90612a0c90610a37565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612a8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab191906137c9565b5f878152600986016020526040902081905590506001600160a01b03871615611b9e575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f80516020613caf83398151915254610d78906001600160a01b03168383612da1565b5f6105af825f80516020613caf833981519152546001600160a01b031690612e00565b5f805f612b586118e6565b5f86815260098201602052604081208054908290559192509081908015612bec575f87815260078501602052604090205461271090612ba290600160a01b900461ffff1683613871565b612bac91906137aa565b91508184600b015f8981526020019081526020015f205f828254612bd091906139dd565b90915550612be090508282613c11565b9250612bec8984612bfa565b509097909650945050505050565b5f5f80516020613caf83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612c55575f80fd5b505af1158015612c67573d5f803e3d5ffd5b50505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612cb957604051631afcd79f60e31b815260040160405180910390fd5b565b612cc3612c70565b612ccb612e0c565b612d36612cdb6020830183613c24565b60208301356040840135612cf5608086016060870161350e565b612d0560a0870160808801613c3f565b612d1560c0880160a08901613c58565b60c0880135612d2b6101008a0160e08b01613c24565b896101000135612e1c565b50565b612d41612c70565b5f80516020613caf8339815191526001600160a01b038216612d8157604051637330680360e01b81526001600160a01b03831660048201526024016104a3565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0383811660248301526044820183905261046791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613045565b5f6128908333846130a6565b612e14612c70565b612cb9613209565b612e24612c70565b5f612e2d6118e6565b905061ffff86161580612e45575061271061ffff8716115b15612e6957604051635f12e6c360e11b815261ffff871660048201526024016104a3565b87891115612e8d5760405163222d164360e21b8152600481018a90526024016104a3565b60ff85161580612ea05750600a60ff8616115b15612ec35760405163170db35960e31b815260ff861660048201526024016104a3565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2391906138f9565b6001600160401b0316876001600160401b03161015612f5f576040516202a06d60e11b81526001600160401b03881660048201526024016104a3565b835f03612f7f5760405163a733007160e01b815260040160405180910390fd5b81612fa057604051632f6bd1db60e01b8152600481018390526024016104a3565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f6130596001600160a01b03841683613211565b905080515f1415801561307d57508080602001905181019061307b9190613c78565b155b1561046757604051635274afe760e01b81526001600160a01b03841660048201526024016104a3565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156130ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061311091906137c9565b90506131276001600160a01b03861685308661321e565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561316b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061318f91906137c9565b90508181116131f55760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104a3565b6131ff8282613c11565b9695505050505050565b61215f612c70565b606061289083835f613257565b6040516001600160a01b0384811660248301528381166044830152606482018390526104789186918216906323b872dd90608401612dce565b60608147101561327c5760405163cd78605960e01b81523060048201526024016104a3565b5f80856001600160a01b031684866040516132979190613c93565b5f6040518083038185875af1925050503d805f81146132d1576040519150601f19603f3d011682016040523d82523d5f602084013e6132d6565b606091505b50915091506131ff8683836060826132f6576132f18261333d565b612890565b815115801561330d57506001600160a01b0384163b155b1561333657604051639996b31560e01b81526001600160a01b03851660048201526024016104a3565b5080612890565b80511561334d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b8015158114612d36575f80fd5b803563ffffffff81168114613386575f80fd5b919050565b5f805f6060848603121561339d575f80fd5b8335925060208401356133af81613366565b91506133bd60408501613373565b90509250925092565b5f80604083850312156133d7575f80fd5b823591506133e760208401613373565b90509250929050565b5f60208284031215613400575f80fd5b5035919050565b6001600160a01b0381168114612d36575f80fd5b5f805f806080858703121561342e575f80fd5b84359350602085013561344081613366565b925061344e60408601613373565b9150606085013561345e81613407565b939692955090935050565b5f60208284031215613479575f80fd5b61289082613373565b803561ffff81168114613386575f80fd5b6001600160401b0381168114612d36575f80fd5b5f805f80608085870312156134ba575f80fd5b84356001600160401b038111156134cf575f80fd5b850160a081880312156134e0575f80fd5b93506134ee60208601613482565b925060408501356134fe81613493565b9396929550929360600135925050565b5f6020828403121561351e575f80fd5b813561289081613493565b5f806040838503121561353a575f80fd5b82359150602083013561354c81613407565b809150509250929050565b5f8060408385031215613568575f80fd5b50508035926020909101359150565b5f8082840361014081121561358a575f80fd5b61012080821215613599575f80fd5b849350830135905061354c81613407565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156135e0576135e06135aa565b60405290565b805160068110613386575f80fd5b5f5b8381101561360e5781810151838201526020016135f6565b50505f910152565b5f82601f830112613625575f80fd5b81516001600160401b038082111561363f5761363f6135aa565b604051601f8301601f19908116603f01168101908282118183101715613667576136676135aa565b8160405283815286602085880101111561367f575f80fd5b6131ff8460208301602089016135f4565b805161338681613493565b5f602082840312156136ab575f80fd5b81516001600160401b03808211156136c1575f80fd5b9083019060e082860312156136d4575f80fd5b6136dc6135be565b6136e5836135e6565b81526020830151828111156136f8575f80fd5b61370487828601613616565b60208301525061371660408401613690565b604082015261372760608401613690565b606082015261373860808401613690565b608082015261374960a08401613690565b60a082015261375a60c08401613690565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061379057613790613768565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826137c457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156137d9575f80fd5b5051919050565b602081016004831061379057613790613768565b5f815180845261380b8160208601602086016135f4565b601f01601f19169290920160200192915050565b602081525f61289060208301846137f4565b5f805f60608486031215613843575f80fd5b83519250602084015161385581613493565b604085015190925061386681613493565b809150509250925092565b80820281158282048414176105af576105af613796565b5f60208284031215613898575f80fd5b81516001600160401b038111156138ad575f80fd5b6106ec84828501613616565b6001600160401b0381811683821601908082111561255357612553613796565b6001600160401b0382811682821603908082111561255357612553613796565b5f60208284031215613909575f80fd5b815161289081613493565b5f8060408385031215613925575f80fd5b82516001600160401b038082111561393b575f80fd5b908401906060828703121561394e575f80fd5b604051606081018181108382111715613969576139696135aa565b60405282518152602083015161397e81613407565b6020820152604083015182811115613994575f80fd5b6139a088828601613616565b604083015250809450505050602083015161354c81613366565b5f80604083850312156139cb575f80fd5b82519150602083015161354c81613493565b808201808211156105af576105af613796565b5f808335601e19843603018112613a05575f80fd5b83016020810192503590506001600160401b03811115613a23575f80fd5b803603821315613a31575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e19833603018112613a74575f80fd5b90910192915050565b5f6040830163ffffffff613a9084613373565b168452602080840135601e19853603018112613aaa575f80fd5b84016020810190356001600160401b03811115613ac5575f80fd5b8060051b3603821315613ad6575f80fd5b6040602088015292839052915f90606087015b81831015611b9e578435613afc81613407565b6001600160a01b0316815293830193600192909201918301613ae9565b604081525f613b2884856139f0565b60a06040850152613b3d60e085018284613a38565b915050613b4d60208601866139f0565b603f1980868503016060870152613b65848385613a38565b935060408801359250613b7783613493565b6001600160401b0391508183166080870152613b966060890189613a60565b9250808685030160a0870152613bac8484613a7d565b9350613bbb6080890189613a60565b9250808685030160c087015250613bd28383613a7d565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613c0957613c09613796565b505092915050565b818103818111156105af576105af613796565b5f60208284031215613c34575f80fd5b813561289081613407565b5f60208284031215613c4f575f80fd5b61289082613482565b5f60208284031215613c68575f80fd5b813560ff81168114612890575f80fd5b5f60208284031215613c88575f80fd5b815161289081613366565b5f8251613ca48184602087016135f4565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220073c72d1263d40de655346017a188262490b1e24e44fc61716f77f8fa58fd63864736f6c63430008190033", } -// ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20TokenStakingManagerMetaData.ABI instead. -var ERC20TokenStakingManagerABI = ERC20TokenStakingManagerMetaData.ABI +// ERC20SecurityModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20SecurityModuleMetaData.ABI instead. +var ERC20SecurityModuleABI = ERC20SecurityModuleMetaData.ABI -// ERC20TokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20TokenStakingManagerMetaData.Bin instead. -var ERC20TokenStakingManagerBin = ERC20TokenStakingManagerMetaData.Bin +// ERC20SecurityModuleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20SecurityModuleMetaData.Bin instead. +var ERC20SecurityModuleBin = ERC20SecurityModuleMetaData.Bin -// DeployERC20TokenStakingManager deploys a new Ethereum contract, binding an instance of ERC20TokenStakingManager to it. -func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20TokenStakingManager, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() +// DeployERC20SecurityModule deploys a new Ethereum contract, binding an instance of ERC20SecurityModule to it. +func DeployERC20SecurityModule(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ERC20SecurityModule, error) { + parsed, err := ERC20SecurityModuleMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -108,113 +108,113 @@ func DeployERC20TokenStakingManager(auth *bind.TransactOpts, backend bind.Contra } validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - ERC20TokenStakingManagerBin = strings.ReplaceAll(ERC20TokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + ERC20SecurityModuleBin = strings.ReplaceAll(ERC20SecurityModuleBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20TokenStakingManagerBin), backend, init) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20SecurityModuleBin), backend, init) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil + return address, tx, &ERC20SecurityModule{ERC20SecurityModuleCaller: ERC20SecurityModuleCaller{contract: contract}, ERC20SecurityModuleTransactor: ERC20SecurityModuleTransactor{contract: contract}, ERC20SecurityModuleFilterer: ERC20SecurityModuleFilterer{contract: contract}}, nil } -// ERC20TokenStakingManager is an auto generated Go binding around an Ethereum contract. -type ERC20TokenStakingManager struct { - ERC20TokenStakingManagerCaller // Read-only binding to the contract - ERC20TokenStakingManagerTransactor // Write-only binding to the contract - ERC20TokenStakingManagerFilterer // Log filterer for contract events +// ERC20SecurityModule is an auto generated Go binding around an Ethereum contract. +type ERC20SecurityModule struct { + ERC20SecurityModuleCaller // Read-only binding to the contract + ERC20SecurityModuleTransactor // Write-only binding to the contract + ERC20SecurityModuleFilterer // Log filterer for contract events } -// ERC20TokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCaller struct { +// ERC20SecurityModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20SecurityModuleCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactor struct { +// ERC20SecurityModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20SecurityModuleTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20TokenStakingManagerFilterer struct { +// ERC20SecurityModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20SecurityModuleFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20TokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// ERC20SecurityModuleSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ERC20TokenStakingManagerSession struct { - Contract *ERC20TokenStakingManager // 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 +type ERC20SecurityModuleSession struct { + Contract *ERC20SecurityModule // 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 } -// ERC20TokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ERC20SecurityModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ERC20TokenStakingManagerCallerSession struct { - Contract *ERC20TokenStakingManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20SecurityModuleCallerSession struct { + Contract *ERC20SecurityModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC20TokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ERC20SecurityModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ERC20TokenStakingManagerTransactorSession struct { - Contract *ERC20TokenStakingManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20SecurityModuleTransactorSession struct { + Contract *ERC20SecurityModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20TokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20TokenStakingManagerRaw struct { - Contract *ERC20TokenStakingManager // Generic contract binding to access the raw methods on +// ERC20SecurityModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20SecurityModuleRaw struct { + Contract *ERC20SecurityModule // Generic contract binding to access the raw methods on } -// ERC20TokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerCallerRaw struct { - Contract *ERC20TokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +// ERC20SecurityModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20SecurityModuleCallerRaw struct { + Contract *ERC20SecurityModuleCaller // Generic read-only contract binding to access the raw methods on } -// ERC20TokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20TokenStakingManagerTransactorRaw struct { - Contract *ERC20TokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +// ERC20SecurityModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20SecurityModuleTransactorRaw struct { + Contract *ERC20SecurityModuleTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC20TokenStakingManager creates a new instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManager(address common.Address, backend bind.ContractBackend) (*ERC20TokenStakingManager, error) { - contract, err := bindERC20TokenStakingManager(address, backend, backend, backend) +// NewERC20SecurityModule creates a new instance of ERC20SecurityModule, bound to a specific deployed contract. +func NewERC20SecurityModule(address common.Address, backend bind.ContractBackend) (*ERC20SecurityModule, error) { + contract, err := bindERC20SecurityModule(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC20TokenStakingManager{ERC20TokenStakingManagerCaller: ERC20TokenStakingManagerCaller{contract: contract}, ERC20TokenStakingManagerTransactor: ERC20TokenStakingManagerTransactor{contract: contract}, ERC20TokenStakingManagerFilterer: ERC20TokenStakingManagerFilterer{contract: contract}}, nil + return &ERC20SecurityModule{ERC20SecurityModuleCaller: ERC20SecurityModuleCaller{contract: contract}, ERC20SecurityModuleTransactor: ERC20SecurityModuleTransactor{contract: contract}, ERC20SecurityModuleFilterer: ERC20SecurityModuleFilterer{contract: contract}}, nil } -// NewERC20TokenStakingManagerCaller creates a new read-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*ERC20TokenStakingManagerCaller, error) { - contract, err := bindERC20TokenStakingManager(address, caller, nil, nil) +// NewERC20SecurityModuleCaller creates a new read-only instance of ERC20SecurityModule, bound to a specific deployed contract. +func NewERC20SecurityModuleCaller(address common.Address, caller bind.ContractCaller) (*ERC20SecurityModuleCaller, error) { + contract, err := bindERC20SecurityModule(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC20TokenStakingManagerCaller{contract: contract}, nil + return &ERC20SecurityModuleCaller{contract: contract}, nil } -// NewERC20TokenStakingManagerTransactor creates a new write-only instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20TokenStakingManagerTransactor, error) { - contract, err := bindERC20TokenStakingManager(address, nil, transactor, nil) +// NewERC20SecurityModuleTransactor creates a new write-only instance of ERC20SecurityModule, bound to a specific deployed contract. +func NewERC20SecurityModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20SecurityModuleTransactor, error) { + contract, err := bindERC20SecurityModule(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC20TokenStakingManagerTransactor{contract: contract}, nil + return &ERC20SecurityModuleTransactor{contract: contract}, nil } -// NewERC20TokenStakingManagerFilterer creates a new log filterer instance of ERC20TokenStakingManager, bound to a specific deployed contract. -func NewERC20TokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20TokenStakingManagerFilterer, error) { - contract, err := bindERC20TokenStakingManager(address, nil, nil, filterer) +// NewERC20SecurityModuleFilterer creates a new log filterer instance of ERC20SecurityModule, bound to a specific deployed contract. +func NewERC20SecurityModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20SecurityModuleFilterer, error) { + contract, err := bindERC20SecurityModule(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC20TokenStakingManagerFilterer{contract: contract}, nil + return &ERC20SecurityModuleFilterer{contract: contract}, nil } -// bindERC20TokenStakingManager binds a generic wrapper to an already deployed contract. -func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20TokenStakingManagerMetaData.GetAbi() +// bindERC20SecurityModule binds a generic wrapper to an already deployed contract. +func bindERC20SecurityModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20SecurityModuleMetaData.GetAbi() if err != nil { return nil, err } @@ -225,46 +225,46 @@ func bindERC20TokenStakingManager(address common.Address, caller bind.ContractCa // 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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerCaller.contract.Call(opts, result, method, params...) +func (_ERC20SecurityModule *ERC20SecurityModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20SecurityModule.Contract.ERC20SecurityModuleCaller.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transfer(opts) +func (_ERC20SecurityModule *ERC20SecurityModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ERC20SecurityModuleTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ERC20TokenStakingManagerTransactor.contract.Transact(opts, method, params...) +func (_ERC20SecurityModule *ERC20SecurityModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ERC20SecurityModuleTransactor.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20TokenStakingManager.Contract.contract.Call(opts, result, method, params...) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20SecurityModule.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transfer(opts) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.contract.Transact(opts, method, params...) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.contract.Transact(opts, method, params...) } // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + err := _ERC20SecurityModule.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") if err != nil { return *new(uint16), err @@ -279,23 +279,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) BIPSCONVERSIONF // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20SecurityModule.Contract.BIPSCONVERSIONFACTOR(&_ERC20SecurityModule.CallOpts) } // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _ERC20TokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _ERC20SecurityModule.Contract.BIPSCONVERSIONFACTOR(&_ERC20SecurityModule.CallOpts) } // ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // // Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) ERC20STAKINGMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") + err := _ERC20SecurityModule.contract.Call(opts, &out, "ERC20_STAKING_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -310,23 +310,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ERC20STAKINGMAN // ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // // Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20SecurityModule.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20SecurityModule.CallOpts) } // ERC20STAKINGMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xe4a63c40. // // Solidity: function ERC20_STAKING_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) ERC20STAKINGMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20SecurityModule.Contract.ERC20STAKINGMANAGERSTORAGELOCATION(&_ERC20SecurityModule.CallOpts) } // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + err := _ERC20SecurityModule.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") if err != nil { return *new(uint16), err @@ -341,23 +341,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMDELEGATI // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20SecurityModule.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20SecurityModule.CallOpts) } // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _ERC20SecurityModule.Contract.MAXIMUMDELEGATIONFEEBIPS(&_ERC20SecurityModule.CallOpts) } // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") + err := _ERC20SecurityModule.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") if err != nil { return *new(uint8), err @@ -372,23 +372,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) MAXIMUMSTAKEMUL // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20SecurityModule.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20SecurityModule.CallOpts) } // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _ERC20SecurityModule.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20SecurityModule.CallOpts) } // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + err := _ERC20SecurityModule.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -403,23 +403,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) POSVALIDATORMAN // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20SecurityModule.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20SecurityModule.CallOpts) } // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ERC20SecurityModule.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_ERC20SecurityModule.CallOpts) } // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + err := _ERC20SecurityModule.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") if err != nil { return *new([32]byte), err @@ -434,23 +434,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAI // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20SecurityModule.Contract.PCHAINBLOCKCHAINID(&_ERC20SecurityModule.CallOpts) } // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20SecurityModule.Contract.PCHAINBLOCKCHAINID(&_ERC20SecurityModule.CallOpts) } // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") + err := _ERC20SecurityModule.contract.Call(opts, &out, "WARP_MESSENGER") if err != nil { return *new(common.Address), err @@ -465,23 +465,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WARPMESSENGER(o // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) WARPMESSENGER() (common.Address, error) { + return _ERC20SecurityModule.Contract.WARPMESSENGER(&_ERC20SecurityModule.CallOpts) } // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) WARPMESSENGER() (common.Address, error) { + return _ERC20SecurityModule.Contract.WARPMESSENGER(&_ERC20SecurityModule.CallOpts) } // Erc20 is a free data retrieval call binding the contract method 0x785e9e86. // // Solidity: function erc20() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) Erc20(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) Erc20(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "erc20") + err := _ERC20SecurityModule.contract.Call(opts, &out, "erc20") if err != nil { return *new(common.Address), err @@ -496,23 +496,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) Erc20(opts *bin // Erc20 is a free data retrieval call binding the contract method 0x785e9e86. // // Solidity: function erc20() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Erc20() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.Erc20(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) Erc20() (common.Address, error) { + return _ERC20SecurityModule.Contract.Erc20(&_ERC20SecurityModule.CallOpts) } // Erc20 is a free data retrieval call binding the contract method 0x785e9e86. // // Solidity: function erc20() view returns(address) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) Erc20() (common.Address, error) { - return _ERC20TokenStakingManager.Contract.Erc20(&_ERC20TokenStakingManager.CallOpts) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) Erc20() (common.Address, error) { + return _ERC20SecurityModule.Contract.Erc20(&_ERC20SecurityModule.CallOpts) } // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) + err := _ERC20SecurityModule.contract.Call(opts, &out, "valueToWeight", value) if err != nil { return *new(uint64), err @@ -527,23 +527,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) ValueToWeight(o // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20SecurityModule.Contract.ValueToWeight(&_ERC20SecurityModule.CallOpts, value) } // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _ERC20TokenStakingManager.Contract.ValueToWeight(&_ERC20TokenStakingManager.CallOpts, value) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _ERC20SecurityModule.Contract.ValueToWeight(&_ERC20SecurityModule.CallOpts, value) } // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { var out []interface{} - err := _ERC20TokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + err := _ERC20SecurityModule.contract.Call(opts, &out, "weightToValue", weight) if err != nil { return *new(*big.Int), err @@ -558,440 +558,440 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) WeightToValue(o // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20SecurityModule.Contract.WeightToValue(&_ERC20SecurityModule.CallOpts, weight) } // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _ERC20TokenStakingManager.Contract.WeightToValue(&_ERC20TokenStakingManager.CallOpts, weight) +func (_ERC20SecurityModule *ERC20SecurityModuleCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _ERC20SecurityModule.Contract.WeightToValue(&_ERC20SecurityModule.CallOpts, weight) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, rewardRecipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ChangeDelegatorRewardRecipient(&_ERC20TokenStakingManager.TransactOpts, delegationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ChangeDelegatorRewardRecipient(&_ERC20SecurityModule.TransactOpts, delegationID, rewardRecipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ChangeDelegatorRewardRecipient(&_ERC20TokenStakingManager.TransactOpts, delegationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ChangeDelegatorRewardRecipient(&_ERC20SecurityModule.TransactOpts, delegationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ChangeValidatorRewardRecipient(&_ERC20TokenStakingManager.TransactOpts, validationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ChangeValidatorRewardRecipient(&_ERC20SecurityModule.TransactOpts, validationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ChangeValidatorRewardRecipient(&_ERC20TokenStakingManager.TransactOpts, validationID, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ChangeValidatorRewardRecipient(&_ERC20SecurityModule.TransactOpts, validationID, rewardRecipient) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "claimDelegationFees", validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ClaimDelegationFees(&_ERC20SecurityModule.TransactOpts, validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.TransactOpts, validationID) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ClaimDelegationFees(&_ERC20SecurityModule.TransactOpts, validationID) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteDelegatorRegistration(&_ERC20SecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteDelegatorRegistration(&_ERC20SecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "completeEndValidation", messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteEndValidation(&_ERC20SecurityModule.TransactOpts, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteEndValidation(&_ERC20SecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteValidatorRegistration(&_ERC20SecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.CompleteValidatorRegistration(&_ERC20SecurityModule.TransactOpts, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation0(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndDelegation0(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndDelegation0(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndDelegation0(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndValidation(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndValidation(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation0(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndValidation0(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ForceInitializeEndValidation0(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ForceInitializeEndValidation0(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) Initialize(opts *bind.TransactOpts, settings PoSSecurityModuleSettings, token common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initialize", settings, token) } // Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) Initialize(settings PoSSecurityModuleSettings, token common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.Initialize(&_ERC20SecurityModule.TransactOpts, settings, token) } // Initialize is a paid mutator transaction binding the contract method 0xb5c93498. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings, address token) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) Initialize(settings PoSSecurityModuleSettings, token common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.Initialize(&_ERC20SecurityModule.TransactOpts, settings, token) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID, delegationAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeDelegatorRegistration", validationID, delegationAmount) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeDelegatorRegistration(&_ERC20SecurityModule.TransactOpts, validationID, delegationAmount) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0x9e1bc4ef. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID, uint256 delegationAmount) returns(bytes32) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeDelegatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, delegationAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeDelegatorRegistration(validationID [32]byte, delegationAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeDelegatorRegistration(&_ERC20SecurityModule.TransactOpts, validationID, delegationAmount) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndDelegation(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation0(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndDelegation0(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndDelegation0(&_ERC20TokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndDelegation0(&_ERC20SecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndValidation(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndValidation(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation0(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndValidation0(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeEndValidation0(&_ERC20TokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeEndValidation0(&_ERC20SecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeValidatorRegistration(&_ERC20SecurityModule.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x4bee0040. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration, uint256 stakeAmount) returns(bytes32 validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.InitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64, stakeAmount *big.Int) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.InitializeValidatorRegistration(&_ERC20SecurityModule.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration, stakeAmount) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "resendUpdateDelegation", delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ResendUpdateDelegation(&_ERC20SecurityModule.TransactOpts, delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.ResendUpdateDelegation(&_ERC20SecurityModule.TransactOpts, delegationID) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.SubmitUptimeProof(&_ERC20SecurityModule.TransactOpts, validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.SubmitUptimeProof(&_ERC20TokenStakingManager.TransactOpts, validationID, messageIndex) +func (_ERC20SecurityModule *ERC20SecurityModuleTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _ERC20SecurityModule.Contract.SubmitUptimeProof(&_ERC20SecurityModule.TransactOpts, validationID, messageIndex) } -// ERC20TokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegationEndedIterator struct { - Event *ERC20TokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log +// ERC20SecurityModuleDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegationEndedIterator struct { + Event *ERC20SecurityModuleDelegationEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1005,7 +1005,7 @@ type ERC20TokenStakingManagerDelegationEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { +func (it *ERC20SecurityModuleDelegationEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1014,7 +1014,7 @@ func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) + it.Event = new(ERC20SecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1029,7 +1029,7 @@ func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) + it.Event = new(ERC20SecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1045,19 +1045,19 @@ func (it *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Error() error { +func (it *ERC20SecurityModuleDelegationEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Close() error { +func (it *ERC20SecurityModuleDelegationEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegationEnded struct { +// ERC20SecurityModuleDelegationEnded represents a DelegationEnded event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegationEnded struct { DelegationID [32]byte ValidationID [32]byte Rewards *big.Int @@ -1068,7 +1068,7 @@ type ERC20TokenStakingManagerDelegationEnded struct { // FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegationEndedIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20SecurityModuleDelegationEndedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1079,17 +1079,17 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleDelegationEndedIterator{contract: _ERC20SecurityModule.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } // WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1100,7 +1100,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegati validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1110,8 +1110,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegati select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegationEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + event := new(ERC20SecurityModuleDelegationEnded) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -1135,18 +1135,18 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegati // ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*ERC20TokenStakingManagerDelegationEnded, error) { - event := new(ERC20TokenStakingManagerDelegationEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseDelegationEnded(log types.Log) (*ERC20SecurityModuleDelegationEnded, error) { + event := new(ERC20SecurityModuleDelegationEnded) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorAddedIterator struct { - Event *ERC20TokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log +// ERC20SecurityModuleDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorAddedIterator struct { + Event *ERC20SecurityModuleDelegatorAdded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1160,7 +1160,7 @@ type ERC20TokenStakingManagerDelegatorAddedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { +func (it *ERC20SecurityModuleDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1169,7 +1169,7 @@ func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) + it.Event = new(ERC20SecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1184,7 +1184,7 @@ func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) + it.Event = new(ERC20SecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1200,19 +1200,19 @@ func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Error() error { +func (it *ERC20SecurityModuleDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Close() error { +func (it *ERC20SecurityModuleDelegatorAddedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorAdded struct { +// ERC20SecurityModuleDelegatorAdded represents a DelegatorAdded event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorAdded struct { DelegationID [32]byte ValidationID [32]byte DelegatorAddress common.Address @@ -1225,7 +1225,7 @@ type ERC20TokenStakingManagerDelegatorAdded struct { // FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20TokenStakingManagerDelegatorAddedIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20SecurityModuleDelegatorAddedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1240,17 +1240,17 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerDelegatorAddedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleDelegatorAddedIterator{contract: _ERC20SecurityModule.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } // WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1265,7 +1265,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -1275,8 +1275,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorAdded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + event := new(ERC20SecurityModuleDelegatorAdded) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -1300,18 +1300,18 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato // ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*ERC20TokenStakingManagerDelegatorAdded, error) { - event := new(ERC20TokenStakingManagerDelegatorAdded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseDelegatorAdded(log types.Log) (*ERC20SecurityModuleDelegatorAdded, error) { + event := new(ERC20SecurityModuleDelegatorAdded) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { - Event *ERC20TokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log +// ERC20SecurityModuleDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorRegisteredIterator struct { + Event *ERC20SecurityModuleDelegatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1325,7 +1325,7 @@ type ERC20TokenStakingManagerDelegatorRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { +func (it *ERC20SecurityModuleDelegatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1334,7 +1334,7 @@ func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + it.Event = new(ERC20SecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1349,7 +1349,7 @@ func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) + it.Event = new(ERC20SecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1365,19 +1365,19 @@ func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { +func (it *ERC20SecurityModuleDelegatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { +func (it *ERC20SecurityModuleDelegatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegistered struct { +// ERC20SecurityModuleDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorRegistered struct { DelegationID [32]byte ValidationID [32]byte StartTime *big.Int @@ -1387,7 +1387,7 @@ type ERC20TokenStakingManagerDelegatorRegistered struct { // FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRegisteredIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20SecurityModuleDelegatorRegisteredIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1398,17 +1398,17 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleDelegatorRegisteredIterator{contract: _ERC20SecurityModule.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } // WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1419,7 +1419,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1429,8 +1429,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + event := new(ERC20SecurityModuleDelegatorRegistered) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return err } event.Raw = log @@ -1454,18 +1454,18 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato // ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20TokenStakingManagerDelegatorRegistered, error) { - event := new(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseDelegatorRegistered(log types.Log) (*ERC20SecurityModuleDelegatorRegistered, error) { + event := new(ERC20SecurityModuleDelegatorRegistered) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *ERC20TokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log +// ERC20SecurityModuleDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorRemovalInitializedIterator struct { + Event *ERC20SecurityModuleDelegatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1479,7 +1479,7 @@ type ERC20TokenStakingManagerDelegatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { +func (it *ERC20SecurityModuleDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1488,7 +1488,7 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ERC20SecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1503,7 +1503,7 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(ERC20SecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1519,19 +1519,19 @@ func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { +func (it *ERC20SecurityModuleDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { +func (it *ERC20SecurityModuleDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { +// ERC20SecurityModuleDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleDelegatorRemovalInitialized struct { DelegationID [32]byte ValidationID [32]byte Raw types.Log // Blockchain specific contextual infos @@ -1540,7 +1540,7 @@ type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { // FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20SecurityModuleDelegatorRemovalInitializedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1551,17 +1551,17 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleDelegatorRemovalInitializedIterator{contract: _ERC20SecurityModule.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } // WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1572,7 +1572,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1582,8 +1582,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + event := new(ERC20SecurityModuleDelegatorRemovalInitialized) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -1607,18 +1607,18 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegato // ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*ERC20SecurityModuleDelegatorRemovalInitialized, error) { + event := new(ERC20SecurityModuleDelegatorRemovalInitialized) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitializedIterator struct { - Event *ERC20TokenStakingManagerInitialized // Event containing the contract specifics and raw log +// ERC20SecurityModuleInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleInitializedIterator struct { + Event *ERC20SecurityModuleInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1632,7 +1632,7 @@ type ERC20TokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { +func (it *ERC20SecurityModuleInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1641,7 +1641,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ERC20SecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1656,7 +1656,7 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) + it.Event = new(ERC20SecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1672,19 +1672,19 @@ func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { +func (it *ERC20SecurityModuleInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerInitializedIterator) Close() error { +func (it *ERC20SecurityModuleInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerInitialized struct { +// ERC20SecurityModuleInitialized represents a Initialized event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleInitialized struct { Version uint64 Raw types.Log // Blockchain specific contextual infos } @@ -1692,21 +1692,21 @@ type ERC20TokenStakingManagerInitialized struct { // FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20SecurityModuleInitializedIterator, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleInitializedIterator{contract: _ERC20SecurityModule.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialized) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleInitialized) (event.Subscription, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1716,8 +1716,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitiali select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(ERC20SecurityModuleInitialized) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -1741,18 +1741,18 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitiali // ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialized(log types.Log) (*ERC20TokenStakingManagerInitialized, error) { - event := new(ERC20TokenStakingManagerInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseInitialized(log types.Log) (*ERC20SecurityModuleInitialized, error) { + event := new(ERC20SecurityModuleInitialized) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20TokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdatedIterator struct { - Event *ERC20TokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log +// ERC20SecurityModuleUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleUptimeUpdatedIterator struct { + Event *ERC20SecurityModuleUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1766,7 +1766,7 @@ type ERC20TokenStakingManagerUptimeUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { +func (it *ERC20SecurityModuleUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1775,7 +1775,7 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + it.Event = new(ERC20SecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1790,7 +1790,7 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + it.Event = new(ERC20SecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1806,19 +1806,19 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *ERC20SecurityModuleUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *ERC20SecurityModuleUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdated struct { +// ERC20SecurityModuleUptimeUpdated represents a UptimeUpdated event raised by the ERC20SecurityModule contract. +type ERC20SecurityModuleUptimeUpdated struct { ValidationID [32]byte Uptime uint64 Raw types.Log // Blockchain specific contextual infos @@ -1827,31 +1827,31 @@ type ERC20TokenStakingManagerUptimeUpdated struct { // FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20SecurityModuleUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &ERC20SecurityModuleUptimeUpdatedIterator{contract: _ERC20SecurityModule.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } // WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20SecurityModuleUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ERC20SecurityModule.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -1861,8 +1861,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + event := new(ERC20SecurityModuleUptimeUpdated) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -1886,9 +1886,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUp // ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*ERC20TokenStakingManagerUptimeUpdated, error) { - event := new(ERC20TokenStakingManagerUptimeUpdated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { +func (_ERC20SecurityModule *ERC20SecurityModuleFilterer) ParseUptimeUpdated(log types.Log) (*ERC20SecurityModuleUptimeUpdated, error) { + event := new(ERC20SecurityModuleUptimeUpdated) + if err := _ERC20SecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenSecurityModule/NativeTokenSecurityModule.go similarity index 81% rename from abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go rename to abi-bindings/go/validator-manager/NativeTokenSecurityModule/NativeTokenSecurityModule.go index 1d54d5302..91c252009 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenSecurityModule/NativeTokenSecurityModule.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package nativetokenstakingmanager +package nativetokensecuritymodule import ( "errors" @@ -50,8 +50,8 @@ type PChainOwner struct { Addresses []common.Address } -// PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. -type PoSValidatorManagerSettings struct { +// PoSSecurityModuleSettings is an auto generated low-level Go binding around an user-defined struct. +type PoSSecurityModuleSettings struct { ValidatorManager common.Address MinimumStakeAmount *big.Int MaximumStakeAmount *big.Int @@ -83,23 +83,23 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. -var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051613b22380380613b2283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6139d58061014d5f395ff3fe6080604052600436106101ba575f3560e01c8063732214f8116100f2578063a3a65e4811610092578063b771b3bc11610062578063b771b3bc146104f2578063ba3a4b971461050c578063c599e24f1461052b578063fb8b11dd1461053e575f80fd5b8063a3a65e481461048d578063a9778a7a146102d0578063af2f5feb146104ac578063afb98096146104bf575f80fd5b806380dd672f116100cd57806380dd672f146104115780638ef34c981461043057806393e245981461044f5780639ae064471461046e575f80fd5b8063732214f8146103c057806376f78621146103d35780637d8d2f77146103f2575f80fd5b806335455ded1161015d578063467ef06f11610138578063467ef06f146103365780635dd6a6cb1461035557806360ad7784146103745780636206585614610393575f80fd5b806335455ded146102d057806337b9be8f146102f85780633a1cfff614610317575f80fd5b80631ec44724116101985780631ec447241461022957806325e1c776146102485780632e2194d814610267578063329c3e121461029e575f80fd5b80630118acc4146101be5780630d436317146101df578063151d30d1146101fe575b5f80fd5b3480156101c9575f80fd5b506101dd6101d83660046130d5565b61055d565b005b3480156101ea575f80fd5b506101dd6101f9366004613110565b61056e565b348015610209575f80fd5b50610212600a81565b60405160ff90911681526020015b60405180910390f35b348015610234575f80fd5b506101dd6102433660046130d5565b610650565b348015610253575f80fd5b506101dd610262366004613127565b610662565b348015610272575f80fd5b50610286610281366004613151565b610745565b6040516001600160401b039091168152602001610220565b3480156102a9575f80fd5b506102b86001600160991b0181565b6040516001600160a01b039091168152602001610220565b3480156102db575f80fd5b506102e561271081565b60405161ffff9091168152602001610220565b348015610303575f80fd5b506101dd61031236600461317c565b610799565b348015610322575f80fd5b506101dd6103313660046130d5565b6107ac565b348015610341575f80fd5b506101dd6103503660046131ca565b61081a565b348015610360575f80fd5b506101dd61036f36600461317c565b6108a3565b34801561037f575f80fd5b506101dd61038e366004613127565b6108af565b34801561039e575f80fd5b506103b26103ad3660046131f7565b610be6565b604051908152602001610220565b3480156103cb575f80fd5b506103b25f81565b3480156103de575f80fd5b506101dd6103ed3660046130d5565b610c06565b3480156103fd575f80fd5b506101dd61040c36600461317c565b610c12565b34801561041c575f80fd5b506101dd61042b366004613127565b610c80565b34801561043b575f80fd5b506101dd61044a366004613212565b610f2b565b34801561045a575f80fd5b506101dd610469366004613151565b61100c565b348015610479575f80fd5b506101dd61048836600461317c565b61110a565b348015610498575f80fd5b506101dd6104a73660046131ca565b611116565b6103b26104ba366004613251565b611190565b3480156104ca575f80fd5b506103b27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104fd575f80fd5b506102b86005600160991b0181565b348015610517575f80fd5b506101dd610526366004613151565b6111c4565b6103b2610539366004613151565b61148e565b348015610549575f80fd5b506101dd610558366004613212565b6114bf565b6105698383835f611586565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806105b7575080546001600160401b03808416911610155b156105d55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556105ff836115b2565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61065c8383835f6115c6565b50505050565b61066b826119dd565b610690576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610699611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156106dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070491908101906133ad565b519050600281600581111561071b5761071b61347a565b1461073b578060405163170cc93360e21b8152600401610687919061348e565b61065c8383611a2a565b5f8061074f611a06565b6004015461075d90846134bc565b905080158061077257506001600160401b0381115b156107935760405163222d164360e21b815260048101849052602401610687565b92915050565b6107a5848484846115c6565b5050505050565b5f6107b5611a06565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156107f8575f80fd5b505af115801561080a573d5f803e3d5ffd5b505050506107a58484845f611cc9565b5f610823611a06565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610874573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089891906134db565b905061056981611f55565b61065c84848484612077565b5f6108b8611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156108f1576108f161347a565b60038111156109025761090261347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610977611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156109bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109e291908101906133ad565b90506001835160038111156109f9576109f961347a565b14610a1a578251604051633b0d540d60e21b815261068791906004016134f2565b600481516005811115610a2f57610a2f61347a565b03610a4557610a3d86612105565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f610a6a89612349565b604001516040518263ffffffff1660e01b8152600401610a8a9190613531565b606060405180830381865af4158015610aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190613543565b5091509150818414610af657846040015160405163089938b360e11b815260040161068791815260200190565b806001600160401b031683606001516001600160401b03161080610b2f5750806001600160401b03168560a001516001600160401b0316115b15610b5857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610bef611a06565b60040154610793906001600160401b038416613578565b6105698383835f612077565b5f610c1b611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610c5e575f80fd5b505af1158015610c70573d5f803e3d5ffd5b50505050610a3d85858585611cc9565b610c8861245f565b5f610c91611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610cca57610cca61347a565b6003811115610cdb57610cdb61347a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610d5457610d5461347a565b14610d75578051604051633b0d540d60e21b815261068791906004016134f2565b6004610d7f611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610db49160040190815260200190565b5f60405180830381865afa158015610dce573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df591908101906133ad565b516005811115610e0757610e0761347a565b14610f06575f610e1684612349565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610e559190613531565b606060405180830381865af4158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613543565b509150915081846040015114610ec05760405163089938b360e11b815260048101839052602401610687565b806001600160401b03168460c001516001600160401b03161115610f0257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5050505b610f0f84612105565b5050610f2760015f8051602061398083398151915255565b5050565b5f610f34611a06565b90506001600160a01b038216610f685760405163caa903f960e01b81526001600160a01b0383166004820152602401610687565b5f8381526007820160205260409020546001600160a01b03163314610fae57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610687565b336001600160a01b03831603610fdd575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611015611a06565b90505f611020611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611064573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261108b91908101906133ad565b51905060048160058111156110a2576110a261347a565b146110c2578060405163170cc93360e21b8152600401610687919061348e565b5f8381526007830160205260409020546001600160a01b031633146110e75733610f89565b5f838152600783016020526040902054610569906001600160a01b0316846124a9565b61065c84848484611586565b5f61111f611a06565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af115801561116c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056991906134db565b5f61119961245f565b6111a5848484346124d3565b90506111bd60015f8051602061398083398151915255565b9392505050565b5f6111cd611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156112065761120661347a565b60038111156112175761121761347a565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156112905761129061347a565b141580156112b157506003815160038111156112ae576112ae61347a565b14155b156112d2578051604051633b0d540d60e21b815261068791906004016134f2565b5f6112db611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916113109160040190815260200190565b5f60405180830381865afa15801561132a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135191908101906133ad565b905080606001516001600160401b03165f03611383576040516339b894f960e21b815260048101859052602401610687565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f936113f193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561140b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611432919081019061358f565b6040518263ffffffff1660e01b815260040161144e9190613531565b6020604051808303815f875af115801561146a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a591906134db565b5f61149761245f565b6114a2823334612699565b90506114ba60015f8051602061398083398151915255565b919050565b6001600160a01b0381166114f15760405163caa903f960e01b81526001600160a01b0382166004820152602401610687565b5f6114fa611a06565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146115285733610f89565b336001600160a01b03831603611557575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b611592848484846115c6565b61065c57604051631036cf9160e11b815260048101859052602401610687565b6115ba6129a7565b6115c3816129f2565b50565b5f806115d0611a06565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156116095761160961347a565b600381111561161a5761161a61347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61168f611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156116d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116fa91908101906133ad565b90506002835160038111156117115761171161347a565b14611732578251604051633b0d540d60e21b815261068791906004016134f2565b60208301516001600160a01b031633146117ce575f8281526007850160205260409020546001600160a01b0316331461176b5733610f89565b5f82815260078501602052604090205460a082015161179a91600160b01b90046001600160401b0316906135c0565b6001600160401b03164210156117ce5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b6002815160058111156117e3576117e361347a565b0361197d5760038401546080840151611805916001600160401b0316906135c0565b6001600160401b03164210156118395760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b871561184b576118498288611a2a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161188f91906135e0565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156118d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fc9190613600565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561193f84888c612a6d565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506119d59350505050565b6004815160058111156119925761199261347a565b036119b9576119a283878b612a6d565b506119ac89612105565b60019450505050506119d5565b805160405163170cc93360e21b8152610687919060040161348e565b949350505050565b5f806119e7611a06565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611a75573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a9c919081019061361b565b9150915080611abe57604051636b2f19e960e01b815260040160405180910390fd5b5f611ac7611a06565b6006810154845191925014611af5578251604051636ba589a560e01b81526004810191909152602401610687565b60208301516001600160a01b031615611b31576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b60208301516001600160a01b031615611b6d576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611baa9190613531565b6040805180830381865af4158015611bc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be891906136c1565b91509150818814611c0f5760405163089938b360e11b815260048101899052602401610687565b5f8881526007840160205260409020600101546001600160401b039081169082161115611ca0575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611cbe565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611cd3611a06565b90505f611cde611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611d22573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d4991908101906133ad565b9050611d54876119dd565b611d63576001925050506119d5565b5f8781526007830160205260409020546001600160a01b03163314611d885733610f89565b5f87815260078301602052604090205460a0820151611db791600160b01b90046001600160401b0316906135c0565b6001600160401b03168160c001516001600160401b03161015611dfe5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610687565b5f8615611e1657611e0f8887611a2a565b9050611e34565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611e5990610be6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee691906134db565b90508084600b015f8b81526020019081526020015f205f828254611f0a91906136e4565b90915550506001600160a01b03861615611f47575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611f5e611a06565b90505f611f69611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611fad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611fd491908101906133ad565b9050611fdf836119dd565b611fe857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b0391821691168061201f57508061203d565b5f858152600c85016020526040902080546001600160a01b03191690555b6004835160058111156120525761205261347a565b036120615761206181866124a9565b6107a5826120728560400151610be6565b612cc3565b5f612080611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156120c3575f80fd5b505af11580156120d5573d5f803e3d5ffd5b505050506120e585858585611cc9565b6107a557604051635bff683f60e11b815260048101869052602401610687565b5f61210e611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121475761214761347a565b60038111156121585761215861347a565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222c9190613600565b826080015161223b91906135c0565b6001600160401b031642101561226f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806122bf575060208201516122dd565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806122ea838886612cd6565b9150915061230385602001516120728760600151610be6565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156123ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d4919081019061361b565b91509150806123f657604051636b2f19e960e01b815260040160405180910390fd5b81511561241c578151604051636ba589a560e01b81526004810191909152602401610687565b60208201516001600160a01b031615612458576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5092915050565b5f8051602061398083398151915280546001190161249057604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f8051602061398083398151915255565b5f6124b2611a06565b5f838152600b820160205260408120805491905590915061065c8482612d83565b5f806124dd611a06565b600381015490915061ffff600160401b90910481169086161080612506575061271061ffff8616115b1561252a57604051635f12e6c360e11b815261ffff86166004820152602401610687565b60038101546001600160401b039081169085161015612566576040516202a06d60e11b81526001600160401b0385166004820152602401610687565b806001015483108061257b5750806002015483115b1561259c5760405163222d164360e21b815260048101849052602401610687565b825f6125a782610745565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906125dd908c908690600401613820565b6020604051808303815f875af11580156125f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261d91906134db565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806126a3611a06565b90505f6126af84610745565b90505f6126ba611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156126fe573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261272591908101906133ad565b9050612730876119dd565b612750576040516330efa98b60e01b815260048101889052602401610687565b6002815160058111156127655761276561347a565b1461278657805160405163170cc93360e21b8152610687919060040161348e565b5f82826080015161279791906135c0565b905083600301600a9054906101000a90046001600160401b031682604001516127c091906138ed565b6001600160401b0316816001600160401b031611156127fd57604051636d51fe0560e11b81526001600160401b0382166004820152602401610687565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128779190613600565b90505f89826040516020016128a392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a49998505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129f057604051631afcd79f60e31b815260040160405180910390fd5b565b6129fa6129a7565b612a02612de1565b6115c3612a126020830183613918565b60208301356040840135612a2c60808601606087016131f7565b612a3c60a0870160808801613933565b612a4c60c0880160a0890161394c565b60c0880135612a626101008a0160e08b01613918565b896101000135612df1565b5f80612a77611a06565b90505f612a82611a06565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691612ab79160040190815260200190565b5f60405180830381865afa158015612ad1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612af891908101906133ad565b90505f600382516005811115612b1057612b1061347a565b1480612b2e5750600482516005811115612b2c57612b2c61347a565b145b15612b3e575060c0810151612b7b565b600282516005811115612b5357612b5361347a565b03612b5f575042612b7b565b815160405163170cc93360e21b8152610687919060040161348e565b86608001516001600160401b0316816001600160401b031611612ba3575f93505050506111bd565b600583015460608801515f916001600160a01b031690634f22429f90612bc890610be6565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6d91906134db565b5f878152600986016020526040902081905590506001600160a01b03871615611cbe575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b610f276001600160a01b0383168261301a565b5f805f612ce1611a06565b5f86815260098201602052604081208054908290559192509081908015612d75575f87815260078501602052604090205461271090612d2b90600160a01b900461ffff1683613578565b612d3591906134bc565b91508184600b015f8981526020019081526020015f205f828254612d5991906136e4565b90915550612d699050828261396c565b9250612d758984612d83565b509097909650945050505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612dcf575f80fd5b505af1158015610a3d573d5f803e3d5ffd5b612de96129a7565b6129f06130ad565b612df96129a7565b5f612e02611a06565b905061ffff86161580612e1a575061271061ffff8716115b15612e3e57604051635f12e6c360e11b815261ffff87166004820152602401610687565b87891115612e625760405163222d164360e21b8152600481018a9052602401610687565b60ff85161580612e755750600a60ff8616115b15612e985760405163170db35960e31b815260ff86166004820152602401610687565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef89190613600565b6001600160401b0316876001600160401b03161015612f34576040516202a06d60e11b81526001600160401b0388166004820152602401610687565b835f03612f545760405163a733007160e01b815260040160405180910390fd5b81612f7557604051632f6bd1db60e01b815260048101839052602401610687565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b8047101561303d5760405163cd78605960e01b8152306004820152602401610687565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613086576040519150601f19603f3d011682016040523d82523d5f602084013e61308b565b606091505b505090508061056957604051630a12f52160e11b815260040160405180910390fd5b6124966129a7565b80151581146115c3575f80fd5b803563ffffffff811681146114ba575f80fd5b5f805f606084860312156130e7575f80fd5b8335925060208401356130f9816130b5565b9150613107604085016130c2565b90509250925092565b5f6101208284031215613121575f80fd5b50919050565b5f8060408385031215613138575f80fd5b82359150613148602084016130c2565b90509250929050565b5f60208284031215613161575f80fd5b5035919050565b6001600160a01b03811681146115c3575f80fd5b5f805f806080858703121561318f575f80fd5b8435935060208501356131a1816130b5565b92506131af604086016130c2565b915060608501356131bf81613168565b939692955090935050565b5f602082840312156131da575f80fd5b6111bd826130c2565b6001600160401b03811681146115c3575f80fd5b5f60208284031215613207575f80fd5b81356111bd816131e3565b5f8060408385031215613223575f80fd5b82359150602083013561323581613168565b809150509250929050565b803561ffff811681146114ba575f80fd5b5f805f60608486031215613263575f80fd5b83356001600160401b03811115613278575f80fd5b840160a08187031215613289575f80fd5b925061329760208501613240565b915060408401356132a7816131e3565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156132e8576132e86132b2565b60405290565b8051600681106114ba575f80fd5b5f5b838110156133165781810151838201526020016132fe565b50505f910152565b5f82601f83011261332d575f80fd5b81516001600160401b0380821115613347576133476132b2565b604051601f8301601f19908116603f0116810190828211818310171561336f5761336f6132b2565b81604052838152866020858801011115613387575f80fd5b6133988460208301602089016132fc565b9695505050505050565b80516114ba816131e3565b5f602082840312156133bd575f80fd5b81516001600160401b03808211156133d3575f80fd5b9083019060e082860312156133e6575f80fd5b6133ee6132c6565b6133f7836132ee565b815260208301518281111561340a575f80fd5b6134168782860161331e565b602083015250613428604084016133a2565b6040820152613439606084016133a2565b606082015261344a608084016133a2565b608082015261345b60a084016133a2565b60a082015261346c60c084016133a2565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106134a2576134a261347a565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826134d657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156134eb575f80fd5b5051919050565b60208101600483106134a2576134a261347a565b5f815180845261351d8160208601602086016132fc565b601f01601f19169290920160200192915050565b602081525f6111bd6020830184613506565b5f805f60608486031215613555575f80fd5b835192506020840151613567816131e3565b60408501519092506132a7816131e3565b8082028115828204841417610793576107936134a8565b5f6020828403121561359f575f80fd5b81516001600160401b038111156135b4575f80fd5b6119d58482850161331e565b6001600160401b03818116838216019080821115612458576124586134a8565b6001600160401b03828116828216039080821115612458576124586134a8565b5f60208284031215613610575f80fd5b81516111bd816131e3565b5f806040838503121561362c575f80fd5b82516001600160401b0380821115613642575f80fd5b9084019060608287031215613655575f80fd5b604051606081018181108382111715613670576136706132b2565b60405282518152602083015161368581613168565b602082015260408301518281111561369b575f80fd5b6136a78882860161331e565b6040830152508094505050506020830151613235816130b5565b5f80604083850312156136d2575f80fd5b825191506020830151613235816131e3565b80820180821115610793576107936134a8565b5f808335601e1984360301811261370c575f80fd5b83016020810192503590506001600160401b0381111561372a575f80fd5b803603821315613738575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e1983360301811261377b575f80fd5b90910192915050565b5f6040830163ffffffff613797846130c2565b168452602080840135601e198536030181126137b1575f80fd5b84016020810190356001600160401b038111156137cc575f80fd5b8060051b36038213156137dd575f80fd5b6040602088015292839052915f90606087015b81831015611cbe57843561380381613168565b6001600160a01b03168152938301936001929092019183016137f0565b604081525f61382f84856136f7565b60a0604085015261384460e08501828461373f565b91505061385460208601866136f7565b603f198086850301606087015261386c84838561373f565b93506040880135925061387e836131e3565b6001600160401b039150818316608087015261389d6060890189613767565b9250808685030160a08701526138b38484613784565b93506138c26080890189613767565b9250808685030160c0870152506138d98383613784565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613910576139106134a8565b505092915050565b5f60208284031215613928575f80fd5b81356111bd81613168565b5f60208284031215613943575f80fd5b6111bd82613240565b5f6020828403121561395c575f80fd5b813560ff811681146111bd575f80fd5b81810381811115610793576107936134a856fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220d6d0b213b72cff6dbea973a984f14a751bc5771c2d8f5e68c26dda6477b1993d64736f6c63430008190033", +// NativeTokenSecurityModuleMetaData contains all meta data concerning the NativeTokenSecurityModule contract. +var NativeTokenSecurityModuleMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSSecurityModuleSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051613b22380380613b2283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6139d58061014d5f395ff3fe6080604052600436106101ba575f3560e01c8063732214f8116100f2578063a3a65e4811610092578063b771b3bc11610062578063b771b3bc146104f2578063ba3a4b971461050c578063c599e24f1461052b578063fb8b11dd1461053e575f80fd5b8063a3a65e481461048d578063a9778a7a146102d0578063af2f5feb146104ac578063afb98096146104bf575f80fd5b806380dd672f116100cd57806380dd672f146104115780638ef34c981461043057806393e245981461044f5780639ae064471461046e575f80fd5b8063732214f8146103c057806376f78621146103d35780637d8d2f77146103f2575f80fd5b806335455ded1161015d578063467ef06f11610138578063467ef06f146103365780635dd6a6cb1461035557806360ad7784146103745780636206585614610393575f80fd5b806335455ded146102d057806337b9be8f146102f85780633a1cfff614610317575f80fd5b80631ec44724116101985780631ec447241461022957806325e1c776146102485780632e2194d814610267578063329c3e121461029e575f80fd5b80630118acc4146101be5780630d436317146101df578063151d30d1146101fe575b5f80fd5b3480156101c9575f80fd5b506101dd6101d83660046130d5565b61055d565b005b3480156101ea575f80fd5b506101dd6101f9366004613110565b61056e565b348015610209575f80fd5b50610212600a81565b60405160ff90911681526020015b60405180910390f35b348015610234575f80fd5b506101dd6102433660046130d5565b610650565b348015610253575f80fd5b506101dd610262366004613127565b610662565b348015610272575f80fd5b50610286610281366004613151565b610745565b6040516001600160401b039091168152602001610220565b3480156102a9575f80fd5b506102b86001600160991b0181565b6040516001600160a01b039091168152602001610220565b3480156102db575f80fd5b506102e561271081565b60405161ffff9091168152602001610220565b348015610303575f80fd5b506101dd61031236600461317c565b610799565b348015610322575f80fd5b506101dd6103313660046130d5565b6107ac565b348015610341575f80fd5b506101dd6103503660046131ca565b61081a565b348015610360575f80fd5b506101dd61036f36600461317c565b6108a3565b34801561037f575f80fd5b506101dd61038e366004613127565b6108af565b34801561039e575f80fd5b506103b26103ad3660046131f7565b610be6565b604051908152602001610220565b3480156103cb575f80fd5b506103b25f81565b3480156103de575f80fd5b506101dd6103ed3660046130d5565b610c06565b3480156103fd575f80fd5b506101dd61040c36600461317c565b610c12565b34801561041c575f80fd5b506101dd61042b366004613127565b610c80565b34801561043b575f80fd5b506101dd61044a366004613212565b610f2b565b34801561045a575f80fd5b506101dd610469366004613151565b61100c565b348015610479575f80fd5b506101dd61048836600461317c565b61110a565b348015610498575f80fd5b506101dd6104a73660046131ca565b611116565b6103b26104ba366004613251565b611190565b3480156104ca575f80fd5b506103b27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156104fd575f80fd5b506102b86005600160991b0181565b348015610517575f80fd5b506101dd610526366004613151565b6111c4565b6103b2610539366004613151565b61148e565b348015610549575f80fd5b506101dd610558366004613212565b6114bf565b6105698383835f611586565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806105b7575080546001600160401b03808416911610155b156105d55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556105ff836115b2565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61065c8383835f6115c6565b50505050565b61066b826119dd565b610690576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610699611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156106dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261070491908101906133ad565b519050600281600581111561071b5761071b61347a565b1461073b578060405163170cc93360e21b8152600401610687919061348e565b61065c8383611a2a565b5f8061074f611a06565b6004015461075d90846134bc565b905080158061077257506001600160401b0381115b156107935760405163222d164360e21b815260048101849052602401610687565b92915050565b6107a5848484846115c6565b5050505050565b5f6107b5611a06565b80546040516325fedc3560e21b8152600481018790529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156107f8575f80fd5b505af115801561080a573d5f803e3d5ffd5b505050506107a58484845f611cc9565b5f610823611a06565b805460405163467ef06f60e01b815263ffffffff851660048201529192505f916001600160a01b039091169063467ef06f906024016020604051808303815f875af1158015610874573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089891906134db565b905061056981611f55565b61065c84848484612077565b5f6108b8611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156108f1576108f161347a565b60038111156109025761090261347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f610977611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156109bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109e291908101906133ad565b90506001835160038111156109f9576109f961347a565b14610a1a578251604051633b0d540d60e21b815261068791906004016134f2565b600481516005811115610a2f57610a2f61347a565b03610a4557610a3d86612105565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f610a6a89612349565b604001516040518263ffffffff1660e01b8152600401610a8a9190613531565b606060405180830381865af4158015610aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190613543565b5091509150818414610af657846040015160405163089938b360e11b815260040161068791815260200190565b806001600160401b031683606001516001600160401b03161080610b2f5750806001600160401b03168560a001516001600160401b0316115b15610b5857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f610bef611a06565b60040154610793906001600160401b038416613578565b6105698383835f612077565b5f610c1b611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610c5e575f80fd5b505af1158015610c70573d5f803e3d5ffd5b50505050610a3d85858585611cc9565b610c8861245f565b5f610c91611a06565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610cca57610cca61347a565b6003811115610cdb57610cdb61347a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115610d5457610d5461347a565b14610d75578051604051633b0d540d60e21b815261068791906004016134f2565b6004610d7f611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610db49160040190815260200190565b5f60405180830381865afa158015610dce573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610df591908101906133ad565b516005811115610e0757610e0761347a565b14610f06575f610e1684612349565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401610e559190613531565b606060405180830381865af4158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613543565b509150915081846040015114610ec05760405163089938b360e11b815260048101839052602401610687565b806001600160401b03168460c001516001600160401b03161115610f0257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610687565b5050505b610f0f84612105565b5050610f2760015f8051602061398083398151915255565b5050565b5f610f34611a06565b90506001600160a01b038216610f685760405163caa903f960e01b81526001600160a01b0383166004820152602401610687565b5f8381526007820160205260409020546001600160a01b03163314610fae57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610687565b336001600160a01b03831603610fdd575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611015611a06565b90505f611020611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611064573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261108b91908101906133ad565b51905060048160058111156110a2576110a261347a565b146110c2578060405163170cc93360e21b8152600401610687919061348e565b5f8381526007830160205260409020546001600160a01b031633146110e75733610f89565b5f838152600783016020526040902054610569906001600160a01b0316846124a9565b61065c84848484611586565b5f61111f611a06565b8054604051631474cbc960e31b815263ffffffff851660048201529192506001600160a01b03169063a3a65e48906024016020604051808303815f875af115801561116c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056991906134db565b5f61119961245f565b6111a5848484346124d3565b90506111bd60015f8051602061398083398151915255565b9392505050565b5f6111cd611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156112065761120661347a565b60038111156112175761121761347a565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156112905761129061347a565b141580156112b157506003815160038111156112ae576112ae61347a565b14155b156112d2578051604051633b0d540d60e21b815261068791906004016134f2565b5f6112db611a06565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916113109160040190815260200190565b5f60405180830381865afa15801561132a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261135191908101906133ad565b905080606001516001600160401b03165f03611383576040516339b894f960e21b815260048101859052602401610687565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f936113f193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561140b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611432919081019061358f565b6040518263ffffffff1660e01b815260040161144e9190613531565b6020604051808303815f875af115801561146a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a591906134db565b5f61149761245f565b6114a2823334612699565b90506114ba60015f8051602061398083398151915255565b919050565b6001600160a01b0381166114f15760405163caa903f960e01b81526001600160a01b0382166004820152602401610687565b5f6114fa611a06565b5f8481526008820160205260409020549091506001600160a01b036101009091041633146115285733610f89565b336001600160a01b03831603611557575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b611592848484846115c6565b61065c57604051631036cf9160e11b815260048101859052602401610687565b6115ba6129a7565b6115c3816129f2565b50565b5f806115d0611a06565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156116095761160961347a565b600381111561161a5761161a61347a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61168f611a06565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156116d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116fa91908101906133ad565b90506002835160038111156117115761171161347a565b14611732578251604051633b0d540d60e21b815261068791906004016134f2565b60208301516001600160a01b031633146117ce575f8281526007850160205260409020546001600160a01b0316331461176b5733610f89565b5f82815260078501602052604090205460a082015161179a91600160b01b90046001600160401b0316906135c0565b6001600160401b03164210156117ce5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b6002815160058111156117e3576117e361347a565b0361197d5760038401546080840151611805916001600160401b0316906135c0565b6001600160401b03164210156118395760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b871561184b576118498288611a2a565b505b5f8981526008850160205260409020805460ff191660031790558354606084015160808301516001600160a01b039092169163e3bb123491859161188f91906135e0565b6040516001600160e01b031960e085901b16815260048101929092526001600160401b031660248201526044016020604051808303815f875af11580156118d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fc9190613600565b5f8a8152600886016020526040812060020180546001600160401b0393909316600160c01b026001600160c01b039093169290921790915561193f84888c612a6d565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506119d59350505050565b6004815160058111156119925761199261347a565b036119b9576119a283878b612a6d565b506119ac89612105565b60019450505050506119d5565b805160405163170cc93360e21b8152610687919060040161348e565b949350505050565b5f806119e7611a06565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611a75573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a9c919081019061361b565b9150915080611abe57604051636b2f19e960e01b815260040160405180910390fd5b5f611ac7611a06565b6006810154845191925014611af5578251604051636ba589a560e01b81526004810191909152602401610687565b60208301516001600160a01b031615611b31576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b60208301516001600160a01b031615611b6d576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611baa9190613531565b6040805180830381865af4158015611bc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be891906136c1565b91509150818814611c0f5760405163089938b360e11b815260048101899052602401610687565b5f8881526007840160205260409020600101546001600160401b039081169082161115611ca0575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611cbe565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f80611cd3611a06565b90505f611cde611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611d22573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d4991908101906133ad565b9050611d54876119dd565b611d63576001925050506119d5565b5f8781526007830160205260409020546001600160a01b03163314611d885733610f89565b5f87815260078301602052604090205460a0820151611db791600160b01b90046001600160401b0316906135c0565b6001600160401b03168160c001516001600160401b03161015611dfe5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610687565b5f8615611e1657611e0f8887611a2a565b9050611e34565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f90611e5990610be6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015611ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee691906134db565b90508084600b015f8b81526020019081526020015f205f828254611f0a91906136e4565b90915550506001600160a01b03861615611f47575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611f5e611a06565b90505f611f69611a06565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611fad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611fd491908101906133ad565b9050611fdf836119dd565b611fe857505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b0391821691168061201f57508061203d565b5f858152600c85016020526040902080546001600160a01b03191690555b6004835160058111156120525761205261347a565b036120615761206181866124a9565b6107a5826120728560400151610be6565b612cc3565b5f612080611a06565b80546040516325fedc3560e21b8152600481018890529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b1580156120c3575f80fd5b505af11580156120d5573d5f803e3d5ffd5b505050506120e585858585611cc9565b6107a557604051635bff683f60e11b815260048101869052602401610687565b5f61210e611a06565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121475761214761347a565b60038111156121585761215861347a565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222c9190613600565b826080015161223b91906135c0565b6001600160401b031642101561226f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610687565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b0316806122bf575060208201516122dd565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806122ea838886612cd6565b9150915061230385602001516120728760600151610be6565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156123ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123d4919081019061361b565b91509150806123f657604051636b2f19e960e01b815260040160405180910390fd5b81511561241c578151604051636ba589a560e01b81526004810191909152602401610687565b60208201516001600160a01b031615612458576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610687565b5092915050565b5f8051602061398083398151915280546001190161249057604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f8051602061398083398151915255565b5f6124b2611a06565b5f838152600b820160205260408120805491905590915061065c8482612d83565b5f806124dd611a06565b600381015490915061ffff600160401b90910481169086161080612506575061271061ffff8616115b1561252a57604051635f12e6c360e11b815261ffff86166004820152602401610687565b60038101546001600160401b039081169085161015612566576040516202a06d60e11b81526001600160401b0385166004820152602401610687565b806001015483108061257b5750806002015483115b1561259c5760405163222d164360e21b815260048101849052602401610687565b825f6125a782610745565b8354604051634dd4b5c360e11b81529192505f916001600160a01b0390911690639ba96b86906125dd908c908690600401613820565b6020604051808303815f875af11580156125f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261d91906134db565b5f818152600795909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806126a3611a06565b90505f6126af84610745565b90505f6126ba611a06565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156126fe573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261272591908101906133ad565b9050612730876119dd565b612750576040516330efa98b60e01b815260048101889052602401610687565b6002815160058111156127655761276561347a565b1461278657805160405163170cc93360e21b8152610687919060040161348e565b5f82826080015161279791906135c0565b905083600301600a9054906101000a90046001600160401b031682604001516127c091906138ed565b6001600160401b0316816001600160401b031611156127fd57604051636d51fe0560e11b81526001600160401b0382166004820152602401610687565b83546040516338eec48d60e21b8152600481018a90526001600160401b03831660248201525f916001600160a01b03169063e3bb1234906044016020604051808303815f875af1158015612853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128779190613600565b90505f89826040516020016128a392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260088a019093529120805491925060019160ff1916828002179055505f8181526008870160209081526040918290208054610100600160a81b0319166101006001600160a01b038e16908102919091178255600182018e9055600290910180546001600160401b038a81166001600160c01b03199092168217600160801b898316908102919091176001600160c01b0316909355855192835288169382019390935292830191909152908b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9060600160405180910390a49998505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129f057604051631afcd79f60e31b815260040160405180910390fd5b565b6129fa6129a7565b612a02612de1565b6115c3612a126020830183613918565b60208301356040840135612a2c60808601606087016131f7565b612a3c60a0870160808801613933565b612a4c60c0880160a0890161394c565b60c0880135612a626101008a0160e08b01613918565b896101000135612df1565b5f80612a77611a06565b90505f612a82611a06565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691612ab79160040190815260200190565b5f60405180830381865afa158015612ad1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612af891908101906133ad565b90505f600382516005811115612b1057612b1061347a565b1480612b2e5750600482516005811115612b2c57612b2c61347a565b145b15612b3e575060c0810151612b7b565b600282516005811115612b5357612b5361347a565b03612b5f575042612b7b565b815160405163170cc93360e21b8152610687919060040161348e565b86608001516001600160401b0316816001600160401b031611612ba3575f93505050506111bd565b600583015460608801515f916001600160a01b031690634f22429f90612bc890610be6565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6d91906134db565b5f878152600986016020526040902081905590506001600160a01b03871615611cbe575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b610f276001600160a01b0383168261301a565b5f805f612ce1611a06565b5f86815260098201602052604081208054908290559192509081908015612d75575f87815260078501602052604090205461271090612d2b90600160a01b900461ffff1683613578565b612d3591906134bc565b91508184600b015f8981526020019081526020015f205f828254612d5991906136e4565b90915550612d699050828261396c565b9250612d758984612d83565b509097909650945050505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612dcf575f80fd5b505af1158015610a3d573d5f803e3d5ffd5b612de96129a7565b6129f06130ad565b612df96129a7565b5f612e02611a06565b905061ffff86161580612e1a575061271061ffff8716115b15612e3e57604051635f12e6c360e11b815261ffff87166004820152602401610687565b87891115612e625760405163222d164360e21b8152600481018a9052602401610687565b60ff85161580612e755750600a60ff8616115b15612e985760405163170db35960e31b815260ff86166004820152602401610687565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef89190613600565b6001600160401b0316876001600160401b03161015612f34576040516202a06d60e11b81526001600160401b0388166004820152602401610687565b835f03612f545760405163a733007160e01b815260040160405180910390fd5b81612f7557604051632f6bd1db60e01b815260048101839052602401610687565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b8047101561303d5760405163cd78605960e01b8152306004820152602401610687565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613086576040519150601f19603f3d011682016040523d82523d5f602084013e61308b565b606091505b505090508061056957604051630a12f52160e11b815260040160405180910390fd5b6124966129a7565b80151581146115c3575f80fd5b803563ffffffff811681146114ba575f80fd5b5f805f606084860312156130e7575f80fd5b8335925060208401356130f9816130b5565b9150613107604085016130c2565b90509250925092565b5f6101208284031215613121575f80fd5b50919050565b5f8060408385031215613138575f80fd5b82359150613148602084016130c2565b90509250929050565b5f60208284031215613161575f80fd5b5035919050565b6001600160a01b03811681146115c3575f80fd5b5f805f806080858703121561318f575f80fd5b8435935060208501356131a1816130b5565b92506131af604086016130c2565b915060608501356131bf81613168565b939692955090935050565b5f602082840312156131da575f80fd5b6111bd826130c2565b6001600160401b03811681146115c3575f80fd5b5f60208284031215613207575f80fd5b81356111bd816131e3565b5f8060408385031215613223575f80fd5b82359150602083013561323581613168565b809150509250929050565b803561ffff811681146114ba575f80fd5b5f805f60608486031215613263575f80fd5b83356001600160401b03811115613278575f80fd5b840160a08187031215613289575f80fd5b925061329760208501613240565b915060408401356132a7816131e3565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156132e8576132e86132b2565b60405290565b8051600681106114ba575f80fd5b5f5b838110156133165781810151838201526020016132fe565b50505f910152565b5f82601f83011261332d575f80fd5b81516001600160401b0380821115613347576133476132b2565b604051601f8301601f19908116603f0116810190828211818310171561336f5761336f6132b2565b81604052838152866020858801011115613387575f80fd5b6133988460208301602089016132fc565b9695505050505050565b80516114ba816131e3565b5f602082840312156133bd575f80fd5b81516001600160401b03808211156133d3575f80fd5b9083019060e082860312156133e6575f80fd5b6133ee6132c6565b6133f7836132ee565b815260208301518281111561340a575f80fd5b6134168782860161331e565b602083015250613428604084016133a2565b6040820152613439606084016133a2565b606082015261344a608084016133a2565b608082015261345b60a084016133a2565b60a082015261346c60c084016133a2565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106134a2576134a261347a565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826134d657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156134eb575f80fd5b5051919050565b60208101600483106134a2576134a261347a565b5f815180845261351d8160208601602086016132fc565b601f01601f19169290920160200192915050565b602081525f6111bd6020830184613506565b5f805f60608486031215613555575f80fd5b835192506020840151613567816131e3565b60408501519092506132a7816131e3565b8082028115828204841417610793576107936134a8565b5f6020828403121561359f575f80fd5b81516001600160401b038111156135b4575f80fd5b6119d58482850161331e565b6001600160401b03818116838216019080821115612458576124586134a8565b6001600160401b03828116828216039080821115612458576124586134a8565b5f60208284031215613610575f80fd5b81516111bd816131e3565b5f806040838503121561362c575f80fd5b82516001600160401b0380821115613642575f80fd5b9084019060608287031215613655575f80fd5b604051606081018181108382111715613670576136706132b2565b60405282518152602083015161368581613168565b602082015260408301518281111561369b575f80fd5b6136a78882860161331e565b6040830152508094505050506020830151613235816130b5565b5f80604083850312156136d2575f80fd5b825191506020830151613235816131e3565b80820180821115610793576107936134a8565b5f808335601e1984360301811261370c575f80fd5b83016020810192503590506001600160401b0381111561372a575f80fd5b803603821315613738575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e1983360301811261377b575f80fd5b90910192915050565b5f6040830163ffffffff613797846130c2565b168452602080840135601e198536030181126137b1575f80fd5b84016020810190356001600160401b038111156137cc575f80fd5b8060051b36038213156137dd575f80fd5b6040602088015292839052915f90606087015b81831015611cbe57843561380381613168565b6001600160a01b03168152938301936001929092019183016137f0565b604081525f61382f84856136f7565b60a0604085015261384460e08501828461373f565b91505061385460208601866136f7565b603f198086850301606087015261386c84838561373f565b93506040880135925061387e836131e3565b6001600160401b039150818316608087015261389d6060890189613767565b9250808685030160a08701526138b38484613784565b93506138c26080890189613767565b9250808685030160c0870152506138d98383613784565b935080861660208601525050509392505050565b6001600160401b03818116838216028082169190828114613910576139106134a8565b505092915050565b5f60208284031215613928575f80fd5b81356111bd81613168565b5f60208284031215613943575f80fd5b6111bd82613240565b5f6020828403121561395c575f80fd5b813560ff811681146111bd575f80fd5b81810381811115610793576107936134a856fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212202be9d33c5e80862f34b0f6c021f4eab37d2e1367cdaf497e844a039dc837833464736f6c63430008190033", } -// NativeTokenStakingManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use NativeTokenStakingManagerMetaData.ABI instead. -var NativeTokenStakingManagerABI = NativeTokenStakingManagerMetaData.ABI +// NativeTokenSecurityModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use NativeTokenSecurityModuleMetaData.ABI instead. +var NativeTokenSecurityModuleABI = NativeTokenSecurityModuleMetaData.ABI -// NativeTokenStakingManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use NativeTokenStakingManagerMetaData.Bin instead. -var NativeTokenStakingManagerBin = NativeTokenStakingManagerMetaData.Bin +// NativeTokenSecurityModuleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use NativeTokenSecurityModuleMetaData.Bin instead. +var NativeTokenSecurityModuleBin = NativeTokenSecurityModuleMetaData.Bin -// DeployNativeTokenStakingManager deploys a new Ethereum contract, binding an instance of NativeTokenStakingManager to it. -func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenStakingManager, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() +// DeployNativeTokenSecurityModule deploys a new Ethereum contract, binding an instance of NativeTokenSecurityModule to it. +func DeployNativeTokenSecurityModule(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *NativeTokenSecurityModule, error) { + parsed, err := NativeTokenSecurityModuleMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -108,113 +108,113 @@ func DeployNativeTokenStakingManager(auth *bind.TransactOpts, backend bind.Contr } validatorMessagesAddr, _, _, _ := DeployValidatorMessages(auth, backend) - NativeTokenStakingManagerBin = strings.ReplaceAll(NativeTokenStakingManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + NativeTokenSecurityModuleBin = strings.ReplaceAll(NativeTokenSecurityModuleBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenStakingManagerBin), backend, init) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(NativeTokenSecurityModuleBin), backend, init) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil + return address, tx, &NativeTokenSecurityModule{NativeTokenSecurityModuleCaller: NativeTokenSecurityModuleCaller{contract: contract}, NativeTokenSecurityModuleTransactor: NativeTokenSecurityModuleTransactor{contract: contract}, NativeTokenSecurityModuleFilterer: NativeTokenSecurityModuleFilterer{contract: contract}}, nil } -// NativeTokenStakingManager is an auto generated Go binding around an Ethereum contract. -type NativeTokenStakingManager struct { - NativeTokenStakingManagerCaller // Read-only binding to the contract - NativeTokenStakingManagerTransactor // Write-only binding to the contract - NativeTokenStakingManagerFilterer // Log filterer for contract events +// NativeTokenSecurityModule is an auto generated Go binding around an Ethereum contract. +type NativeTokenSecurityModule struct { + NativeTokenSecurityModuleCaller // Read-only binding to the contract + NativeTokenSecurityModuleTransactor // Write-only binding to the contract + NativeTokenSecurityModuleFilterer // Log filterer for contract events } -// NativeTokenStakingManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCaller struct { +// NativeTokenSecurityModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type NativeTokenSecurityModuleCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactor struct { +// NativeTokenSecurityModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type NativeTokenSecurityModuleTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type NativeTokenStakingManagerFilterer struct { +// NativeTokenSecurityModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type NativeTokenSecurityModuleFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// NativeTokenStakingManagerSession is an auto generated Go binding around an Ethereum contract, +// NativeTokenSecurityModuleSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type NativeTokenStakingManagerSession struct { - Contract *NativeTokenStakingManager // Generic contract binding to set the session for +type NativeTokenSecurityModuleSession struct { + Contract *NativeTokenSecurityModule // 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 } -// NativeTokenStakingManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// NativeTokenSecurityModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type NativeTokenStakingManagerCallerSession struct { - Contract *NativeTokenStakingManagerCaller // Generic contract caller binding to set the session for +type NativeTokenSecurityModuleCallerSession struct { + Contract *NativeTokenSecurityModuleCaller // Generic contract caller binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session } -// NativeTokenStakingManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// NativeTokenSecurityModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type NativeTokenStakingManagerTransactorSession struct { - Contract *NativeTokenStakingManagerTransactor // Generic contract transactor binding to set the session for +type NativeTokenSecurityModuleTransactorSession struct { + Contract *NativeTokenSecurityModuleTransactor // Generic contract transactor binding to set the session for TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// NativeTokenStakingManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type NativeTokenStakingManagerRaw struct { - Contract *NativeTokenStakingManager // Generic contract binding to access the raw methods on +// NativeTokenSecurityModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type NativeTokenSecurityModuleRaw struct { + Contract *NativeTokenSecurityModule // Generic contract binding to access the raw methods on } -// NativeTokenStakingManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerCallerRaw struct { - Contract *NativeTokenStakingManagerCaller // Generic read-only contract binding to access the raw methods on +// NativeTokenSecurityModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type NativeTokenSecurityModuleCallerRaw struct { + Contract *NativeTokenSecurityModuleCaller // Generic read-only contract binding to access the raw methods on } -// NativeTokenStakingManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type NativeTokenStakingManagerTransactorRaw struct { - Contract *NativeTokenStakingManagerTransactor // Generic write-only contract binding to access the raw methods on +// NativeTokenSecurityModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type NativeTokenSecurityModuleTransactorRaw struct { + Contract *NativeTokenSecurityModuleTransactor // Generic write-only contract binding to access the raw methods on } -// NewNativeTokenStakingManager creates a new instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManager(address common.Address, backend bind.ContractBackend) (*NativeTokenStakingManager, error) { - contract, err := bindNativeTokenStakingManager(address, backend, backend, backend) +// NewNativeTokenSecurityModule creates a new instance of NativeTokenSecurityModule, bound to a specific deployed contract. +func NewNativeTokenSecurityModule(address common.Address, backend bind.ContractBackend) (*NativeTokenSecurityModule, error) { + contract, err := bindNativeTokenSecurityModule(address, backend, backend, backend) if err != nil { return nil, err } - return &NativeTokenStakingManager{NativeTokenStakingManagerCaller: NativeTokenStakingManagerCaller{contract: contract}, NativeTokenStakingManagerTransactor: NativeTokenStakingManagerTransactor{contract: contract}, NativeTokenStakingManagerFilterer: NativeTokenStakingManagerFilterer{contract: contract}}, nil + return &NativeTokenSecurityModule{NativeTokenSecurityModuleCaller: NativeTokenSecurityModuleCaller{contract: contract}, NativeTokenSecurityModuleTransactor: NativeTokenSecurityModuleTransactor{contract: contract}, NativeTokenSecurityModuleFilterer: NativeTokenSecurityModuleFilterer{contract: contract}}, nil } -// NewNativeTokenStakingManagerCaller creates a new read-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenStakingManagerCaller, error) { - contract, err := bindNativeTokenStakingManager(address, caller, nil, nil) +// NewNativeTokenSecurityModuleCaller creates a new read-only instance of NativeTokenSecurityModule, bound to a specific deployed contract. +func NewNativeTokenSecurityModuleCaller(address common.Address, caller bind.ContractCaller) (*NativeTokenSecurityModuleCaller, error) { + contract, err := bindNativeTokenSecurityModule(address, caller, nil, nil) if err != nil { return nil, err } - return &NativeTokenStakingManagerCaller{contract: contract}, nil + return &NativeTokenSecurityModuleCaller{contract: contract}, nil } -// NewNativeTokenStakingManagerTransactor creates a new write-only instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenStakingManagerTransactor, error) { - contract, err := bindNativeTokenStakingManager(address, nil, transactor, nil) +// NewNativeTokenSecurityModuleTransactor creates a new write-only instance of NativeTokenSecurityModule, bound to a specific deployed contract. +func NewNativeTokenSecurityModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*NativeTokenSecurityModuleTransactor, error) { + contract, err := bindNativeTokenSecurityModule(address, nil, transactor, nil) if err != nil { return nil, err } - return &NativeTokenStakingManagerTransactor{contract: contract}, nil + return &NativeTokenSecurityModuleTransactor{contract: contract}, nil } -// NewNativeTokenStakingManagerFilterer creates a new log filterer instance of NativeTokenStakingManager, bound to a specific deployed contract. -func NewNativeTokenStakingManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenStakingManagerFilterer, error) { - contract, err := bindNativeTokenStakingManager(address, nil, nil, filterer) +// NewNativeTokenSecurityModuleFilterer creates a new log filterer instance of NativeTokenSecurityModule, bound to a specific deployed contract. +func NewNativeTokenSecurityModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*NativeTokenSecurityModuleFilterer, error) { + contract, err := bindNativeTokenSecurityModule(address, nil, nil, filterer) if err != nil { return nil, err } - return &NativeTokenStakingManagerFilterer{contract: contract}, nil + return &NativeTokenSecurityModuleFilterer{contract: contract}, nil } -// bindNativeTokenStakingManager binds a generic wrapper to an already deployed contract. -func bindNativeTokenStakingManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := NativeTokenStakingManagerMetaData.GetAbi() +// bindNativeTokenSecurityModule binds a generic wrapper to an already deployed contract. +func bindNativeTokenSecurityModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := NativeTokenSecurityModuleMetaData.GetAbi() if err != nil { return nil, err } @@ -225,46 +225,46 @@ func bindNativeTokenStakingManager(address common.Address, caller bind.ContractC // 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 (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerCaller.contract.Call(opts, result, method, params...) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenSecurityModule.Contract.NativeTokenSecurityModuleCaller.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 (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transfer(opts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.NativeTokenSecurityModuleTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.NativeTokenStakingManagerTransactor.contract.Transact(opts, method, params...) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.NativeTokenSecurityModuleTransactor.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 (_NativeTokenStakingManager *NativeTokenStakingManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _NativeTokenStakingManager.Contract.contract.Call(opts, result, method, params...) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _NativeTokenSecurityModule.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 (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transfer(opts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.contract.Transact(opts, method, params...) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.contract.Transact(opts, method, params...) } // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) BIPSCONVERSIONFACTOR(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "BIPS_CONVERSION_FACTOR") if err != nil { return *new(uint16), err @@ -279,23 +279,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) BIPSCONVERSIO // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenSecurityModule.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenSecurityModule.CallOpts) } // BIPSCONVERSIONFACTOR is a free data retrieval call binding the contract method 0xa9778a7a. // // Solidity: function BIPS_CONVERSION_FACTOR() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { - return _NativeTokenStakingManager.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) BIPSCONVERSIONFACTOR() (uint16, error) { + return _NativeTokenSecurityModule.Contract.BIPSCONVERSIONFACTOR(&_NativeTokenSecurityModule.CallOpts) } // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) MAXIMUMDELEGATIONFEEBIPS(opts *bind.CallOpts) (uint16, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "MAXIMUM_DELEGATION_FEE_BIPS") if err != nil { return *new(uint16), err @@ -310,23 +310,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMDELEGA // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenSecurityModule.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenSecurityModule.CallOpts) } // MAXIMUMDELEGATIONFEEBIPS is a free data retrieval call binding the contract method 0x35455ded. // // Solidity: function MAXIMUM_DELEGATION_FEE_BIPS() view returns(uint16) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) MAXIMUMDELEGATIONFEEBIPS() (uint16, error) { + return _NativeTokenSecurityModule.Contract.MAXIMUMDELEGATIONFEEBIPS(&_NativeTokenSecurityModule.CallOpts) } // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) MAXIMUMSTAKEMULTIPLIERLIMIT(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "MAXIMUM_STAKE_MULTIPLIER_LIMIT") if err != nil { return *new(uint8), err @@ -341,23 +341,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) MAXIMUMSTAKEM // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenSecurityModule.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenSecurityModule.CallOpts) } // MAXIMUMSTAKEMULTIPLIERLIMIT is a free data retrieval call binding the contract method 0x151d30d1. // // Solidity: function MAXIMUM_STAKE_MULTIPLIER_LIMIT() view returns(uint8) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { - return _NativeTokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) MAXIMUMSTAKEMULTIPLIERLIMIT() (uint8, error) { + return _NativeTokenSecurityModule.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_NativeTokenSecurityModule.CallOpts) } // NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. // // Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) NATIVEMINTER(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "NATIVE_MINTER") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "NATIVE_MINTER") if err != nil { return *new(common.Address), err @@ -372,23 +372,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) NATIVEMINTER( // NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. // // Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenSecurityModule.Contract.NATIVEMINTER(&_NativeTokenSecurityModule.CallOpts) } // NATIVEMINTER is a free data retrieval call binding the contract method 0x329c3e12. // // Solidity: function NATIVE_MINTER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVEMINTER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) NATIVEMINTER() (common.Address, error) { + return _NativeTokenSecurityModule.Contract.NATIVEMINTER(&_NativeTokenSecurityModule.CallOpts) } // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) POSVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "POS_VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -403,23 +403,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) POSVALIDATORM // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenSecurityModule.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenSecurityModule.CallOpts) } // POSVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xafb98096. // // Solidity: function POS_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) POSVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _NativeTokenSecurityModule.Contract.POSVALIDATORMANAGERSTORAGELOCATION(&_NativeTokenSecurityModule.CallOpts) } // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") if err != nil { return *new([32]byte), err @@ -434,23 +434,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCH // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenSecurityModule.Contract.PCHAINBLOCKCHAINID(&_NativeTokenSecurityModule.CallOpts) } // PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. // // Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { - return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenSecurityModule.Contract.PCHAINBLOCKCHAINID(&_NativeTokenSecurityModule.CallOpts) } // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "WARP_MESSENGER") + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "WARP_MESSENGER") if err != nil { return *new(common.Address), err @@ -465,23 +465,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WARPMESSENGER // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenSecurityModule.Contract.WARPMESSENGER(&_NativeTokenSecurityModule.CallOpts) } // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPMESSENGER() (common.Address, error) { - return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) WARPMESSENGER() (common.Address, error) { + return _NativeTokenSecurityModule.Contract.WARPMESSENGER(&_NativeTokenSecurityModule.CallOpts) } // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) ValueToWeight(opts *bind.CallOpts, value *big.Int) (uint64, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "valueToWeight", value) + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "valueToWeight", value) if err != nil { return *new(uint64), err @@ -496,23 +496,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) ValueToWeight // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenSecurityModule.Contract.ValueToWeight(&_NativeTokenSecurityModule.CallOpts, value) } // ValueToWeight is a free data retrieval call binding the contract method 0x2e2194d8. // // Solidity: function valueToWeight(uint256 value) view returns(uint64) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) ValueToWeight(value *big.Int) (uint64, error) { - return _NativeTokenStakingManager.Contract.ValueToWeight(&_NativeTokenStakingManager.CallOpts, value) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) ValueToWeight(value *big.Int) (uint64, error) { + return _NativeTokenSecurityModule.Contract.ValueToWeight(&_NativeTokenSecurityModule.CallOpts, value) } // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCaller) WeightToValue(opts *bind.CallOpts, weight uint64) (*big.Int, error) { var out []interface{} - err := _NativeTokenStakingManager.contract.Call(opts, &out, "weightToValue", weight) + err := _NativeTokenSecurityModule.contract.Call(opts, &out, "weightToValue", weight) if err != nil { return *new(*big.Int), err @@ -527,440 +527,440 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) WeightToValue // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenSecurityModule.Contract.WeightToValue(&_NativeTokenSecurityModule.CallOpts, weight) } // WeightToValue is a free data retrieval call binding the contract method 0x62065856. // // Solidity: function weightToValue(uint64 weight) view returns(uint256) -func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WeightToValue(weight uint64) (*big.Int, error) { - return _NativeTokenStakingManager.Contract.WeightToValue(&_NativeTokenStakingManager.CallOpts, weight) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleCallerSession) WeightToValue(weight uint64) (*big.Int, error) { + return _NativeTokenSecurityModule.Contract.WeightToValue(&_NativeTokenSecurityModule.CallOpts, weight) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, rewardRecipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ChangeDelegatorRewardRecipient(&_NativeTokenStakingManager.TransactOpts, delegationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ChangeDelegatorRewardRecipient(&_NativeTokenSecurityModule.TransactOpts, delegationID, rewardRecipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ChangeDelegatorRewardRecipient(&_NativeTokenStakingManager.TransactOpts, delegationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ChangeDelegatorRewardRecipient(&_NativeTokenSecurityModule.TransactOpts, delegationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ChangeValidatorRewardRecipient(&_NativeTokenStakingManager.TransactOpts, validationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ChangeValidatorRewardRecipient(&_NativeTokenSecurityModule.TransactOpts, validationID, rewardRecipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ChangeValidatorRewardRecipient(&_NativeTokenStakingManager.TransactOpts, validationID, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ChangeValidatorRewardRecipient(&_NativeTokenSecurityModule.TransactOpts, validationID, rewardRecipient) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "claimDelegationFees", validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "claimDelegationFees", validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ClaimDelegationFees(&_NativeTokenSecurityModule.TransactOpts, validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.TransactOpts, validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ClaimDelegationFees(&_NativeTokenSecurityModule.TransactOpts, validationID) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteDelegatorRegistration(&_NativeTokenSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteDelegatorRegistration(&_NativeTokenSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeEndValidation", messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "completeEndValidation", messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteEndValidation(&_NativeTokenSecurityModule.TransactOpts, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteEndValidation(&_NativeTokenSecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteValidatorRegistration(&_NativeTokenSecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.CompleteValidatorRegistration(&_NativeTokenSecurityModule.TransactOpts, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation0(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndDelegation0(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndDelegation0(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndDelegation0(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndValidation(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndValidation(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation0(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndValidation0(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ForceInitializeEndValidation0(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ForceInitializeEndValidation0(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // Initialize is a paid mutator transaction binding the contract method 0x0d436317. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) Initialize(opts *bind.TransactOpts, settings PoSSecurityModuleSettings) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initialize", settings) } // Initialize is a paid mutator transaction binding the contract method 0x0d436317. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) Initialize(settings PoSSecurityModuleSettings) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.Initialize(&_NativeTokenSecurityModule.TransactOpts, settings) } // Initialize is a paid mutator transaction binding the contract method 0x0d436317. // // Solidity: function initialize((address,uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32) settings) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) Initialize(settings PoSSecurityModuleSettings) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.Initialize(&_NativeTokenSecurityModule.TransactOpts, settings) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeDelegatorRegistration", validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeDelegatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeDelegatorRegistration", validationID) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeDelegatorRegistration(&_NativeTokenSecurityModule.TransactOpts, validationID) } // InitializeDelegatorRegistration is a paid mutator transaction binding the contract method 0xc599e24f. // // Solidity: function initializeDelegatorRegistration(bytes32 validationID) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeDelegatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeDelegatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeDelegatorRegistration(&_NativeTokenSecurityModule.TransactOpts, validationID) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation0(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndDelegation0(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndDelegation0(&_NativeTokenStakingManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndDelegation0(&_NativeTokenSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndValidation(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, rewardRecipient common.Address) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndValidation(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, rewardRecipient) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation0(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndValidation0(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeEndValidation0(&_NativeTokenStakingManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeEndValidation0(&_NativeTokenSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, delegationFeeBips, minStakeDuration) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeValidatorRegistration(&_NativeTokenSecurityModule.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xaf2f5feb. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint16 delegationFeeBips, uint64 minStakeDuration) payable returns(bytes32) -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.InitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, delegationFeeBips uint16, minStakeDuration uint64) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.InitializeValidatorRegistration(&_NativeTokenSecurityModule.TransactOpts, registrationInput, delegationFeeBips, minStakeDuration) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "resendUpdateDelegation", delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ResendUpdateDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.ResendUpdateDelegation(&_NativeTokenSecurityModule.TransactOpts, delegationID) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.SubmitUptimeProof(&_NativeTokenSecurityModule.TransactOpts, validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.SubmitUptimeProof(&_NativeTokenStakingManager.TransactOpts, validationID, messageIndex) +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _NativeTokenSecurityModule.Contract.SubmitUptimeProof(&_NativeTokenSecurityModule.TransactOpts, validationID, messageIndex) } -// NativeTokenStakingManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEndedIterator struct { - Event *NativeTokenStakingManagerDelegationEnded // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegationEndedIterator struct { + Event *NativeTokenSecurityModuleDelegationEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -974,7 +974,7 @@ type NativeTokenStakingManagerDelegationEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { +func (it *NativeTokenSecurityModuleDelegationEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -983,7 +983,7 @@ func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) + it.Event = new(NativeTokenSecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -998,7 +998,7 @@ func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) + it.Event = new(NativeTokenSecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1014,19 +1014,19 @@ func (it *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { +func (it *NativeTokenSecurityModuleDelegationEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { +func (it *NativeTokenSecurityModuleDelegationEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEnded struct { +// NativeTokenSecurityModuleDelegationEnded represents a DelegationEnded event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegationEnded struct { DelegationID [32]byte ValidationID [32]byte Rewards *big.Int @@ -1037,7 +1037,7 @@ type NativeTokenStakingManagerDelegationEnded struct { // FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegationEndedIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenSecurityModuleDelegationEndedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1048,17 +1048,17 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleDelegationEndedIterator{contract: _NativeTokenSecurityModule.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } // WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1069,7 +1069,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1079,8 +1079,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + event := new(NativeTokenSecurityModuleDelegationEnded) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -1104,18 +1104,18 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega // ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { - event := new(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenSecurityModuleDelegationEnded, error) { + event := new(NativeTokenSecurityModuleDelegationEnded) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAddedIterator struct { - Event *NativeTokenStakingManagerDelegatorAdded // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorAddedIterator struct { + Event *NativeTokenSecurityModuleDelegatorAdded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1129,7 +1129,7 @@ type NativeTokenStakingManagerDelegatorAddedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { +func (it *NativeTokenSecurityModuleDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1138,7 +1138,7 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) + it.Event = new(NativeTokenSecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1153,7 +1153,7 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) + it.Event = new(NativeTokenSecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1169,19 +1169,19 @@ func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { +func (it *NativeTokenSecurityModuleDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { +func (it *NativeTokenSecurityModuleDelegatorAddedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorAdded struct { +// NativeTokenSecurityModuleDelegatorAdded represents a DelegatorAdded event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorAdded struct { DelegationID [32]byte ValidationID [32]byte DelegatorAddress common.Address @@ -1194,7 +1194,7 @@ type NativeTokenStakingManagerDelegatorAdded struct { // FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenSecurityModuleDelegatorAddedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1209,17 +1209,17 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleDelegatorAddedIterator{contract: _NativeTokenSecurityModule.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } // WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1234,7 +1234,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -1244,8 +1244,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + event := new(NativeTokenSecurityModuleDelegatorAdded) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -1269,18 +1269,18 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega // ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenSecurityModuleDelegatorAdded, error) { + event := new(NativeTokenSecurityModuleDelegatorAdded) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegisteredIterator struct { - Event *NativeTokenStakingManagerDelegatorRegistered // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorRegisteredIterator struct { + Event *NativeTokenSecurityModuleDelegatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1294,7 +1294,7 @@ type NativeTokenStakingManagerDelegatorRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { +func (it *NativeTokenSecurityModuleDelegatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1303,7 +1303,7 @@ func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + it.Event = new(NativeTokenSecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1318,7 +1318,7 @@ func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) + it.Event = new(NativeTokenSecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1334,19 +1334,19 @@ func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { +func (it *NativeTokenSecurityModuleDelegatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { +func (it *NativeTokenSecurityModuleDelegatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegistered struct { +// NativeTokenSecurityModuleDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorRegistered struct { DelegationID [32]byte ValidationID [32]byte StartTime *big.Int @@ -1356,7 +1356,7 @@ type NativeTokenStakingManagerDelegatorRegistered struct { // FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRegisteredIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenSecurityModuleDelegatorRegisteredIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1367,17 +1367,17 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleDelegatorRegisteredIterator{contract: _NativeTokenSecurityModule.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } // WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1388,7 +1388,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1398,8 +1398,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + event := new(NativeTokenSecurityModuleDelegatorRegistered) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return err } event.Raw = log @@ -1423,18 +1423,18 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega // ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenStakingManagerDelegatorRegistered, error) { - event := new(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseDelegatorRegistered(log types.Log) (*NativeTokenSecurityModuleDelegatorRegistered, error) { + event := new(NativeTokenSecurityModuleDelegatorRegistered) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { - Event *NativeTokenStakingManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorRemovalInitializedIterator struct { + Event *NativeTokenSecurityModuleDelegatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1448,7 +1448,7 @@ type NativeTokenStakingManagerDelegatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { +func (it *NativeTokenSecurityModuleDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1457,7 +1457,7 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(NativeTokenSecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1472,7 +1472,7 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) + it.Event = new(NativeTokenSecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1488,19 +1488,19 @@ func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() b } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { +func (it *NativeTokenSecurityModuleDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { +func (it *NativeTokenSecurityModuleDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitialized struct { +// NativeTokenSecurityModuleDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleDelegatorRemovalInitialized struct { DelegationID [32]byte ValidationID [32]byte Raw types.Log // Blockchain specific contextual infos @@ -1509,7 +1509,7 @@ type NativeTokenStakingManagerDelegatorRemovalInitialized struct { // FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenSecurityModuleDelegatorRemovalInitializedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1520,17 +1520,17 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleDelegatorRemovalInitializedIterator{contract: _NativeTokenSecurityModule.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } // WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1541,7 +1541,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1551,8 +1551,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + event := new(NativeTokenSecurityModuleDelegatorRemovalInitialized) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -1576,18 +1576,18 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega // ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerDelegatorRemovalInitialized, error) { - event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*NativeTokenSecurityModuleDelegatorRemovalInitialized, error) { + event := new(NativeTokenSecurityModuleDelegatorRemovalInitialized) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitializedIterator struct { - Event *NativeTokenStakingManagerInitialized // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleInitializedIterator struct { + Event *NativeTokenSecurityModuleInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1601,7 +1601,7 @@ type NativeTokenStakingManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { +func (it *NativeTokenSecurityModuleInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1610,7 +1610,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(NativeTokenSecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1625,7 +1625,7 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) + it.Event = new(NativeTokenSecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1641,19 +1641,19 @@ func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitializedIterator) Error() error { +func (it *NativeTokenSecurityModuleInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerInitializedIterator) Close() error { +func (it *NativeTokenSecurityModuleInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerInitialized struct { +// NativeTokenSecurityModuleInitialized represents a Initialized event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleInitialized struct { Version uint64 Raw types.Log // Blockchain specific contextual infos } @@ -1661,21 +1661,21 @@ type NativeTokenStakingManagerInitialized struct { // FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenSecurityModuleInitializedIterator, error) { - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleInitializedIterator{contract: _NativeTokenSecurityModule.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 (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialized) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleInitialized) (event.Subscription, error) { - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1685,8 +1685,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(NativeTokenSecurityModuleInitialized) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -1710,18 +1710,18 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia // ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialized(log types.Log) (*NativeTokenStakingManagerInitialized, error) { - event := new(NativeTokenStakingManagerInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseInitialized(log types.Log) (*NativeTokenSecurityModuleInitialized, error) { + event := new(NativeTokenSecurityModuleInitialized) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// NativeTokenStakingManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdatedIterator struct { - Event *NativeTokenStakingManagerUptimeUpdated // Event containing the contract specifics and raw log +// NativeTokenSecurityModuleUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleUptimeUpdatedIterator struct { + Event *NativeTokenSecurityModuleUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1735,7 +1735,7 @@ type NativeTokenStakingManagerUptimeUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { +func (it *NativeTokenSecurityModuleUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1744,7 +1744,7 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) + it.Event = new(NativeTokenSecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1759,7 +1759,7 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) + it.Event = new(NativeTokenSecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1775,19 +1775,19 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *NativeTokenSecurityModuleUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *NativeTokenSecurityModuleUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdated struct { +// NativeTokenSecurityModuleUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenSecurityModule contract. +type NativeTokenSecurityModuleUptimeUpdated struct { ValidationID [32]byte Uptime uint64 Raw types.Log // Blockchain specific contextual infos @@ -1796,31 +1796,31 @@ type NativeTokenStakingManagerUptimeUpdated struct { // FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenSecurityModuleUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &NativeTokenSecurityModuleUptimeUpdatedIterator{contract: _NativeTokenSecurityModule.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } // WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenSecurityModuleUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _NativeTokenSecurityModule.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -1830,8 +1830,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptime select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + event := new(NativeTokenSecurityModuleUptimeUpdated) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -1855,9 +1855,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptime // ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenStakingManagerUptimeUpdated, error) { - event := new(NativeTokenStakingManagerUptimeUpdated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { +func (_NativeTokenSecurityModule *NativeTokenSecurityModuleFilterer) ParseUptimeUpdated(log types.Log) (*NativeTokenSecurityModuleUptimeUpdated, error) { + event := new(NativeTokenSecurityModuleUptimeUpdated) + if err := _NativeTokenSecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoASecurityModule/PoASecurityModule.go similarity index 80% rename from abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go rename to abi-bindings/go/validator-manager/PoASecurityModule/PoASecurityModule.go index 9c8e92041..54b2b94ed 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoASecurityModule/PoASecurityModule.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package poavalidatormanager +package poasecuritymodule import ( "errors" @@ -70,23 +70,23 @@ type ValidatorRegistrationInput struct { DisableOwner PChainOwner } -// PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. -var PoAValidatorManagerMetaData = &bind.MetaData{ +// PoASecurityModuleMetaData contains all meta data concerning the PoASecurityModule contract. +var PoASecurityModuleMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POA_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contractIACP99ValidatorManager\",\"name\":\"validatorManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051610af9380380610af983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6109ac8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c806397fb70d41161006357806397fb70d4146101035780639ba96b8614610116578063a3a65e4814610137578063bd5607df1461014a578063f2fde38b1461015e575f80fd5b8063467ef06f14610094578063485cc955146100a9578063715018a6146100bc5780638da5cb5b146100c4575b5f80fd5b6100a76100a236600461063a565b610171565b005b6100a76100b736600461066e565b6101f5565b6100a7610305565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b6100a76101113660046106a5565b610318565b6101296101243660046106d3565b61038c565b6040519081526020016100fa565b6100a761014536600461063a565b61041c565b6101295f8051602061095783398151915281565b6100a761016c366004610722565b61045f565b5f80516020610957833981519152805460405163467ef06f60e01b815263ffffffff841660048201526001600160a01b039091169063467ef06f906024015b6020604051808303815f875af11580156101cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f0919061073d565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561023a5750825b90505f8267ffffffffffffffff1660011480156102565750303b155b905081158015610264575080155b156102825760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102ac57845460ff60401b1916600160401b1785555b6102b687876104a1565b83156102fc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61030d6104bf565b6103165f61051a565b565b6103206104bf565b5f5f8051602061095783398151915280546040516325fedc3560e21b8152600481018590529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610372575f80fd5b505af1158015610384573d5f803e3d5ffd5b505050505050565b5f6103956104bf565b5f805160206109578339815191528054604051634dd4b5c360e11b81526001600160a01b0390911690639ba96b86906103d4908790879060040161088a565b6020604051808303815f875af11580156103f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610414919061073d565b949350505050565b5f805160206109578339815191528054604051631474cbc960e31b815263ffffffff841660048201526001600160a01b039091169063a3a65e48906024016101b0565b6104676104bf565b6001600160a01b03811661049557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61049e8161051a565b50565b6104a961058a565b6104b2826105d3565b6104bb816105e4565b5050565b336104f17f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146103165760405163118cdaa760e01b815233600482015260240161048c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661031657604051631afcd79f60e31b815260040160405180910390fd5b6105db61058a565b61049e8161061a565b6105ec61058a565b5f8051602061095783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61046761058a565b803563ffffffff81168114610635575f80fd5b919050565b5f6020828403121561064a575f80fd5b61065382610622565b9392505050565b6001600160a01b038116811461049e575f80fd5b5f806040838503121561067f575f80fd5b823561068a8161065a565b9150602083013561069a8161065a565b809150509250929050565b5f602082840312156106b5575f80fd5b5035919050565b803567ffffffffffffffff81168114610635575f80fd5b5f80604083850312156106e4575f80fd5b823567ffffffffffffffff8111156106fa575f80fd5b830160a0818603121561070b575f80fd5b9150610719602084016106bc565b90509250929050565b5f60208284031215610732575f80fd5b81356106538161065a565b5f6020828403121561074d575f80fd5b5051919050565b5f808335601e19843603018112610769575f80fd5b830160208101925035905067ffffffffffffffff811115610788575f80fd5b803603821315610796575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e198336030181126107d9575f80fd5b90910192915050565b5f6040830163ffffffff6107f584610622565b168452602080840135601e1985360301811261080f575f80fd5b840160208101903567ffffffffffffffff81111561082b575f80fd5b8060051b360382131561083c575f80fd5b6040602088015292839052915f90606087015b8183101561087f5784356108628161065a565b6001600160a01b031681529383019360019290920191830161084f565b979650505050505050565b604081525f6108998485610754565b60a060408501526108ae60e08501828461079d565b9150506108be6020860186610754565b603f19808685030160608701526108d684838561079d565b93506108e4604089016106bc565b925067ffffffffffffffff9150818316608087015261090660608901896107c5565b9250808685030160a087015261091c84846107e2565b935061092b60808901896107c5565b9250808685030160c08701525061094283836107e2565b93508086166020860152505050939250505056fe81773fca73a14ca21edf1cadc6ec0b26d6a44966f6e97607e90422658d423500a26469706673582212200a2a20208285517447dafc91b64e589ee1471dbf6c57e91b8bba62b32da4683764736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051610af9380380610af983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6109ac8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c806397fb70d41161006357806397fb70d4146101035780639ba96b8614610116578063a3a65e4814610137578063bd5607df1461014a578063f2fde38b1461015e575f80fd5b8063467ef06f14610094578063485cc955146100a9578063715018a6146100bc5780638da5cb5b146100c4575b5f80fd5b6100a76100a236600461063a565b610171565b005b6100a76100b736600461066e565b6101f5565b6100a7610305565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b6100a76101113660046106a5565b610318565b6101296101243660046106d3565b61038c565b6040519081526020016100fa565b6100a761014536600461063a565b61041c565b6101295f8051602061095783398151915281565b6100a761016c366004610722565b61045f565b5f80516020610957833981519152805460405163467ef06f60e01b815263ffffffff841660048201526001600160a01b039091169063467ef06f906024015b6020604051808303815f875af11580156101cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f0919061073d565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561023a5750825b90505f8267ffffffffffffffff1660011480156102565750303b155b905081158015610264575080155b156102825760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102ac57845460ff60401b1916600160401b1785555b6102b687876104a1565b83156102fc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61030d6104bf565b6103165f61051a565b565b6103206104bf565b5f5f8051602061095783398151915280546040516325fedc3560e21b8152600481018590529192506001600160a01b0316906397fb70d4906024015f604051808303815f87803b158015610372575f80fd5b505af1158015610384573d5f803e3d5ffd5b505050505050565b5f6103956104bf565b5f805160206109578339815191528054604051634dd4b5c360e11b81526001600160a01b0390911690639ba96b86906103d4908790879060040161088a565b6020604051808303815f875af11580156103f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610414919061073d565b949350505050565b5f805160206109578339815191528054604051631474cbc960e31b815263ffffffff841660048201526001600160a01b039091169063a3a65e48906024016101b0565b6104676104bf565b6001600160a01b03811661049557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61049e8161051a565b50565b6104a961058a565b6104b2826105d3565b6104bb816105e4565b5050565b336104f17f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146103165760405163118cdaa760e01b815233600482015260240161048c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661031657604051631afcd79f60e31b815260040160405180910390fd5b6105db61058a565b61049e8161061a565b6105ec61058a565b5f8051602061095783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61046761058a565b803563ffffffff81168114610635575f80fd5b919050565b5f6020828403121561064a575f80fd5b61065382610622565b9392505050565b6001600160a01b038116811461049e575f80fd5b5f806040838503121561067f575f80fd5b823561068a8161065a565b9150602083013561069a8161065a565b809150509250929050565b5f602082840312156106b5575f80fd5b5035919050565b803567ffffffffffffffff81168114610635575f80fd5b5f80604083850312156106e4575f80fd5b823567ffffffffffffffff8111156106fa575f80fd5b830160a0818603121561070b575f80fd5b9150610719602084016106bc565b90509250929050565b5f60208284031215610732575f80fd5b81356106538161065a565b5f6020828403121561074d575f80fd5b5051919050565b5f808335601e19843603018112610769575f80fd5b830160208101925035905067ffffffffffffffff811115610788575f80fd5b803603821315610796575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235603e198336030181126107d9575f80fd5b90910192915050565b5f6040830163ffffffff6107f584610622565b168452602080840135601e1985360301811261080f575f80fd5b840160208101903567ffffffffffffffff81111561082b575f80fd5b8060051b360382131561083c575f80fd5b6040602088015292839052915f90606087015b8183101561087f5784356108628161065a565b6001600160a01b031681529383019360019290920191830161084f565b979650505050505050565b604081525f6108998485610754565b60a060408501526108ae60e08501828461079d565b9150506108be6020860186610754565b603f19808685030160608701526108d684838561079d565b93506108e4604089016106bc565b925067ffffffffffffffff9150818316608087015261090660608901896107c5565b9250808685030160a087015261091c84846107e2565b935061092b60808901896107c5565b9250808685030160c08701525061094283836107e2565b93508086166020860152505050939250505056fe81773fca73a14ca21edf1cadc6ec0b26d6a44966f6e97607e90422658d423500a2646970667358221220019e973e2faa0088dbb15d77bd25f1526c561032cc773245d45c583eb374607b64736f6c63430008190033", } -// PoAValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use PoAValidatorManagerMetaData.ABI instead. -var PoAValidatorManagerABI = PoAValidatorManagerMetaData.ABI +// PoASecurityModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use PoASecurityModuleMetaData.ABI instead. +var PoASecurityModuleABI = PoASecurityModuleMetaData.ABI -// PoAValidatorManagerBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use PoAValidatorManagerMetaData.Bin instead. -var PoAValidatorManagerBin = PoAValidatorManagerMetaData.Bin +// PoASecurityModuleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PoASecurityModuleMetaData.Bin instead. +var PoASecurityModuleBin = PoASecurityModuleMetaData.Bin -// DeployPoAValidatorManager deploys a new Ethereum contract, binding an instance of PoAValidatorManager to it. -func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoAValidatorManager, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() +// DeployPoASecurityModule deploys a new Ethereum contract, binding an instance of PoASecurityModule to it. +func DeployPoASecurityModule(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *PoASecurityModule, error) { + parsed, err := PoASecurityModuleMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -94,111 +94,111 @@ func DeployPoAValidatorManager(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoAValidatorManagerBin), backend, init) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PoASecurityModuleBin), backend, init) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil + return address, tx, &PoASecurityModule{PoASecurityModuleCaller: PoASecurityModuleCaller{contract: contract}, PoASecurityModuleTransactor: PoASecurityModuleTransactor{contract: contract}, PoASecurityModuleFilterer: PoASecurityModuleFilterer{contract: contract}}, nil } -// PoAValidatorManager is an auto generated Go binding around an Ethereum contract. -type PoAValidatorManager struct { - PoAValidatorManagerCaller // Read-only binding to the contract - PoAValidatorManagerTransactor // Write-only binding to the contract - PoAValidatorManagerFilterer // Log filterer for contract events +// PoASecurityModule is an auto generated Go binding around an Ethereum contract. +type PoASecurityModule struct { + PoASecurityModuleCaller // Read-only binding to the contract + PoASecurityModuleTransactor // Write-only binding to the contract + PoASecurityModuleFilterer // Log filterer for contract events } -// PoAValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCaller struct { +// PoASecurityModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type PoASecurityModuleCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactor struct { +// PoASecurityModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PoASecurityModuleTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PoAValidatorManagerFilterer struct { +// PoASecurityModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PoASecurityModuleFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// PoAValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// PoASecurityModuleSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type PoAValidatorManagerSession struct { - Contract *PoAValidatorManager // 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 +type PoASecurityModuleSession struct { + Contract *PoASecurityModule // 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 } -// PoAValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// PoASecurityModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type PoAValidatorManagerCallerSession struct { - Contract *PoAValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type PoASecurityModuleCallerSession struct { + Contract *PoASecurityModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// PoAValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// PoASecurityModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type PoAValidatorManagerTransactorSession struct { - Contract *PoAValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type PoASecurityModuleTransactorSession struct { + Contract *PoASecurityModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// PoAValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type PoAValidatorManagerRaw struct { - Contract *PoAValidatorManager // Generic contract binding to access the raw methods on +// PoASecurityModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type PoASecurityModuleRaw struct { + Contract *PoASecurityModule // Generic contract binding to access the raw methods on } -// PoAValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PoAValidatorManagerCallerRaw struct { - Contract *PoAValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +// PoASecurityModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PoASecurityModuleCallerRaw struct { + Contract *PoASecurityModuleCaller // Generic read-only contract binding to access the raw methods on } -// PoAValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PoAValidatorManagerTransactorRaw struct { - Contract *PoAValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +// PoASecurityModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PoASecurityModuleTransactorRaw struct { + Contract *PoASecurityModuleTransactor // Generic write-only contract binding to access the raw methods on } -// NewPoAValidatorManager creates a new instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManager(address common.Address, backend bind.ContractBackend) (*PoAValidatorManager, error) { - contract, err := bindPoAValidatorManager(address, backend, backend, backend) +// NewPoASecurityModule creates a new instance of PoASecurityModule, bound to a specific deployed contract. +func NewPoASecurityModule(address common.Address, backend bind.ContractBackend) (*PoASecurityModule, error) { + contract, err := bindPoASecurityModule(address, backend, backend, backend) if err != nil { return nil, err } - return &PoAValidatorManager{PoAValidatorManagerCaller: PoAValidatorManagerCaller{contract: contract}, PoAValidatorManagerTransactor: PoAValidatorManagerTransactor{contract: contract}, PoAValidatorManagerFilterer: PoAValidatorManagerFilterer{contract: contract}}, nil + return &PoASecurityModule{PoASecurityModuleCaller: PoASecurityModuleCaller{contract: contract}, PoASecurityModuleTransactor: PoASecurityModuleTransactor{contract: contract}, PoASecurityModuleFilterer: PoASecurityModuleFilterer{contract: contract}}, nil } -// NewPoAValidatorManagerCaller creates a new read-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*PoAValidatorManagerCaller, error) { - contract, err := bindPoAValidatorManager(address, caller, nil, nil) +// NewPoASecurityModuleCaller creates a new read-only instance of PoASecurityModule, bound to a specific deployed contract. +func NewPoASecurityModuleCaller(address common.Address, caller bind.ContractCaller) (*PoASecurityModuleCaller, error) { + contract, err := bindPoASecurityModule(address, caller, nil, nil) if err != nil { return nil, err } - return &PoAValidatorManagerCaller{contract: contract}, nil + return &PoASecurityModuleCaller{contract: contract}, nil } -// NewPoAValidatorManagerTransactor creates a new write-only instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*PoAValidatorManagerTransactor, error) { - contract, err := bindPoAValidatorManager(address, nil, transactor, nil) +// NewPoASecurityModuleTransactor creates a new write-only instance of PoASecurityModule, bound to a specific deployed contract. +func NewPoASecurityModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*PoASecurityModuleTransactor, error) { + contract, err := bindPoASecurityModule(address, nil, transactor, nil) if err != nil { return nil, err } - return &PoAValidatorManagerTransactor{contract: contract}, nil + return &PoASecurityModuleTransactor{contract: contract}, nil } -// NewPoAValidatorManagerFilterer creates a new log filterer instance of PoAValidatorManager, bound to a specific deployed contract. -func NewPoAValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*PoAValidatorManagerFilterer, error) { - contract, err := bindPoAValidatorManager(address, nil, nil, filterer) +// NewPoASecurityModuleFilterer creates a new log filterer instance of PoASecurityModule, bound to a specific deployed contract. +func NewPoASecurityModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*PoASecurityModuleFilterer, error) { + contract, err := bindPoASecurityModule(address, nil, nil, filterer) if err != nil { return nil, err } - return &PoAValidatorManagerFilterer{contract: contract}, nil + return &PoASecurityModuleFilterer{contract: contract}, nil } -// bindPoAValidatorManager binds a generic wrapper to an already deployed contract. -func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PoAValidatorManagerMetaData.GetAbi() +// bindPoASecurityModule binds a generic wrapper to an already deployed contract. +func bindPoASecurityModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PoASecurityModuleMetaData.GetAbi() if err != nil { return nil, err } @@ -209,46 +209,46 @@ func bindPoAValidatorManager(address common.Address, caller bind.ContractCaller, // 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 (_PoAValidatorManager *PoAValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.PoAValidatorManagerCaller.contract.Call(opts, result, method, params...) +func (_PoASecurityModule *PoASecurityModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoASecurityModule.Contract.PoASecurityModuleCaller.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 (_PoAValidatorManager *PoAValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transfer(opts) +func (_PoASecurityModule *PoASecurityModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoASecurityModule.Contract.PoASecurityModuleTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.PoAValidatorManagerTransactor.contract.Transact(opts, method, params...) +func (_PoASecurityModule *PoASecurityModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoASecurityModule.Contract.PoASecurityModuleTransactor.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 (_PoAValidatorManager *PoAValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _PoAValidatorManager.Contract.contract.Call(opts, result, method, params...) +func (_PoASecurityModule *PoASecurityModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PoASecurityModule.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 (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transfer(opts) +func (_PoASecurityModule *PoASecurityModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoASecurityModule.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_PoAValidatorManager *PoAValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.contract.Transact(opts, method, params...) +func (_PoASecurityModule *PoASecurityModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PoASecurityModule.Contract.contract.Transact(opts, method, params...) } // POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // // Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) POAVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { +func (_PoASecurityModule *PoASecurityModuleCaller) POAVALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "POA_VALIDATOR_MANAGER_STORAGE_LOCATION") + err := _PoASecurityModule.contract.Call(opts, &out, "POA_VALIDATOR_MANAGER_STORAGE_LOCATION") if err != nil { return *new([32]byte), err @@ -263,23 +263,23 @@ func (_PoAValidatorManager *PoAValidatorManagerCaller) POAVALIDATORMANAGERSTORAG // POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // // Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +func (_PoASecurityModule *PoASecurityModuleSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoASecurityModule.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoASecurityModule.CallOpts) } // POAVALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbd5607df. // // Solidity: function POA_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { - return _PoAValidatorManager.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoAValidatorManager.CallOpts) +func (_PoASecurityModule *PoASecurityModuleCallerSession) POAVALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _PoASecurityModule.Contract.POAVALIDATORMANAGERSTORAGELOCATION(&_PoASecurityModule.CallOpts) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +func (_PoASecurityModule *PoASecurityModuleCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _PoAValidatorManager.contract.Call(opts, &out, "owner") + err := _PoASecurityModule.contract.Call(opts, &out, "owner") if err != nil { return *new(common.Address), err @@ -294,167 +294,167 @@ func (_PoAValidatorManager *PoAValidatorManagerCaller) Owner(opts *bind.CallOpts // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +func (_PoASecurityModule *PoASecurityModuleSession) Owner() (common.Address, error) { + return _PoASecurityModule.Contract.Owner(&_PoASecurityModule.CallOpts) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Address, error) { - return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) +func (_PoASecurityModule *PoASecurityModuleCallerSession) Owner() (common.Address, error) { + return _PoASecurityModule.Contract.Owner(&_PoASecurityModule.CallOpts) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +func (_PoASecurityModule *PoASecurityModuleTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "completeEndValidation", messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +func (_PoASecurityModule *PoASecurityModuleSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.Contract.CompleteEndValidation(&_PoASecurityModule.TransactOpts, messageIndex) } // CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. // // Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.Contract.CompleteEndValidation(&_PoASecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +func (_PoASecurityModule *PoASecurityModuleTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "completeValidatorRegistration", messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +func (_PoASecurityModule *PoASecurityModuleSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.Contract.CompleteValidatorRegistration(&_PoASecurityModule.TransactOpts, messageIndex) } // CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. // // Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _PoASecurityModule.Contract.CompleteValidatorRegistration(&_PoASecurityModule.TransactOpts, messageIndex) } // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // // Solidity: function initialize(address initialOwner, address validatorManager) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initialize", initialOwner, validatorManager) +func (_PoASecurityModule *PoASecurityModuleTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "initialize", initialOwner, validatorManager) } // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // // Solidity: function initialize(address initialOwner, address validatorManager) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner, validatorManager) +func (_PoASecurityModule *PoASecurityModuleSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoASecurityModule.Contract.Initialize(&_PoASecurityModule.TransactOpts, initialOwner, validatorManager) } // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // // Solidity: function initialize(address initialOwner, address validatorManager) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner, validatorManager) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) Initialize(initialOwner common.Address, validatorManager common.Address) (*types.Transaction, error) { + return _PoASecurityModule.Contract.Initialize(&_PoASecurityModule.TransactOpts, initialOwner, validatorManager) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // // Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID) +func (_PoASecurityModule *PoASecurityModuleTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "initializeEndValidation", validationID) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // // Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +func (_PoASecurityModule *PoASecurityModuleSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoASecurityModule.Contract.InitializeEndValidation(&_PoASecurityModule.TransactOpts, validationID) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. // // Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoASecurityModule.Contract.InitializeEndValidation(&_PoASecurityModule.TransactOpts, validationID) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) +func (_PoASecurityModule *PoASecurityModuleTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "initializeValidatorRegistration", registrationInput, weight) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +func (_PoASecurityModule *PoASecurityModuleSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoASecurityModule.Contract.InitializeValidatorRegistration(&_PoASecurityModule.TransactOpts, registrationInput, weight) } // InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. // // Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) registrationInput, uint64 weight) returns(bytes32 validationID) -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, registrationInput, weight) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) InitializeValidatorRegistration(registrationInput ValidatorRegistrationInput, weight uint64) (*types.Transaction, error) { + return _PoASecurityModule.Contract.InitializeValidatorRegistration(&_PoASecurityModule.TransactOpts, registrationInput, weight) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "renounceOwnership") +func (_PoASecurityModule *PoASecurityModuleTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "renounceOwnership") } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +func (_PoASecurityModule *PoASecurityModuleSession) RenounceOwnership() (*types.Transaction, error) { + return _PoASecurityModule.Contract.RenounceOwnership(&_PoASecurityModule.TransactOpts) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _PoAValidatorManager.Contract.RenounceOwnership(&_PoAValidatorManager.TransactOpts) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _PoASecurityModule.Contract.RenounceOwnership(&_PoASecurityModule.TransactOpts) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "transferOwnership", newOwner) +func (_PoASecurityModule *PoASecurityModuleTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _PoASecurityModule.contract.Transact(opts, "transferOwnership", newOwner) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +func (_PoASecurityModule *PoASecurityModuleSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoASecurityModule.Contract.TransferOwnership(&_PoASecurityModule.TransactOpts, newOwner) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.TransferOwnership(&_PoAValidatorManager.TransactOpts, newOwner) +func (_PoASecurityModule *PoASecurityModuleTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _PoASecurityModule.Contract.TransferOwnership(&_PoASecurityModule.TransactOpts, newOwner) } -// PoAValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitializedIterator struct { - Event *PoAValidatorManagerInitialized // Event containing the contract specifics and raw log +// PoASecurityModuleInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PoASecurityModule contract. +type PoASecurityModuleInitializedIterator struct { + Event *PoASecurityModuleInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -468,7 +468,7 @@ type PoAValidatorManagerInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerInitializedIterator) Next() bool { +func (it *PoASecurityModuleInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -477,7 +477,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(PoASecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -492,7 +492,7 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerInitialized) + it.Event = new(PoASecurityModuleInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -508,19 +508,19 @@ func (it *PoAValidatorManagerInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerInitializedIterator) Error() error { +func (it *PoASecurityModuleInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerInitializedIterator) Close() error { +func (it *PoASecurityModuleInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerInitialized represents a Initialized event raised by the PoAValidatorManager contract. -type PoAValidatorManagerInitialized struct { +// PoASecurityModuleInitialized represents a Initialized event raised by the PoASecurityModule contract. +type PoASecurityModuleInitialized struct { Version uint64 Raw types.Log // Blockchain specific contextual infos } @@ -528,21 +528,21 @@ type PoAValidatorManagerInitialized struct { // FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoAValidatorManagerInitializedIterator, error) { +func (_PoASecurityModule *PoASecurityModuleFilterer) FilterInitialized(opts *bind.FilterOpts) (*PoASecurityModuleInitializedIterator, error) { - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _PoASecurityModule.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &PoAValidatorManagerInitializedIterator{contract: _PoAValidatorManager.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &PoASecurityModuleInitializedIterator{contract: _PoASecurityModule.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 (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialized) (event.Subscription, error) { +func (_PoASecurityModule *PoASecurityModuleFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PoASecurityModuleInitialized) (event.Subscription, error) { - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _PoASecurityModule.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -552,8 +552,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(PoASecurityModuleInitialized) + if err := _PoASecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -577,18 +577,18 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialized(opts * // ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // // Solidity: event Initialized(uint64 version) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialized(log types.Log) (*PoAValidatorManagerInitialized, error) { - event := new(PoAValidatorManagerInitialized) - if err := _PoAValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { +func (_PoASecurityModule *PoASecurityModuleFilterer) ParseInitialized(log types.Log) (*PoASecurityModuleInitialized, error) { + event := new(PoASecurityModuleInitialized) + if err := _PoASecurityModule.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// PoAValidatorManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferredIterator struct { - Event *PoAValidatorManagerOwnershipTransferred // Event containing the contract specifics and raw log +// PoASecurityModuleOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PoASecurityModule contract. +type PoASecurityModuleOwnershipTransferredIterator struct { + Event *PoASecurityModuleOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -602,7 +602,7 @@ type PoAValidatorManagerOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { +func (it *PoASecurityModuleOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -611,7 +611,7 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) + it.Event = new(PoASecurityModuleOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -626,7 +626,7 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(PoAValidatorManagerOwnershipTransferred) + it.Event = new(PoASecurityModuleOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -642,19 +642,19 @@ func (it *PoAValidatorManagerOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Error() error { +func (it *PoASecurityModuleOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { +func (it *PoASecurityModuleOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// PoAValidatorManagerOwnershipTransferred represents a OwnershipTransferred event raised by the PoAValidatorManager contract. -type PoAValidatorManagerOwnershipTransferred struct { +// PoASecurityModuleOwnershipTransferred represents a OwnershipTransferred event raised by the PoASecurityModule contract. +type PoASecurityModuleOwnershipTransferred struct { PreviousOwner common.Address NewOwner common.Address Raw types.Log // Blockchain specific contextual infos @@ -663,7 +663,7 @@ type PoAValidatorManagerOwnershipTransferred struct { // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoAValidatorManagerOwnershipTransferredIterator, error) { +func (_PoASecurityModule *PoASecurityModuleFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PoASecurityModuleOwnershipTransferredIterator, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -674,17 +674,17 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterOwnershipTransfer newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _PoAValidatorManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _PoASecurityModule.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &PoAValidatorManagerOwnershipTransferredIterator{contract: _PoAValidatorManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &PoASecurityModuleOwnershipTransferredIterator{contract: _PoASecurityModule.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 (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +func (_PoASecurityModule *PoASecurityModuleFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PoASecurityModuleOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -695,7 +695,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferr newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _PoAValidatorManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _PoASecurityModule.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -705,8 +705,8 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(PoASecurityModuleOwnershipTransferred) + if err := _PoASecurityModule.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -730,9 +730,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchOwnershipTransferr // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseOwnershipTransferred(log types.Log) (*PoAValidatorManagerOwnershipTransferred, error) { - event := new(PoAValidatorManagerOwnershipTransferred) - if err := _PoAValidatorManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +func (_PoASecurityModule *PoASecurityModuleFilterer) ParseOwnershipTransferred(log types.Log) (*PoASecurityModuleOwnershipTransferred, error) { + event := new(PoASecurityModuleOwnershipTransferred) + if err := _PoASecurityModule.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log diff --git a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule/IPoSSecurityModule.go similarity index 55% rename from abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go rename to abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule/IPoSSecurityModule.go index 7e79a849f..78d3e3924 100644 --- a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule/IPoSSecurityModule.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package iposvalidatormanager +package ipossecuritymodule import ( "errors" @@ -29,113 +29,113 @@ var ( _ = abi.ConvertType ) -// IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. -var IPoSValidatorManagerMetaData = &bind.MetaData{ +// IPoSSecurityModuleMetaData contains all meta data concerning the IPoSSecurityModule contract. +var IPoSSecurityModuleMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } -// IPoSValidatorManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoSValidatorManagerMetaData.ABI instead. -var IPoSValidatorManagerABI = IPoSValidatorManagerMetaData.ABI +// IPoSSecurityModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoSSecurityModuleMetaData.ABI instead. +var IPoSSecurityModuleABI = IPoSSecurityModuleMetaData.ABI -// IPoSValidatorManager is an auto generated Go binding around an Ethereum contract. -type IPoSValidatorManager struct { - IPoSValidatorManagerCaller // Read-only binding to the contract - IPoSValidatorManagerTransactor // Write-only binding to the contract - IPoSValidatorManagerFilterer // Log filterer for contract events +// IPoSSecurityModule is an auto generated Go binding around an Ethereum contract. +type IPoSSecurityModule struct { + IPoSSecurityModuleCaller // Read-only binding to the contract + IPoSSecurityModuleTransactor // Write-only binding to the contract + IPoSSecurityModuleFilterer // Log filterer for contract events } -// IPoSValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCaller struct { +// IPoSSecurityModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoSSecurityModuleCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IPoSValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactor struct { +// IPoSSecurityModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoSSecurityModuleTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IPoSValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoSValidatorManagerFilterer struct { +// IPoSSecurityModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoSSecurityModuleFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IPoSValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// IPoSSecurityModuleSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type IPoSValidatorManagerSession struct { - Contract *IPoSValidatorManager // 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 +type IPoSSecurityModuleSession struct { + Contract *IPoSSecurityModule // 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 } -// IPoSValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// IPoSSecurityModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type IPoSValidatorManagerCallerSession struct { - Contract *IPoSValidatorManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type IPoSSecurityModuleCallerSession struct { + Contract *IPoSSecurityModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// IPoSValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// IPoSSecurityModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type IPoSValidatorManagerTransactorSession struct { - Contract *IPoSValidatorManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type IPoSSecurityModuleTransactorSession struct { + Contract *IPoSSecurityModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// IPoSValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoSValidatorManagerRaw struct { - Contract *IPoSValidatorManager // Generic contract binding to access the raw methods on +// IPoSSecurityModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoSSecurityModuleRaw struct { + Contract *IPoSSecurityModule // Generic contract binding to access the raw methods on } -// IPoSValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoSValidatorManagerCallerRaw struct { - Contract *IPoSValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +// IPoSSecurityModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoSSecurityModuleCallerRaw struct { + Contract *IPoSSecurityModuleCaller // Generic read-only contract binding to access the raw methods on } -// IPoSValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoSValidatorManagerTransactorRaw struct { - Contract *IPoSValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +// IPoSSecurityModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoSSecurityModuleTransactorRaw struct { + Contract *IPoSSecurityModuleTransactor // Generic write-only contract binding to access the raw methods on } -// NewIPoSValidatorManager creates a new instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManager(address common.Address, backend bind.ContractBackend) (*IPoSValidatorManager, error) { - contract, err := bindIPoSValidatorManager(address, backend, backend, backend) +// NewIPoSSecurityModule creates a new instance of IPoSSecurityModule, bound to a specific deployed contract. +func NewIPoSSecurityModule(address common.Address, backend bind.ContractBackend) (*IPoSSecurityModule, error) { + contract, err := bindIPoSSecurityModule(address, backend, backend, backend) if err != nil { return nil, err } - return &IPoSValidatorManager{IPoSValidatorManagerCaller: IPoSValidatorManagerCaller{contract: contract}, IPoSValidatorManagerTransactor: IPoSValidatorManagerTransactor{contract: contract}, IPoSValidatorManagerFilterer: IPoSValidatorManagerFilterer{contract: contract}}, nil + return &IPoSSecurityModule{IPoSSecurityModuleCaller: IPoSSecurityModuleCaller{contract: contract}, IPoSSecurityModuleTransactor: IPoSSecurityModuleTransactor{contract: contract}, IPoSSecurityModuleFilterer: IPoSSecurityModuleFilterer{contract: contract}}, nil } -// NewIPoSValidatorManagerCaller creates a new read-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*IPoSValidatorManagerCaller, error) { - contract, err := bindIPoSValidatorManager(address, caller, nil, nil) +// NewIPoSSecurityModuleCaller creates a new read-only instance of IPoSSecurityModule, bound to a specific deployed contract. +func NewIPoSSecurityModuleCaller(address common.Address, caller bind.ContractCaller) (*IPoSSecurityModuleCaller, error) { + contract, err := bindIPoSSecurityModule(address, caller, nil, nil) if err != nil { return nil, err } - return &IPoSValidatorManagerCaller{contract: contract}, nil + return &IPoSSecurityModuleCaller{contract: contract}, nil } -// NewIPoSValidatorManagerTransactor creates a new write-only instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSValidatorManagerTransactor, error) { - contract, err := bindIPoSValidatorManager(address, nil, transactor, nil) +// NewIPoSSecurityModuleTransactor creates a new write-only instance of IPoSSecurityModule, bound to a specific deployed contract. +func NewIPoSSecurityModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoSSecurityModuleTransactor, error) { + contract, err := bindIPoSSecurityModule(address, nil, transactor, nil) if err != nil { return nil, err } - return &IPoSValidatorManagerTransactor{contract: contract}, nil + return &IPoSSecurityModuleTransactor{contract: contract}, nil } -// NewIPoSValidatorManagerFilterer creates a new log filterer instance of IPoSValidatorManager, bound to a specific deployed contract. -func NewIPoSValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSValidatorManagerFilterer, error) { - contract, err := bindIPoSValidatorManager(address, nil, nil, filterer) +// NewIPoSSecurityModuleFilterer creates a new log filterer instance of IPoSSecurityModule, bound to a specific deployed contract. +func NewIPoSSecurityModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoSSecurityModuleFilterer, error) { + contract, err := bindIPoSSecurityModule(address, nil, nil, filterer) if err != nil { return nil, err } - return &IPoSValidatorManagerFilterer{contract: contract}, nil + return &IPoSSecurityModuleFilterer{contract: contract}, nil } -// bindIPoSValidatorManager binds a generic wrapper to an already deployed contract. -func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoSValidatorManagerMetaData.GetAbi() +// bindIPoSSecurityModule binds a generic wrapper to an already deployed contract. +func bindIPoSSecurityModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoSSecurityModuleMetaData.GetAbi() if err != nil { return nil, err } @@ -146,358 +146,358 @@ func bindIPoSValidatorManager(address common.Address, caller bind.ContractCaller // 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 (_IPoSValidatorManager *IPoSValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerCaller.contract.Call(opts, result, method, params...) +func (_IPoSSecurityModule *IPoSSecurityModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSSecurityModule.Contract.IPoSSecurityModuleCaller.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 (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transfer(opts) +func (_IPoSSecurityModule *IPoSSecurityModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.IPoSSecurityModuleTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.IPoSValidatorManagerTransactor.contract.Transact(opts, method, params...) +func (_IPoSSecurityModule *IPoSSecurityModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.IPoSSecurityModuleTransactor.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 (_IPoSValidatorManager *IPoSValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoSValidatorManager.Contract.contract.Call(opts, result, method, params...) +func (_IPoSSecurityModule *IPoSSecurityModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoSSecurityModule.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 (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transfer(opts) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.contract.Transact(opts, method, params...) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.contract.Transact(opts, method, params...) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ChangeDelegatorRewardRecipient(opts *bind.TransactOpts, delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "changeDelegatorRewardRecipient", delegationID, recipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ChangeDelegatorRewardRecipient(&_IPoSValidatorManager.TransactOpts, delegationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ChangeDelegatorRewardRecipient(&_IPoSSecurityModule.TransactOpts, delegationID, recipient) } // ChangeDelegatorRewardRecipient is a paid mutator transaction binding the contract method 0xfb8b11dd. // // Solidity: function changeDelegatorRewardRecipient(bytes32 delegationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ChangeDelegatorRewardRecipient(&_IPoSValidatorManager.TransactOpts, delegationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ChangeDelegatorRewardRecipient(delegationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ChangeDelegatorRewardRecipient(&_IPoSSecurityModule.TransactOpts, delegationID, recipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ChangeValidatorRewardRecipient(opts *bind.TransactOpts, validationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "changeValidatorRewardRecipient", validationID, recipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ChangeValidatorRewardRecipient(validationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ChangeValidatorRewardRecipient(&_IPoSValidatorManager.TransactOpts, validationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ChangeValidatorRewardRecipient(validationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ChangeValidatorRewardRecipient(&_IPoSSecurityModule.TransactOpts, validationID, recipient) } // ChangeValidatorRewardRecipient is a paid mutator transaction binding the contract method 0x8ef34c98. // // Solidity: function changeValidatorRewardRecipient(bytes32 validationID, address recipient) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, recipient common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ChangeValidatorRewardRecipient(&_IPoSValidatorManager.TransactOpts, validationID, recipient) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ChangeValidatorRewardRecipient(validationID [32]byte, recipient common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ChangeValidatorRewardRecipient(&_IPoSSecurityModule.TransactOpts, validationID, recipient) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "claimDelegationFees", validationID) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ClaimDelegationFees(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "claimDelegationFees", validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ClaimDelegationFees(&_IPoSSecurityModule.TransactOpts, validationID) } // ClaimDelegationFees is a paid mutator transaction binding the contract method 0x93e24598. // // Solidity: function claimDelegationFees(bytes32 validationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.TransactOpts, validationID) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ClaimDelegationFees(validationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ClaimDelegationFees(&_IPoSSecurityModule.TransactOpts, validationID) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) CompleteDelegatorRegistration(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "completeDelegatorRegistration", delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.CompleteDelegatorRegistration(&_IPoSSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteDelegatorRegistration is a paid mutator transaction binding the contract method 0x60ad7784. // // Solidity: function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteDelegatorRegistration(&_IPoSValidatorManager.TransactOpts, delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) CompleteDelegatorRegistration(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.CompleteDelegatorRegistration(&_IPoSSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) CompleteEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "completeEndDelegation", delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.CompleteEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, messageIndex) } // CompleteEndDelegation is a paid mutator transaction binding the contract method 0x80dd672f. // // Solidity: function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.CompleteEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) CompleteEndDelegation(delegationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.CompleteEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ForceInitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "forceInitializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ForceInitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ForceInitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "forceInitializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, recipientAddress) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation0(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndDelegation0(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) } // ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. // // Solidity: function forceInitializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndDelegation0(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ForceInitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndDelegation0(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ForceInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "forceInitializeEndValidation", validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndValidation(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ForceInitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndValidation(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ForceInitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "forceInitializeEndValidation0", validationID, includeUptimeProof, messageIndex, recipientAddress) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation0(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndValidation0(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) } // ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. // // Solidity: function forceInitializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ForceInitializeEndValidation0(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ForceInitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ForceInitializeEndValidation0(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) InitializeEndDelegation(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "initializeEndDelegation", delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation is a paid mutator transaction binding the contract method 0x0118acc4. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) InitializeEndDelegation(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndDelegation(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) InitializeEndDelegation0(opts *bind.TransactOpts, delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "initializeEndDelegation0", delegationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation0(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndDelegation0(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x9ae06447. // // Solidity: function initializeEndDelegation(bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndDelegation0(&_IPoSValidatorManager.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) InitializeEndDelegation0(delegationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndDelegation0(&_IPoSSecurityModule.TransactOpts, delegationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "initializeEndValidation", validationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndValidation(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndValidation is a paid mutator transaction binding the contract method 0x5dd6a6cb. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex, address recipientAddress) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) InitializeEndValidation(validationID [32]byte, includeUptimeProof bool, messageIndex uint32, recipientAddress common.Address) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndValidation(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex, recipientAddress) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) InitializeEndValidation0(opts *bind.TransactOpts, validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "initializeEndValidation0", validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation0(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndValidation0(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // InitializeEndValidation0 is a paid mutator transaction binding the contract method 0x76f78621. // // Solidity: function initializeEndValidation(bytes32 validationID, bool includeUptimeProof, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.InitializeEndValidation0(&_IPoSValidatorManager.TransactOpts, validationID, includeUptimeProof, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) InitializeEndValidation0(validationID [32]byte, includeUptimeProof bool, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.InitializeEndValidation0(&_IPoSSecurityModule.TransactOpts, validationID, includeUptimeProof, messageIndex) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "resendUpdateDelegation", delegationID) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "resendUpdateDelegation", delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ResendUpdateDelegation(&_IPoSSecurityModule.TransactOpts, delegationID) } // ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // // Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.ResendUpdateDelegation(&_IPoSValidatorManager.TransactOpts, delegationID) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.ResendUpdateDelegation(&_IPoSSecurityModule.TransactOpts, delegationID) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactor) SubmitUptimeProof(opts *bind.TransactOpts, validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.contract.Transact(opts, "submitUptimeProof", validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.SubmitUptimeProof(&_IPoSSecurityModule.TransactOpts, validationID, messageIndex) } // SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // // Solidity: function submitUptimeProof(bytes32 validationID, uint32 messageIndex) returns() -func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { - return _IPoSValidatorManager.Contract.SubmitUptimeProof(&_IPoSValidatorManager.TransactOpts, validationID, messageIndex) +func (_IPoSSecurityModule *IPoSSecurityModuleTransactorSession) SubmitUptimeProof(validationID [32]byte, messageIndex uint32) (*types.Transaction, error) { + return _IPoSSecurityModule.Contract.SubmitUptimeProof(&_IPoSSecurityModule.TransactOpts, validationID, messageIndex) } -// IPoSValidatorManagerDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEndedIterator struct { - Event *IPoSValidatorManagerDelegationEnded // Event containing the contract specifics and raw log +// IPoSSecurityModuleDelegationEndedIterator is returned from FilterDelegationEnded and is used to iterate over the raw logs and unpacked data for DelegationEnded events raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegationEndedIterator struct { + Event *IPoSSecurityModuleDelegationEnded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -511,7 +511,7 @@ type IPoSValidatorManagerDelegationEndedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { +func (it *IPoSSecurityModuleDelegationEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -520,7 +520,7 @@ func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) + it.Event = new(IPoSSecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -535,7 +535,7 @@ func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegationEnded) + it.Event = new(IPoSSecurityModuleDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -551,19 +551,19 @@ func (it *IPoSValidatorManagerDelegationEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegationEndedIterator) Error() error { +func (it *IPoSSecurityModuleDelegationEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerDelegationEndedIterator) Close() error { +func (it *IPoSSecurityModuleDelegationEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerDelegationEnded represents a DelegationEnded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegationEnded struct { +// IPoSSecurityModuleDelegationEnded represents a DelegationEnded event raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegationEnded struct { DelegationID [32]byte ValidationID [32]byte Rewards *big.Int @@ -574,7 +574,7 @@ type IPoSValidatorManagerDelegationEnded struct { // FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegationEndedIterator, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSSecurityModuleDelegationEndedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -585,17 +585,17 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegationEnded validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &IPoSValidatorManagerDelegationEndedIterator{contract: _IPoSValidatorManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil + return &IPoSSecurityModuleDelegationEndedIterator{contract: _IPoSSecurityModule.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } // WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *IPoSSecurityModuleDelegationEnded, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -606,7 +606,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded( validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -616,8 +616,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { + event := new(IPoSSecurityModuleDelegationEnded) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -641,18 +641,18 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegationEnded( // ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // // Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 rewards, uint256 fees) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegationEnded(log types.Log) (*IPoSValidatorManagerDelegationEnded, error) { - event := new(IPoSValidatorManagerDelegationEnded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) ParseDelegationEnded(log types.Log) (*IPoSSecurityModuleDelegationEnded, error) { + event := new(IPoSSecurityModuleDelegationEnded) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoSValidatorManagerDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAddedIterator struct { - Event *IPoSValidatorManagerDelegatorAdded // Event containing the contract specifics and raw log +// IPoSSecurityModuleDelegatorAddedIterator is returned from FilterDelegatorAdded and is used to iterate over the raw logs and unpacked data for DelegatorAdded events raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorAddedIterator struct { + Event *IPoSSecurityModuleDelegatorAdded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -666,7 +666,7 @@ type IPoSValidatorManagerDelegatorAddedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { +func (it *IPoSSecurityModuleDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -675,7 +675,7 @@ func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) + it.Event = new(IPoSSecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -690,7 +690,7 @@ func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorAdded) + it.Event = new(IPoSSecurityModuleDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -706,19 +706,19 @@ func (it *IPoSValidatorManagerDelegatorAddedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Error() error { +func (it *IPoSSecurityModuleDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerDelegatorAddedIterator) Close() error { +func (it *IPoSSecurityModuleDelegatorAddedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerDelegatorAdded represents a DelegatorAdded event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorAdded struct { +// IPoSSecurityModuleDelegatorAdded represents a DelegatorAdded event raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorAdded struct { DelegationID [32]byte ValidationID [32]byte DelegatorAddress common.Address @@ -731,7 +731,7 @@ type IPoSValidatorManagerDelegatorAdded struct { // FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSValidatorManagerDelegatorAddedIterator, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*IPoSSecurityModuleDelegatorAddedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -746,17 +746,17 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorAdded( delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _IPoSSecurityModule.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &IPoSValidatorManagerDelegatorAddedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil + return &IPoSSecurityModuleDelegatorAddedIterator{contract: _IPoSSecurityModule.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } // WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) WatchDelegatorAdded(opts *bind.WatchOpts, sink chan<- *IPoSSecurityModuleDelegatorAdded, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -771,7 +771,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(o delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) + logs, sub, err := _IPoSSecurityModule.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -781,8 +781,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { + event := new(IPoSSecurityModuleDelegatorAdded) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -806,18 +806,18 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorAdded(o // ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // // Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorAdded(log types.Log) (*IPoSValidatorManagerDelegatorAdded, error) { - event := new(IPoSValidatorManagerDelegatorAdded) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) ParseDelegatorAdded(log types.Log) (*IPoSSecurityModuleDelegatorAdded, error) { + event := new(IPoSSecurityModuleDelegatorAdded) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoSValidatorManagerDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegisteredIterator struct { - Event *IPoSValidatorManagerDelegatorRegistered // Event containing the contract specifics and raw log +// IPoSSecurityModuleDelegatorRegisteredIterator is returned from FilterDelegatorRegistered and is used to iterate over the raw logs and unpacked data for DelegatorRegistered events raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorRegisteredIterator struct { + Event *IPoSSecurityModuleDelegatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -831,7 +831,7 @@ type IPoSValidatorManagerDelegatorRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { +func (it *IPoSSecurityModuleDelegatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -840,7 +840,7 @@ func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) + it.Event = new(IPoSSecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -855,7 +855,7 @@ func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRegistered) + it.Event = new(IPoSSecurityModuleDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -871,19 +871,19 @@ func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Error() error { +func (it *IPoSSecurityModuleDelegatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerDelegatorRegisteredIterator) Close() error { +func (it *IPoSSecurityModuleDelegatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRegistered struct { +// IPoSSecurityModuleDelegatorRegistered represents a DelegatorRegistered event raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorRegistered struct { DelegationID [32]byte ValidationID [32]byte StartTime *big.Int @@ -893,7 +893,7 @@ type IPoSValidatorManagerDelegatorRegistered struct { // FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRegisteredIterator, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) FilterDelegatorRegistered(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSSecurityModuleDelegatorRegisteredIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -904,17 +904,17 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRegist validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &IPoSValidatorManagerDelegatorRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil + return &IPoSSecurityModuleDelegatorRegisteredIterator{contract: _IPoSSecurityModule.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } // WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) WatchDelegatorRegistered(opts *bind.WatchOpts, sink chan<- *IPoSSecurityModuleDelegatorRegistered, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -925,7 +925,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegiste validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -935,8 +935,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegiste select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { + event := new(IPoSSecurityModuleDelegatorRegistered) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return err } event.Raw = log @@ -960,18 +960,18 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRegiste // ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // // Solidity: event DelegatorRegistered(bytes32 indexed delegationID, bytes32 indexed validationID, uint256 startTime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSValidatorManagerDelegatorRegistered, error) { - event := new(IPoSValidatorManagerDelegatorRegistered) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) ParseDelegatorRegistered(log types.Log) (*IPoSSecurityModuleDelegatorRegistered, error) { + event := new(IPoSSecurityModuleDelegatorRegistered) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoSValidatorManagerDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { - Event *IPoSValidatorManagerDelegatorRemovalInitialized // Event containing the contract specifics and raw log +// IPoSSecurityModuleDelegatorRemovalInitializedIterator is returned from FilterDelegatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for DelegatorRemovalInitialized events raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorRemovalInitializedIterator struct { + Event *IPoSSecurityModuleDelegatorRemovalInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -985,7 +985,7 @@ type IPoSValidatorManagerDelegatorRemovalInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { +func (it *IPoSSecurityModuleDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -994,7 +994,7 @@ func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + it.Event = new(IPoSSecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1009,7 +1009,7 @@ func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerDelegatorRemovalInitialized) + it.Event = new(IPoSSecurityModuleDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1025,19 +1025,19 @@ func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Error() error { +func (it *IPoSSecurityModuleDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerDelegatorRemovalInitializedIterator) Close() error { +func (it *IPoSSecurityModuleDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerDelegatorRemovalInitialized struct { +// IPoSSecurityModuleDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleDelegatorRemovalInitialized struct { DelegationID [32]byte ValidationID [32]byte Raw types.Log // Blockchain specific contextual infos @@ -1046,7 +1046,7 @@ type IPoSValidatorManagerDelegatorRemovalInitialized struct { // FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSValidatorManagerDelegatorRemovalInitializedIterator, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*IPoSSecurityModuleDelegatorRemovalInitializedIterator, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1057,17 +1057,17 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterDelegatorRemova validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &IPoSValidatorManagerDelegatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil + return &IPoSSecurityModuleDelegatorRemovalInitializedIterator{contract: _IPoSSecurityModule.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } // WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) WatchDelegatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSSecurityModuleDelegatorRemovalInitialized, delegationID [][32]byte, validationID [][32]byte) (event.Subscription, error) { var delegationIDRule []interface{} for _, delegationIDItem := range delegationID { @@ -1078,7 +1078,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemoval validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -1088,8 +1088,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemoval select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { + event := new(IPoSSecurityModuleDelegatorRemovalInitialized) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -1113,18 +1113,18 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchDelegatorRemoval // ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // // Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerDelegatorRemovalInitialized, error) { - event := new(IPoSValidatorManagerDelegatorRemovalInitialized) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) ParseDelegatorRemovalInitialized(log types.Log) (*IPoSSecurityModuleDelegatorRemovalInitialized, error) { + event := new(IPoSSecurityModuleDelegatorRemovalInitialized) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IPoSValidatorManagerUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdatedIterator struct { - Event *IPoSValidatorManagerUptimeUpdated // Event containing the contract specifics and raw log +// IPoSSecurityModuleUptimeUpdatedIterator is returned from FilterUptimeUpdated and is used to iterate over the raw logs and unpacked data for UptimeUpdated events raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleUptimeUpdatedIterator struct { + Event *IPoSSecurityModuleUptimeUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1138,7 +1138,7 @@ type IPoSValidatorManagerUptimeUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { +func (it *IPoSSecurityModuleUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1147,7 +1147,7 @@ func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) + it.Event = new(IPoSSecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1162,7 +1162,7 @@ func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) + it.Event = new(IPoSSecurityModuleUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1178,19 +1178,19 @@ func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { +func (it *IPoSSecurityModuleUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { +func (it *IPoSSecurityModuleUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdated struct { +// IPoSSecurityModuleUptimeUpdated represents a UptimeUpdated event raised by the IPoSSecurityModule contract. +type IPoSSecurityModuleUptimeUpdated struct { ValidationID [32]byte Uptime uint64 Raw types.Log // Blockchain specific contextual infos @@ -1199,31 +1199,31 @@ type IPoSValidatorManagerUptimeUpdated struct { // FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSSecurityModuleUptimeUpdatedIterator, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &IPoSSecurityModuleUptimeUpdatedIterator{contract: _IPoSSecurityModule.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } // WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSSecurityModuleUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _IPoSSecurityModule.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -1233,8 +1233,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { + event := new(IPoSSecurityModuleUptimeUpdated) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -1258,9 +1258,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(op // ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // // Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseUptimeUpdated(log types.Log) (*IPoSValidatorManagerUptimeUpdated, error) { - event := new(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { +func (_IPoSSecurityModule *IPoSSecurityModuleFilterer) ParseUptimeUpdated(log types.Log) (*IPoSSecurityModuleUptimeUpdated, error) { + event := new(IPoSSecurityModuleUptimeUpdated) + if err := _IPoSSecurityModule.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20SecurityModule.sol similarity index 74% rename from contracts/validator-manager/ERC20TokenStakingManager.sol rename to contracts/validator-manager/ERC20SecurityModule.sol index 3f648449b..b5270fe43 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20SecurityModule.sol @@ -5,9 +5,9 @@ pragma solidity 0.8.25; -import {PoSValidatorManager} from "./PoSValidatorManager.sol"; -import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol"; -import {IERC20TokenStakingManager} from "./interfaces/IERC20TokenStakingManager.sol"; +import {PoSSecurityModule} from "./PoSSecurityModule.sol"; +import {PoSSecurityModuleSettings} from "./interfaces/IPoSSecurityModule.sol"; +import {IERC20SecurityModule} from "./interfaces/IERC20SecurityModule.sol"; import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import {SafeERC20TransferFrom} from "@utilities/SafeERC20TransferFrom.sol"; @@ -17,27 +17,27 @@ import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC import {ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** - * @dev Implementation of the {IERC20TokenStakingManager} interface. + * @dev Implementation of the {IERC20SecurityModule} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -contract ERC20TokenStakingManager is +contract ERC20SecurityModule is Initializable, - PoSValidatorManager, - IERC20TokenStakingManager + PoSSecurityModule, + IERC20SecurityModule { using SafeERC20 for IERC20Mintable; using SafeERC20TransferFrom for IERC20Mintable; // solhint-disable private-vars-leading-underscore - /// @custom:storage-location erc7201:avalanche-icm.storage.ERC20TokenStakingManager - struct ERC20TokenStakingManagerStorage { + /// @custom:storage-location erc7201:avalanche-icm.storage.ERC20SecurityModule + struct ERC20SecurityModuleStorage { IERC20Mintable _token; uint8 _tokenDecimals; } // solhint-enable private-vars-leading-underscore - // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.ERC20TokenStakingManager")) - 1)) & ~bytes32(uint256(0xff)); + // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.ERC20SecurityModule")) - 1)) & ~bytes32(uint256(0xff)); bytes32 public constant ERC20_STAKING_MANAGER_STORAGE_LOCATION = 0x6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00; @@ -47,7 +47,7 @@ contract ERC20TokenStakingManager is function _getERC20StakingManagerStorage() private pure - returns (ERC20TokenStakingManagerStorage storage $) + returns (ERC20SecurityModuleStorage storage $) { // solhint-disable-next-line no-inline-assembly assembly { @@ -68,27 +68,27 @@ contract ERC20TokenStakingManager is * @param token The ERC20 token to be staked */ function initialize( - PoSValidatorManagerSettings calldata settings, + PoSSecurityModuleSettings calldata settings, IERC20Mintable token ) external reinitializer(2) { - __ERC20TokenStakingManager_init(settings, token); + __ERC20SecurityModule_init(settings, token); } // solhint-disable-next-line func-name-mixedcase - function __ERC20TokenStakingManager_init( - PoSValidatorManagerSettings calldata settings, + function __ERC20SecurityModule_init( + PoSSecurityModuleSettings calldata settings, IERC20Mintable token ) internal onlyInitializing { __POS_Validator_Manager_init(settings); - __ERC20TokenStakingManager_init_unchained(token); + __ERC20SecurityModule_init_unchained(token); } // solhint-disable-next-line func-name-mixedcase - function __ERC20TokenStakingManager_init_unchained(IERC20Mintable token) + function __ERC20SecurityModule_init_unchained(IERC20Mintable token) internal onlyInitializing { - ERC20TokenStakingManagerStorage storage $ = _getERC20StakingManagerStorage(); + ERC20SecurityModuleStorage storage $ = _getERC20StakingManagerStorage(); if (address(token) == address(0)) { revert InvalidTokenAddress(address(token)); } @@ -96,7 +96,7 @@ contract ERC20TokenStakingManager is } /** - * @notice See {IERC20TokenStakingManager-initializeValidatorRegistration} + * @notice See {IERC20SecurityModule-initializeValidatorRegistration} */ function initializeValidatorRegistration( ValidatorRegistrationInput calldata registrationInput, @@ -110,7 +110,7 @@ contract ERC20TokenStakingManager is } /** - * @notice See {IERC20TokenStakingManager-initializeDelegatorRegistration} + * @notice See {IERC20SecurityModule-initializeDelegatorRegistration} */ function initializeDelegatorRegistration( bytes32 validationID, @@ -127,7 +127,7 @@ contract ERC20TokenStakingManager is } /** - * @notice See {PoSValidatorManager-_lock} + * @notice See {PoSSecurityModule-_lock} * Note: Must be guarded with reentrancy guard for safe transfer from. */ function _lock(uint256 value) internal virtual override returns (uint256) { @@ -135,7 +135,7 @@ contract ERC20TokenStakingManager is } /** - * @notice See {PoSValidatorManager-_unlock} + * @notice See {PoSSecurityModule-_unlock} * Note: Must be guarded with reentrancy guard for safe transfer. */ function _unlock(address to, uint256 value) internal virtual override { @@ -143,10 +143,10 @@ contract ERC20TokenStakingManager is } /** - * @notice See {PoSValidatorManager-_reward} + * @notice See {PoSSecurityModule-_reward} */ function _reward(address account, uint256 amount) internal virtual override { - ERC20TokenStakingManagerStorage storage $ = _getERC20StakingManagerStorage(); + ERC20SecurityModuleStorage storage $ = _getERC20StakingManagerStorage(); $._token.mint(account, amount); } } diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenSecurityModule.sol similarity index 73% rename from contracts/validator-manager/NativeTokenStakingManager.sol rename to contracts/validator-manager/NativeTokenSecurityModule.sol index 66180ba8e..ed80a727b 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenSecurityModule.sol @@ -5,9 +5,9 @@ pragma solidity 0.8.25; -import {PoSValidatorManager} from "./PoSValidatorManager.sol"; -import {PoSValidatorManagerSettings} from "./interfaces/IPoSValidatorManager.sol"; -import {INativeTokenStakingManager} from "./interfaces/INativeTokenStakingManager.sol"; +import {PoSSecurityModule} from "./PoSSecurityModule.sol"; +import {PoSSecurityModuleSettings} from "./interfaces/IPoSSecurityModule.sol"; +import {INativeTokenSecurityModule} from "./interfaces/INativeTokenSecurityModule.sol"; import {INativeMinter} from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/INativeMinter.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; @@ -17,14 +17,14 @@ import {Initializable} from import {ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** - * @dev Implementation of the {INativeTokenStakingManager} interface. + * @dev Implementation of the {INativeTokenSecurityModule} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -contract NativeTokenStakingManager is +contract NativeTokenSecurityModule is Initializable, - PoSValidatorManager, - INativeTokenStakingManager + PoSSecurityModule, + INativeTokenSecurityModule { using Address for address payable; @@ -43,12 +43,12 @@ contract NativeTokenStakingManager is * @param settings Initial settings for the PoS validator manager */ // solhint-disable ordering - function initialize(PoSValidatorManagerSettings calldata settings) external reinitializer(2) { - __NativeTokenStakingManager_init(settings); + function initialize(PoSSecurityModuleSettings calldata settings) external reinitializer(2) { + __NativeTokenSecurityModule_init(settings); } // solhint-disable-next-line func-name-mixedcase - function __NativeTokenStakingManager_init(PoSValidatorManagerSettings calldata settings) + function __NativeTokenSecurityModule_init(PoSSecurityModuleSettings calldata settings) internal onlyInitializing { @@ -56,10 +56,10 @@ contract NativeTokenStakingManager is } // solhint-disable-next-line func-name-mixedcase, no-empty-blocks - function __NativeTokenStakingManager_init_unchained() internal onlyInitializing {} + function __NativeTokenSecurityModule_init_unchained() internal onlyInitializing {} /** - * @notice See {INativeTokenStakingManager-initializeValidatorRegistration}. + * @notice See {INativeTokenSecurityModule-initializeValidatorRegistration}. */ function initializeValidatorRegistration( ValidatorRegistrationInput calldata registrationInput, @@ -72,7 +72,7 @@ contract NativeTokenStakingManager is } /** - * @notice See {INativeTokenStakingManager-initializeDelegatorRegistration}. + * @notice See {INativeTokenSecurityModule-initializeDelegatorRegistration}. */ function initializeDelegatorRegistration(bytes32 validationID) external @@ -84,21 +84,21 @@ contract NativeTokenStakingManager is } /** - * @notice See {PoSValidatorManager-_lock} + * @notice See {PoSSecurityModule-_lock} */ function _lock(uint256 value) internal virtual override returns (uint256) { return value; } /** - * @notice See {PoSValidatorManager-_unlock} + * @notice See {PoSSecurityModule-_unlock} */ function _unlock(address to, uint256 value) internal virtual override { payable(to).sendValue(value); } /** - * @notice See {PoSValidatorManager-_reward} + * @notice See {PoSSecurityModule-_reward} */ function _reward(address account, uint256 amount) internal virtual override { NATIVE_MINTER.mintNativeCoin(account, amount); diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoASecurityModule.sol similarity index 67% rename from contracts/validator-manager/PoAValidatorManager.sol rename to contracts/validator-manager/PoASecurityModule.sol index 12e9d828f..4449f17eb 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoASecurityModule.sol @@ -6,31 +6,31 @@ pragma solidity 0.8.25; import {ValidatorManager} from "./ValidatorManager.sol"; -import {IPoAValidatorManager} from "./interfaces/IPoAValidatorManager.sol"; +import {IPoASecurityModule} from "./interfaces/IPoASecurityModule.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; import {IACP99ValidatorManager, ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; /** - * @dev Implementation of the {IPoAValidatorManager} interface. + * @dev Implementation of the {IPoASecurityModule} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -contract PoAValidatorManager is IPoAValidatorManager, OwnableUpgradeable { +contract PoASecurityModule is IPoASecurityModule, OwnableUpgradeable { - struct PoAValidatorManagerStorage { + struct PoASecurityModuleStorage { IACP99ValidatorManager validatorManager; } - // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.PoAValidatorManager")) - 1)) & ~bytes32(uint256(0xff)); + // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.PoASecurityModule")) - 1)) & ~bytes32(uint256(0xff)); bytes32 public constant POA_VALIDATOR_MANAGER_STORAGE_LOCATION = 0x81773fca73a14ca21edf1cadc6ec0b26d6a44966f6e97607e90422658d423500; - function _getPoAValidatorManagerStorage() + function _getPoASecurityModuleStorage() private pure - returns (PoAValidatorManagerStorage storage $) + returns (PoASecurityModuleStorage storage $) { // solhint-disable-next-line no-inline-assembly assembly { @@ -48,48 +48,48 @@ contract PoAValidatorManager is IPoAValidatorManager, OwnableUpgradeable { address initialOwner, IACP99ValidatorManager validatorManager ) external initializer { - __PoAValidatorManager_init(initialOwner, validatorManager); + __PoASecurityModule_init(initialOwner, validatorManager); } // solhint-disable func-name-mixedcase, ordering - function __PoAValidatorManager_init( + function __PoASecurityModule_init( address initialOwner, IACP99ValidatorManager validatorManager ) internal onlyInitializing { __Ownable_init(initialOwner); - __PoAValidatorManager_init_unchained(validatorManager); + __PoASecurityModule_init_unchained(validatorManager); } // solhint-disable-next-line no-empty-blocks - function __PoAValidatorManager_init_unchained(IACP99ValidatorManager validatorManager) internal onlyInitializing { - PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + function __PoASecurityModule_init_unchained(IACP99ValidatorManager validatorManager) internal onlyInitializing { + PoASecurityModuleStorage storage $ = _getPoASecurityModuleStorage(); $.validatorManager = validatorManager; } // solhint-enable func-name-mixedcase /** - * @notice See {IPoAValidatorManager-initializeValidatorRegistration}. + * @notice See {IPoASecurityModule-initializeValidatorRegistration}. */ function initializeValidatorRegistration( ValidatorRegistrationInput calldata registrationInput, uint64 weight ) external onlyOwner returns (bytes32 validationID) { - PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + PoASecurityModuleStorage storage $ = _getPoASecurityModuleStorage(); return $.validatorManager.initializeValidatorRegistration(registrationInput, weight); } function completeValidatorRegistration(uint32 messageIndex) external { - PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + PoASecurityModuleStorage storage $ = _getPoASecurityModuleStorage(); $.validatorManager.completeValidatorRegistration(messageIndex); } // solhint-enable ordering /** - * @notice See {IPoAValidatorManager-initializeEndValidation}. + * @notice See {IPoASecurityModule-initializeEndValidation}. */ function initializeEndValidation(bytes32 validationID) external override onlyOwner { - PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + PoASecurityModuleStorage storage $ = _getPoASecurityModuleStorage(); $.validatorManager.initializeEndValidation(validationID); } @@ -97,7 +97,7 @@ contract PoAValidatorManager is IPoAValidatorManager, OwnableUpgradeable { * @notice See {IValidatorManager-completeEndValidation}. */ function completeEndValidation(uint32 messageIndex) external { - PoAValidatorManagerStorage storage $ = _getPoAValidatorManagerStorage(); + PoASecurityModuleStorage storage $ = _getPoASecurityModuleStorage(); $.validatorManager.completeEndValidation(messageIndex); } } diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSSecurityModule.sol similarity index 88% rename from contracts/validator-manager/PoSValidatorManager.sol rename to contracts/validator-manager/PoSSecurityModule.sol index decfc5071..2b4909b09 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSSecurityModule.sol @@ -9,10 +9,10 @@ import {ValidatorMessages} from "./ValidatorMessages.sol"; import { Delegator, DelegatorStatus, - IPoSValidatorManager, + IPoSSecurityModule, PoSValidatorInfo, - PoSValidatorManagerSettings -} from "./interfaces/IPoSValidatorManager.sol"; + PoSSecurityModuleSettings +} from "./interfaces/IPoSSecurityModule.sol"; import {IRewardCalculator} from "./interfaces/IRewardCalculator.sol"; import {IWarpMessenger, WarpMessage} from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; @@ -24,18 +24,18 @@ import {ContextUpgradeable} from import {Validator, ValidatorStatus, ValidatorRegistrationInput, IACP99ValidatorManager} from "./interfaces/IACP99ValidatorManager.sol"; /** - * @dev Implementation of the {IPoSValidatorManager} interface. + * @dev Implementation of the {IPoSSecurityModule} interface. * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -abstract contract PoSValidatorManager is - IPoSValidatorManager, +abstract contract PoSSecurityModule is + IPoSSecurityModule, ContextUpgradeable, ReentrancyGuardUpgradeable { // solhint-disable private-vars-leading-underscore - /// @custom:storage-location erc7201:avalanche-icm.storage.PoSValidatorManager - struct PoSValidatorManagerStorage { + /// @custom:storage-location erc7201:avalanche-icm.storage.PoSSecurityModule + struct PoSSecurityModuleStorage { IACP99ValidatorManager validatorManager; /// @notice The minimum amount of stake required to be a validator. uint256 _minimumStakeAmount; @@ -71,7 +71,7 @@ abstract contract PoSValidatorManager is } // solhint-enable private-vars-leading-underscore - // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.PoSValidatorManager")) - 1)) & ~bytes32(uint256(0xff)); + // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.PoSSecurityModule")) - 1)) & ~bytes32(uint256(0xff)); bytes32 public constant POS_VALIDATOR_MANAGER_STORAGE_LOCATION = 0x4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00; @@ -111,10 +111,10 @@ abstract contract PoSValidatorManager is // solhint-disable ordering - function _getPoSValidatorManagerStorage() + function _getPoSSecurityModuleStorage() private pure - returns (PoSValidatorManagerStorage storage $) + returns (PoSSecurityModuleStorage storage $) { // solhint-disable-next-line no-inline-assembly assembly { @@ -123,7 +123,7 @@ abstract contract PoSValidatorManager is } // solhint-disable-next-line func-name-mixedcase - function __POS_Validator_Manager_init(PoSValidatorManagerSettings calldata settings) + function __POS_Validator_Manager_init(PoSSecurityModuleSettings calldata settings) internal onlyInitializing { @@ -153,7 +153,7 @@ abstract contract PoSValidatorManager is IRewardCalculator rewardCalculator, bytes32 uptimeBlockchainID ) internal onlyInitializing { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); if (minimumDelegationFeeBips == 0 || minimumDelegationFeeBips > MAXIMUM_DELEGATION_FEE_BIPS) { revert InvalidDelegationFee(minimumDelegationFeeBips); @@ -188,25 +188,25 @@ abstract contract PoSValidatorManager is } function completeValidatorRegistration(uint32 messageIndex) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); $.validatorManager.completeValidatorRegistration(messageIndex); } function completeEndValidation(uint32 messageIndex) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); bytes32 validationID = $.validatorManager.completeEndValidation(messageIndex); _completeEndValidation(validationID); } /** - * @notice See {IPoSValidatorManager-submitUptimeProof}. + * @notice See {IPoSSecurityModule-submitUptimeProof}. */ function submitUptimeProof(bytes32 validationID, uint32 messageIndex) external { if (!_isPoSValidator(validationID)) { revert ValidatorNotPoS(validationID); } - ValidatorStatus status = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID).status; + ValidatorStatus status = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID).status; if (status != ValidatorStatus.Active) { revert InvalidValidatorStatus(status); } @@ -216,12 +216,12 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-claimDelegationFees}. + * @notice See {IPoSSecurityModule-claimDelegationFees}. */ function claimDelegationFees(bytes32 validationID) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); - ValidatorStatus status = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID).status; + ValidatorStatus status = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID).status; if (status != ValidatorStatus.Completed) { revert InvalidValidatorStatus(status); } @@ -234,7 +234,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-initializeEndValidation}. + * @notice See {IPoSSecurityModule-initializeEndValidation}. */ function initializeEndValidation( bytes32 validationID, @@ -247,7 +247,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-initializeEndValidation}. + * @notice See {IPoSSecurityModule-initializeEndValidation}. */ function initializeEndValidation( bytes32 validationID, @@ -266,7 +266,7 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) internal { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); $.validatorManager.initializeEndValidation(validationID); if ( @@ -279,14 +279,14 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation}. + * @notice See {IPoSSecurityModule-forceInitializeEndValidation}. */ function forceInitializeEndValidation( bytes32 validationID, bool includeUptimeProof, uint32 messageIndex ) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); $.validatorManager.initializeEndValidation(validationID); // Ignore the return value here to force end validation, regardless of possible missed rewards @@ -294,7 +294,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation}. + * @notice See {IPoSSecurityModule-forceInitializeEndValidation}. */ function forceInitializeEndValidation( bytes32 validationID, @@ -302,7 +302,7 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); $.validatorManager.initializeEndValidation(validationID); // Ignore the return value here to force end validation, regardless of possible missed rewards @@ -313,7 +313,7 @@ abstract contract PoSValidatorManager is bytes32 validationID, address rewardRecipient ) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); if (rewardRecipient == address(0)) { revert InvalidRewardRecipient(rewardRecipient); @@ -338,7 +338,7 @@ abstract contract PoSValidatorManager is revert InvalidRewardRecipient(rewardRecipient); } - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); if ($._delegatorStakes[delegationID].owner != _msgSender()) { revert UnauthorizedOwner(_msgSender()); @@ -363,9 +363,9 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) internal returns (bool) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID); // Non-PoS validators are required to boostrap the network, but are not eligible for rewards. if (!_isPoSValidator(validationID)) { @@ -410,9 +410,9 @@ abstract contract PoSValidatorManager is } function _completeEndValidation(bytes32 validationID) internal { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID); // Return now if this was originally a PoA validator that was later migrated to this PoS manager, // or the validator was part of the initial validator set. @@ -450,7 +450,7 @@ abstract contract PoSValidatorManager is revert InvalidWarpMessage(); } - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); // The uptime proof must be from the specifed uptime blockchain if (warpMessage.sourceChainID != $._uptimeBlockchainID) { revert InvalidWarpSourceChainID(warpMessage.sourceChainID); @@ -487,7 +487,7 @@ abstract contract PoSValidatorManager is uint64 minStakeDuration, uint256 stakeAmount ) internal returns (bytes32) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); // Validate and save the validator requirements if ( delegationFeeBips < $._minimumDelegationFeeBips @@ -523,7 +523,7 @@ abstract contract PoSValidatorManager is * @param value Token value to convert. */ function valueToWeight(uint256 value) public view returns (uint64) { - uint256 weight = value / _getPoSValidatorManagerStorage()._weightToValueFactor; + uint256 weight = value / _getPoSSecurityModuleStorage()._weightToValueFactor; if (weight == 0 || weight > type(uint64).max) { revert InvalidStakeAmount(value); } @@ -535,7 +535,7 @@ abstract contract PoSValidatorManager is * @param weight weight to convert. */ function weightToValue(uint64 weight) public view returns (uint256) { - return uint256(weight) * _getPoSValidatorManagerStorage()._weightToValueFactor; + return uint256(weight) * _getPoSSecurityModuleStorage()._weightToValueFactor; } /** @@ -556,11 +556,11 @@ abstract contract PoSValidatorManager is address delegatorAddress, uint256 delegationAmount ) internal returns (bytes32) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); uint64 weight = valueToWeight(_lock(delegationAmount)); // TODONOW: Use the sender's address // Ensure the validation period is active - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID); // Check that the validation ID is a PoS validator if (!_isPoSValidator(validationID)) { revert ValidatorNotPoS(validationID); @@ -601,14 +601,14 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-completeDelegatorRegistration}. + * @notice See {IPoSSecurityModule-completeDelegatorRegistration}. */ function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; bytes32 validationID = delegator.validationID; - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID); // Ensure the delegator is pending added. Since anybody can call this function once // delegator registration has been initialized, we need to make sure that this function is only @@ -651,7 +651,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-initializeEndDelegation}. + * @notice See {IPoSSecurityModule-initializeEndDelegation}. */ function initializeEndDelegation( bytes32 delegationID, @@ -664,7 +664,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-initializeEndDelegation}. + * @notice See {IPoSSecurityModule-initializeEndDelegation}. */ function initializeEndDelegation( bytes32 delegationID, @@ -693,7 +693,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation}. + * @notice See {IPoSSecurityModule-forceInitializeEndDelegation}. */ function forceInitializeEndDelegation( bytes32 delegationID, @@ -705,7 +705,7 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation}. + * @notice See {IPoSSecurityModule-forceInitializeEndDelegation}. */ function forceInitializeEndDelegation( bytes32 delegationID, @@ -728,11 +728,11 @@ abstract contract PoSValidatorManager is uint32 messageIndex, address rewardRecipient ) internal returns (bool) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; bytes32 validationID = delegator.validationID; - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(validationID); // Ensure the delegator is active if (delegator.status != DelegatorStatus.Active) { @@ -799,9 +799,9 @@ abstract contract PoSValidatorManager is address rewardRecipient, bytes32 delegationID ) private returns (uint256) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(delegator.validationID); uint64 delegationEndTime; if ( @@ -839,12 +839,12 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-resendUpdateDelegation}. + * @notice See {IPoSSecurityModule-resendUpdateDelegation}. * @dev Resending the latest validator weight with the latest nonce is safe because all weight changes are * cumulative, so the latest weight change will always include the weight change for any added delegators. */ function resendUpdateDelegation(bytes32 delegationID) external { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; if ( delegator.status != DelegatorStatus.PendingAdded @@ -853,7 +853,7 @@ abstract contract PoSValidatorManager is revert InvalidDelegatorStatus(delegator.status); } - Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID); + Validator memory validator = _getPoSSecurityModuleStorage().validatorManager.getValidator(delegator.validationID); if (validator.messageNonce == 0) { // Should be unreachable. revert InvalidDelegationID(delegationID); @@ -889,13 +889,13 @@ abstract contract PoSValidatorManager is } /** - * @notice See {IPoSValidatorManager-completeEndDelegation}. + * @notice See {IPoSSecurityModule-completeEndDelegation}. */ function completeEndDelegation( bytes32 delegationID, uint32 messageIndex ) external nonReentrant { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; // Ensure the delegator is pending removed. Since anybody can call this function once @@ -905,7 +905,7 @@ abstract contract PoSValidatorManager is revert InvalidDelegatorStatus(delegator.status); } - if (_getPoSValidatorManagerStorage().validatorManager.getValidator(delegator.validationID).status != ValidatorStatus.Completed) { + if (_getPoSSecurityModuleStorage().validatorManager.getValidator(delegator.validationID).status != ValidatorStatus.Completed) { // Unpack the Warp message WarpMessage memory warpMessage = _getPChainWarpMessage(messageIndex); (bytes32 validationID, uint64 nonce,) = @@ -928,7 +928,7 @@ abstract contract PoSValidatorManager is } function _completeEndDelegation(bytes32 delegationID) internal { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; bytes32 validationID = delegator.validationID; @@ -969,12 +969,12 @@ abstract contract PoSValidatorManager is * validator that was later migrated to this PoS manager, or the validator was part of the initial validator set. */ function _isPoSValidator(bytes32 validationID) internal view returns (bool) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); return $._posValidatorInfo[validationID].owner != address(0); } function _withdrawValidationRewards(address rewardRecipient, bytes32 validationID) internal { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); uint256 rewards = $._redeemableValidatorRewards[validationID]; delete $._redeemableValidatorRewards[validationID]; @@ -987,7 +987,7 @@ abstract contract PoSValidatorManager is bytes32 delegationID, bytes32 validationID ) internal returns (uint256, uint256) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + PoSSecurityModuleStorage storage $ = _getPoSSecurityModuleStorage(); uint256 delegationRewards; uint256 validatorFees; diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 12202aa76..9d8b97217 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -11,66 +11,66 @@ class ValidatorManager { } <> ValidatorManager -class PoSValidatorManager { +class PoSSecurityModule { initializeEndValidation() completeDelegatorRegistration() initializeEndDelegation() completeEndDelegation() } -<> PoSValidatorManager -class ERC20TokenStakingManager { +<> PoSSecurityModule +class ERC20SecurityModule { initializeValidatorRegistration() initializeDelegatorRegistration() } -class NativeTokenStakingManager { +class NativeTokenSecurityModule { initializeValidatorRegistration() payable initializeDelegatorRegistration() payable } -class PoAValidatorManager { +class PoASecurityModule { initializeValidatorRegistration() initializeEndValidation() } -ValidatorManager <|-- PoSValidatorManager -ValidatorManager <|-- PoAValidatorManager -PoSValidatorManager <|-- ERC20TokenStakingManager -PoSValidatorManager <|-- NativeTokenStakingManager +ValidatorManager <|-- PoSSecurityModule +ValidatorManager <|-- PoASecurityModule +PoSSecurityModule <|-- ERC20SecurityModule +PoSSecurityModule <|-- NativeTokenSecurityModule ``` ## Deploying -Three concrete `ValidatorManager` contracts are provided - `PoAValidatorManager`, `NativeTokenStakingManager`, and `ERC20TokenStakingManager`. `NativeTokenStakingManager`, and `ERC20TokenStakingManager` implement `PoSValidatorManager`, which itself implements `ValidatorManager`. These are implemented as [upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/main/contracts/proxy/utils/Initializable.sol#L56) contracts. There are numerous [guides](https://blog.chain.link/upgradable-smart-contracts/) for deploying upgradeable smart contracts, but the general steps are as follows: +Three concrete `ValidatorManager` contracts are provided - `PoASecurityModule`, `NativeTokenSecurityModule`, and `ERC20SecurityModule`. `NativeTokenSecurityModule`, and `ERC20SecurityModule` implement `PoSSecurityModule`, which itself implements `ValidatorManager`. These are implemented as [upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/main/contracts/proxy/utils/Initializable.sol#L56) contracts. There are numerous [guides](https://blog.chain.link/upgradable-smart-contracts/) for deploying upgradeable smart contracts, but the general steps are as follows: 1. Deploy the implementation contract 2. Deploy the proxy contract 3. Call the implementation contract's `initialize` function -- Each flavor of `ValidatorManager` requires different settings. For example, `ValidatorManagerSettings` specifies the churn parameters, while `PoSValidatorManagerSettings` specifies the staking and rewards parameters. +- Each flavor of `ValidatorManager` requires different settings. For example, `ValidatorManagerSettings` specifies the churn parameters, while `PoSSecurityModuleSettings` specifies the staking and rewards parameters. 4. Initialize the validator set by calling `initializeValidatorSet` - When a Subnet is first created on the P-Chain, it must be explicitly converted to an L1 via [`ConvertSubnetToL1Tx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#convertsubnettol1tx). The resulting `SubnetToL1ConversionMessage` Warp [message](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#subnettol1conversionmessage) is provided in the call to `initializeValidatorSet` to specify the starting validator set in the `ValidatorManager`. Regardless of the implementation, these initial validators are treated as PoA and are not eligible for staking rewards. -### PoAValidatorManager +### PoASecurityModule -Proof-of-Authority validator management is provided via `PoAValidatorManager`, which restricts modification of the validator set to a specified owner address. After deploying `PoAValidatorManager.sol` and a proxy, the `initialize` function takes the owner address, in addition to standard `ValidatorManagerSettings`. +Proof-of-Authority validator management is provided via `PoASecurityModule`, which restricts modification of the validator set to a specified owner address. After deploying `PoASecurityModule.sol` and a proxy, the `initialize` function takes the owner address, in addition to standard `ValidatorManagerSettings`. -### PoSValidatorManager +### PoSSecurityModule -Proof-of-Stake validator management is provided by the abstract contract `PoSValidatorManager`, which has two concrete implementations: `NativeTokenStakingManager` and `ERC20TokenStakingManager`. In addition to basic validator management provided in `ValidatorManager`, `PoSValidatorManager` supports uptime-based validation rewards, as well as delegation to a chosen validator. The `uptimeBlockchainID` used to initialize the `PoSValidatorManager` **must** be validated by the L1 validator set that the contract manages. **There is no way to verify this from within the contract, so take care when setting this value.** This [state transition diagram](./StateTransition.md) illustrates the relationship between validators and delegators. +Proof-of-Stake validator management is provided by the abstract contract `PoSSecurityModule`, which has two concrete implementations: `NativeTokenSecurityModule` and `ERC20SecurityModule`. In addition to basic validator management provided in `ValidatorManager`, `PoSSecurityModule` supports uptime-based validation rewards, as well as delegation to a chosen validator. The `uptimeBlockchainID` used to initialize the `PoSSecurityModule` **must** be validated by the L1 validator set that the contract manages. **There is no way to verify this from within the contract, so take care when setting this value.** This [state transition diagram](./StateTransition.md) illustrates the relationship between validators and delegators. > [!NOTE] -> The `weightToValueFactor` fields of the `PoSValidatorManagerSettings` passed to `PoSValidatorManager`'s `initialize` function sets the factor used to convert between the weight that the validator is registered with on the P-Chain, and the value transferred to the contract as stake. This involves integer division, which may result in loss of precision. When selecting `weightToValueFactor`, it's important to make the following considerations: +> The `weightToValueFactor` fields of the `PoSSecurityModuleSettings` passed to `PoSSecurityModule`'s `initialize` function sets the factor used to convert between the weight that the validator is registered with on the P-Chain, and the value transferred to the contract as stake. This involves integer division, which may result in loss of precision. When selecting `weightToValueFactor`, it's important to make the following considerations: > > 1. If `weightToValueFactor` is near the denomination of the asset, then staking amounts on the order of 1 unit of the asset may cause the converted weight to round down to 0. This may impose a larger-than-expected minimum stake amount. > - Ex: If USDC (denomination of 6) is used as the staking token and `weightToValueFactor` is 1e9, then any amount less than 1,000 USDC will round down to 0 and therefore be invalid. > 2. Staked amounts up to `weightValueFactor - 1` may be lost in the contract as dust, as the validator's registered weight is used to calculate the original staked amount. > - Ex: `value=1001` and `weightToValueFactor=1e3`. The resulting weight will be `1`. Converting the weight back to a value results in `value=1000`. -> 3. The validator's weight is represented on the P-Chain as a `uint64`. `PoSValidatorManager` restricts values such that the calculated weight does not exceed the maximum value for that type. +> 3. The validator's weight is represented on the P-Chain as a `uint64`. `PoSSecurityModule` restricts values such that the calculated weight does not exceed the maximum value for that type. -#### NativeTokenStakingManager +#### NativeTokenSecurityModule -`NativeTokenStakingManager` allows permissionless addition and removal of validators that post the L1's native token as stake. Staking rewards are minted via the Native Minter Precompile, which is configured with a set of addresses with minting privileges. As such, the address that `NativeTokenStakingManager` is deployed to must be added as an admin to the precompile. This can be done by either calling the precompile's `setAdmin` method from an admin address, or setting the address in the Native Minter precompile settings in the chain's genesis (`config.contractNativeMinterConfig.adminAddresses`). There are a couple of methods to get this address: one is to calculate the resulting deployed address based on the deployer's address and account nonce: `keccak256(rlp.encode(address, nonce))`. The second method involves manually placing the `NativeTokenStakingManager` bytecode at a particular address in the genesis, then setting that address as an admin. +`NativeTokenSecurityModule` allows permissionless addition and removal of validators that post the L1's native token as stake. Staking rewards are minted via the Native Minter Precompile, which is configured with a set of addresses with minting privileges. As such, the address that `NativeTokenSecurityModule` is deployed to must be added as an admin to the precompile. This can be done by either calling the precompile's `setAdmin` method from an admin address, or setting the address in the Native Minter precompile settings in the chain's genesis (`config.contractNativeMinterConfig.adminAddresses`). There are a couple of methods to get this address: one is to calculate the resulting deployed address based on the deployer's address and account nonce: `keccak256(rlp.encode(address, nonce))`. The second method involves manually placing the `NativeTokenSecurityModule` bytecode at a particular address in the genesis, then setting that address as an admin. ```json { @@ -86,20 +86,20 @@ Proof-of-Stake validator management is provided by the abstract contract `PoSVal "alloc": { "0xffffffffffffffffffffffffffffffffffffffff": { "balance": "0x0", - "code": "", + "code": "", "nonce": 1 } } } ``` -#### ERC20TokenStakingManager +#### ERC20SecurityModule -`ERC20TokenStakingManager` allows permissionless addition and removal of validators that post the an ERC20 token as stake. The ERC20 is specified in the call to `initialize`, and must implement [`IERC20Mintable`](./interfaces/IERC20Mintable.sol). Care should be taken to enforce that only authorized users are able to `mint` the ERC20 staking token. +`ERC20SecurityModule` allows permissionless addition and removal of validators that post the an ERC20 token as stake. The ERC20 is specified in the call to `initialize`, and must implement [`IERC20Mintable`](./interfaces/IERC20Mintable.sol). Care should be taken to enforce that only authorized users are able to `mint` the ERC20 staking token. ### Convert PoA to PoS -A `PoAValidatorManager` can later be converted to a `PoSValidatorManager` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSValidatorManager` contract should be initialized by calling `initialize` as described above. The validator set contained in the `PoAValidatorManager` will be tracked by the `PoSValidatorManager` after the upgrade, but these validators will neither be eligible to stake and earn staking rewards, nor support delegation. +A `PoASecurityModule` can later be converted to a `PoSSecurityModule` by upgrading the implementation contract pointed to by the proxy. After performing the upgrade, the `PoSSecurityModule` contract should be initialized by calling `initialize` as described above. The validator set contained in the `PoASecurityModule` will be tracked by the `PoSSecurityModule` after the upgrade, but these validators will neither be eligible to stake and earn staking rewards, nor support delegation. ## Usage @@ -113,9 +113,9 @@ The `L1ValidatorRegistrationMessage` is delivered to the `ValidatorManager` via ### Remove a Validator -Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSValidatorManagers` a [`ValidationUptimeMessage`](./UptimeMessageSpec.md) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSValidatorManagers`. +Validator exit is initiated with a call to `initializeEndValidation` on the `ValidatorManager`. Only the validator owner may initiate exit. For `PoSSecurityModules` a [`ValidationUptimeMessage`](./UptimeMessageSpec.md) Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). This proof may be requested directly from the L1 validators, which will provide it in a `ValidationUptimeMessage` Warp message. If the uptime is not sufficient to earn validation rewards, the call to `initializeEndValidation` will fail. `forceInitializeEndValidation` acts the same as `initializeEndValidation`, but bypasses the uptime-based rewards check. Once `initializeEndValidation` or `forceInitializeEndValidation` is called, staking rewards cease accruing for `PoSSecurityModules`. -The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSValidatorManagers`, staking rewards are disbursed and stake is returned. +The `ValidatorManager` contructs an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage) Warp message with the weight set to `0`. This is delivered to the P-Chain as the payload of a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The P-Chain acknowledges the validator exit by signing an `L1ValidatorRegistrationMessage` with `valid=0`, which is delivered to the `ValidatorManager` by calling `completeEndValidation`. The validation is removed from the contract's state, and for `PoSSecurityModules`, staking rewards are disbursed and stake is returned. #### Disable a Validator Directly on the P-Chain @@ -125,14 +125,14 @@ Disabled L1 validators can re-activate at any time by increasing their balance w ### (PoS only) Register a Delegator -`PoSValidatorManager` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSValidatorManager` via an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage), which is provided by calling `completeDelegatorRegistration`. +`PoSSecurityModule` supports delegation to an actively staked validator as a way for users to earn staking rewards without having to validate the chain. Delegators pay a configurable percentage fee on any earned staking rewards to the host validator. A delegator may be registered by calling `initializeDelegatorRegistration` and providing an amount to stake. The delegator will be registered as long as churn restrictions are not violated. The delegator is reflected on the P-Chain by adjusting the validator's registered weight via a [`SetL1ValidatorWeightTx`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#setl1validatorweighttx). The weight change acknowledgement is delivered to the `PoSSecurityModule` via an [`L1ValidatorWeightMessage`](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets#l1validatorweightmessage), which is provided by calling `completeDelegatorRegistration`. > [!NOTE] -> The P-Chain is only willing to sign an `L1ValidatorWeightMessage` for an active validator. Once a validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSValidatorManager` must assume that the validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a delegator when the validator is in this state, though it _may be_ valid to _complete_ an already initiated delegator action, depending on the order of delivery to the P-Chain. If the delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the validator was removed, then the delegator action may be completed. Otherwise, the acknowledgement of the validation end must first be delivered before completing the delegator action. +> The P-Chain is only willing to sign an `L1ValidatorWeightMessage` for an active validator. Once a validator exit has been initiated (via a call to `initializeEndValidation`), the `PoSSecurityModule` must assume that the validator has been deactivated on the P-Chain, and will therefore not sign any further weight updates. Therefore, it is invalid to _initiate_ adding or removing a delegator when the validator is in this state, though it _may be_ valid to _complete_ an already initiated delegator action, depending on the order of delivery to the P-Chain. If the delegator weight change was submitted (and a Warp signature on the acknowledgement retrieved) before the validator was removed, then the delegator action may be completed. Otherwise, the acknowledgement of the validation end must first be delivered before completing the delegator action. ### (PoS only) Remove a Delegator -Delegators removal may be initiated by calling `initializeEndDelegation`, as long as churn restrictions are not violated. Similar to `initializeEndValidation`, an uptime proof may be provided to be used to determine delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). The validator's weight is updated on the P-Chain by the same mechanism used to register a delegator. The `SubnetValidatorWeightUpdateMessage` from the P-Chain is delivered to the `PoSValidatorManager` in the call to `completeEndDelegation`. +Delegators removal may be initiated by calling `initializeEndDelegation`, as long as churn restrictions are not violated. Similar to `initializeEndValidation`, an uptime proof may be provided to be used to determine delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see [(PoS only) Submit and Uptime Proof](#pos-only-submit-an-uptime-proof)). The validator's weight is updated on the P-Chain by the same mechanism used to register a delegator. The `SubnetValidatorWeightUpdateMessage` from the P-Chain is delivered to the `PoSSecurityModule` in the call to `completeEndDelegation`. Either the delegator owner or the validator owner may initiate removing a delegator. This is to prevent the validator from being unable to remove itself due to churn limitations if it is has too high a proportion of the Subnet's total weight due to delegator additions. The validator owner may only remove Delegators after the minimum stake duration has elapsed. diff --git a/contracts/validator-manager/UptimeMessageSpec.md b/contracts/validator-manager/UptimeMessageSpec.md index 0531da588..94c1f2363 100644 --- a/contracts/validator-manager/UptimeMessageSpec.md +++ b/contracts/validator-manager/UptimeMessageSpec.md @@ -1,6 +1,6 @@ # `ValidationUptimeMessage` Warp Message Format Reference -Description: Provides a validator's uptime for calculating staking rewards (`PoSValidatorManager` only) +Description: Provides a validator's uptime for calculating staking rewards (`PoSSecurityModule` only) Signed by: L1 @@ -16,4 +16,4 @@ Specification: | `uptime` | `uint64` | 8 byte | | | | 46 bytes | -This is defined within `Subnet-EVM` [here](https://github.com/ava-labs/subnet-evm/blob/323eb0c7dd7204521e662a3a355fe78a0e19c0be/warp/messages/validator_uptime.go#L14-L19). The `ValidationUptimeMessage` must be included as an `AddressedPayload` with the `sourceAddress` set to an empty byte array, to prove that it did not originate as an arbitrary on-chain message. The `sourceChainID` must match the `uptimeBlockchainID` used to initialize the `PoSValidatorManager`. `uptimeBlockchainID` must be validated by the L1 validator set managed by the `PoSValidatorManager`. \ No newline at end of file +This is defined within `Subnet-EVM` [here](https://github.com/ava-labs/subnet-evm/blob/323eb0c7dd7204521e662a3a355fe78a0e19c0be/warp/messages/validator_uptime.go#L14-L19). The `ValidationUptimeMessage` must be included as an `AddressedPayload` with the `sourceAddress` set to an empty byte array, to prove that it did not originate as an arbitrary on-chain message. The `sourceChainID` must match the `uptimeBlockchainID` used to initialize the `PoSSecurityModule`. `uptimeBlockchainID` must be validated by the L1 validator set managed by the `PoSSecurityModule`. \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol b/contracts/validator-manager/interfaces/IERC20SecurityModule.sol similarity index 91% rename from contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol rename to contracts/validator-manager/interfaces/IERC20SecurityModule.sol index 36e0c5540..8669733f9 100644 --- a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol +++ b/contracts/validator-manager/interfaces/IERC20SecurityModule.sol @@ -6,12 +6,12 @@ pragma solidity 0.8.25; import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; -import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; +import {IPoSSecurityModule} from "./IPoSSecurityModule.sol"; /** * Proof of Stake Validator Manager that stakes ERC20 tokens. */ -interface IERC20TokenStakingManager is IPoSValidatorManager { +interface IERC20SecurityModule is IPoSSecurityModule { /** * @notice Begins the validator registration process. Locks the specified ERC20 tokens in the contract as the stake. * @param registrationInput The inputs for a validator registration. diff --git a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol b/contracts/validator-manager/interfaces/INativeTokenSecurityModule.sol similarity index 90% rename from contracts/validator-manager/interfaces/INativeTokenStakingManager.sol rename to contracts/validator-manager/interfaces/INativeTokenSecurityModule.sol index c603f5b18..b31d9fbee 100644 --- a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol +++ b/contracts/validator-manager/interfaces/INativeTokenSecurityModule.sol @@ -6,12 +6,12 @@ pragma solidity 0.8.25; import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; -import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; +import {IPoSSecurityModule} from "./IPoSSecurityModule.sol"; /** * Proof of Stake Validator Manager that stakes the blockchain's native tokens. */ -interface INativeTokenStakingManager is IPoSValidatorManager { +interface INativeTokenSecurityModule is IPoSSecurityModule { /** * @notice Begins the validator registration process. Locks the provided native asset in the contract as the stake. * @param registrationInput The inputs for a validator registration. diff --git a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol b/contracts/validator-manager/interfaces/IPoASecurityModule.sol similarity index 97% rename from contracts/validator-manager/interfaces/IPoAValidatorManager.sol rename to contracts/validator-manager/interfaces/IPoASecurityModule.sol index ae341e2ab..0e841b4d3 100644 --- a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoASecurityModule.sol @@ -10,7 +10,7 @@ import {ValidatorRegistrationInput} from "./IACP99ValidatorManager.sol"; /** * @notice Interface for Proof of Authority Validator Manager contracts */ -interface IPoAValidatorManager { +interface IPoASecurityModule { /** * @notice Begins the validator registration process, and sets the {weight} of the validator. * @param registrationInput The inputs for a validator registration. diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSSecurityModule.sol similarity index 96% rename from contracts/validator-manager/interfaces/IPoSValidatorManager.sol rename to contracts/validator-manager/interfaces/IPoSSecurityModule.sol index b3df1ec86..21f29d29b 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSSecurityModule.sol @@ -31,7 +31,7 @@ enum DelegatorStatus { * @notice uptimeBlockchainID is the ID of the blockchain that submits uptime proofs. * This must be a blockchain validated by the subnetID that this contract manages. */ -struct PoSValidatorManagerSettings { +struct PoSSecurityModuleSettings { IACP99ValidatorManager validatorManager; uint256 minimumStakeAmount; uint256 maximumStakeAmount; @@ -69,7 +69,7 @@ struct PoSValidatorInfo { /** * @notice Interface for Proof of Stake Validator Managers */ -interface IPoSValidatorManager { +interface IPoSSecurityModule { /** * @notice Event emitted when a delegator registration is initiated * @param delegationID The ID of the delegation @@ -149,7 +149,7 @@ interface IPoSValidatorManager { ) external; /** - * @notice See {IPoSValidatorManager-initializeEndValidation} for details of the first three parameters + * @notice See {IPoSSecurityModule-initializeEndValidation} for details of the first three parameters * @param recipientAddress The address to receive the rewards */ function initializeEndValidation( @@ -177,7 +177,7 @@ interface IPoSValidatorManager { ) external; /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation} for details of the first three parameters + * @notice See {IPoSSecurityModule-forceInitializeEndValidation} for details of the first three parameters * @param recipientAddress Address to receive the rewards. */ function forceInitializeEndValidation( @@ -222,7 +222,7 @@ interface IPoSValidatorManager { ) external; /** - * @notice See {IPoSValidatorManager-initializeEndDelegation} for details of the first three parameters + * @notice See {IPoSSecurityModule-initializeEndDelegation} for details of the first three parameters * @param recipientAddress The address to receive the rewards. */ function initializeEndDelegation( @@ -253,7 +253,7 @@ interface IPoSValidatorManager { ) external; /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation} for details of the first three parameters + * @notice See {IPoSSecurityModule-forceInitializeEndDelegation} for details of the first three parameters * @param recipientAddress The address to receive the rewards. */ function forceInitializeEndDelegation( diff --git a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol index 013398a6c..ad8c17ae6 100644 --- a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol @@ -5,9 +5,9 @@ pragma solidity 0.8.25; -import {PoSValidatorManagerTest} from "./PoSValidatorManagerTests.t.sol"; -import {ERC20TokenStakingManager} from "../ERC20TokenStakingManager.sol"; -import {PoSValidatorManager, PoSValidatorManagerSettings} from "../PoSValidatorManager.sol"; +import {PoSSecurityModuleTest} from "./PoSSecurityModuleTests.t.sol"; +import {ERC20SecurityModule} from "../ERC20SecurityModule.sol"; +import {PoSSecurityModule, PoSSecurityModuleSettings} from "../PoSSecurityModule.sol"; import {ExampleRewardCalculator} from "../ExampleRewardCalculator.sol"; import {ValidatorRegistrationInput, IValidatorManager} from "../interfaces/IValidatorManager.sol"; import {ICMInitializable} from "../../utilities/ICMInitializable.sol"; @@ -18,10 +18,10 @@ import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; -contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { +contract ERC20SecurityModuleTest is PoSSecurityModuleTest { using SafeERC20 for IERC20Mintable; - ERC20TokenStakingManager public app; + ERC20SecurityModule public app; IERC20Mintable public token; function setUp() public override { @@ -34,106 +34,106 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { } function testDisableInitialization() public { - app = new ERC20TokenStakingManager(ICMInitializable.Disallowed); + app = new ERC20SecurityModule(ICMInitializable.Disallowed); vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); app.initialize(_defaultPoSSettings(), token); } function testZeroTokenAddress() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); vm.expectRevert( abi.encodeWithSelector( - ERC20TokenStakingManager.InvalidTokenAddress.selector, address(0) + ERC20SecurityModule.InvalidTokenAddress.selector, address(0) ) ); app.initialize(_defaultPoSSettings(), IERC20Mintable(address(0))); } function testZeroMinimumDelegationFee() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidDelegationFee.selector, 0) + abi.encodeWithSelector(PoSSecurityModule.InvalidDelegationFee.selector, 0) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumDelegationFeeBips = 0; app.initialize(defaultPoSSettings, token); } function testMaxMinimumDelegationFee() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); uint16 minimumDelegationFeeBips = app.MAXIMUM_DELEGATION_FEE_BIPS() + 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegationFee.selector, minimumDelegationFeeBips + PoSSecurityModule.InvalidDelegationFee.selector, minimumDelegationFeeBips ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumDelegationFeeBips = minimumDelegationFeeBips; app.initialize(defaultPoSSettings, token); } function testInvalidStakeAmountRange() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT + PoSSecurityModule.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumStakeAmount = DEFAULT_MAXIMUM_STAKE_AMOUNT; defaultPoSSettings.maximumStakeAmount = DEFAULT_MINIMUM_STAKE_AMOUNT; app.initialize(defaultPoSSettings, token); } function testZeroMaxStakeMultiplier() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidStakeMultiplier.selector, 0) + abi.encodeWithSelector(PoSSecurityModule.InvalidStakeMultiplier.selector, 0) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.maximumStakeMultiplier = 0; app.initialize(defaultPoSSettings, token); } function testMinStakeDurationTooLow() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); uint64 minimumStakeDuration = DEFAULT_CHURN_PERIOD - 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidMinStakeDuration.selector, minimumStakeDuration + PoSSecurityModule.InvalidMinStakeDuration.selector, minimumStakeDuration ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumStakeDuration = minimumStakeDuration; app.initialize(defaultPoSSettings, token); } function testMaxStakeMultiplierOverLimit() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); uint8 maximumStakeMultiplier = app.MAXIMUM_STAKE_MULTIPLIER_LIMIT() + 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeMultiplier.selector, maximumStakeMultiplier + PoSSecurityModule.InvalidStakeMultiplier.selector, maximumStakeMultiplier ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.maximumStakeMultiplier = maximumStakeMultiplier; app.initialize(defaultPoSSettings, token); } function testZeroWeightToValueFactor() public { - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.ZeroWeightToValueFactor.selector) + abi.encodeWithSelector(PoSSecurityModule.ZeroWeightToValueFactor.selector) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.weightToValueFactor = 0; app.initialize(defaultPoSSettings, token); } @@ -149,7 +149,7 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { uint256 stakeAmount = _weightToValue(DEFAULT_WEIGHT); vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidMinStakeDuration.selector, + PoSSecurityModule.InvalidMinStakeDuration.selector, DEFAULT_MINIMUM_STAKE_DURATION - 1 ) ); @@ -158,9 +158,9 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { ); } - function testERC20TokenStakingManagerStorageSlot() public view { + function testERC20SecurityModuleStorageSlot() public view { assertEq( - _erc7201StorageSlot("ERC20TokenStakingManager"), + _erc7201StorageSlot("ERC20SecurityModule"), app.ERC20_STAKING_MANAGER_STORAGE_LOCATION() ); } @@ -220,11 +220,11 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { function _setUp() internal override returns (IValidatorManager) { // Construct the object under test - app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + app = new ERC20SecurityModule(ICMInitializable.Allowed); token = new ExampleERC20(); rewardCalculator = new ExampleRewardCalculator(DEFAULT_REWARD_RATE); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.rewardCalculator = rewardCalculator; app.initialize(defaultPoSSettings, token); diff --git a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol index c1c80fcbb..6e452a8d2 100644 --- a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol @@ -6,9 +6,9 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; -import {PoSValidatorManagerTest} from "./PoSValidatorManagerTests.t.sol"; -import {NativeTokenStakingManager} from "../NativeTokenStakingManager.sol"; -import {PoSValidatorManager, PoSValidatorManagerSettings} from "../PoSValidatorManager.sol"; +import {PoSSecurityModuleTest} from "./PoSSecurityModuleTests.t.sol"; +import {NativeTokenSecurityModule} from "../NativeTokenSecurityModule.sol"; +import {PoSSecurityModule, PoSSecurityModuleSettings} from "../PoSSecurityModule.sol"; import {ValidatorRegistrationInput, IValidatorManager} from "../interfaces/IValidatorManager.sol"; import {ExampleRewardCalculator} from "../ExampleRewardCalculator.sol"; import {ICMInitializable} from "../../utilities/ICMInitializable.sol"; @@ -17,8 +17,8 @@ import {INativeMinter} from import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; -contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { - NativeTokenStakingManager public app; +contract NativeTokenSecurityModuleTest is PoSSecurityModuleTest { + NativeTokenSecurityModule public app; function setUp() public override { ValidatorManagerTest.setUp(); @@ -30,97 +30,97 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { } function testDisableInitialization() public { - app = new NativeTokenStakingManager(ICMInitializable.Disallowed); + app = new NativeTokenSecurityModule(ICMInitializable.Disallowed); vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); app.initialize(_defaultPoSSettings()); } function testZeroMinimumDelegationFee() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidDelegationFee.selector, 0) + abi.encodeWithSelector(PoSSecurityModule.InvalidDelegationFee.selector, 0) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumDelegationFeeBips = 0; app.initialize(defaultPoSSettings); } function testMaxMinimumDelegationFee() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); uint16 minimumDelegationFeeBips = app.MAXIMUM_DELEGATION_FEE_BIPS() + 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegationFee.selector, minimumDelegationFeeBips + PoSSecurityModule.InvalidDelegationFee.selector, minimumDelegationFeeBips ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumDelegationFeeBips = minimumDelegationFeeBips; app.initialize(defaultPoSSettings); } function testInvalidStakeAmountRange() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT + PoSSecurityModule.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumStakeAmount = DEFAULT_MAXIMUM_STAKE_AMOUNT; defaultPoSSettings.maximumStakeAmount = DEFAULT_MINIMUM_STAKE_AMOUNT; app.initialize(defaultPoSSettings); } function testZeroMaxStakeMultiplier() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidStakeMultiplier.selector, 0) + abi.encodeWithSelector(PoSSecurityModule.InvalidStakeMultiplier.selector, 0) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.maximumStakeMultiplier = 0; app.initialize(defaultPoSSettings); } function testMaxStakeMultiplierOverLimit() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); uint8 maximumStakeMultiplier = app.MAXIMUM_STAKE_MULTIPLIER_LIMIT() + 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeMultiplier.selector, maximumStakeMultiplier + PoSSecurityModule.InvalidStakeMultiplier.selector, maximumStakeMultiplier ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.maximumStakeMultiplier = maximumStakeMultiplier; app.initialize(defaultPoSSettings); } function testZeroWeightToValueFactor() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.ZeroWeightToValueFactor.selector) + abi.encodeWithSelector(PoSSecurityModule.ZeroWeightToValueFactor.selector) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.weightToValueFactor = 0; app.initialize(defaultPoSSettings); } function testMinStakeDurationTooLow() public { - app = new NativeTokenStakingManager(ICMInitializable.Allowed); + app = new NativeTokenSecurityModule(ICMInitializable.Allowed); uint64 minStakeDuration = DEFAULT_CHURN_PERIOD - 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidMinStakeDuration.selector, minStakeDuration + PoSSecurityModule.InvalidMinStakeDuration.selector, minStakeDuration ) ); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.minimumStakeDuration = minStakeDuration; app.initialize(defaultPoSSettings); } @@ -177,10 +177,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { function _setUp() internal override returns (IValidatorManager) { // Construct the object under test - app = new TestableNativeTokenStakingManager(ICMInitializable.Allowed); + app = new TestableNativeTokenSecurityModule(ICMInitializable.Allowed); rewardCalculator = new ExampleRewardCalculator(DEFAULT_REWARD_RATE); - PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + PoSSecurityModuleSettings memory defaultPoSSettings = _defaultPoSSettings(); defaultPoSSettings.rewardCalculator = rewardCalculator; app.initialize(defaultPoSSettings); @@ -194,8 +194,8 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { } } -contract TestableNativeTokenStakingManager is NativeTokenStakingManager, Test { - constructor(ICMInitializable init) NativeTokenStakingManager(init) {} +contract TestableNativeTokenSecurityModule is NativeTokenSecurityModule, Test { + constructor(ICMInitializable init) NativeTokenSecurityModule(init) {} function _reward(address account, uint256 amount) internal virtual override { super._reward(account, amount); diff --git a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol index 39be0f19e..a750b18ef 100644 --- a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.25; -import {PoAValidatorManager} from "../PoAValidatorManager.sol"; +import {PoASecurityModule} from "../PoASecurityModule.sol"; import { ValidatorManagerSettings, ValidatorRegistrationInput, @@ -18,8 +18,8 @@ import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; -contract PoAValidatorManagerTest is ValidatorManagerTest { - PoAValidatorManager public app; +contract PoASecurityModuleTest is ValidatorManagerTest { + PoASecurityModule public app; address public constant DEFAULT_OWNER = address(0x1); @@ -33,7 +33,7 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { } function testDisableInitialization() public { - app = new PoAValidatorManager(ICMInitializable.Disallowed); + app = new PoASecurityModule(ICMInitializable.Disallowed); vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); app.initialize( ValidatorManagerSettings({ @@ -65,7 +65,7 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { } // This test applies to all ValidatorManagers, but we test it here to avoid - // having to source UINT64MAX funds for PoSValidatorManagers. + // having to source UINT64MAX funds for PoSSecurityModules. function testTotalWeightOverflow() public { uint64 weight = type(uint64).max; @@ -110,7 +110,7 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { } function _setUp() internal override returns (IValidatorManager) { - app = new PoAValidatorManager(ICMInitializable.Allowed); + app = new PoASecurityModule(ICMInitializable.Allowed); app.initialize( ValidatorManagerSettings({ subnetID: DEFAULT_SUBNET_ID, diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 27297eb01..3b42f1bdb 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -7,10 +7,10 @@ pragma solidity 0.8.25; import {IRewardCalculator} from "../interfaces/IRewardCalculator.sol"; import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; -import {PoSValidatorManager} from "../PoSValidatorManager.sol"; +import {PoSSecurityModule} from "../PoSSecurityModule.sol"; import { - DelegatorStatus, PoSValidatorManagerSettings -} from "../interfaces/IPoSValidatorManager.sol"; + DelegatorStatus, PoSSecurityModuleSettings +} from "../interfaces/IPoSSecurityModule.sol"; import {ValidatorManager} from "../ValidatorManager.sol"; import { ValidatorManagerSettings, @@ -23,7 +23,7 @@ import { IWarpMessenger } from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; -abstract contract PoSValidatorManagerTest is ValidatorManagerTest { +abstract contract PoSSecurityModuleTest is ValidatorManagerTest { uint64 public constant DEFAULT_UPTIME = uint64(100); uint64 public constant DEFAULT_DELEGATOR_WEIGHT = uint64(1e5); uint64 public constant DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP = @@ -44,7 +44,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint256 public constant DEFAULT_WEIGHT_TO_VALUE_FACTOR = 1e12; uint256 public constant SECONDS_IN_YEAR = 31536000; - PoSValidatorManager public posValidatorManager; + PoSSecurityModule public posValidatorManager; IRewardCalculator public rewardCalculator; ValidatorRegistrationInput public defaultRegistrationInput = ValidatorRegistrationInput({ @@ -89,7 +89,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testDelegationFeeBipsTooLow() public { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegationFee.selector, + PoSSecurityModule.InvalidDelegationFee.selector, DEFAULT_MINIMUM_DELEGATION_FEE_BIPS - 1 ) ); @@ -105,7 +105,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint16 delegationFeeBips = posValidatorManager.MAXIMUM_DELEGATION_FEE_BIPS() + 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegationFee.selector, delegationFeeBips + PoSSecurityModule.InvalidDelegationFee.selector, delegationFeeBips ) ); @@ -120,7 +120,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInvalidMinStakeDuration() public { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidMinStakeDuration.selector, + PoSSecurityModule.InvalidMinStakeDuration.selector, DEFAULT_MINIMUM_STAKE_DURATION - 1 ) ); @@ -135,7 +135,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testStakeAmountTooLow() public { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MINIMUM_STAKE_AMOUNT - 1 + PoSSecurityModule.InvalidStakeAmount.selector, DEFAULT_MINIMUM_STAKE_AMOUNT - 1 ) ); _initializeValidatorRegistration( @@ -149,7 +149,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testStakeAmountTooHigh() public { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT + 1 + PoSSecurityModule.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT + 1 ) ); _initializeValidatorRegistration( @@ -165,7 +165,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.MinStakeDurationNotPassed.selector, block.timestamp + PoSSecurityModule.MinStakeDurationNotPassed.selector, block.timestamp ) ); posValidatorManager.initializeEndValidation(validationID, false, 0); @@ -304,7 +304,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.warp(DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP); - vm.expectRevert(abi.encodeWithSelector(PoSValidatorManager.InvalidNonce.selector, nonce)); + vm.expectRevert(abi.encodeWithSelector(PoSSecurityModule.InvalidNonce.selector, nonce)); posValidatorManager.completeDelegatorRegistration(delegationID2, 0); } @@ -348,7 +348,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.prank(address(1)); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, address(1)) + abi.encodeWithSelector(PoSSecurityModule.UnauthorizedOwner.selector, address(1)) ); posValidatorManager.initializeEndValidation(validationID, false, 0); } @@ -396,7 +396,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 invalidEndTime = DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP + 1 hours; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.MinStakeDurationNotPassed.selector, invalidEndTime + PoSSecurityModule.MinStakeDurationNotPassed.selector, invalidEndTime ) ); _initializeEndDelegation({ @@ -417,7 +417,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION - 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.MinStakeDurationNotPassed.selector, invalidEndTime + PoSSecurityModule.MinStakeDurationNotPassed.selector, invalidEndTime ) ); _initializeEndDelegation({ @@ -460,7 +460,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.MinStakeDurationNotPassed.selector, invalidEndTime + PoSSecurityModule.MinStakeDurationNotPassed.selector, invalidEndTime ) ); @@ -481,7 +481,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.DelegatorIneligibleForRewards.selector, delegationID + PoSSecurityModule.DelegatorIneligibleForRewards.selector, delegationID ) ); vm.warp(DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP); @@ -598,7 +598,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _endDefaultValidatorWithChecks(validationID, 2); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, address(123)) + abi.encodeWithSelector(PoSSecurityModule.UnauthorizedOwner.selector, address(123)) ); vm.prank(address(123)); @@ -703,7 +703,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidRewardRecipient.selector, newRewardRecipient + PoSSecurityModule.InvalidRewardRecipient.selector, newRewardRecipient ) ); @@ -732,7 +732,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.prank(badActor); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, badActor) + abi.encodeWithSelector(PoSSecurityModule.UnauthorizedOwner.selector, badActor) ); posValidatorManager.changeDelegatorRewardRecipient(delegationID, badActor); @@ -1173,7 +1173,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ); _mockGetPChainWarpMessage(setValidatorWeightPayload, true); - vm.expectRevert(abi.encodeWithSelector(PoSValidatorManager.InvalidNonce.selector, nonce)); + vm.expectRevert(abi.encodeWithSelector(PoSSecurityModule.InvalidNonce.selector, nonce)); posValidatorManager.completeEndDelegation(delegationID2, 0); } @@ -1427,7 +1427,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidRewardRecipient.selector, newRecipient + PoSSecurityModule.InvalidRewardRecipient.selector, newRecipient ) ); @@ -1457,7 +1457,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.prank(badActor); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, badActor) + abi.encodeWithSelector(PoSSecurityModule.UnauthorizedOwner.selector, badActor) ); posValidatorManager.changeValidatorRewardRecipient(validationID, badActor); @@ -1566,7 +1566,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.ValidatorIneligibleForRewards.selector, validationID + PoSSecurityModule.ValidatorIneligibleForRewards.selector, validationID ) ); @@ -1578,7 +1578,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.ValidatorNotPoS.selector, defaultInitialValidationID + PoSSecurityModule.ValidatorNotPoS.selector, defaultInitialValidationID ) ); posValidatorManager.submitUptimeProof(defaultInitialValidationID, 0); @@ -1645,7 +1645,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.ValidatorNotPoS.selector, defaultInitialValidationID + PoSSecurityModule.ValidatorNotPoS.selector, defaultInitialValidationID ) ); @@ -1663,7 +1663,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.MaxWeightExceeded.selector, delegatorWeight + DEFAULT_WEIGHT + PoSSecurityModule.MaxWeightExceeded.selector, delegatorWeight + DEFAULT_WEIGHT ) ); @@ -1676,7 +1676,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + PoSSecurityModule.InvalidDelegatorStatus.selector, DelegatorStatus.Active ) ); @@ -1734,7 +1734,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.PendingAdded + PoSSecurityModule.InvalidDelegatorStatus.selector, DelegatorStatus.PendingAdded ) ); @@ -1746,7 +1746,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 delegationID = _registerDefaultDelegator(validationID); vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, address(123)) + abi.encodeWithSelector(PoSSecurityModule.UnauthorizedOwner.selector, address(123)) ); vm.prank(address(123)); @@ -1805,7 +1805,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + PoSSecurityModule.InvalidDelegatorStatus.selector, DelegatorStatus.Active ) ); @@ -1850,7 +1850,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + PoSSecurityModule.InvalidDelegatorStatus.selector, DelegatorStatus.Active ) ); @@ -1901,7 +1901,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testValueToWeightTruncated() public { // default weightToValueFactor is 1e12 vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidStakeAmount.selector, 1e11) + abi.encodeWithSelector(PoSSecurityModule.InvalidStakeAmount.selector, 1e11) ); posValidatorManager.valueToWeight(1e11); } @@ -1909,7 +1909,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testValueToWeightExceedsUInt64Max() public { // default weightToValueFactor is 1e12 vm.expectRevert( - abi.encodeWithSelector(PoSValidatorManager.InvalidStakeAmount.selector, 1e40) + abi.encodeWithSelector(PoSSecurityModule.InvalidStakeAmount.selector, 1e40) ); posValidatorManager.valueToWeight(1e40); } @@ -1934,9 +1934,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { assertEq(v3, 1e27); } - function testPoSValidatorManagerStorageSlot() public view { + function testPoSSecurityModuleStorageSlot() public view { assertEq( - _erc7201StorageSlot("PoSValidatorManager"), + _erc7201StorageSlot("PoSSecurityModule"), posValidatorManager.POS_VALIDATOR_MANAGER_STORAGE_LOCATION() ); } @@ -2450,8 +2450,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); } - function _defaultPoSSettings() internal pure returns (PoSValidatorManagerSettings memory) { - return PoSValidatorManagerSettings({ + function _defaultPoSSettings() internal pure returns (PoSSecurityModuleSettings memory) { + return PoSSecurityModuleSettings({ baseSettings: ValidatorManagerSettings({ subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 5aaee5a7b..0b086e97e 100755 --- a/scripts/abi_bindings.sh +++ b/scripts/abi_bindings.sh @@ -16,9 +16,9 @@ export ARCH=$(uname -m) [ $ARCH = x86_64 ] && ARCH=amd64 echo "ARCH set to $ARCH" -DEFAULT_CONTRACT_LIST="TeleporterMessenger TeleporterRegistry ExampleERC20 ExampleRewardCalculator TestMessenger ValidatorSetSig NativeTokenStakingManager ERC20TokenStakingManager PoAValidatorManager +DEFAULT_CONTRACT_LIST="TeleporterMessenger TeleporterRegistry ExampleERC20 ExampleRewardCalculator TestMessenger ValidatorSetSig NativeTokenSecurityModule ERC20SecurityModule PoASecurityModule TokenHome TokenRemote ERC20TokenHome ERC20TokenHomeUpgradeable ERC20TokenRemote ERC20TokenRemoteUpgradeable NativeTokenHome NativeTokenHomeUpgradeable NativeTokenRemote NativeTokenRemoteUpgradeable -WrappedNativeToken MockERC20SendAndCallReceiver MockNativeSendAndCallReceiver ExampleERC20Decimals IValidatorManager IPoSValidatorManager IACP99ValidatorManager ValidatorManager" +WrappedNativeToken MockERC20SendAndCallReceiver MockNativeSendAndCallReceiver ExampleERC20Decimals IValidatorManager IPoSSecurityModule IACP99ValidatorManager ValidatorManager" PROXY_LIST="TransparentUpgradeableProxy ProxyAdmin" SUBNET_EVM_LIST="INativeMinter" diff --git a/tests/flows/teleporter/validator_churn.go b/tests/flows/teleporter/validator_churn.go index b0af5f88d..e012c3244 100644 --- a/tests/flows/teleporter/validator_churn.go +++ b/tests/flows/teleporter/validator_churn.go @@ -9,7 +9,7 @@ import ( "github.com/ava-labs/subnet-evm/accounts/abi/bind" subnetEvmUtils "github.com/ava-labs/subnet-evm/tests/utils" teleportermessenger "github.com/ava-labs/teleporter/abi-bindings/go/teleporter/TeleporterMessenger" - poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" + poasecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoASecurityModule" localnetwork "github.com/ava-labs/teleporter/tests/network" "github.com/ava-labs/teleporter/tests/utils" "github.com/ethereum/go-ethereum/common" @@ -80,7 +80,7 @@ func ValidatorChurn(network *localnetwork.LocalNetwork, teleporter utils.Telepor defer cancel() newNodes := network.GetExtraNodes(newNodeCount) validatorManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) - validatorManager, err := poavalidatormanager.NewPoAValidatorManager(validatorManagerAddress, subnetAInfo.RPCClient) + validatorManager, err := poasecuritymodule.NewPoASecurityModule(validatorManagerAddress, subnetAInfo.RPCClient) pChainInfo := utils.GetPChainInfo(network.GetPrimaryNetworkInfo()) Expect(err).Should(BeNil()) diff --git a/tests/flows/validator-manager/erc20_token_staking.go b/tests/flows/validator-manager/erc20_token_staking.go index b3e49e1a6..6c80efd7d 100644 --- a/tests/flows/validator-manager/erc20_token_staking.go +++ b/tests/flows/validator-manager/erc20_token_staking.go @@ -8,7 +8,7 @@ import ( "github.com/ava-labs/avalanchego/utils/units" "github.com/ava-labs/subnet-evm/accounts/abi/bind" exampleerc20 "github.com/ava-labs/teleporter/abi-bindings/go/mocks/ExampleERC20" - erc20stakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" + erc20securitymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20SecurityModule" validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ValidatorManager" localnetwork "github.com/ava-labs/teleporter/tests/network" "github.com/ava-labs/teleporter/tests/utils" @@ -31,7 +31,7 @@ import ( * - Deliver the Warp message to the subnet * - Verify that the validator is delisted from the staking contract */ -func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { +func ERC20SecurityModule(network *localnetwork.LocalNetwork) { // Get the subnets info cChainInfo := network.GetPrimaryNetworkInfo() subnetAInfo, _ := network.GetTwoSubnets() @@ -49,7 +49,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { nodes, initialValidationIDs, _ := network.ConvertSubnet( ctx, subnetAInfo, - utils.ERC20TokenStakingManager, + utils.ERC20SecurityModule, []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits fundedKey, false, @@ -63,7 +63,7 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { securityModuleAddress, err := validatorManager.GetSecurityModule(&bind.CallOpts{}) Expect(err).Should(BeNil()) - securityModule, err := erc20stakingmanager.NewERC20TokenStakingManager(securityModuleAddress, subnetAInfo.RPCClient) + securityModule, err := erc20securitymodule.NewERC20SecurityModule(securityModuleAddress, subnetAInfo.RPCClient) Expect(err).Should(BeNil()) erc20Address, err := securityModule.Erc20(&bind.CallOpts{}) diff --git a/tests/flows/validator-manager/native_token_staking.go b/tests/flows/validator-manager/native_token_staking.go index 2710f0732..a0ecbe5b3 100644 --- a/tests/flows/validator-manager/native_token_staking.go +++ b/tests/flows/validator-manager/native_token_staking.go @@ -9,8 +9,8 @@ package staking // "github.com/ava-labs/avalanchego/ids" // "github.com/ava-labs/avalanchego/utils/units" // "github.com/ava-labs/subnet-evm/accounts/abi/bind" -// nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" -// iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" +// nativetokensecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenSecurityModule" +// ipossecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule" // localnetwork "github.com/ava-labs/teleporter/tests/network" // "github.com/ava-labs/teleporter/tests/utils" // . "github.com/onsi/gomega" @@ -18,7 +18,7 @@ package staking // /* // * Registers a native token staking validator on a subnet. The steps are as follows: -// * - Deploy the NativeTokenStakingManager +// * - Deploy the NativeTokenSecurityModule // * - Initiate validator registration // * - Deliver the Warp message to the P-Chain (not implemented) // * - Aggregate P-Chain signatures on the response Warp message @@ -32,7 +32,7 @@ package staking // * - Deliver the Warp message to the subnet // * - Verify that the validator is delisted from the staking contract // */ -// func NativeTokenStakingManager(network *localnetwork.LocalNetwork) { +// func NativeTokenSecurityModule(network *localnetwork.LocalNetwork) { // // Get the subnets info // cChainInfo := network.GetPrimaryNetworkInfo() // subnetAInfo, _ := network.GetTwoSubnets() @@ -50,13 +50,13 @@ package staking // nodes, initialValidationIDs, _ := network.ConvertSubnet( // ctx, // subnetAInfo, -// utils.NativeTokenStakingManager, +// utils.NativeTokenSecurityModule, // []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits // fundedKey, // false, // ) // stakingManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) -// nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( +// nativeStakingManager, err := nativetokensecuritymodule.NewNativeTokenSecurityModule( // stakingManagerAddress, // subnetAInfo.RPCClient, // ) @@ -66,7 +66,7 @@ package staking // // // // Delist one initial validator // // -// posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnetAInfo.RPCClient) +// posStakingManager, err := ipossecuritymodule.NewIPoSSecurityModule(stakingManagerAddress, subnetAInfo.RPCClient) // Expect(err).Should(BeNil()) // utils.InitializeAndCompleteEndInitialPoSValidation( // ctx, diff --git a/tests/flows/validator-manager/poa_to_pos.go b/tests/flows/validator-manager/poa_to_pos.go index 3748d1a59..c05e88580 100644 --- a/tests/flows/validator-manager/poa_to_pos.go +++ b/tests/flows/validator-manager/poa_to_pos.go @@ -8,9 +8,9 @@ package staking // "github.com/ava-labs/avalanchego/ids" // "github.com/ava-labs/avalanchego/utils/units" // "github.com/ava-labs/subnet-evm/accounts/abi/bind" -// nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" -// poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" -// iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" +// nativetokensecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenSecurityModule" +// poasecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoASecurityModule" +// ipossecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule" // localnetwork "github.com/ava-labs/teleporter/tests/network" // "github.com/ava-labs/teleporter/tests/utils" // "github.com/ethereum/go-ethereum/crypto" @@ -22,15 +22,15 @@ package staking // * Register a PoA validator manager on a L1 with a proxy. The steps are as follows: // * - Generate random address to be the owner address // * - Fund native assets to the owner address -// * - Deploy the PoAValidatorManager contract -// * - Deploy a TransparentUpgradeableProxy contract that points to the PoAValidatorManager -// * - Call initialize on the PoAValidatorManager through the proxy +// * - Deploy the PoASecurityModule contract +// * - Deploy a TransparentUpgradeableProxy contract that points to the PoASecurityModule +// * - Call initialize on the PoASecurityModule through the proxy // * - Initialize and complete PoA validator registration // * // * Migrates the proxy to a PoS validator manager. The steps are as follows: -// * - Deploy the PoSValidatorManager contract -// * - Upgrade the TransparentUpgradeableProxy to point to the PoSValidatorManager -// * - Call initialize on the PoSValidatorManager through the proxy +// * - Deploy the PoSSecurityModule contract +// * - Upgrade the TransparentUpgradeableProxy to point to the PoSSecurityModule +// * - Call initialize on the PoSSecurityModule through the proxy // * - Check that previous validator is still active // * - Initialize and complete PoS validator registration // * - Attempt to delist previous PoA validator with wrong owner and check that it fails @@ -67,17 +67,17 @@ package staking // fundAmount, // ) -// // Deploy PoAValidatorManager contract with a proxy +// // Deploy PoASecurityModule contract with a proxy // nodes, initialValidationIDs, proxyAdmin := network.ConvertSubnet( // ctx, // subnetAInfo, -// utils.PoAValidatorManager, +// utils.PoASecurityModule, // []uint64{units.Schmeckle, 1000 * units.Schmeckle}, // Choose weights to avoid validator churn limits // ownerKey, // true, // ) // proxyAddress := network.GetValidatorManager(subnetAInfo.SubnetID) -// poaValidatorManager, err := poavalidatormanager.NewPoAValidatorManager(proxyAddress, subnetAInfo.RPCClient) +// poaValidatorManager, err := poasecuritymodule.NewPoASecurityModule(proxyAddress, subnetAInfo.RPCClient) // Expect(err).Should(BeNil()) // // @@ -105,7 +105,7 @@ package staking // _, err = poaValidatorManager.InitializeValidatorRegistration( // opts, -// poavalidatormanager.ValidatorRegistrationInput{ +// poasecuritymodule.ValidatorRegistrationInput{ // NodeID: nodes[0].NodeID[:], // RegistrationExpiry: uint64(time.Now().Add(24 * time.Hour).Unix()), // BlsPublicKey: nodes[0].NodePoP.PublicKey[:], @@ -138,16 +138,16 @@ package staking // /* // ****************** -// * Migrate PoAValidatorManager to PoSValidatorManager +// * Migrate PoASecurityModule to PoSSecurityModule // ****************** // */ -// // Deploy PoSValidatorManager contract +// // Deploy PoSSecurityModule contract // newImplAddress, _ := utils.DeployValidatorManager( // ctx, // fundedKey, // subnetAInfo, -// utils.NativeTokenStakingManager, +// utils.NativeTokenSecurityModule, // ) // // Upgrade the TransparentUpgradeableProxy contract to use the new logic contract @@ -157,8 +157,8 @@ package staking // Expect(err).Should(BeNil()) // utils.WaitForTransactionSuccess(ctx, subnetAInfo, tx.Hash()) -// // Change the proxy contract type to NativeTokenStakingManager and initialize it -// nativeStakingManager, err := nativetokenstakingmanager.NewNativeTokenStakingManager( +// // Change the proxy contract type to NativeTokenSecurityModule and initialize it +// nativeStakingManager, err := nativetokensecuritymodule.NewNativeTokenSecurityModule( // proxyAddress, // subnetAInfo.RPCClient, // ) @@ -175,8 +175,8 @@ package staking // tx, err = nativeStakingManager.Initialize( // opts, -// nativetokenstakingmanager.PoSValidatorManagerSettings{ -// BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ +// nativetokensecuritymodule.PoSSecurityModuleSettings{ +// BaseSettings: nativetokensecuritymodule.ValidatorManagerSettings{ // SubnetID: subnetAInfo.SubnetID, // ChurnPeriodSeconds: utils.DefaultChurnPeriodSeconds, // MaximumChurnPercentage: utils.DefaultMaxChurnPercentage, @@ -202,7 +202,7 @@ package staking // // // // Remove the PoA validator and re-register as a PoS validator // // -// posStakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(proxyAddress, subnetAInfo.RPCClient) +// posStakingManager, err := ipossecuritymodule.NewIPoSSecurityModule(proxyAddress, subnetAInfo.RPCClient) // Expect(err).Should(BeNil()) // utils.InitializeAndCompleteEndPoSValidation( // ctx, diff --git a/tests/suites/teleporter/teleporter_suite_test.go b/tests/suites/teleporter/teleporter_suite_test.go index bf37d4a96..13ebbf10f 100644 --- a/tests/suites/teleporter/teleporter_suite_test.go +++ b/tests/suites/teleporter/teleporter_suite_test.go @@ -111,7 +111,7 @@ var _ = ginkgo.BeforeSuite(func() { LocalNetworkInstance.ConvertSubnet( ctx, subnet, - utils.PoAValidatorManager, + utils.PoASecurityModule, []uint64{units.Schmeckle, units.Schmeckle, units.Schmeckle, units.Schmeckle, units.Schmeckle}, fundedKey, false) diff --git a/tests/suites/validator-manager/validator_manager_suite_test.go b/tests/suites/validator-manager/validator_manager_suite_test.go index b6549ef5a..3f3c95a70 100644 --- a/tests/suites/validator-manager/validator_manager_suite_test.go +++ b/tests/suites/validator-manager/validator_manager_suite_test.go @@ -68,12 +68,12 @@ var _ = ginkgo.Describe("[Validator manager integration tests]", func() { // ginkgo.It("Native token staking manager", // ginkgo.Label(validatorManagerLabel), // func() { - // validatorManagerFlows.NativeTokenStakingManager(LocalNetworkInstance) + // validatorManagerFlows.NativeTokenSecurityModule(LocalNetworkInstance) // }) ginkgo.It("ERC20 token staking manager", ginkgo.Label(validatorManagerLabel), func() { - validatorManagerFlows.ERC20TokenStakingManager(LocalNetworkInstance) + validatorManagerFlows.ERC20SecurityModule(LocalNetworkInstance) }) // ginkgo.It("PoA migration to PoS", // ginkgo.Label(validatorManagerLabel), diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index bfb3c1aa6..0149e5dcd 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -32,13 +32,13 @@ import ( "github.com/ava-labs/subnet-evm/warp/messages" proxyadmin "github.com/ava-labs/teleporter/abi-bindings/go/ProxyAdmin" exampleerc20 "github.com/ava-labs/teleporter/abi-bindings/go/mocks/ExampleERC20" - erc20tokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" + erc20securitymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20SecurityModule" examplerewardcalculator "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ExampleRewardCalculator" - nativetokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenStakingManager" - poavalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoAValidatorManager" + nativetokensecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/NativeTokenSecurityModule" + poasecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/PoASecurityModule" validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ValidatorManager" iacp99validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager" - iposvalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager" + ipossecuritymodule "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IPoSSecurityModule" ivalidatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/interfaces/IValidatorManager" "github.com/ava-labs/teleporter/tests/interfaces" "github.com/ethereum/go-ethereum/common" @@ -61,9 +61,9 @@ const ( type ValidatorManagerConcreteType int const ( - PoAValidatorManager ValidatorManagerConcreteType = iota - ERC20TokenStakingManager - NativeTokenStakingManager + PoASecurityModule ValidatorManagerConcreteType = iota + ERC20SecurityModule + NativeTokenSecurityModule ) // @@ -100,7 +100,7 @@ func DeployValidatorManager( return address, validatorManager } -// The senderKey is used as the owner of proxy and PoAValidatorManager contracts +// The senderKey is used as the owner of proxy and PoASecurityModule contracts func DeployAndInitializeValidatorManager( ctx context.Context, senderKey *ecdsa.PrivateKey, @@ -118,10 +118,10 @@ func DeployAndInitializeValidatorManager( validatorManager *validatormanager.ValidatorManager ) switch managerType { - case PoAValidatorManager: - poavalidatormanager.PoAValidatorManagerBin = poavalidatormanager.PoAValidatorManagerMetaData.Bin - var poaValidatorManager *poavalidatormanager.PoAValidatorManager - securityModuleAddress, tx, poaValidatorManager, err = poavalidatormanager.DeployPoAValidatorManager(opts, subnet.RPCClient, 0) + case PoASecurityModule: + poasecuritymodule.PoASecurityModuleBin = poasecuritymodule.PoASecurityModuleMetaData.Bin + var poaValidatorManager *poasecuritymodule.PoASecurityModule + securityModuleAddress, tx, poaValidatorManager, err = poasecuritymodule.DeployPoASecurityModule(opts, subnet.RPCClient, 0) Expect(err).Should(BeNil()) WaitForTransactionSuccess(ctx, subnet, tx.Hash()) @@ -139,7 +139,7 @@ func DeployAndInitializeValidatorManager( validatorManagerAddress, ) Expect(err).Should(BeNil()) - case ERC20TokenStakingManager: + case ERC20SecurityModule: erc20Address, _ := DeployExampleERC20(ctx, senderKey, subnet) rewardCalculatorAddress, _ := DeployExampleRewardCalculator( ctx, @@ -147,9 +147,9 @@ func DeployAndInitializeValidatorManager( subnet, uint64(10), ) - erc20tokenstakingmanager.ERC20TokenStakingManagerBin = erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.Bin - var erc20StakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager - securityModuleAddress, tx, erc20StakingManager, err = erc20tokenstakingmanager.DeployERC20TokenStakingManager( + erc20securitymodule.ERC20SecurityModuleBin = erc20securitymodule.ERC20SecurityModuleMetaData.Bin + var erc20StakingManager *erc20securitymodule.ERC20SecurityModule + securityModuleAddress, tx, erc20StakingManager, err = erc20securitymodule.DeployERC20SecurityModule( opts, subnet.RPCClient, 0, @@ -167,7 +167,7 @@ func DeployAndInitializeValidatorManager( tx, err = erc20StakingManager.Initialize( opts, - erc20tokenstakingmanager.PoSValidatorManagerSettings{ + erc20securitymodule.PoSSecurityModuleSettings{ ValidatorManager: validatorManagerAddress, MinimumStakeAmount: big.NewInt(0).SetUint64(DefaultMinStakeAmount), MaximumStakeAmount: big.NewInt(0).SetUint64(DefaultMaxStakeAmount), @@ -181,16 +181,16 @@ func DeployAndInitializeValidatorManager( erc20Address, ) Expect(err).Should(BeNil()) - case NativeTokenStakingManager: + case NativeTokenSecurityModule: rewardCalculatorAddress, _ := DeployExampleRewardCalculator( ctx, senderKey, subnet, uint64(10), ) - nativetokenstakingmanager.NativeTokenStakingManagerBin = nativetokenstakingmanager.NativeTokenStakingManagerMetaData.Bin - var nativeStakingManager *nativetokenstakingmanager.NativeTokenStakingManager - securityModuleAddress, tx, nativeStakingManager, err = nativetokenstakingmanager.DeployNativeTokenStakingManager( + nativetokensecuritymodule.NativeTokenSecurityModuleBin = nativetokensecuritymodule.NativeTokenSecurityModuleMetaData.Bin + var nativeStakingManager *nativetokensecuritymodule.NativeTokenSecurityModule + securityModuleAddress, tx, nativeStakingManager, err = nativetokensecuritymodule.DeployNativeTokenSecurityModule( opts, subnet.RPCClient, 0, @@ -208,7 +208,7 @@ func DeployAndInitializeValidatorManager( tx, err = nativeStakingManager.Initialize( opts, - nativetokenstakingmanager.PoSValidatorManagerSettings{ + nativetokensecuritymodule.PoSSecurityModuleSettings{ ValidatorManager: validatorManagerAddress, MinimumStakeAmount: big.NewInt(0).SetUint64(DefaultMinStakeAmount), MaximumStakeAmount: big.NewInt(0).SetUint64(DefaultMaxStakeAmount), @@ -386,7 +386,7 @@ func DeliverSubnetConversion( // stakeAmount *big.Int, // node Node, // expiry uint64, -// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// stakingManager *nativetokensecuritymodule.NativeTokenSecurityModule, // ) (*types.Receipt, ids.ID) { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) // Expect(err).Should(BeNil()) @@ -394,7 +394,7 @@ func DeliverSubnetConversion( // tx, err := stakingManager.InitializeValidatorRegistration( // opts, -// nativetokenstakingmanager.ValidatorRegistrationInput{ +// nativetokensecuritymodule.ValidatorRegistrationInput{ // NodeID: node.NodeID[:], // RegistrationExpiry: expiry, // BlsPublicKey: node.NodePoP.PublicKey[:], @@ -420,7 +420,7 @@ func InitializeACP99ERC20ValidatorRegistration( token *exampleerc20.ExampleERC20, node Node, expiry uint64, - securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModule *erc20securitymodule.ERC20SecurityModule, securityModuleAddress common.Address, validatorManager *validatormanager.ValidatorManager, ) (*types.Receipt, ids.ID) { @@ -445,7 +445,7 @@ func InitializeACP99ERC20ValidatorRegistration( tx, err := securityModule.InitializeValidatorRegistration( opts, - erc20tokenstakingmanager.ValidatorRegistrationInput{ + erc20securitymodule.ValidatorRegistrationInput{ NodeID: node.NodeID[:], RegistrationExpiry: expiry, BlsPublicKey: node.NodePoP.PublicKey[:], @@ -473,7 +473,7 @@ func InitializeACP99ERC20ValidatorRegistration( // stakingManagerAddress common.Address, // node Node, // expiry uint64, -// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// stakingManager *erc20securitymodule.ERC20SecurityModule, // ) (*types.Receipt, ids.ID) { // ERC20Approve( // ctx, @@ -489,7 +489,7 @@ func InitializeACP99ERC20ValidatorRegistration( // tx, err := stakingManager.InitializeValidatorRegistration( // opts, -// erc20tokenstakingmanager.ValidatorRegistrationInput{ +// erc20securitymodule.ValidatorRegistrationInput{ // NodeID: node.NodeID[:], // RegistrationExpiry: expiry, // BlsPublicKey: node.NodePoP.PublicKey[:], @@ -514,14 +514,14 @@ func InitializeACP99ERC20ValidatorRegistration( // subnet interfaces.SubnetTestInfo, // node Node, // expiry uint64, -// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManager *poasecuritymodule.PoASecurityModule, // ) (*types.Receipt, ids.ID) { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) // Expect(err).Should(BeNil()) // tx, err := validatorManager.InitializeValidatorRegistration( // opts, -// poavalidatormanager.ValidatorRegistrationInput{ +// poasecuritymodule.ValidatorRegistrationInput{ // NodeID: node.NodeID[:], // RegistrationExpiry: expiry, // BlsPublicKey: node.NodePoP.PublicKey[:], @@ -545,7 +545,7 @@ func CompleteValidatorRegistration( securityModuleAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() + abi, err := erc20securitymodule.ERC20SecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeValidatorRegistration", uint32(0)) Expect(err).Should(BeNil()) @@ -592,7 +592,7 @@ func CallWarpReceiver( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// stakingManager *nativetokensecuritymodule.NativeTokenSecurityModule, // stakingManagerContractAddress common.Address, // expiry uint64, // node Node, @@ -678,7 +678,7 @@ func InitializeAndCompleteACP99ERC20ValidatorRegistration( log.Println("Initializing validator v registration") securityModuleAddress, err := stakingManager.GetSecurityModule(&bind.CallOpts{}) Expect(err).Should(BeNil()) - securityModule, err := erc20tokenstakingmanager.NewERC20TokenStakingManager(securityModuleAddress, subnetInfo.RPCClient) + securityModule, err := erc20securitymodule.NewERC20SecurityModule(securityModuleAddress, subnetInfo.RPCClient) Expect(err).Should(BeNil()) receipt, validationID := InitializeACP99ERC20ValidatorRegistration( @@ -744,7 +744,7 @@ func InitializeAndCompleteACP99ERC20ValidatorRegistration( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// stakingManager *erc20securitymodule.ERC20SecurityModule, // stakingManagerAddress common.Address, // erc20 *exampleerc20.ExampleERC20, // expiry uint64, @@ -823,7 +823,7 @@ func InitializeAndCompleteACP99ERC20ValidatorRegistration( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManager *poasecuritymodule.PoASecurityModule, // validatorManagerAddress common.Address, // expiry uint64, // node Node, @@ -888,7 +888,7 @@ func InitializeAndCompleteACP99ERC20ValidatorRegistration( // ctx context.Context, // senderKey *ecdsa.PrivateKey, // subnet interfaces.SubnetTestInfo, -// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManager *ipossecuritymodule.IPoSSecurityModule, // validationID ids.ID, // ) *types.Receipt { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) @@ -907,7 +907,7 @@ func InitializeEndACP99PoSValidation( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModule *erc20securitymodule.ERC20SecurityModule, validationID ids.ID, includeUptime bool, messageIndex uint32, @@ -930,7 +930,7 @@ func InitializeEndACP99PoSValidation( // ctx context.Context, // senderKey *ecdsa.PrivateKey, // subnet interfaces.SubnetTestInfo, -// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManager *ipossecuritymodule.IPoSSecurityModule, // validationID ids.ID, // ) *types.Receipt { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) @@ -991,7 +991,7 @@ func InitializeEndACP99PoSValidationWithUptime( signatureAggregator, ) - abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() + abi, err := erc20securitymodule.ERC20SecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("forceInitializeEndValidation", validationID, true, uint32(0)) Expect(err).Should(BeNil()) @@ -1023,7 +1023,7 @@ func ForceInitializeEndPoSValidationWithUptime( signatureAggregator, ) - abi, err := iposvalidatormanager.IPoSValidatorManagerMetaData.GetAbi() + abi, err := ipossecuritymodule.IPoSSecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("forceInitializeEndValidation", validationID, true, uint32(0)) Expect(err).Should(BeNil()) @@ -1055,7 +1055,7 @@ func InitializeEndPoSValidationWithUptime( signatureAggregator, ) - abi, err := iposvalidatormanager.IPoSValidatorManagerMetaData.GetAbi() + abi, err := ipossecuritymodule.IPoSSecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("initializeEndValidation", validationID, true, uint32(0)) Expect(err).Should(BeNil()) @@ -1073,7 +1073,7 @@ func InitializeEndPoSValidationWithUptime( // ctx context.Context, // senderKey *ecdsa.PrivateKey, // subnet interfaces.SubnetTestInfo, -// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManager *poasecuritymodule.PoASecurityModule, // validationID ids.ID, // ) *types.Receipt { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) @@ -1093,7 +1093,7 @@ func CompleteEndValidation( securityModuleAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := erc20tokenstakingmanager.ERC20TokenStakingManagerMetaData.GetAbi() + abi, err := erc20securitymodule.ERC20SecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeEndValidation", uint32(0)) Expect(err).Should(BeNil()) @@ -1115,7 +1115,7 @@ func CompleteEndValidation( // delegationAmount *big.Int, // token *exampleerc20.ExampleERC20, // stakingManagerAddress common.Address, -// stakingManager *erc20tokenstakingmanager.ERC20TokenStakingManager, +// stakingManager *erc20securitymodule.ERC20SecurityModule, // ) *types.Receipt { // ERC20Approve( // ctx, @@ -1151,7 +1151,7 @@ func CompleteEndValidation( // validationID ids.ID, // delegationAmount *big.Int, // stakingManagerAddress common.Address, -// stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, +// stakingManager *nativetokensecuritymodule.NativeTokenSecurityModule, // ) *types.Receipt { // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) // Expect(err).Should(BeNil()) @@ -1179,7 +1179,7 @@ func CompleteDelegatorRegistration( stakingManagerContractAddress common.Address, signedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := iposvalidatormanager.IPoSValidatorManagerMetaData.GetAbi() + abi, err := ipossecuritymodule.IPoSSecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeDelegatorRegistration", delegationID, uint32(0)) Expect(err).Should(BeNil()) @@ -1200,7 +1200,7 @@ func CompleteDelegatorRegistration( // stakingManagerAddress common.Address, // delegationID ids.ID, // ) *types.Receipt { -// stakingManager, err := iposvalidatormanager.NewIPoSValidatorManager(stakingManagerAddress, subnet.RPCClient) +// stakingManager, err := ipossecuritymodule.NewIPoSSecurityModule(stakingManagerAddress, subnet.RPCClient) // Expect(err).Should(BeNil()) // WaitMinStakeDuration(ctx, subnet, senderKey) // opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) @@ -1223,7 +1223,7 @@ func CompleteEndDelegation( stakingManagerContractAddress common.Address, signedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := iposvalidatormanager.IPoSValidatorManagerMetaData.GetAbi() + abi, err := ipossecuritymodule.IPoSSecurityModuleMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeEndDelegation", delegationID, uint32(0)) Expect(err).Should(BeNil()) @@ -1243,7 +1243,7 @@ func InitializeAndCompleteEndInitialACP99PoSValidation( fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModule *erc20securitymodule.ERC20SecurityModule, securityModuleAddress common.Address, validatorManager *validatormanager.ValidatorManager, validationID ids.ID, @@ -1325,7 +1325,7 @@ func InitializeAndCompleteEndInitialACP99PoSValidation( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManager *ipossecuritymodule.IPoSSecurityModule, // stakingManagerAddress common.Address, // validationID ids.ID, // index uint32, @@ -1402,7 +1402,7 @@ func InitializeAndCompleteEndACP99PoSValidation( fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - securityModule *erc20tokenstakingmanager.ERC20TokenStakingManager, + securityModule *erc20securitymodule.ERC20SecurityModule, securityModuleAddress common.Address, validatorManager *validatormanager.ValidatorManager, validationID ids.ID, @@ -1503,7 +1503,7 @@ func InitializeAndCompleteEndACP99PoSValidation( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// stakingManager *iposvalidatormanager.IPoSValidatorManager, +// stakingManager *ipossecuritymodule.IPoSSecurityModule, // stakingManagerAddress common.Address, // validationID ids.ID, // expiry uint64, @@ -1601,7 +1601,7 @@ func InitializeAndCompleteEndACP99PoSValidation( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// stakingManager *poavalidatormanager.PoAValidatorManager, +// stakingManager *poasecuritymodule.PoASecurityModule, // stakingManagerAddress common.Address, // validationID ids.ID, // index uint32, @@ -1679,7 +1679,7 @@ func InitializeAndCompleteEndACP99PoSValidation( // fundedKey *ecdsa.PrivateKey, // subnetInfo interfaces.SubnetTestInfo, // pChainInfo interfaces.SubnetTestInfo, -// validatorManager *poavalidatormanager.PoAValidatorManager, +// validatorManager *poasecuritymodule.PoASecurityModule, // validatorManagerAddress common.Address, // validationID ids.ID, // weight uint64,