From 0864b83d37070123c673f2ce603a6e0aa3aa8980 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 09:18:04 -0600 Subject: [PATCH 1/8] register validator building --- .../ACP99ValidatorManager.sol | 48 +++++++++++ .../validator-manager/ERC20ACP99Manager.sol | 77 +++++++++++++++++ .../validator-manager/PoSValidatorManager.sol | 33 ++++++++ .../validator-manager/ValidatorManager.sol | 7 +- .../interfaces/IACP99SecurityModule.sol | 20 +++++ .../interfaces/IValidatorManager.sol | 82 +++++++++---------- 6 files changed, 223 insertions(+), 44 deletions(-) create mode 100644 contracts/validator-manager/ACP99ValidatorManager.sol create mode 100644 contracts/validator-manager/ERC20ACP99Manager.sol create mode 100644 contracts/validator-manager/interfaces/IACP99SecurityModule.sol diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol new file mode 100644 index 000000000..ffa8a5f04 --- /dev/null +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -0,0 +1,48 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; +import {ValidatorManager} from "./ValidatorManager.sol"; +import {ConversionData,ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; + +pragma solidity 0.8.25; + +contract ACP99ValidatorManager is ValidatorManager{ + IACP99SecurityModule public securityModule; + + // TODO: calling this should be restricted to...who? + function setSecurityModule(IACP99SecurityModule _securityModule) external { + securityModule = _securityModule; + } + + function initializeValidatorSet( + ConversionData calldata conversionData, + uint32 messageIndex + ) external { + _initializeValidatorSet(conversionData, messageIndex); + } + + function initializeValidatorRegistration( + ValidatorRegistrationInput calldata input, + uint64 weight, + bytes calldata args + ) external returns (bytes32){ + bytes32 validationID = _initializeValidatorRegistration(input, weight); + securityModule.handleValidatorRegistration(validationID, weight, args); + return validationID; + } + + function completeValidatorRegistration(uint32 messageIndex) external{ + _completeValidatorRegistration(messageIndex); + } + + function initializeEndValidation() external{} + + function completeEndValidation() external{} + + function initializeValidatorWeightChange() external{} + + function completeValidatorWeightChange() external{} +} \ No newline at end of file diff --git a/contracts/validator-manager/ERC20ACP99Manager.sol b/contracts/validator-manager/ERC20ACP99Manager.sol new file mode 100644 index 000000000..d1309151c --- /dev/null +++ b/contracts/validator-manager/ERC20ACP99Manager.sol @@ -0,0 +1,77 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; +import {PoSValidatorManager} from "./PoSValidatorManager.sol"; +import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; +import {SafeERC20TransferFrom} from "@utilities/SafeERC20TransferFrom.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; +import {ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; + + + +pragma solidity 0.8.25; + +contract ERC20ACP99Manager is IACP99SecurityModule, PoSValidatorManager { + using SafeERC20 for IERC20Mintable; + using SafeERC20TransferFrom for IERC20Mintable; + + IERC20Mintable public token; + uint8 public tokenDecimals; + + constructor(IERC20Mintable token_, uint8 tokenDecimals_) { + token = token_; + tokenDecimals = tokenDecimals_; + } + + function handleValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { + uint256 stakeAmount = weightToValue(weight); + (uint16 delegationFeeBips, uint64 minStakeDuration) = abi.decode(args, (uint16, uint64)); + _acp99InitValidatorRegistration(validationID, stakeAmount, delegationFeeBips, minStakeDuration); + } + + function handleEndValidation() external { + } + + function handleValidatorWeightChange() external { + } + + // unused + function initializeValidatorRegistration( + ValidatorRegistrationInput calldata registrationInput, + uint16 delegationFeeBips, + uint64 minStakeDuration, + uint256 stakeAmount + ) external nonReentrant returns (bytes32 validationID) { + return _initializeValidatorRegistration( + registrationInput, delegationFeeBips, minStakeDuration, stakeAmount + ); + } + + /** + * @notice See {PoSValidatorManager-_lock} + * Note: Must be guarded with reentrancy guard for safe transfer from. + */ + function _lock(uint256 value) internal virtual override returns (uint256) { + return token.safeTransferFrom(value); + } + + /** + * @notice See {PoSValidatorManager-_unlock} + * Note: Must be guarded with reentrancy guard for safe transfer. + */ + function _unlock(address to, uint256 value) internal virtual override { + token.safeTransfer(to, value); + } + + /** + * @notice See {PoSValidatorManager-_reward} + */ + function _reward(address account, uint256 amount) internal virtual override { + token.mint(account, amount); + } + + +} \ No newline at end of file diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 4243b850b..927bf51e7 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -486,6 +486,39 @@ abstract contract PoSValidatorManager is return validationID; } + function _acp99InitValidatorRegistration( + bytes32 validationID, + uint256 stakeAmount, + uint16 delegationFeeBips, + uint64 minStakeDuration + ) internal { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + // Validate and save the validator requirements + if ( + delegationFeeBips < $._minimumDelegationFeeBips + || delegationFeeBips > MAXIMUM_DELEGATION_FEE_BIPS + ) { + revert InvalidDelegationFee(delegationFeeBips); + } + + if (minStakeDuration < $._minimumStakeDuration) { + revert InvalidMinStakeDuration(minStakeDuration); + } + + // Ensure the weight is within the valid range. + if (stakeAmount < $._minimumStakeAmount || stakeAmount > $._maximumStakeAmount) { + revert InvalidStakeAmount(stakeAmount); + } + + // Lock the stake in the contract. + _lock(stakeAmount); + + $._posValidatorInfo[validationID].owner = _msgSender(); + $._posValidatorInfo[validationID].delegationFeeBips = delegationFeeBips; + $._posValidatorInfo[validationID].minStakeDuration = minStakeDuration; + $._posValidatorInfo[validationID].uptimeSeconds = 0; + } + /** * @notice Converts a token value to a weight. * @param value Token value to convert. diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index b6d6070f3..859acc27e 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -25,6 +25,7 @@ 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 {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; /** * @dev Implementation of the {IValidatorManager} interface. @@ -141,10 +142,10 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida /** * @notice See {IValidatorManager-initializeValidatorSet}. */ - function initializeValidatorSet( + function _initializeValidatorSet( ConversionData calldata conversionData, uint32 messageIndex - ) external { + ) internal { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); if ($._initializedValidatorSet) { revert InvalidInitializationStatus(); @@ -321,7 +322,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida /** * @notice See {IValidatorManager-completeValidatorRegistration}. */ - function completeValidatorRegistration(uint32 messageIndex) external { + function _completeValidatorRegistration(uint32 messageIndex) internal { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); (bytes32 validationID, bool validRegistration) = ValidatorMessages .unpackL1ValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); diff --git a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol new file mode 100644 index 000000000..26546bcd1 --- /dev/null +++ b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol @@ -0,0 +1,20 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +pragma solidity 0.8.25; + +interface IACP99SecurityModule { + // Called by the ValidatorManager on initializeRegisterValidator + function handleValidatorRegistration( + bytes32 validationID, + uint64 weight, + bytes calldata args + ) external; + + function handleEndValidation() external; + + // Called by the ValidatorManager on initializeSetValidatorWeight + function handleValidatorWeightChange() external; +} \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index f04629bf5..b83e124f5 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -171,45 +171,45 @@ 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. - * @param validationID The ID of the validation period being registered. - */ - 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; + // /** + // * @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. + // * @param validationID The ID of the validation period being registered. + // */ + // 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; } From 510f5fedf93a5698a1ecc9b72595a572b5266142 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 13:34:44 -0600 Subject: [PATCH 2/8] acp99 validator management --- .../ACP99ValidatorManager.sol | 17 +- .../validator-manager/ERC20ACP99Manager.sol | 77 --------- .../ERC20TokenStakingManager.sol | 18 +-- .../NativeTokenStakingManager.sol | 16 +- .../validator-manager/PoAValidatorManager.sol | 43 ++--- .../validator-manager/PoSValidatorManager.sol | 152 +++++------------- .../validator-manager/ValidatorManager.sol | 7 +- .../interfaces/IACP99SecurityModule.sol | 12 +- .../interfaces/IPoSValidatorManager.sol | 56 ------- .../interfaces/IValidatorManager.sol | 82 +++++----- 10 files changed, 134 insertions(+), 346 deletions(-) delete mode 100644 contracts/validator-manager/ERC20ACP99Manager.sol diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index ffa8a5f04..9a4078d40 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -9,7 +9,7 @@ import {ConversionData,ValidatorRegistrationInput} from "./interfaces/IValidator pragma solidity 0.8.25; -contract ACP99ValidatorManager is ValidatorManager{ +abstract contract ACP99ValidatorManager is ValidatorManager { IACP99SecurityModule public securityModule; // TODO: calling this should be restricted to...who? @@ -30,17 +30,24 @@ contract ACP99ValidatorManager is ValidatorManager{ bytes calldata args ) external returns (bytes32){ bytes32 validationID = _initializeValidatorRegistration(input, weight); - securityModule.handleValidatorRegistration(validationID, weight, args); + securityModule.handleInitializeValidatorRegistration(validationID, weight, args); return validationID; } function completeValidatorRegistration(uint32 messageIndex) external{ - _completeValidatorRegistration(messageIndex); + bytes32 validationID = _completeValidatorRegistration(messageIndex); + securityModule.handleCompleteValidatorRegistration(validationID); } - function initializeEndValidation() external{} + function initializeEndValidation(bytes32 validationID, bytes calldata args) external{ + _initializeEndValidation(validationID); + securityModule.handleInitializeEndValidation(validationID, args); + } - function completeEndValidation() external{} + function completeEndValidation(uint32 messageIndex) external{ + bytes32 validationID = _completeEndValidation(messageIndex); + securityModule.handleCompleteEndValidation(validationID); + } function initializeValidatorWeightChange() external{} diff --git a/contracts/validator-manager/ERC20ACP99Manager.sol b/contracts/validator-manager/ERC20ACP99Manager.sol deleted file mode 100644 index d1309151c..000000000 --- a/contracts/validator-manager/ERC20ACP99Manager.sol +++ /dev/null @@ -1,77 +0,0 @@ -// (c) 2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -// SPDX-License-Identifier: Ecosystem - -import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; -import {PoSValidatorManager} from "./PoSValidatorManager.sol"; -import {IERC20Mintable} from "./interfaces/IERC20Mintable.sol"; -import {SafeERC20TransferFrom} from "@utilities/SafeERC20TransferFrom.sol"; -import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; -import {ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; - - - -pragma solidity 0.8.25; - -contract ERC20ACP99Manager is IACP99SecurityModule, PoSValidatorManager { - using SafeERC20 for IERC20Mintable; - using SafeERC20TransferFrom for IERC20Mintable; - - IERC20Mintable public token; - uint8 public tokenDecimals; - - constructor(IERC20Mintable token_, uint8 tokenDecimals_) { - token = token_; - tokenDecimals = tokenDecimals_; - } - - function handleValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { - uint256 stakeAmount = weightToValue(weight); - (uint16 delegationFeeBips, uint64 minStakeDuration) = abi.decode(args, (uint16, uint64)); - _acp99InitValidatorRegistration(validationID, stakeAmount, delegationFeeBips, minStakeDuration); - } - - function handleEndValidation() external { - } - - function handleValidatorWeightChange() external { - } - - // unused - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration, - uint256 stakeAmount - ) external nonReentrant returns (bytes32 validationID) { - return _initializeValidatorRegistration( - registrationInput, delegationFeeBips, minStakeDuration, stakeAmount - ); - } - - /** - * @notice See {PoSValidatorManager-_lock} - * Note: Must be guarded with reentrancy guard for safe transfer from. - */ - function _lock(uint256 value) internal virtual override returns (uint256) { - return token.safeTransferFrom(value); - } - - /** - * @notice See {PoSValidatorManager-_unlock} - * Note: Must be guarded with reentrancy guard for safe transfer. - */ - function _unlock(address to, uint256 value) internal virtual override { - token.safeTransfer(to, value); - } - - /** - * @notice See {PoSValidatorManager-_reward} - */ - function _reward(address account, uint256 amount) internal virtual override { - token.mint(account, amount); - } - - -} \ No newline at end of file diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20TokenStakingManager.sol index a5e6af656..fa8cef2dd 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20TokenStakingManager.sol @@ -16,6 +16,7 @@ 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"; + /** * @dev Implementation of the {IERC20TokenStakingManager} interface. * @@ -23,8 +24,7 @@ import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC */ contract ERC20TokenStakingManager is Initializable, - PoSValidatorManager, - IERC20TokenStakingManager + PoSValidatorManager { using SafeERC20 for IERC20Mintable; using SafeERC20TransferFrom for IERC20Mintable; @@ -95,20 +95,6 @@ contract ERC20TokenStakingManager is $._token = token; } - /** - * @notice See {IERC20TokenStakingManager-initializeValidatorRegistration} - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration, - uint256 stakeAmount - ) external nonReentrant returns (bytes32 validationID) { - return _initializeValidatorRegistration( - registrationInput, delegationFeeBips, minStakeDuration, stakeAmount - ); - } - /** * @notice See {IERC20TokenStakingManager-initializeDelegatorRegistration} */ diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenStakingManager.sol index b641a94b5..3cce186a1 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenStakingManager.sol @@ -23,8 +23,7 @@ import {Initializable} from */ contract NativeTokenStakingManager is Initializable, - PoSValidatorManager, - INativeTokenStakingManager + PoSValidatorManager { using Address for address payable; @@ -58,19 +57,6 @@ contract NativeTokenStakingManager is // solhint-disable-next-line func-name-mixedcase, no-empty-blocks function __NativeTokenStakingManager_init_unchained() internal onlyInitializing {} - /** - * @notice See {INativeTokenStakingManager-initializeValidatorRegistration}. - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration - ) external payable nonReentrant returns (bytes32) { - return _initializeValidatorRegistration( - registrationInput, delegationFeeBips, minStakeDuration, msg.value - ); - } - /** * @notice See {INativeTokenStakingManager-initializeDelegatorRegistration}. */ diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index ad38db6eb..22a1b7379 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -5,7 +5,6 @@ pragma solidity 0.8.25; -import {ValidatorManager} from "./ValidatorManager.sol"; import { ValidatorManagerSettings, ValidatorRegistrationInput @@ -14,13 +13,15 @@ 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 {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; +import {ACP99ValidatorManager} from "./ACP99ValidatorManager.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 IACP99SecurityModule, ACP99ValidatorManager, OwnableUpgradeable { constructor(ICMInitializable init) { if (init == ICMInitializable.Disallowed) { _disableInitializers(); @@ -46,30 +47,34 @@ contract PoAValidatorManager is IPoAValidatorManager, ValidatorManager, OwnableU // solhint-disable-next-line no-empty-blocks function __PoAValidatorManager_init_unchained() internal onlyInitializing {} - // solhint-enable func-name-mixedcase - - /** - * @notice See {IPoAValidatorManager-initializeValidatorRegistration}. - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint64 weight - ) external onlyOwner returns (bytes32 validationID) { - return _initializeValidatorRegistration(registrationInput, weight); - } - // solhint-enable ordering /** * @notice See {IPoAValidatorManager-initializeEndValidation}. */ - function initializeEndValidation(bytes32 validationID) external override onlyOwner { - _initializeEndValidation(validationID); - } /** * @notice See {IValidatorManager-completeEndValidation}. */ - function completeEndValidation(uint32 messageIndex) external { - _completeEndValidation(messageIndex); + function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { + } + + function handleCompleteValidatorRegistration(bytes32 validationID) external { + // No-op + } + + function handleInitializeEndValidation(bytes32 validationID, bytes calldata args) external { + // No-op + } + + function handleCompleteEndValidation(bytes32 validationID) external { + // No-op + } + + function handleInitializeValidatorWeightChange() external { + // No-op + } + + function handleCompleteValidatorWeightChange() external { + // No-op } } diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 927bf51e7..29079e7b2 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.25; -import {ValidatorManager} from "./ValidatorManager.sol"; +import {ACP99ValidatorManager} from "./ACP99ValidatorManager.sol"; import {ValidatorMessages} from "./ValidatorMessages.sol"; import { Delegator, @@ -24,6 +24,7 @@ import {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 {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; /** * @dev Implementation of the {IPoSValidatorManager} interface. @@ -32,7 +33,8 @@ import {ReentrancyGuardUpgradeable} from */ abstract contract PoSValidatorManager is IPoSValidatorManager, - ValidatorManager, + IACP99SecurityModule, + ACP99ValidatorManager, ReentrancyGuardUpgradeable { // solhint-disable private-vars-leading-underscore @@ -174,6 +176,41 @@ abstract contract PoSValidatorManager is $._uptimeBlockchainID = uptimeBlockchainID; } + function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { + uint256 stakeAmount = weightToValue(weight); + (uint16 delegationFeeBips, uint64 minStakeDuration) = abi.decode(args, (uint16, uint64)); + _initializeValidatorRegistration(validationID, stakeAmount, delegationFeeBips, minStakeDuration); + } + + function handleCompleteValidatorRegistration(bytes32 validationID) external { + // No-op + } + + function handleInitializeEndValidation(bytes32 validationID, bytes calldata args) external { + (bool force, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) = abi.decode(args, (bool, bool, uint32, address)); + + bool success = _initializeEndPoSValidation( + validationID, includeUptimeProof, messageIndex, rewardRecipient + ); + if (force) { + return; + } + + if (!success) { + revert ValidatorIneligibleForRewards(validationID); + } + } + + function handleCompleteEndValidation(bytes32 validationID) external { + _completeEndValidation(validationID); + } + + function handleInitializeValidatorWeightChange() external { + } + + function handleCompleteValidatorWeightChange() external { + } + /** * @notice See {IPoSValidatorManager-submitUptimeProof}. */ @@ -208,73 +245,6 @@ abstract contract PoSValidatorManager is _withdrawValidationRewards($._posValidatorInfo[validationID].owner, validationID); } - /** - * @notice See {IPoSValidatorManager-initializeEndValidation}. - */ - function initializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex - ) external { - _initializeEndValidationWithCheck( - validationID, includeUptimeProof, messageIndex, address(0) - ); - } - - /** - * @notice See {IPoSValidatorManager-initializeEndValidation}. - */ - function initializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) external { - _initializeEndValidationWithCheck( - validationID, includeUptimeProof, messageIndex, rewardRecipient - ); - } - - function _initializeEndValidationWithCheck( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) internal { - if ( - !_initializeEndPoSValidation( - validationID, includeUptimeProof, messageIndex, rewardRecipient - ) - ) { - revert ValidatorIneligibleForRewards(validationID); - } - } - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation}. - */ - function forceInitializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex - ) external { - // Ignore the return value here to force end validation, regardless of possible missed rewards - _initializeEndPoSValidation(validationID, includeUptimeProof, messageIndex, address(0)); - } - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation}. - */ - function forceInitializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) external { - // Ignore the return value here to force end validation, regardless of possible missed rewards - _initializeEndPoSValidation(validationID, includeUptimeProof, messageIndex, rewardRecipient); - } - function changeValidatorRewardRecipient( bytes32 validationID, address rewardRecipient @@ -374,13 +344,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 = 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,43 +417,6 @@ abstract contract PoSValidatorManager is } function _initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration, - uint256 stakeAmount - ) internal virtual returns (bytes32) { - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - // Validate and save the validator requirements - if ( - delegationFeeBips < $._minimumDelegationFeeBips - || delegationFeeBips > MAXIMUM_DELEGATION_FEE_BIPS - ) { - revert InvalidDelegationFee(delegationFeeBips); - } - - if (minStakeDuration < $._minimumStakeDuration) { - revert InvalidMinStakeDuration(minStakeDuration); - } - - // Ensure the weight is within the valid range. - if (stakeAmount < $._minimumStakeAmount || stakeAmount > $._maximumStakeAmount) { - revert InvalidStakeAmount(stakeAmount); - } - - // Lock the stake in the contract. - uint256 lockedValue = _lock(stakeAmount); - - uint64 weight = valueToWeight(lockedValue); - bytes32 validationID = _initializeValidatorRegistration(registrationInput, weight); - - $._posValidatorInfo[validationID].owner = _msgSender(); - $._posValidatorInfo[validationID].delegationFeeBips = delegationFeeBips; - $._posValidatorInfo[validationID].minStakeDuration = minStakeDuration; - $._posValidatorInfo[validationID].uptimeSeconds = 0; - return validationID; - } - - function _acp99InitValidatorRegistration( bytes32 validationID, uint256 stakeAmount, uint16 delegationFeeBips, diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index 859acc27e..c6888ef50 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -322,7 +322,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida /** * @notice See {IValidatorManager-completeValidatorRegistration}. */ - function _completeValidatorRegistration(uint32 messageIndex) internal { + function _completeValidatorRegistration(uint32 messageIndex) internal returns (bytes32) { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); (bytes32 validationID, bool validRegistration) = ValidatorMessages .unpackL1ValidatorRegistrationMessage(_getPChainWarpMessage(messageIndex).payload); @@ -344,6 +344,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida emit ValidationPeriodRegistered( validationID, $._validationPeriods[validationID].weight, block.timestamp ); + return validationID; } /** @@ -430,7 +431,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida */ function _completeEndValidation(uint32 messageIndex) internal - returns (bytes32, Validator memory) + returns (bytes32) { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); @@ -467,7 +468,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida // Emit event. emit ValidationPeriodEnded(validationID, validator.status); - return (validationID, validator); + return validationID; } /** diff --git a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol index 26546bcd1..d5073e034 100644 --- a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol +++ b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol @@ -7,14 +7,20 @@ pragma solidity 0.8.25; interface IACP99SecurityModule { // Called by the ValidatorManager on initializeRegisterValidator - function handleValidatorRegistration( + function handleInitializeValidatorRegistration( bytes32 validationID, uint64 weight, bytes calldata args ) external; - function handleEndValidation() external; + function handleCompleteValidatorRegistration(bytes32 validationID) external; + + function handleInitializeEndValidation(bytes32 validationID, bytes calldata args) external; + + function handleCompleteEndValidation(bytes32 validationID) external; // Called by the ValidatorManager on initializeSetValidatorWeight - function handleValidatorWeightChange() external; + function handleInitializeValidatorWeightChange() external; + + function handleCompleteValidatorWeightChange() external; } \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index c4c5b7bb4..80f03975b 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol @@ -134,62 +134,6 @@ interface IPoSValidatorManager is IValidatorManager { */ function submitUptimeProof(bytes32 validationID, uint32 messageIndex) external; - /** - * @notice Begins the process of ending an active validation period, and reverts if the validation period is not eligible - * for uptime-based rewards. This function is used to exit the validator set when rewards are expected. - * The validation period must have been previously started by a successful call to {completeValidatorRegistration} with the given validationID. - * Any rewards for this validation period will stop accruing when this function is called. - * Note: Reverts if the uptime is not eligible for rewards. - * @param validationID The ID of the validation period being ended. - * @param includeUptimeProof Whether or not an uptime proof is provided for the validation period. If no uptime proof is provided, - * the latest known uptime will be used. - * @param messageIndex The index of the Warp message to be received providing the uptime proof. - */ - function initializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex - ) external; - - /** - * @notice See {IPoSValidatorManager-initializeEndValidation} for details of the first three parameters - * @param recipientAddress The address to receive the rewards - */ - function initializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex, - address recipientAddress - ) external; - - /** - * @notice Begins the process of ending an active validation period, but does not revert if the latest known uptime - * is not sufficient to collect uptime-based rewards. This function is used to exit the validator set when rewards are - * not expected. - * The validation period must have been previously started by a successful call to {completeValidatorRegistration} with the given validationID. - * Any rewards for this validation period will stop accruing when this function is called. - * @param validationID The ID of the validation period being ended. - * @param includeUptimeProof Whether or not an uptime proof is provided for the validation period. If no uptime proof is provided, - * the latest known uptime will be used. - * @param messageIndex The index of the Warp message to be received providing the uptime proof. - */ - function forceInitializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex - ) external; - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndValidation} for details of the first three parameters - * @param recipientAddress Address to receive the rewards. - */ - function forceInitializeEndValidation( - bytes32 validationID, - bool includeUptimeProof, - uint32 messageIndex, - address recipientAddress - ) external; - /** * @notice Completes the delegator registration process by submitting an acknowledgement of the registration of a * validationID from the P-Chain. After this function is called, the validator's weight is updated in the contract state. diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index b83e124f5..f04629bf5 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -171,45 +171,45 @@ 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. - // * @param validationID The ID of the validation period being registered. - // */ - // 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; + /** + * @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. + * @param validationID The ID of the validation period being registered. + */ + 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; } From d5b5b935f841c5766923ec5f31161e8d5c98f42c Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 13:56:03 -0600 Subject: [PATCH 3/8] acp99 delegation handling --- .../validator-manager/PoAValidatorManager.sol | 4 +- .../validator-manager/PoSValidatorManager.sol | 106 +++++------------- .../interfaces/IACP99SecurityModule.sol | 6 +- .../interfaces/IPoSValidatorManager.sol | 89 --------------- 4 files changed, 34 insertions(+), 171 deletions(-) diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index 22a1b7379..9f786e6a3 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -70,11 +70,11 @@ contract PoAValidatorManager is IACP99SecurityModule, ACP99ValidatorManager, Own // No-op } - function handleInitializeValidatorWeightChange() external { + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external { // No-op } - function handleCompleteValidatorWeightChange() external { + function handleCompleteValidatorWeightChange(bytes32 validationID, bytes calldata args) external { // No-op } } diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 29079e7b2..15ba9041b 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -205,10 +205,31 @@ abstract contract PoSValidatorManager is _completeEndValidation(validationID); } - function handleInitializeValidatorWeightChange() external { + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external { + (bytes32 delegationID, bytes memory innerArgs) = abi.decode(args, (bytes32, bytes)); + if (_getPoSValidatorManagerStorage()._delegatorStakes[delegationID].status == DelegatorStatus.Unknown) { + address delegatorAddress = abi.decode(innerArgs, (address)); + uint64 delegatorWeight = getValidator(validationID).weight - weight; + _initializeDelegatorRegistration(validationID, delegatorAddress, weightToValue(delegatorWeight)); + } else { + (bool force, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) = abi.decode(innerArgs, (bool, bool, uint32, address)); + bool success = _initializeEndDelegation(delegationID, includeUptimeProof, messageIndex, rewardRecipient); + if (force) { + return; + } + if (!success) { + revert DelegatorIneligibleForRewards(delegationID); + } + } } - function handleCompleteValidatorWeightChange() external { + function handleCompleteValidatorWeightChange(bytes32, bytes calldata args) external { + (bytes32 delegationID, uint32 messageIndex) = abi.decode(args, (bytes32, uint32)); + if (_getPoSValidatorManagerStorage()._delegatorStakes[delegationID].status == DelegatorStatus.PendingAdded) { + _completeDelegatorRegistration(delegationID, messageIndex); + } else { + _completeEndDelegation(delegationID, messageIndex); + } } /** @@ -536,7 +557,7 @@ abstract contract PoSValidatorManager is /** * @notice See {IPoSValidatorManager-completeDelegatorRegistration}. */ - function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) external { + function _completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) internal { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; @@ -553,7 +574,7 @@ abstract contract PoSValidatorManager is // In the case where the validator has completed its validation period, we can no // longer stake and should move our status directly to completed and return the stake. if (validator.status == ValidatorStatus.Completed) { - return _completeEndDelegation(delegationID); + return _endDelegation(delegationID); } // Unpack the Warp message @@ -583,73 +604,6 @@ abstract contract PoSValidatorManager is }); } - /** - * @notice See {IPoSValidatorManager-initializeEndDelegation}. - */ - function initializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex - ) external { - _initializeEndDelegationWithCheck( - delegationID, includeUptimeProof, messageIndex, address(0) - ); - } - - /** - * @notice See {IPoSValidatorManager-initializeEndDelegation}. - */ - function initializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) external { - _initializeEndDelegationWithCheck( - delegationID, includeUptimeProof, messageIndex, rewardRecipient - ); - } - - function _initializeEndDelegationWithCheck( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) internal { - if ( - !_initializeEndDelegation( - delegationID, includeUptimeProof, messageIndex, rewardRecipient - ) - ) { - revert DelegatorIneligibleForRewards(delegationID); - } - } - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation}. - */ - function forceInitializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex - ) external { - // Ignore the return value here to force end delegation, regardless of possible missed rewards - _initializeEndDelegation(delegationID, includeUptimeProof, messageIndex, address(0)); - } - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation}. - */ - function forceInitializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex, - address rewardRecipient - ) external { - // Ignore the return value here to force end delegation, regardless of possible missed rewards - _initializeEndDelegation(delegationID, includeUptimeProof, messageIndex, rewardRecipient); - } - /** * @dev Helper function that initializes the end of a PoS delegation period. * Returns false if it is possible for the delegator to claim rewards, but it is not eligible. @@ -716,7 +670,7 @@ abstract contract PoSValidatorManager is return (reward > 0); } else if (validator.status == ValidatorStatus.Completed) { _calculateAndSetDelegationReward(delegator, rewardRecipient, delegationID); - _completeEndDelegation(delegationID); + _endDelegation(delegationID); // If the validator has completed, then no further uptimes may be submitted, so we always // end the delegation. return true; @@ -803,10 +757,10 @@ abstract contract PoSValidatorManager is /** * @notice See {IPoSValidatorManager-completeEndDelegation}. */ - function completeEndDelegation( + function _completeEndDelegation( bytes32 delegationID, uint32 messageIndex - ) external nonReentrant { + ) internal nonReentrant { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; @@ -836,10 +790,10 @@ abstract contract PoSValidatorManager is } } - _completeEndDelegation(delegationID); + _endDelegation(delegationID); } - function _completeEndDelegation(bytes32 delegationID) internal { + function _endDelegation(bytes32 delegationID) internal { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); Delegator memory delegator = $._delegatorStakes[delegationID]; diff --git a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol index d5073e034..afc32ed56 100644 --- a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol +++ b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol @@ -6,7 +6,6 @@ pragma solidity 0.8.25; interface IACP99SecurityModule { - // Called by the ValidatorManager on initializeRegisterValidator function handleInitializeValidatorRegistration( bytes32 validationID, uint64 weight, @@ -19,8 +18,7 @@ interface IACP99SecurityModule { function handleCompleteEndValidation(bytes32 validationID) external; - // Called by the ValidatorManager on initializeSetValidatorWeight - function handleInitializeValidatorWeightChange() external; + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external; - function handleCompleteValidatorWeightChange() external; + function handleCompleteValidatorWeightChange(bytes32 validationID, bytes calldata args) external; } \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index 80f03975b..5bb80ff55 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol @@ -134,82 +134,6 @@ interface IPoSValidatorManager is IValidatorManager { */ function submitUptimeProof(bytes32 validationID, uint32 messageIndex) external; - /** - * @notice Completes the delegator registration process by submitting an acknowledgement of the registration of a - * validationID from the P-Chain. After this function is called, the validator's weight is updated in the contract state. - * Any P-Chain acknowledgement with a nonce greater than or equal to the nonce used to initialize registration of the - * delegator is valid, as long as that nonce has been sent by the contract. For the purposes of computing delegation rewards, - * the delegation is considered active after this function is completed. - * Note: Only the specified delegation will be marked as registered, even if the validator weight update - * message implicitly includes multiple weight changes. - * @param delegationID The ID of the delegation being registered. - * @param messageIndex The index of the Warp message to be received providing the acknowledgement. - */ - function completeDelegatorRegistration(bytes32 delegationID, uint32 messageIndex) external; - - /** - * @notice Begins the process of removing a delegator from a validation period, and reverts if the delegation is not eligible for rewards. - * The delegator must have been previously registered with the given validationID. For the purposes of computing delegation rewards, - * the delegation period is considered ended when this function is called. Uses the supplied uptime proof to calculate rewards. - * If none is provided in the call, the latest known uptime will be used. Reverts if the uptime is not eligible for rewards. - * Note: This function can only be called by the address that registered the delegation. - * Note: Reverts if the uptime is not eligible for rewards. - * @param delegationID The ID of the delegation being removed. - * @param includeUptimeProof Whether or not an uptime proof is provided for the validation period. - * If the validator has completed its validation period, it has already provided an uptime proof, so {includeUptimeProof} - * will be ignored and can be set to false. If the validator has not completed its validation period and no uptime proof - * is provided, the latest known uptime will be used. - * @param messageIndex If {includeUptimeProof} is true, the index of the Warp message to be received providing the - * uptime proof. - */ - function initializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex - ) external; - - /** - * @notice See {IPoSValidatorManager-initializeEndDelegation} for details of the first three parameters - * @param recipientAddress The address to receive the rewards. - */ - function initializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex, - address recipientAddress - ) external; - - /** - * @notice Begins the process of removing a delegator from a validation period, but does not revert if the delegation is not eligible for rewards. - * The delegator must have been previously registered with the given validationID. For the purposes of computing delegation rewards, - * the delegation period is considered ended when this function is called. Uses the supplied uptime proof to calculate rewards. - * If none is provided in the call, the latest known uptime will be used. Reverts if the uptime is not eligible for rewards. - * Note: This function can only be called by the address that registered the delegation. - * @param delegationID The ID of the delegation being removed. - * @param includeUptimeProof Whether or not an uptime proof is provided for the validation period. - * If the validator has completed its validation period, it has already provided an uptime proof, so {includeUptimeProof} - * will be ignored and can be set to false. If the validator has not completed its validation period and no uptime proof - * is provided, the latest known uptime will be used. - * @param messageIndex If {includeUptimeProof} is true, the index of the Warp message to be received providing the - * uptime proof. - */ - function forceInitializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex - ) external; - - /** - * @notice See {IPoSValidatorManager-forceInitializeEndDelegation} for details of the first three parameters - * @param recipientAddress The address to receive the rewards. - */ - function forceInitializeEndDelegation( - bytes32 delegationID, - bool includeUptimeProof, - uint32 messageIndex, - address recipientAddress - ) external; - /** * @notice Resubmits a delegator registration or delegator end message to be sent to the P-Chain. * Only necessary if the original message can't be delivered due to validator churn. @@ -217,19 +141,6 @@ interface IPoSValidatorManager is IValidatorManager { */ function resendUpdateDelegation(bytes32 delegationID) external; - /** - * @notice Completes the process of ending a delegation by receiving an acknowledgement from the P-Chain. - * After this function is called, the validator's weight is updated in the contract state. - * Any P-Chain acknowledgement with a nonce greater than or equal to the nonce used to initialize the end of the - * delegator's delegation is valid, as long as that nonce has been sent by the contract. This is because the validator - * weight change pertaining to the delegation ending is included in any subsequent validator weight update messages. - * Note: Only the specified delegation will be marked as completed, even if the validator weight update - * message implicitly includes multiple weight changes. - * @param delegationID The ID of the delegation being removed. - * @param messageIndex The index of the Warp message to be received providing the acknowledgement. - */ - function completeEndDelegation(bytes32 delegationID, uint32 messageIndex) external; - /** * @notice Withdraws the delegation fees from completed delegations to the owner of the validator. * @param validationID The ID of the validation period being ended. From c77a4809d0e087c396fb021d076049507d4646f3 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 14:08:55 -0600 Subject: [PATCH 4/8] IACP99ValidatorManager interface --- .../ACP99ValidatorManager.sol | 12 ++-- .../ERC20TokenStakingManager.sol | 2 - .../NativeTokenStakingManager.sol | 2 - .../validator-manager/PoAValidatorManager.sol | 4 +- .../validator-manager/PoSValidatorManager.sol | 1 - .../validator-manager/ValidatorManager.sol | 5 +- .../validator-manager/ValidatorMessages.sol | 2 +- .../interfaces/IACP99ValidatorManager.sol | 71 ++++++++++++++++++ .../interfaces/IERC20TokenStakingManager.sol | 38 ---------- .../interfaces/INativeTokenStakingManager.sol | 35 --------- .../interfaces/IPoAValidatorManager.sol | 30 -------- .../interfaces/IValidatorManager.sol | 72 +------------------ 12 files changed, 84 insertions(+), 190 deletions(-) create mode 100644 contracts/validator-manager/interfaces/IACP99ValidatorManager.sol delete mode 100644 contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol delete mode 100644 contracts/validator-manager/interfaces/INativeTokenStakingManager.sol delete mode 100644 contracts/validator-manager/interfaces/IPoAValidatorManager.sol diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index 9a4078d40..711b7991b 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -5,11 +5,11 @@ import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; import {ValidatorManager} from "./ValidatorManager.sol"; -import {ConversionData,ValidatorRegistrationInput} from "./interfaces/IValidatorManager.sol"; +import {IACP99ValidatorManager, ConversionData, ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; pragma solidity 0.8.25; -abstract contract ACP99ValidatorManager is ValidatorManager { +abstract contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { IACP99SecurityModule public securityModule; // TODO: calling this should be restricted to...who? @@ -49,7 +49,11 @@ abstract contract ACP99ValidatorManager is ValidatorManager { securityModule.handleCompleteEndValidation(validationID); } - function initializeValidatorWeightChange() external{} + function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external{ + securityModule.handleInitializeValidatorWeightChange(validationID, weight, args); + } - function completeValidatorWeightChange() external{} + function completeValidatorWeightChange(bytes32 validationID, bytes calldata args) external{ + securityModule.handleCompleteValidatorWeightChange(validationID, args); + } } \ No newline at end of file diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20TokenStakingManager.sol index fa8cef2dd..8a637c544 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20TokenStakingManager.sol @@ -7,8 +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"; import {SafeERC20TransferFrom} from "@utilities/SafeERC20TransferFrom.sol"; diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenStakingManager.sol index 3cce186a1..4d7f567e5 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenStakingManager.sol @@ -7,8 +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"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index 9f786e6a3..c20ea1079 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -6,10 +6,8 @@ pragma solidity 0.8.25; import { - ValidatorManagerSettings, - ValidatorRegistrationInput + ValidatorManagerSettings } 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"; diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 15ba9041b..bb577323f 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -16,7 +16,6 @@ import { } from "./interfaces/IPoSValidatorManager.sol"; import { Validator, - ValidatorRegistrationInput, ValidatorStatus } from "./interfaces/IValidatorManager.sol"; import {IRewardCalculator} from "./interfaces/IRewardCalculator.sol"; diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index c6888ef50..7880abd26 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -7,14 +7,10 @@ pragma solidity 0.8.25; import {ValidatorMessages} from "./ValidatorMessages.sol"; import { - InitialValidator, IValidatorManager, - PChainOwner, - ConversionData, Validator, ValidatorChurnPeriod, ValidatorManagerSettings, - ValidatorRegistrationInput, ValidatorStatus } from "./interfaces/IValidatorManager.sol"; import { @@ -26,6 +22,7 @@ import {ContextUpgradeable} from import {Initializable} from "@openzeppelin/contracts-upgradeable@5.0.2/proxy/utils/Initializable.sol"; import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; +import {ValidatorRegistrationInput, ConversionData, PChainOwner, InitialValidator} from "./interfaces/IACP99ValidatorManager.sol"; /** * @dev Implementation of the {IValidatorManager} interface. 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..cc9d1ce89 --- /dev/null +++ b/contracts/validator-manager/interfaces/IACP99ValidatorManager.sol @@ -0,0 +1,71 @@ +// (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 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, + bytes calldata args + ) external returns (bytes32); + + function completeValidatorRegistration(uint32 messageIndex) external; + + function initializeEndValidation(bytes32 validationID, bytes calldata args) external; + + function completeEndValidation(uint32 messageIndex) external; + + function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external; + + function completeValidatorWeightChange(bytes32 validationID, bytes calldata args) external; +} \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol b/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol deleted file mode 100644 index eb1b56a32..000000000 --- a/contracts/validator-manager/interfaces/IERC20TokenStakingManager.sol +++ /dev/null @@ -1,38 +0,0 @@ -// (c) 2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -// SPDX-License-Identifier: Ecosystem - -pragma solidity 0.8.25; - -import {ValidatorRegistrationInput} from "./IValidatorManager.sol"; -import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; - -/** - * Proof of Stake Validator Manager that stakes ERC20 tokens. - */ -interface IERC20TokenStakingManager is IPoSValidatorManager { - /** - * @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. - * @param delegationFeeBips The fee that delegators must pay to delegate to this validator. - * @param minStakeDuration The minimum amount of time this validator must be staked for in seconds. - * @param stakeAmount The amount of tokens to stake. - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration, - uint256 stakeAmount - ) external returns (bytes32 validationID); - - /** - * @notice Begins the delegator registration process. Locks the specified ERC20 tokens in the contract as the stake. - * @param validationID The ID of the validator to stake to. - * @param stakeAmount The amount of tokens to stake. - */ - function initializeDelegatorRegistration( - bytes32 validationID, - uint256 stakeAmount - ) external returns (bytes32); -} diff --git a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol b/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol deleted file mode 100644 index c1cc4a2c9..000000000 --- a/contracts/validator-manager/interfaces/INativeTokenStakingManager.sol +++ /dev/null @@ -1,35 +0,0 @@ -// (c) 2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -// SPDX-License-Identifier: Ecosystem - -pragma solidity 0.8.25; - -import {ValidatorRegistrationInput} from "./IValidatorManager.sol"; -import {IPoSValidatorManager} from "./IPoSValidatorManager.sol"; - -/** - * Proof of Stake Validator Manager that stakes the blockchain's native tokens. - */ -interface INativeTokenStakingManager is IPoSValidatorManager { - /** - * @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. - * @param delegationFeeBips The fee that delegators must pay to delegate to this validator. - * @param minStakeDuration The minimum amount of time this validator must be staked for in seconds. - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint16 delegationFeeBips, - uint64 minStakeDuration - ) external payable returns (bytes32 validationID); - - /** - * @notice Begins the delegator registration process. Locks the provided native asset in the contract as the stake. - * @param validationID The ID of the validator to stake to. - */ - function initializeDelegatorRegistration(bytes32 validationID) - external - payable - returns (bytes32); -} diff --git a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol b/contracts/validator-manager/interfaces/IPoAValidatorManager.sol deleted file mode 100644 index 94c1663d3..000000000 --- a/contracts/validator-manager/interfaces/IPoAValidatorManager.sol +++ /dev/null @@ -1,30 +0,0 @@ -// (c) 2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -// SPDX-License-Identifier: Ecosystem - -pragma solidity 0.8.25; - -import {IValidatorManager, ValidatorRegistrationInput} from "./IValidatorManager.sol"; - -/** - * @notice Interface for Proof of Authority Validator Manager contracts - */ -interface IPoAValidatorManager is IValidatorManager { - /** - * @notice Begins the validator registration process, and sets the {weight} of the validator. - * @param registrationInput The inputs for a validator registration. - * @param weight The weight of the validator being registered. - */ - function initializeValidatorRegistration( - ValidatorRegistrationInput calldata registrationInput, - uint64 weight - ) external returns (bytes32 validationID); - - /** - * @notice Begins the process of ending an active validation period. The validation period must have been previously - * started by a successful call to {completeValidatorRegistration} with the given validationID. - * @param validationID The ID of the validation period being ended. - */ - function initializeEndValidation(bytes32 validationID) external; -} diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index f04629bf5..a24d3bc22 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -5,6 +5,8 @@ pragma solidity 0.8.25; +import {ConversionData} from "./IACP99ValidatorManager.sol"; + /** * @dev Validator status */ @@ -17,15 +19,6 @@ enum ValidatorStatus { 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 */ @@ -61,39 +54,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 +131,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 +138,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; } From 0e57f27693fb423f04941f8b23abfb5373723282 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 14:50:04 -0600 Subject: [PATCH 5/8] implement acp-99 w/composition --- .../ACP99ValidatorManager.sol | 3 +- .../ERC20TokenStakingManager.sol | 10 --- .../NativeTokenStakingManager.sol | 12 --- .../validator-manager/PoAValidatorManager.sol | 7 +- .../validator-manager/PoSValidatorManager.sol | 84 +++++++++++++------ .../validator-manager/ValidatorManager.sol | 4 +- .../interfaces/IACP99SecurityModule.sol | 2 +- .../interfaces/IPoSValidatorManager.sol | 6 +- .../interfaces/IValidatorManager.sol | 4 + 9 files changed, 73 insertions(+), 59 deletions(-) diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index 711b7991b..330902711 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -50,7 +50,8 @@ abstract contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorMana } function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external{ - securityModule.handleInitializeValidatorWeightChange(validationID, weight, args); + (uint64 nonce, ) = _setValidatorWeight(validationID, weight); + securityModule.handleInitializeValidatorWeightChange(validationID, weight, nonce, args); } function completeValidatorWeightChange(bytes32 validationID, bytes calldata args) external{ diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20TokenStakingManager.sol index 8a637c544..f8a429160 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20TokenStakingManager.sol @@ -93,16 +93,6 @@ contract ERC20TokenStakingManager is $._token = token; } - /** - * @notice See {IERC20TokenStakingManager-initializeDelegatorRegistration} - */ - function initializeDelegatorRegistration( - bytes32 validationID, - uint256 delegationAmount - ) external nonReentrant returns (bytes32) { - return _initializeDelegatorRegistration(validationID, _msgSender(), delegationAmount); - } - /** * @notice Returns the ERC20 token being staked */ diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenStakingManager.sol index 4d7f567e5..9688dd8ee 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenStakingManager.sol @@ -55,18 +55,6 @@ contract NativeTokenStakingManager is // solhint-disable-next-line func-name-mixedcase, no-empty-blocks function __NativeTokenStakingManager_init_unchained() internal onlyInitializing {} - /** - * @notice See {INativeTokenStakingManager-initializeDelegatorRegistration}. - */ - function initializeDelegatorRegistration(bytes32 validationID) - external - payable - nonReentrant - returns (bytes32) - { - return _initializeDelegatorRegistration(validationID, _msgSender(), msg.value); - } - /** * @notice See {PoSValidatorManager-_lock} */ diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index c20ea1079..73df3d9c1 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -19,7 +19,7 @@ import {ACP99ValidatorManager} from "./ACP99ValidatorManager.sol"; * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -contract PoAValidatorManager is IACP99SecurityModule, ACP99ValidatorManager, OwnableUpgradeable { +contract PoAValidatorManager is IACP99SecurityModule, OwnableUpgradeable { constructor(ICMInitializable init) { if (init == ICMInitializable.Disallowed) { _disableInitializers(); @@ -35,10 +35,9 @@ contract PoAValidatorManager is IACP99SecurityModule, ACP99ValidatorManager, Own // solhint-disable func-name-mixedcase, ordering function __PoAValidatorManager_init( - ValidatorManagerSettings calldata settings, + ValidatorManagerSettings calldata, address initialOwner ) internal onlyInitializing { - __ValidatorManager_init(settings); __Ownable_init(initialOwner); } @@ -68,7 +67,7 @@ contract PoAValidatorManager is IACP99SecurityModule, ACP99ValidatorManager, Own // No-op } - function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external { + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes calldata args) external { // No-op } diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index bb577323f..3feab915b 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -19,11 +19,14 @@ import { 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 {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; +import {IValidatorManager} from "./interfaces/IValidatorManager.sol"; +import {ContextUpgradeable} from + "@openzeppelin/contracts-upgradeable@5.0.2/utils/ContextUpgradeable.sol"; /** * @dev Implementation of the {IPoSValidatorManager} interface. @@ -33,12 +36,13 @@ import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; abstract contract PoSValidatorManager is IPoSValidatorManager, IACP99SecurityModule, - ACP99ValidatorManager, + ContextUpgradeable, ReentrancyGuardUpgradeable { // solhint-disable private-vars-leading-underscore /// @custom:storage-location erc7201:avalanche-icm.storage.PoSValidatorManager struct PoSValidatorManagerStorage { + IValidatorManager 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. @@ -83,6 +87,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); @@ -100,6 +109,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 @@ -117,7 +133,6 @@ abstract contract PoSValidatorManager is internal onlyInitializing { - __ValidatorManager_init(settings.baseSettings); __ReentrancyGuard_init(); __POS_Validator_Manager_init_unchained({ minimumStakeAmount: settings.minimumStakeAmount, @@ -155,7 +170,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) { @@ -204,15 +219,15 @@ abstract contract PoSValidatorManager is _completeEndValidation(validationID); } - function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external { + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes calldata args) external { (bytes32 delegationID, bytes memory innerArgs) = abi.decode(args, (bytes32, bytes)); if (_getPoSValidatorManagerStorage()._delegatorStakes[delegationID].status == DelegatorStatus.Unknown) { address delegatorAddress = abi.decode(innerArgs, (address)); - uint64 delegatorWeight = getValidator(validationID).weight - weight; - _initializeDelegatorRegistration(validationID, delegatorAddress, weightToValue(delegatorWeight)); + uint64 delegatorWeight = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID).weight - weight; + _initializeDelegatorRegistration(validationID, nonce, delegatorAddress, weightToValue(delegatorWeight)); } else { (bool force, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) = abi.decode(innerArgs, (bool, bool, uint32, address)); - bool success = _initializeEndDelegation(delegationID, includeUptimeProof, messageIndex, rewardRecipient); + bool success = _initializeEndDelegation(nonce, delegationID, includeUptimeProof, messageIndex, rewardRecipient); if (force) { return; } @@ -238,7 +253,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); } @@ -253,7 +268,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); } @@ -320,7 +335,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)) { @@ -367,7 +382,7 @@ abstract contract PoSValidatorManager is function _completeEndValidation(bytes32 validationID) internal { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - Validator memory validator = getValidator(validationID); + 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. @@ -504,6 +519,7 @@ abstract contract PoSValidatorManager is function _initializeDelegatorRegistration( bytes32 validationID, + uint64 nonce, address delegatorAddress, uint256 delegationAmount ) internal returns (bytes32) { @@ -511,7 +527,7 @@ abstract contract PoSValidatorManager is uint64 weight = valueToWeight(_lock(delegationAmount)); // 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); @@ -526,8 +542,6 @@ abstract contract PoSValidatorManager is revert MaxWeightExceeded(newValidatorWeight); } - (uint64 nonce, bytes32 messageID) = _setValidatorWeight(validationID, newValidatorWeight); - bytes32 delegationID = keccak256(abi.encodePacked(validationID, nonce)); // Store the delegation information. Set the delegator status to pending added, @@ -547,8 +561,7 @@ abstract contract PoSValidatorManager is delegatorAddress: delegatorAddress, nonce: nonce, validatorWeight: newValidatorWeight, - delegatorWeight: weight, - setWeightMessageID: messageID + delegatorWeight: weight }); return delegationID; } @@ -561,7 +574,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 @@ -609,6 +622,7 @@ abstract contract PoSValidatorManager is * Returns true otherwise. */ function _initializeEndDelegation( + uint64 nonce, bytes32 delegationID, bool includeUptimeProof, uint32 messageIndex, @@ -618,7 +632,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) { @@ -656,8 +670,7 @@ abstract contract PoSValidatorManager is // initialize the removal. $._delegatorStakes[delegationID].status = DelegatorStatus.PendingRemoved; - ($._delegatorStakes[delegationID].endingNonce,) = - _setValidatorWeight(validationID, validator.weight - delegator.weight); + $._delegatorStakes[delegationID].endingNonce = nonce; uint256 reward = _calculateAndSetDelegationReward(delegator, rewardRecipient, delegationID); @@ -687,7 +700,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 ( @@ -739,7 +752,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); @@ -753,6 +766,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}. */ @@ -770,7 +804,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,) = @@ -800,7 +834,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)); } diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index 7880abd26..873d46d8e 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -29,7 +29,7 @@ import {ValidatorRegistrationInput, ConversionData, PChainOwner, InitialValidato * * @custom:security-contact https://github.com/ava-labs/teleporter/blob/main/SECURITY.md */ -abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValidatorManager { +contract ValidatorManager is Initializable, ContextUpgradeable, IValidatorManager { // solhint-disable private-vars-leading-underscore /// @custom:storage-location erc7201:avalanche-icm.storage.ValidatorManager @@ -531,7 +531,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; } diff --git a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol index afc32ed56..45511d07b 100644 --- a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol +++ b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol @@ -18,7 +18,7 @@ interface IACP99SecurityModule { function handleCompleteEndValidation(bytes32 validationID) external; - function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external; + function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes calldata args) external; function handleCompleteValidatorWeightChange(bytes32 validationID, bytes calldata args) external; } \ No newline at end of file diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index 5bb80ff55..c6f61bb41 100644 --- a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol @@ -70,7 +70,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 +79,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 +86,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 a24d3bc22..c34857ef7 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -144,4 +144,8 @@ interface IValidatorManager { * @param validationID The ID of the validation period being ended. */ function resendEndValidatorMessage(bytes32 validationID) external; + + function getValidator(bytes32 validationID) external view returns (Validator memory); + + function getChurnPeriodSeconds() external view returns (uint64); } From ed87a6d6ce77055fc43ad1e1694790f456192cbf Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Tue, 3 Dec 2024 14:54:47 -0600 Subject: [PATCH 6/8] ACP99ValidatorManager is concrete --- contracts/validator-manager/ACP99ValidatorManager.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index 330902711..6fb73760b 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -9,7 +9,7 @@ import {IACP99ValidatorManager, ConversionData, ValidatorRegistrationInput} from pragma solidity 0.8.25; -abstract contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { +contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { IACP99SecurityModule public securityModule; // TODO: calling this should be restricted to...who? From 05d07ba50fb5fdcc754e41c52a48c3a0f55a2ff6 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Wed, 4 Dec 2024 18:50:36 -0600 Subject: [PATCH 7/8] wip --- .../ACP99ValidatorManager.go | 2479 +++++++++++++++++ .../ArgumentsExternal/ArgumentsExternal.go | 279 ++ .../ArgumentsExternal/packing.go | 49 + .../ERC20TokenStakingManager.go | 2068 +++----------- .../NativeTokenStakingManager.go | 2068 +++----------- .../PoAValidatorManager.go | 1534 +--------- .../IACP99SecurityModule.go | 307 ++ .../IACP99ValidatorManager.go | 358 +++ .../IPoSValidatorManager.go | 1332 +-------- .../IValidatorManager/IValidatorManager.go | 107 +- .../ACP99ValidatorManager.sol | 73 +- contracts/validator-manager/Arguments.sol | 28 + .../validator-manager/ArgumentsExternal.sol | 18 + .../validator-manager/PoAValidatorManager.sol | 7 +- .../validator-manager/PoSValidatorManager.sol | 16 +- .../interfaces/IPoSValidatorManager.sol | 5 +- scripts/abi_bindings.sh | 2 +- .../validator-manager/erc20_token_staking.go | 300 +- .../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 | 1615 +++++++---- 22 files changed, 6099 insertions(+), 7544 deletions(-) create mode 100644 abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go create mode 100644 abi-bindings/go/validator-manager/ArgumentsExternal/ArgumentsExternal.go create mode 100644 abi-bindings/go/validator-manager/ArgumentsExternal/packing.go create mode 100644 abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go create mode 100644 abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go create mode 100644 contracts/validator-manager/Arguments.sol create mode 100644 contracts/validator-manager/ArgumentsExternal.sol diff --git a/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go b/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go new file mode 100644 index 000000000..7b8209672 --- /dev/null +++ b/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go @@ -0,0 +1,2479 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package acp99validatormanager + +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 +} + +// ACP99ValidatorManagerMetaData contains all meta data concerning the ACP99ValidatorManager contract. +var ACP99ValidatorManagerMetaData = &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\":\"ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\":\"contractIACP99SecurityModule\",\"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\":\"contractIACP99SecurityModule\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"initializeValidatorWeightChange\",\"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\":\"contractIACP99SecurityModule\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"setSecurityModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051613c65380380613c6583398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613b188061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c8063a3a65e48116100bf578063d492edfc11610079578063d492edfc14610334578063d588c18f14610347578063d5f20ff61461035a578063db4a0eca1461037a578063df93d8de1461038e578063fd7ac5e714610398575f80fd5b8063a3a65e48146102af578063b771b3bc146102c2578063bc5fbfec146102e8578063bee0a03f146102fc578063c974d1b61461030f578063cdeea3c914610317575f80fd5b806366435abf1161011057806366435abf1461020b578063670301ae1461021e578063732214f8146102315780637db1dd48146102465780638280a25a146102595780639a68b05014610273575f80fd5b80630322ed981461015757806309c1df661461016c57806320d91b7a146101b55780633d89e86f146101c8578063467ef06f146101db57806360305d62146101ee575b5f80fd5b61016a610165366004612aef565b6103ab565b005b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03165b6040516001600160401b0390911681526020015b60405180910390f35b61016a6101c3366004612b1e565b61063b565b61016a6101d6366004612bbf565b610649565b61016a6101e9366004612c14565b6106ce565b6101f6601481565b60405163ffffffff90911681526020016101ac565b610198610219366004612aef565b6107ad565b61016a61022c366004612c34565b6107c1565b6102385f81565b6040519081526020016101ac565b610238610254366004612c7b565b61082a565b610261603081565b60405160ff90911681526020016101ac565b61016a610281366004612cfc565b5f80516020613ac383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61016a6102bd366004612c14565b61092a565b6102d06005600160991b0181565b6040516001600160a01b0390911681526020016101ac565b6102385f80516020613a8383398151915281565b61016a61030a366004612aef565b61099f565b610261601481565b5f80516020613ac3833981519152546001600160a01b03166102d0565b61016a610342366004612c34565b610ae0565b61016a610355366004612d17565b610b2a565b61036d610368366004612aef565b610c37565b6040516101ac9190612dd4565b6102385f80516020613ac383398151915281565b6101986202a30081565b6102386103a6366004612e54565b610db2565b5f8181525f80516020613aa38339815191526020526040808220815160e0810190925280545f80516020613a8383398151915293929190829060ff1660058111156103f8576103f8612d53565b600581111561040957610409612d53565b815260200160018201805461041d90612e92565b80601f016020809104026020016040519081016040528092919081815260200182805461044990612e92565b80156104945780601f1061046b57610100808354040283529160200191610494565b820191905f5260205f20905b81548152906001019060200180831161047757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104ff576104ff612d53565b1461053b575f8381526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156105b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105d99190810190612fdb565b6040518263ffffffff1660e01b81526004016105f5919061300c565b6020604051808303815f875af1158015610611573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610635919061301e565b50505050565b6106458282610e0e565b5050565b5f61065485856113c9565b505f80516020613ac3833981519152546040516326367e9f60e21b81529192506001600160a01b0316906398d9fa7c9061069a908890889086908990899060040161305d565b5f604051808303815f87803b1580156106b1575f80fd5b505af11580156106c3573d5f803e3d5ffd5b505050505050505050565b5f6106d8826115a0565b5f80516020613ac3833981519152805460408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316633dde56a360e21b179052905193945091926001600160a01b03909116915f9182918491610742919061309a565b5f60405180830381855af49150503d805f811461077a576040519150601f19603f3d011682016040523d82523d5f602084013e61077f565b606091505b50915091508181906107a45760405162461bcd60e51b8152600401610532919061300c565b50505050505050565b5f6107b782610c37565b6080015192915050565b5f80516020613ac383398151915254604051633bfed56d60e21b81526001600160a01b039091169063effb55b490610801908690869086906004016130b5565b5f604051808303815f87803b158015610818575f80fd5b505af11580156107a4573d5f803e3d5ffd5b5f80610836868661194d565b90505f5f80516020613ac383398151915280546040519192506001600160a01b0316905f908190839062080a1960e31b9061087b9088908d908d908d906024016130d7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108b9919061309a565b5f60405180830381855af49150503d805f81146108f1576040519150601f19603f3d011682016040523d82523d5f602084013e6108f6565b606091505b509150915081819061091b5760405162461bcd60e51b8152600401610532919061300c565b50939998505050505050505050565b5f61093482611ebf565b90505f80516020613ac3833981519152546040516356ab447d60e01b8152600481018390526001600160a01b03909116906356ab447d906024015f604051808303815f87803b158015610985575f80fd5b505af1158015610997573d5f803e3d5ffd5b505050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020613a8383398151915291906109e690612e92565b90505f03610a0a5760405163089938b360e11b815260048101839052602401610532565b60015f838152600580840160205260409091205460ff1690811115610a3157610a31612d53565b14610a64575f8281526005820160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92610a9b9201613109565b6020604051808303815f875af1158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb919061301e565b505050565b610ae9836120b8565b505f80516020613ac383398151915254604051632f76d68560e21b81526001600160a01b039091169063bddb5a1490610801908690869086906004016130b5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b6e5750825b90505f826001600160401b03166001148015610b895750303b155b905081158015610b97575080155b15610bb55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bdf57845460ff60401b1916600160401b1785555b610be987876123ce565b83156107a457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6040805160e080820183525f808352606060208085018290528486018390529084018290526080840182905260a0840182905260c084018290528582525f80516020613aa383398151915290528390208351918201909352825491925f80516020613a8383398151915292829060ff166005811115610cb857610cb8612d53565b6005811115610cc957610cc9612d53565b8152602001600182018054610cdd90612e92565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0990612e92565b8015610d545780601f10610d2b57610100808354040283529160200191610d54565b820191905f5260205f20905b815481529060010190602001808311610d3757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020613a83833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0690610df59086908690613193565b9081526020016040518091039020549150505b92915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020613a838339815191529060ff1615610e6057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec7919061301e565b836020013514610ef0576040516372b0a7e760e11b815260208401356004820152602401610532565b30610f016060850160408601612cfc565b6001600160a01b031614610f4457610f1f6060840160408501612cfc565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610532565b5f610f5260608501856131a2565b905090505f805b828163ffffffff1610156111ba575f610f7560608801886131a2565b8363ffffffff16818110610f8b57610f8b6131e7565b9050602002810190610f9d91906131fb565b610fa69061325c565b80516040519192505f916006880191610fbe9161309a565b90815260200160405180910390205414610fee57805160405163a41f772f60e01b8152610532919060040161300c565b5f6002885f01358460405160200161101d92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526110379161309a565b602060405180830381855afa158015611052573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611075919061301e565b90508086600601835f015160405161108d919061309a565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff1916600217815582516001909101906110cd9082613320565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff1916905561114d90856133ef565b825160405191955061115e9161309a565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a35050806111b39061340f565b9050610f59565b506003830180546fffffffffffffffff00000000000000001916600160401b6001600160401b0384168102919091179091556001840154606491611202910460ff1683613431565b6001600160401b0316101561123557604051633e1a785160e01b81526001600160401b0382166004820152602401610532565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884611259876123e8565b604001516040518263ffffffff1660e01b8152600401611279919061300c565b602060405180830381865af4158015611294573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b8919061301e565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b81526004016112f29190613557565b5f60405180830381865af415801561130c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113339190810190612fdb565b90505f600282604051611346919061309a565b602060405180830381855afa158015611361573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611384919061301e565b90508281146113b05760405163baaea89d60e01b81526004810182905260248101849052604401610532565b5050506007909201805460ff1916600117905550505050565b5f8281525f80516020613aa3833981519152602052604081206002015481905f80516020613a8383398151915290600160801b90046001600160401b031661141185826124fe565b5f61141b87612768565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156114c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114eb9190810190612fdb565b6040518263ffffffff1660e01b8152600401611507919061300c565b6020604051808303815f875af1158015611523573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611547919061301e565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f5f80516020613a83833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6115d4876123e8565b604001516040518263ffffffff1660e01b81526004016115f4919061300c565b6040805180830381865af415801561160e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163291906135f1565b91509150801561165957604051632d07135360e01b81528115156004820152602401610532565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff9091169081111561169057611690612d53565b60058111156116a1576116a1612d53565b81526020016001820180546116b590612e92565b80601f01602080910402602001604051908101604052809291908181526020018280546116e190612e92565b801561172c5780601f106117035761010080835404028352916020019161172c565b820191905f5260205f20905b81548152906001019060200180831161170f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561179757611797612d53565b141580156117b857506001815160058111156117b5576117b5612d53565b14155b156117d957805160405163170cc93360e21b81526105329190600401612eca565b6003815160058111156117ee576117ee612d53565b036117fc5760048152611801565b600581525b836006018160200151604051611817919061309a565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff191690600190849081111561185a5761185a612d53565b0217905550602082015160018201906118739082613320565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561191957611919612d53565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a35090949350505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff1661199157604051637fab81e560e01b815260040160405180910390fd5b5f80516020613a83833981519152426119b06060860160408701613612565b6001600160401b03161115806119ea57506119ce6202a3004261362b565b6119de6060860160408701613612565b6001600160401b031610155b15611a24576119ff6060850160408601613612565b604051635879da1360e11b81526001600160401b039091166004820152602401610532565b60038101546001600160401b0390611a4790600160401b9004821685831661362b565b1115611a7157604051633e1a785160e01b81526001600160401b0384166004820152602401610532565b611a86611a81606086018661363e565b6127dd565b611a96611a81608086018661363e565b6030611aa56020860186613652565b905014611ad757611ab96020850185613652565b6040516326475b2f60e11b8152610532925060040190815260200190565b611ae18480613652565b90505f03611b0e57611af38480613652565b604051633e08a12560e11b8152600401610532929190613694565b5f60068201611b1d8680613652565b604051611b2b929190613193565b90815260200160405180910390205414611b6457611b498480613652565b60405163a41f772f60e01b8152600401610532929190613694565b611b6e835f6124fe565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611bab8a80613652565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611bf3908b018b613652565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611c3c60608b0160408c01613612565b6001600160401b03168152602001611c5760608b018b61363e565b611c60906136a7565b8152602001611c7260808b018b61363e565b611c7b906136a7565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611ca991906137d4565b5f60405180830381865af4158015611cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cea919081019061388b565b5f82815260048601602052604090209193509150611d088282613320565b508160068401611d188880613652565b604051611d26929190613193565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611d6290859060040161300c565b6020604051808303815f875af1158015611d7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da2919061301e565b5f8481526005860160205260409020805460ff191660011790559050611dc88780613652565b5f858152600587016020526040902060010191611de69190836138ce565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611e458880613652565b604051611e53929190613193565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b6040016020810190611e919190613612565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f5f80516020613a83833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611ef3876123e8565b604001516040518263ffffffff1660e01b8152600401611f13919061300c565b6040805180830381865af4158015611f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5191906135f1565b9150915080611f7757604051632d07135360e01b81528115156004820152602401610532565b5f82815260048401602052604090208054611f9190612e92565b90505f03611fb55760405163089938b360e11b815260048101839052602401610532565b60015f838152600580860160205260409091205460ff1690811115611fdc57611fdc612d53565b1461200f575f8281526005840160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b5f828152600484016020526040812061202791612aa5565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a2509392505050565b6040805160e0810182525f8082526060602083018190529282018190529181018290526080810182905260a0810182905260c08101919091525f8281525f80516020613aa38339815191526020526040808220815160e0810190925280545f80516020613a8383398151915293929190829060ff16600581111561213e5761213e612d53565b600581111561214f5761214f612d53565b815260200160018201805461216390612e92565b80601f016020809104026020016040519081016040528092919081815260200182805461218f90612e92565b80156121da5780601f106121b1576101008083540402835291602001916121da565b820191905f5260205f20905b8154815290600101906020018083116121bd57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561224857612248612d53565b1461227b575f8481526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff19169060019084908111156122c0576122c0612d53565b0217905550602082015160018201906122d99082613320565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f61237785826113c9565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6123d6612946565b6123df82612991565b610645816129ad565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561244c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124739190810190613987565b915091508061249557604051636b2f19e960e01b815260040160405180910390fd5b8151156124bb578151604051636ba589a560e01b81526004810191909152602401610532565b60208201516001600160a01b0316156124f7576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610532565b5092915050565b5f80516020613a838339815191525f6001600160401b0380841690851611156125325761252b8385613a14565b905061253f565b61253c8484613a14565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b90049092166060820152429115806125ac5750600184015481516125a8916001600160401b03169061362b565b8210155b156125d4576001600160401b03808416606083015282825260408201511660208201526125f3565b82816060018181516125e691906133ef565b6001600160401b03169052505b6060810151612603906064613431565b602082015160018601546001600160401b03929092169161262e9190600160401b900460ff16613431565b6001600160401b0316101561266757606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610532565b858160400181815161267991906133ef565b6001600160401b0316905250604081018051869190612699908390613a14565b6001600160401b0316905250600184015460408201516064916126c791600160401b90910460ff1690613431565b6001600160401b03161015612700576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610532565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020613aa38339815191526020526040812060020180545f80516020613a8383398151915291906008906127b290600160401b90046001600160401b0316613a34565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6127ea6020820182612c14565b63ffffffff1615801561280a575061280560208201826131a2565b151590505b156128515761281c6020820182612c14565b61282960208301836131a2565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610532565b61285e60208201826131a2565b905061286d6020830183612c14565b63ffffffff1611156128865761281c6020820182612c14565b60015b61289660208301836131a2565b9050811015610645576128ac60208301836131a2565b6128b7600184613a4f565b8181106128c6576128c66131e7565b90506020020160208101906128db9190612cfc565b6001600160a01b03166128f160208401846131a2565b83818110612901576129016131e7565b90506020020160208101906129169190612cfc565b6001600160a01b0316101561293e57604051630dbc8d5f60e31b815260040160405180910390fd5b600101612889565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661298f57604051631afcd79f60e31b815260040160405180910390fd5b565b612999612946565b6129a16129b5565b6129aa816129bd565b50565b610281612946565b61298f612946565b6129c5612946565b80355f80516020613a8383398151915290815560146129ea6060840160408501613a62565b60ff161180612a095750612a046060830160408401613a62565b60ff16155b15612a3d57612a1e6060830160408401613a62565b604051634a59bbff60e11b815260ff9091166004820152602401610532565b612a4d6060830160408401613a62565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612a7e6040830160208401613612565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b508054612ab190612e92565b5f825580601f10612ac0575050565b601f0160209004905f5260205f20908101906129aa91905b80821115612aeb575f8155600101612ad8565b5090565b5f60208284031215612aff575f80fd5b5035919050565b803563ffffffff81168114612b19575f80fd5b919050565b5f8060408385031215612b2f575f80fd5b82356001600160401b03811115612b44575f80fd5b830160808186031215612b55575f80fd5b9150612b6360208401612b06565b90509250929050565b80356001600160401b0381168114612b19575f80fd5b5f8083601f840112612b92575f80fd5b5081356001600160401b03811115612ba8575f80fd5b602083019150836020828501011115611599575f80fd5b5f805f8060608587031215612bd2575f80fd5b84359350612be260208601612b6c565b925060408501356001600160401b03811115612bfc575f80fd5b612c0887828801612b82565b95989497509550505050565b5f60208284031215612c24575f80fd5b612c2d82612b06565b9392505050565b5f805f60408486031215612c46575f80fd5b8335925060208401356001600160401b03811115612c62575f80fd5b612c6e86828701612b82565b9497909650939450505050565b5f805f8060608587031215612c8e575f80fd5b84356001600160401b0380821115612ca4575f80fd5b9086019060a08289031215612cb7575f80fd5b819550612cc660208801612b6c565b94506040870135915080821115612cdb575f80fd5b50612c0887828801612b82565b6001600160a01b03811681146129aa575f80fd5b5f60208284031215612d0c575f80fd5b8135612c2d81612ce8565b5f808284036080811215612d29575f80fd5b6060811215612d36575f80fd5b508291506060830135612d4881612ce8565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d8357634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612da1578181015183820152602001612d89565b50505f910152565b5f8151808452612dc0816020860160208601612d87565b601f01601f19169290920160200192915050565b60208152612de6602082018351612d67565b5f602083015160e06040840152612e01610100840182612da9565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215612e65575f80fd5b82356001600160401b03811115612e7a575f80fd5b612e8685828601612b82565b90969095509350505050565b600181811c90821680612ea657607f821691505b602082108103612ec457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e088284612d67565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612f0e57612f0e612ed8565b60405290565b604080519081016001600160401b0381118282101715612f0e57612f0e612ed8565b604051601f8201601f191681016001600160401b0381118282101715612f5e57612f5e612ed8565b604052919050565b5f6001600160401b03821115612f7e57612f7e612ed8565b50601f01601f191660200190565b5f82601f830112612f9b575f80fd5b8151612fae612fa982612f66565b612f36565b818152846020838601011115612fc2575f80fd5b612fd3826020830160208701612d87565b949350505050565b5f60208284031215612feb575f80fd5b81516001600160401b03811115613000575f80fd5b612fd384828501612f8c565b602081525f612c2d6020830184612da9565b5f6020828403121561302e575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8581525f6001600160401b0380871660208401528086166040840152506080606083015261308f608083018486613035565b979650505050505050565b5f82516130ab818460208701612d87565b9190910192915050565b838152604060208201525f6130ce604083018486613035565b95945050505050565b8481526001600160401b0384166020820152606060408201525f6130ff606083018486613035565b9695505050505050565b5f60208083525f845461311b81612e92565b806020870152604060018084165f811461313c576001811461315857613185565b60ff19851660408a0152604084151560051b8a01019550613185565b895f5260205f205f5b8581101561317c5781548b8201860152908301908801613161565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f808335601e198436030181126131b7575f80fd5b8301803591506001600160401b038211156131d0575f80fd5b6020019150600581901b3603821315611599575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130ab575f80fd5b5f82601f83011261321e575f80fd5b813561322c612fa982612f66565b818152846020838601011115613240575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561326c575f80fd5b613274612eec565b82356001600160401b038082111561328a575f80fd5b6132963683870161320f565b835260208501359150808211156132ab575f80fd5b506132b83682860161320f565b6020830152506132ca60408401612b6c565b604082015292915050565b601f821115610adb57805f5260205f20601f840160051c810160208510156132fa5750805b601f840160051c820191505b81811015613319575f8155600101613306565b5050505050565b81516001600160401b0381111561333957613339612ed8565b61334d816133478454612e92565b846132d5565b602080601f831160018114613380575f84156133695750858301515b5f19600386901b1c1916600185901b178555610997565b5f85815260208120601f198616915b828110156133ae5788860151825594840194600190910190840161338f565b50858210156133cb57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156124f7576124f76133db565b5f63ffffffff808316818103613427576134276133db565b6001019392505050565b6001600160401b03818116838216028082169190828114613454576134546133db565b505092915050565b5f808335601e19843603018112613471575f80fd5b83016020810192503590506001600160401b0381111561348f575f80fd5b803603821315611599575f80fd5b5f8383855260208086019550808560051b830101845f5b8781101561354a57848303601f19018952813536889003605e190181126134d9575f80fd5b870160606134e7828061345c565b8287526134f78388018284613035565b925050506135078683018361345c565b86830388880152613519838284613035565b9250505060406001600160401b03613532828501612b6c565b169501949094525097830197908301906001016134b4565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561357b81612ce8565b6001600160a01b031660608381019190915283013536849003601e190181126135a2575f80fd5b83016020810190356001600160401b038111156135bd575f80fd5b8060051b36038213156135ce575f80fd5b6080808501526130ce60a08501828461349d565b80518015158114612b19575f80fd5b5f8060408385031215613602575f80fd5b82519150612b63602084016135e2565b5f60208284031215613622575f80fd5b612c2d82612b6c565b80820180821115610e0857610e086133db565b5f8235603e198336030181126130ab575f80fd5b5f808335601e19843603018112613667575f80fd5b8301803591506001600160401b03821115613680575f80fd5b602001915036819003821315611599575f80fd5b602081525f612fd3602083018486613035565b5f604082360312156136b7575f80fd5b6136bf612f14565b6136c883612b06565b81526020808401356001600160401b03808211156136e4575f80fd5b9085019036601f8301126136f6575f80fd5b81358181111561370857613708612ed8565b8060051b9150613719848301612f36565b8181529183018401918481019036841115613732575f80fd5b938501935b8385101561375c578435925061374c83612ce8565b8282529385019390850190613737565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156137c95784516001600160a01b031682529383019360019290920191908301906137a0565b509695505050505050565b60208152815160208201525f602083015160e060408401526137fa610100840182612da9565b90506040840151601f19808584030160608601526138188383612da9565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152613848838361376e565b925060a08601519150808584030160c086015250613866828261376e565b91505060c084015161388360e08501826001600160401b03169052565b509392505050565b5f806040838503121561389c575f80fd5b8251915060208301516001600160401b038111156138b8575f80fd5b6138c485828601612f8c565b9150509250929050565b6001600160401b038311156138e5576138e5612ed8565b6138f9836138f38354612e92565b836132d5565b5f601f84116001811461392a575f85156139135750838201355b5f19600387901b1c1916600186901b178355613319565b5f83815260208120601f198716915b828110156139595786850135825560209485019460019092019101613939565b5086821015613975575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f8060408385031215613998575f80fd5b82516001600160401b03808211156139ae575f80fd5b90840190606082870312156139c1575f80fd5b6139c9612eec565b8251815260208301516139db81612ce8565b60208201526040830151828111156139f1575f80fd5b6139fd88828601612f8c565b6040830152509350612b63915050602084016135e2565b6001600160401b038281168282160390808211156124f7576124f76133db565b5f6001600160401b03808316818103613427576134276133db565b81810381811115610e0857610e086133db565b5f60208284031215613a72575f80fd5b813560ff81168114612c2d575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb056d7896c90f86967e463241c430aa4c1ef638639857cb8d4f18c905fa5443d600a2646970667358221220235693c08007255b3393c129119e6f85dd27b50747e8dfb56bfd6d88d4810dcd64736f6c63430008190033", +} + +// ACP99ValidatorManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use ACP99ValidatorManagerMetaData.ABI instead. +var ACP99ValidatorManagerABI = ACP99ValidatorManagerMetaData.ABI + +// ACP99ValidatorManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ACP99ValidatorManagerMetaData.Bin instead. +var ACP99ValidatorManagerBin = ACP99ValidatorManagerMetaData.Bin + +// DeployACP99ValidatorManager deploys a new Ethereum contract, binding an instance of ACP99ValidatorManager to it. +func DeployACP99ValidatorManager(auth *bind.TransactOpts, backend bind.ContractBackend, init uint8) (common.Address, *types.Transaction, *ACP99ValidatorManager, error) { + parsed, err := ACP99ValidatorManagerMetaData.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) + ACP99ValidatorManagerBin = strings.ReplaceAll(ACP99ValidatorManagerBin, "__$fd0c147b4031eef6079b0498cbafa865f0$__", validatorMessagesAddr.String()[2:]) + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ACP99ValidatorManagerBin), backend, init) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ACP99ValidatorManager{ACP99ValidatorManagerCaller: ACP99ValidatorManagerCaller{contract: contract}, ACP99ValidatorManagerTransactor: ACP99ValidatorManagerTransactor{contract: contract}, ACP99ValidatorManagerFilterer: ACP99ValidatorManagerFilterer{contract: contract}}, nil +} + +// ACP99ValidatorManager is an auto generated Go binding around an Ethereum contract. +type ACP99ValidatorManager struct { + ACP99ValidatorManagerCaller // Read-only binding to the contract + ACP99ValidatorManagerTransactor // Write-only binding to the contract + ACP99ValidatorManagerFilterer // Log filterer for contract events +} + +// ACP99ValidatorManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ACP99ValidatorManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ACP99ValidatorManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ACP99ValidatorManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ACP99ValidatorManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ACP99ValidatorManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ACP99ValidatorManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ACP99ValidatorManagerSession struct { + Contract *ACP99ValidatorManager // 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 +} + +// ACP99ValidatorManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ACP99ValidatorManagerCallerSession struct { + Contract *ACP99ValidatorManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ACP99ValidatorManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ACP99ValidatorManagerTransactorSession struct { + Contract *ACP99ValidatorManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ACP99ValidatorManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ACP99ValidatorManagerRaw struct { + Contract *ACP99ValidatorManager // Generic contract binding to access the raw methods on +} + +// ACP99ValidatorManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ACP99ValidatorManagerCallerRaw struct { + Contract *ACP99ValidatorManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// ACP99ValidatorManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ACP99ValidatorManagerTransactorRaw struct { + Contract *ACP99ValidatorManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewACP99ValidatorManager creates a new instance of ACP99ValidatorManager, bound to a specific deployed contract. +func NewACP99ValidatorManager(address common.Address, backend bind.ContractBackend) (*ACP99ValidatorManager, error) { + contract, err := bindACP99ValidatorManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ACP99ValidatorManager{ACP99ValidatorManagerCaller: ACP99ValidatorManagerCaller{contract: contract}, ACP99ValidatorManagerTransactor: ACP99ValidatorManagerTransactor{contract: contract}, ACP99ValidatorManagerFilterer: ACP99ValidatorManagerFilterer{contract: contract}}, nil +} + +// NewACP99ValidatorManagerCaller creates a new read-only instance of ACP99ValidatorManager, bound to a specific deployed contract. +func NewACP99ValidatorManagerCaller(address common.Address, caller bind.ContractCaller) (*ACP99ValidatorManagerCaller, error) { + contract, err := bindACP99ValidatorManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerCaller{contract: contract}, nil +} + +// NewACP99ValidatorManagerTransactor creates a new write-only instance of ACP99ValidatorManager, bound to a specific deployed contract. +func NewACP99ValidatorManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*ACP99ValidatorManagerTransactor, error) { + contract, err := bindACP99ValidatorManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerTransactor{contract: contract}, nil +} + +// NewACP99ValidatorManagerFilterer creates a new log filterer instance of ACP99ValidatorManager, bound to a specific deployed contract. +func NewACP99ValidatorManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*ACP99ValidatorManagerFilterer, error) { + contract, err := bindACP99ValidatorManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerFilterer{contract: contract}, nil +} + +// bindACP99ValidatorManager binds a generic wrapper to an already deployed contract. +func bindACP99ValidatorManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ACP99ValidatorManagerMetaData.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 (_ACP99ValidatorManager *ACP99ValidatorManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ACP99ValidatorManager.Contract.ACP99ValidatorManagerCaller.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 (_ACP99ValidatorManager *ACP99ValidatorManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ACP99ValidatorManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ACP99ValidatorManager *ACP99ValidatorManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ACP99ValidatorManagerTransactor.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 (_ACP99ValidatorManager *ACP99ValidatorManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.contract.Transact(opts, method, params...) +} + +// ACP99VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xdb4a0eca. +// +// Solidity: function ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) ACP99VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ACP99ValidatorManager.contract.Call(opts, &out, "ACP_99_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 + +} + +// ACP99VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xdb4a0eca. +// +// Solidity: function ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) ACP99VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.ACP99VALIDATORMANAGERSTORAGELOCATION(&_ACP99ValidatorManager.CallOpts) +} + +// ACP99VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xdb4a0eca. +// +// Solidity: function ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) ACP99VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.ACP99VALIDATORMANAGERSTORAGELOCATION(&_ACP99ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) ADDRESSLENGTH(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) ADDRESSLENGTH() (uint32, error) { + return _ACP99ValidatorManager.Contract.ADDRESSLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// ADDRESSLENGTH is a free data retrieval call binding the contract method 0x60305d62. +// +// Solidity: function ADDRESS_LENGTH() view returns(uint32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) ADDRESSLENGTH() (uint32, error) { + return _ACP99ValidatorManager.Contract.ADDRESSLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) BLSPUBLICKEYLENGTH(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ACP99ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// BLSPUBLICKEYLENGTH is a free data retrieval call binding the contract method 0x8280a25a. +// +// Solidity: function BLS_PUBLIC_KEY_LENGTH() view returns(uint8) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) BLSPUBLICKEYLENGTH() (uint8, error) { + return _ACP99ValidatorManager.Contract.BLSPUBLICKEYLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) MAXIMUMCHURNPERCENTAGELIMIT(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ACP99ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ACP99ValidatorManager.CallOpts) +} + +// MAXIMUMCHURNPERCENTAGELIMIT is a free data retrieval call binding the contract method 0xc974d1b6. +// +// Solidity: function MAXIMUM_CHURN_PERCENTAGE_LIMIT() view returns(uint8) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) MAXIMUMCHURNPERCENTAGELIMIT() (uint8, error) { + return _ACP99ValidatorManager.Contract.MAXIMUMCHURNPERCENTAGELIMIT(&_ACP99ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) MAXIMUMREGISTRATIONEXPIRYLENGTH(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ACP99ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// MAXIMUMREGISTRATIONEXPIRYLENGTH is a free data retrieval call binding the contract method 0xdf93d8de. +// +// Solidity: function MAXIMUM_REGISTRATION_EXPIRY_LENGTH() view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) MAXIMUMREGISTRATIONEXPIRYLENGTH() (uint64, error) { + return _ACP99ValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_ACP99ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ACP99ValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.PCHAINBLOCKCHAINID(&_ACP99ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ACP99ValidatorManager.CallOpts) +} + +// VALIDATORMANAGERSTORAGELOCATION is a free data retrieval call binding the contract method 0xbc5fbfec. +// +// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) VALIDATORMANAGERSTORAGELOCATION() ([32]byte, error) { + return _ACP99ValidatorManager.Contract.VALIDATORMANAGERSTORAGELOCATION(&_ACP99ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) WARPMESSENGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) WARPMESSENGER() (common.Address, error) { + return _ACP99ValidatorManager.Contract.WARPMESSENGER(&_ACP99ValidatorManager.CallOpts) +} + +// WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. +// +// Solidity: function WARP_MESSENGER() view returns(address) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) WARPMESSENGER() (common.Address, error) { + return _ACP99ValidatorManager.Contract.WARPMESSENGER(&_ACP99ValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ACP99ValidatorManager.Contract.GetChurnPeriodSeconds(&_ACP99ValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ACP99ValidatorManager.Contract.GetChurnPeriodSeconds(&_ACP99ValidatorManager.CallOpts) +} + +// GetSecurityModule is a free data retrieval call binding the contract method 0xcdeea3c9. +// +// Solidity: function getSecurityModule() view returns(address) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) GetSecurityModule(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) GetSecurityModule() (common.Address, error) { + return _ACP99ValidatorManager.Contract.GetSecurityModule(&_ACP99ValidatorManager.CallOpts) +} + +// GetSecurityModule is a free data retrieval call binding the contract method 0xcdeea3c9. +// +// Solidity: function getSecurityModule() view returns(address) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) GetSecurityModule() (common.Address, error) { + return _ACP99ValidatorManager.Contract.GetSecurityModule(&_ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ACP99ValidatorManager.Contract.GetValidator(&_ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _ACP99ValidatorManager.Contract.GetValidator(&_ACP99ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) GetWeight(opts *bind.CallOpts, validationID [32]byte) (uint64, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ACP99ValidatorManager.Contract.GetWeight(&_ACP99ValidatorManager.CallOpts, validationID) +} + +// GetWeight is a free data retrieval call binding the contract method 0x66435abf. +// +// Solidity: function getWeight(bytes32 validationID) view returns(uint64) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) GetWeight(validationID [32]byte) (uint64, error) { + return _ACP99ValidatorManager.Contract.GetWeight(&_ACP99ValidatorManager.CallOpts, validationID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCaller) RegisteredValidators(opts *bind.CallOpts, nodeID []byte) ([32]byte, error) { + var out []interface{} + err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ACP99ValidatorManager.Contract.RegisteredValidators(&_ACP99ValidatorManager.CallOpts, nodeID) +} + +// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// +// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { + return _ACP99ValidatorManager.Contract.RegisteredValidators(&_ACP99ValidatorManager.CallOpts, nodeID) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) CompleteEndValidation(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "completeEndValidation", messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteEndValidation(&_ACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteEndValidation(&_ACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) CompleteValidatorRegistration(opts *bind.TransactOpts, messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "completeValidatorRegistration", messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteValidatorRegistration(&_ACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// +// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteValidatorRegistration(&_ACP99ValidatorManager.TransactOpts, messageIndex) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) CompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "completeValidatorWeightChange", validationID, args) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) CompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_ACP99ValidatorManager.TransactOpts, validationID, args) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) CompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_ACP99ValidatorManager.TransactOpts, validationID, args) +} + +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// +// Solidity: function initialize((bytes32,uint64,uint8) settings, address securityModule) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) Initialize(settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.Initialize(&_ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.Initialize(&_ACP99ValidatorManager.TransactOpts, settings, securityModule) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, args) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) InitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeEndValidation(&_ACP99ValidatorManager.TransactOpts, validationID, args) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeEndValidation(&_ACP99ValidatorManager.TransactOpts, validationID, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", input, weight, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_ACP99ValidatorManager.TransactOpts, input, weight, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_ACP99ValidatorManager.TransactOpts, input, weight, args) +} + +// 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 (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) InitializeValidatorSet(opts *bind.TransactOpts, conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorSet(&_ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) InitializeValidatorSet(conversionData ConversionData, messageIndex uint32) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorSet(&_ACP99ValidatorManager.TransactOpts, conversionData, messageIndex) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) InitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "initializeValidatorWeightChange", validationID, weight, args) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_ACP99ValidatorManager.TransactOpts, validationID, weight, args) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_ACP99ValidatorManager.TransactOpts, validationID, weight, args) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) ResendEndValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "resendEndValidatorMessage", validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ResendEndValidatorMessage(&_ACP99ValidatorManager.TransactOpts, validationID) +} + +// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// +// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ResendEndValidatorMessage(&_ACP99ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) ResendRegisterValidatorMessage(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "resendRegisterValidatorMessage", validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ACP99ValidatorManager.TransactOpts, validationID) +} + +// ResendRegisterValidatorMessage is a paid mutator transaction binding the contract method 0xbee0a03f. +// +// Solidity: function resendRegisterValidatorMessage(bytes32 validationID) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) ResendRegisterValidatorMessage(validationID [32]byte) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.ResendRegisterValidatorMessage(&_ACP99ValidatorManager.TransactOpts, validationID) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactor) SetSecurityModule(opts *bind.TransactOpts, securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.contract.Transact(opts, "setSecurityModule", securityModule) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerSession) SetSecurityModule(securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.SetSecurityModule(&_ACP99ValidatorManager.TransactOpts, securityModule) +} + +// SetSecurityModule is a paid mutator transaction binding the contract method 0x9a68b050. +// +// Solidity: function setSecurityModule(address securityModule) returns() +func (_ACP99ValidatorManager *ACP99ValidatorManagerTransactorSession) SetSecurityModule(securityModule common.Address) (*types.Transaction, error) { + return _ACP99ValidatorManager.Contract.SetSecurityModule(&_ACP99ValidatorManager.TransactOpts, securityModule) +} + +// ACP99ValidatorManagerInitialValidatorCreatedIterator is returned from FilterInitialValidatorCreated and is used to iterate over the raw logs and unpacked data for InitialValidatorCreated events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerInitialValidatorCreatedIterator struct { + Event *ACP99ValidatorManagerInitialValidatorCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerInitialValidatorCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerInitialValidatorCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerInitialValidatorCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerInitialValidatorCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerInitialValidatorCreated 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ACP99ValidatorManagerInitialValidatorCreatedIterator, 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 := _ACP99ValidatorManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerInitialValidatorCreatedIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerInitialValidatorCreated, 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 := _ACP99ValidatorManager.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(ACP99ValidatorManagerInitialValidatorCreated) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ACP99ValidatorManagerInitialValidatorCreated, error) { + event := new(ACP99ValidatorManagerInitialValidatorCreated) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerInitializedIterator struct { + Event *ACP99ValidatorManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerInitialized represents a Initialized event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerInitialized 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ACP99ValidatorManagerInitializedIterator, error) { + + logs, sub, err := _ACP99ValidatorManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerInitializedIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _ACP99ValidatorManager.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(ACP99ValidatorManagerInitialized) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseInitialized(log types.Log) (*ACP99ValidatorManagerInitialized, error) { + event := new(ACP99ValidatorManagerInitialized) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerValidationPeriodCreatedIterator is returned from FilterValidationPeriodCreated and is used to iterate over the raw logs and unpacked data for ValidationPeriodCreated events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodCreatedIterator struct { + Event *ACP99ValidatorManagerValidationPeriodCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerValidationPeriodCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerValidationPeriodCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerValidationPeriodCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerValidationPeriodCreated represents a ValidationPeriodCreated event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodCreated 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ACP99ValidatorManagerValidationPeriodCreatedIterator, 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 := _ACP99ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerValidationPeriodCreatedIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerValidationPeriodCreated, 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 := _ACP99ValidatorManager.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(ACP99ValidatorManagerValidationPeriodCreated) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ACP99ValidatorManagerValidationPeriodCreated, error) { + event := new(ACP99ValidatorManagerValidationPeriodCreated) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerValidationPeriodEndedIterator is returned from FilterValidationPeriodEnded and is used to iterate over the raw logs and unpacked data for ValidationPeriodEnded events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodEndedIterator struct { + Event *ACP99ValidatorManagerValidationPeriodEnded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerValidationPeriodEndedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodEnded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerValidationPeriodEndedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerValidationPeriodEndedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodEnded 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ACP99ValidatorManagerValidationPeriodEndedIterator, 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 := _ACP99ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodEnded", validationIDRule, statusRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerValidationPeriodEndedIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchValidationPeriodEnded(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerValidationPeriodEnded, 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 := _ACP99ValidatorManager.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(ACP99ValidatorManagerValidationPeriodEnded) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseValidationPeriodEnded(log types.Log) (*ACP99ValidatorManagerValidationPeriodEnded, error) { + event := new(ACP99ValidatorManagerValidationPeriodEnded) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "ValidationPeriodEnded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerValidationPeriodRegisteredIterator is returned from FilterValidationPeriodRegistered and is used to iterate over the raw logs and unpacked data for ValidationPeriodRegistered events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodRegisteredIterator struct { + Event *ACP99ValidatorManagerValidationPeriodRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerValidationPeriodRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidationPeriodRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerValidationPeriodRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerValidationPeriodRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidationPeriodRegistered 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ACP99ValidatorManagerValidationPeriodRegisteredIterator, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ACP99ValidatorManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerValidationPeriodRegisteredIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { + + var validationIDRule []interface{} + for _, validationIDItem := range validationID { + validationIDRule = append(validationIDRule, validationIDItem) + } + + logs, sub, err := _ACP99ValidatorManager.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(ACP99ValidatorManagerValidationPeriodRegistered) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ACP99ValidatorManagerValidationPeriodRegistered, error) { + event := new(ACP99ValidatorManagerValidationPeriodRegistered) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerValidatorRemovalInitializedIterator is returned from FilterValidatorRemovalInitialized and is used to iterate over the raw logs and unpacked data for ValidatorRemovalInitialized events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidatorRemovalInitializedIterator struct { + Event *ACP99ValidatorManagerValidatorRemovalInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerValidatorRemovalInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidatorRemovalInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerValidatorRemovalInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerValidatorRemovalInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerValidatorRemovalInitialized represents a ValidatorRemovalInitialized event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidatorRemovalInitialized 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ACP99ValidatorManagerValidatorRemovalInitializedIterator, 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 := _ACP99ValidatorManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerValidatorRemovalInitializedIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerValidatorRemovalInitialized, 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 := _ACP99ValidatorManager.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(ACP99ValidatorManagerValidatorRemovalInitialized) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ACP99ValidatorManagerValidatorRemovalInitialized, error) { + event := new(ACP99ValidatorManagerValidatorRemovalInitialized) + if err := _ACP99ValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ACP99ValidatorManagerValidatorWeightUpdateIterator is returned from FilterValidatorWeightUpdate and is used to iterate over the raw logs and unpacked data for ValidatorWeightUpdate events raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidatorWeightUpdateIterator struct { + Event *ACP99ValidatorManagerValidatorWeightUpdate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking 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 *ACP99ValidatorManagerValidatorWeightUpdateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ACP99ValidatorManagerValidatorWeightUpdate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ACP99ValidatorManagerValidatorWeightUpdateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ACP99ValidatorManagerValidatorWeightUpdateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ACP99ValidatorManagerValidatorWeightUpdate represents a ValidatorWeightUpdate event raised by the ACP99ValidatorManager contract. +type ACP99ValidatorManagerValidatorWeightUpdate 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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ACP99ValidatorManagerValidatorWeightUpdateIterator, 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 := _ACP99ValidatorManager.contract.FilterLogs(opts, "ValidatorWeightUpdate", validationIDRule, nonceRule) + if err != nil { + return nil, err + } + return &ACP99ValidatorManagerValidatorWeightUpdateIterator{contract: _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ACP99ValidatorManagerValidatorWeightUpdate, 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 := _ACP99ValidatorManager.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(ACP99ValidatorManagerValidatorWeightUpdate) + if err := _ACP99ValidatorManager.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 (_ACP99ValidatorManager *ACP99ValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ACP99ValidatorManagerValidatorWeightUpdate, error) { + event := new(ACP99ValidatorManagerValidatorWeightUpdate) + if err := _ACP99ValidatorManager.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: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212208be80a4303a1e07ea62903f910297923f4ddaac89ceab64ca0f1e1f9914c4bc264736f6c63430008190033", +} + +// 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/ArgumentsExternal/ArgumentsExternal.go b/abi-bindings/go/validator-manager/ArgumentsExternal/ArgumentsExternal.go new file mode 100644 index 000000000..beb885d67 --- /dev/null +++ b/abi-bindings/go/validator-manager/ArgumentsExternal/ArgumentsExternal.go @@ -0,0 +1,279 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package argumentsexternal + +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 +) + +// InitializeEndValidationArgs is an auto generated low-level Go binding around an user-defined struct. +type InitializeEndValidationArgs struct { + Force bool + IncludeUptimeProof bool + MessageIndex uint32 + RewardRecipient common.Address +} + +// InitializeValidatorRegistrationArgs is an auto generated low-level Go binding around an user-defined struct. +type InitializeValidatorRegistrationArgs struct { + DelegationFeeBips uint16 + MinStakeDuration uint64 +} + +// ArgumentsExternalMetaData contains all meta data concerning the ArgumentsExternal contract. +var ArgumentsExternalMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"decodeInitializeEndValidationArgs\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"force\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"internalType\":\"structInitializeEndValidationArgs\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"decodeInitializeValidatorRegistrationArgs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"internalType\":\"structInitializeValidatorRegistrationArgs\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x6080604052348015600e575f80fd5b506102f58061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063868fba8e14610038578063ae41703014610079575b5f80fd5b61004b610046366004610127565b6100d2565b60408051825161ffff16815260209283015167ffffffffffffffff1692810192909252015b60405180910390f35b61008c610087366004610127565b6100f8565b604051610070919081511515815260208083015115159082015260408083015163ffffffff16908201526060918201516001600160a01b03169181019190915260800190565b604080518082019091525f80825260208201526100f182840184610193565b9392505050565b604080516080810182525f8082526020820181905291810182905260608101919091526100f182840184610221565b5f8060208385031215610138575f80fd5b823567ffffffffffffffff8082111561014f575f80fd5b818501915085601f830112610162575f80fd5b813581811115610170575f80fd5b866020828501011115610181575f80fd5b60209290920196919550909350505050565b5f604082840312156101a3575f80fd5b6040516040810167ffffffffffffffff82821081831117156101d357634e487b7160e01b5f52604160045260245ffd5b816040528435915061ffff821682146101ea575f80fd5b9082526020840135908082168214610200575f80fd5b5060208201529392505050565b8035801515811461021c575f80fd5b919050565b5f60808284031215610231575f80fd5b6040516080810181811067ffffffffffffffff8211171561026057634e487b7160e01b5f52604160045260245ffd5b60405261026c8361020d565b815261027a6020840161020d565b6020820152604083013563ffffffff81168114610295575f80fd5b604082015260608301356001600160a01b03811681146102b3575f80fd5b6060820152939250505056fea2646970667358221220b8d6f6dbc9b54c93fe0d3326345e1f4200f8fa64b8e14054556bbb83799fde4864736f6c63430008190033", +} + +// ArgumentsExternalABI is the input ABI used to generate the binding from. +// Deprecated: Use ArgumentsExternalMetaData.ABI instead. +var ArgumentsExternalABI = ArgumentsExternalMetaData.ABI + +// ArgumentsExternalBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ArgumentsExternalMetaData.Bin instead. +var ArgumentsExternalBin = ArgumentsExternalMetaData.Bin + +// DeployArgumentsExternal deploys a new Ethereum contract, binding an instance of ArgumentsExternal to it. +func DeployArgumentsExternal(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ArgumentsExternal, error) { + parsed, err := ArgumentsExternalMetaData.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(ArgumentsExternalBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ArgumentsExternal{ArgumentsExternalCaller: ArgumentsExternalCaller{contract: contract}, ArgumentsExternalTransactor: ArgumentsExternalTransactor{contract: contract}, ArgumentsExternalFilterer: ArgumentsExternalFilterer{contract: contract}}, nil +} + +// ArgumentsExternal is an auto generated Go binding around an Ethereum contract. +type ArgumentsExternal struct { + ArgumentsExternalCaller // Read-only binding to the contract + ArgumentsExternalTransactor // Write-only binding to the contract + ArgumentsExternalFilterer // Log filterer for contract events +} + +// ArgumentsExternalCaller is an auto generated read-only Go binding around an Ethereum contract. +type ArgumentsExternalCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ArgumentsExternalTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ArgumentsExternalTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ArgumentsExternalFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ArgumentsExternalFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ArgumentsExternalSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ArgumentsExternalSession struct { + Contract *ArgumentsExternal // 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 +} + +// ArgumentsExternalCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ArgumentsExternalCallerSession struct { + Contract *ArgumentsExternalCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ArgumentsExternalTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ArgumentsExternalTransactorSession struct { + Contract *ArgumentsExternalTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ArgumentsExternalRaw is an auto generated low-level Go binding around an Ethereum contract. +type ArgumentsExternalRaw struct { + Contract *ArgumentsExternal // Generic contract binding to access the raw methods on +} + +// ArgumentsExternalCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ArgumentsExternalCallerRaw struct { + Contract *ArgumentsExternalCaller // Generic read-only contract binding to access the raw methods on +} + +// ArgumentsExternalTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ArgumentsExternalTransactorRaw struct { + Contract *ArgumentsExternalTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewArgumentsExternal creates a new instance of ArgumentsExternal, bound to a specific deployed contract. +func NewArgumentsExternal(address common.Address, backend bind.ContractBackend) (*ArgumentsExternal, error) { + contract, err := bindArgumentsExternal(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ArgumentsExternal{ArgumentsExternalCaller: ArgumentsExternalCaller{contract: contract}, ArgumentsExternalTransactor: ArgumentsExternalTransactor{contract: contract}, ArgumentsExternalFilterer: ArgumentsExternalFilterer{contract: contract}}, nil +} + +// NewArgumentsExternalCaller creates a new read-only instance of ArgumentsExternal, bound to a specific deployed contract. +func NewArgumentsExternalCaller(address common.Address, caller bind.ContractCaller) (*ArgumentsExternalCaller, error) { + contract, err := bindArgumentsExternal(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ArgumentsExternalCaller{contract: contract}, nil +} + +// NewArgumentsExternalTransactor creates a new write-only instance of ArgumentsExternal, bound to a specific deployed contract. +func NewArgumentsExternalTransactor(address common.Address, transactor bind.ContractTransactor) (*ArgumentsExternalTransactor, error) { + contract, err := bindArgumentsExternal(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ArgumentsExternalTransactor{contract: contract}, nil +} + +// NewArgumentsExternalFilterer creates a new log filterer instance of ArgumentsExternal, bound to a specific deployed contract. +func NewArgumentsExternalFilterer(address common.Address, filterer bind.ContractFilterer) (*ArgumentsExternalFilterer, error) { + contract, err := bindArgumentsExternal(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ArgumentsExternalFilterer{contract: contract}, nil +} + +// bindArgumentsExternal binds a generic wrapper to an already deployed contract. +func bindArgumentsExternal(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ArgumentsExternalMetaData.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 (_ArgumentsExternal *ArgumentsExternalRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ArgumentsExternal.Contract.ArgumentsExternalCaller.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 (_ArgumentsExternal *ArgumentsExternalRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ArgumentsExternal.Contract.ArgumentsExternalTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ArgumentsExternal *ArgumentsExternalRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ArgumentsExternal.Contract.ArgumentsExternalTransactor.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 (_ArgumentsExternal *ArgumentsExternalCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ArgumentsExternal.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 (_ArgumentsExternal *ArgumentsExternalTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ArgumentsExternal.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ArgumentsExternal *ArgumentsExternalTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ArgumentsExternal.Contract.contract.Transact(opts, method, params...) +} + +// DecodeInitializeEndValidationArgs is a free data retrieval call binding the contract method 0xae417030. +// +// Solidity: function decodeInitializeEndValidationArgs(bytes args) pure returns((bool,bool,uint32,address)) +func (_ArgumentsExternal *ArgumentsExternalCaller) DecodeInitializeEndValidationArgs(opts *bind.CallOpts, args []byte) (InitializeEndValidationArgs, error) { + var out []interface{} + err := _ArgumentsExternal.contract.Call(opts, &out, "decodeInitializeEndValidationArgs", args) + + if err != nil { + return *new(InitializeEndValidationArgs), err + } + + out0 := *abi.ConvertType(out[0], new(InitializeEndValidationArgs)).(*InitializeEndValidationArgs) + + return out0, err + +} + +// DecodeInitializeEndValidationArgs is a free data retrieval call binding the contract method 0xae417030. +// +// Solidity: function decodeInitializeEndValidationArgs(bytes args) pure returns((bool,bool,uint32,address)) +func (_ArgumentsExternal *ArgumentsExternalSession) DecodeInitializeEndValidationArgs(args []byte) (InitializeEndValidationArgs, error) { + return _ArgumentsExternal.Contract.DecodeInitializeEndValidationArgs(&_ArgumentsExternal.CallOpts, args) +} + +// DecodeInitializeEndValidationArgs is a free data retrieval call binding the contract method 0xae417030. +// +// Solidity: function decodeInitializeEndValidationArgs(bytes args) pure returns((bool,bool,uint32,address)) +func (_ArgumentsExternal *ArgumentsExternalCallerSession) DecodeInitializeEndValidationArgs(args []byte) (InitializeEndValidationArgs, error) { + return _ArgumentsExternal.Contract.DecodeInitializeEndValidationArgs(&_ArgumentsExternal.CallOpts, args) +} + +// DecodeInitializeValidatorRegistrationArgs is a free data retrieval call binding the contract method 0x868fba8e. +// +// Solidity: function decodeInitializeValidatorRegistrationArgs(bytes args) pure returns((uint16,uint64)) +func (_ArgumentsExternal *ArgumentsExternalCaller) DecodeInitializeValidatorRegistrationArgs(opts *bind.CallOpts, args []byte) (InitializeValidatorRegistrationArgs, error) { + var out []interface{} + err := _ArgumentsExternal.contract.Call(opts, &out, "decodeInitializeValidatorRegistrationArgs", args) + + if err != nil { + return *new(InitializeValidatorRegistrationArgs), err + } + + out0 := *abi.ConvertType(out[0], new(InitializeValidatorRegistrationArgs)).(*InitializeValidatorRegistrationArgs) + + return out0, err + +} + +// DecodeInitializeValidatorRegistrationArgs is a free data retrieval call binding the contract method 0x868fba8e. +// +// Solidity: function decodeInitializeValidatorRegistrationArgs(bytes args) pure returns((uint16,uint64)) +func (_ArgumentsExternal *ArgumentsExternalSession) DecodeInitializeValidatorRegistrationArgs(args []byte) (InitializeValidatorRegistrationArgs, error) { + return _ArgumentsExternal.Contract.DecodeInitializeValidatorRegistrationArgs(&_ArgumentsExternal.CallOpts, args) +} + +// DecodeInitializeValidatorRegistrationArgs is a free data retrieval call binding the contract method 0x868fba8e. +// +// Solidity: function decodeInitializeValidatorRegistrationArgs(bytes args) pure returns((uint16,uint64)) +func (_ArgumentsExternal *ArgumentsExternalCallerSession) DecodeInitializeValidatorRegistrationArgs(args []byte) (InitializeValidatorRegistrationArgs, error) { + return _ArgumentsExternal.Contract.DecodeInitializeValidatorRegistrationArgs(&_ArgumentsExternal.CallOpts, args) +} diff --git a/abi-bindings/go/validator-manager/ArgumentsExternal/packing.go b/abi-bindings/go/validator-manager/ArgumentsExternal/packing.go new file mode 100644 index 000000000..20eac7bcb --- /dev/null +++ b/abi-bindings/go/validator-manager/ArgumentsExternal/packing.go @@ -0,0 +1,49 @@ +package argumentsexternal + +import "github.com/ava-labs/subnet-evm/accounts/abi" + +var ( + initializeValidatorRegistrationArgsType abi.Type + initializeEndValidationArgsType abi.Type +) + +func init() { + var err error + initializeValidatorRegistrationArgsType, err = abi.NewType("tuple", "struct Overloader.F", []abi.ArgumentMarshaling{ + {Name: "delegationFeeBips", Type: "uint16"}, + {Name: "minStakeDuration", Type: "uint64"}, + }) + if err != nil { + panic("failed to create InitializeValidatorRegistrationArgs ABI type") + } + + initializeEndValidationArgsType, err = abi.NewType("tuple", "struct Overloader.F", []abi.ArgumentMarshaling{ + {Name: "force", Type: "bool"}, + {Name: "includeUptimeProof", Type: "bool"}, + {Name: "messageIndex", Type: "uint32"}, + {Name: "rewardRecipient", Type: "address"}, + }) + if err != nil { + panic("failed to create InitializeEndValidationArgs ABI type") + } +} + +func (a *InitializeValidatorRegistrationArgs) Pack() ([]byte, error) { + args := abi.Arguments{ + { + Name: "initializeValidatorRegistrationArgs", + Type: initializeValidatorRegistrationArgsType, + }, + } + return args.Pack(a) +} + +func (a *InitializeEndValidationArgs) Pack() ([]byte, error) { + args := abi.Arguments{ + { + Name: "initializeEndValidationArgs", + Type: initializeEndValidationArgsType, + }, + } + return args.Pack(a) +} diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 5feff8582..44fe2d8a6 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 @@ -92,19 +74,10 @@ type ValidatorMessagesValidationPeriod struct { 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 -} - // 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\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b50604051613aec380380613aec83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61399f8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061013c575f3560e01c806398d9fa7c116100b4578063ba3a4b9711610079578063ba3a4b97146102b9578063bddb5a14146102cc578063e4a63c40146102df578063effb55b4146102f3578063f7795a8c14610306578063fb8b11dd14610319575f80fd5b806398d9fa7c1461025e578063a9778a7a146101b2578063afb9809614610271578063b5c9349814610298578063b771b3bc146102ab575f80fd5b806356ab447d1161010557806356ab447d146101ce57806362065856146101df578063732214f814610200578063785e9e86146102075780638ef34c981461023857806393e245981461024b575f80fd5b80624050c814610140578063151d30d11461015557806325e1c776146101745780632e2194d81461018757806335455ded146101b2575b5f80fd5b61015361014e36600461303e565b61032c565b005b61015d600a81565b60405160ff90911681526020015b60405180910390f35b6101536101823660046130a6565b610362565b61019a6101953660046130d4565b61044b565b6040516001600160401b03909116815260200161016b565b6101bb61271081565b60405161ffff909116815260200161016b565b6101536101dc3660046130d4565b50565b6101f26101ed3660046130eb565b61049f565b60405190815260200161016b565b6101f25f81565b5f8051602061394a833981519152546001600160a01b03165b6040516001600160a01b03909116815260200161016b565b61015361024636600461311a565b6104bf565b6101536102593660046130d4565b61059f565b61015361026c36600461313d565b61069d565b6101f27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101536102a63660046131aa565b61080f565b6102206005600160991b0181565b6101536102c73660046130d4565b6108f3565b6101536102da3660046131dd565b610bbd565b6101f25f8051602061394a83398151915281565b6101536103013660046131dd565b610c15565b6101536103143660046130d4565b610c76565b61015361032736600461311a565b610c7f565b5f6103368461049f565b90505f610345838501856132a6565b905061035a8683835f01518460200151610d46565b505050505050565b61036b82610e87565b610390576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610399610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261040491908101906133a8565b519050600281600581111561041b5761041b613475565b1461043b578060405163170cc93360e21b81526004016103879190613489565b6104458383610ed4565b50505050565b5f80610455610eb0565b6004015461046390846134b7565b905080158061047857506001600160401b0381115b156104995760405163222d164360e21b815260048101849052602401610387565b92915050565b5f6104a8610eb0565b60040154610499906001600160401b0384166134d6565b5f6104c8610eb0565b90506001600160a01b0382166104fc5760405163caa903f960e01b81526001600160a01b0383166004820152602401610387565b5f8381526007820160205260409020546001600160a01b0316331461054257335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610387565b336001600160a01b03831603610571575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f6105a8610eb0565b90505f6105b3610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156105f7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261061e91908101906133a8565b519050600481600581111561063557610635613475565b14610655578060405163170cc93360e21b81526004016103879190613489565b5f8381526007830160205260409020546001600160a01b0316331461067a573361051d565b5f83815260078301602052604090205461059a906001600160a01b031684611173565b5f806106ab838501856134ed565b90925090505f6106b9610eb0565b5f848152600891909101602052604090205460ff1660038111156106df576106df613475565b0361079c575f818060200190518101906106f9919061356b565b90505f87610705610eb0565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261077091908101906133a8565b6080015161077e9190613586565b905061079489888461078f8561049f565b61119d565b505050610805565b5f805f80848060200190518101906107b491906135b3565b93509350935093505f6107ca8a88868686611445565b905084156107de5750505050505050610808565b806107ff57604051631036cf9160e11b815260048101889052602401610387565b50505050505b50505b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610858575080546001600160401b03808416911610155b156108765760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556108a184846117b1565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6108fc610eb0565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561093557610935613475565b600381111561094657610946613475565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156109bf576109bf613475565b141580156109e057506003815160038111156109dd576109dd613475565b14155b15610a01578051604051633b0d540d60e21b8152610387919060040161360f565b5f610a0a610eb0565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610a3f9160040190815260200190565b5f60405180830381865afa158015610a59573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8091908101906133a8565b905080606001516001600160401b03165f03610ab2576040516339b894f960e21b815260048101859052602401610387565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610b2093906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610b3a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b619190810190613623565b6040518263ffffffff1660e01b8152600401610b7d919061367f565b6020604051808303815f875af1158015610b99573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108089190613691565b5f610bc883836117cf565b90505f610be385836020015184604001518560600151611805565b825190915015610bf4575050505050565b8061080857604051635bff683f60e11b815260048101869052602401610387565b5f80610c23838501856130a6565b90925090506001610c32610eb0565b5f848152600891909101602052604090205460ff166003811115610c5857610c58613475565b03610c6c57610c678282611a91565b610808565b6108088282611dc0565b6101dc8161207a565b6001600160a01b038116610cb15760405163caa903f960e01b81526001600160a01b0382166004820152602401610387565b5f610cba610eb0565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610ce8573361051d565b336001600160a01b03831603610d17575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610d4f610eb0565b600381015490915061ffff600160401b90910481169084161080610d78575061271061ffff8416115b15610d9c57604051635f12e6c360e11b815261ffff84166004820152602401610387565b60038101546001600160401b039081169083161015610dd8576040516202a06d60e11b81526001600160401b0383166004820152602401610387565b8060010154841080610ded5750806002015484115b15610e0e5760405163222d164360e21b815260048101859052602401610387565b610e178461219c565b505f948552600701602052604090932080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b03949094169390930292909217825550600101805467ffffffffffffffff19169055565b5f80610e91610eb0565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610f1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4691908101906136a8565b9150915080610f6857604051636b2f19e960e01b815260040160405180910390fd5b5f610f71610eb0565b6006810154845191925014610f9f578251604051636ba589a560e01b81526004810191909152602401610387565b60208301516001600160a01b031615610fdb576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b60208301516001600160a01b031615611017576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611054919061367f565b6040805180830381865af415801561106e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611092919061374e565b915091508188146110b95760405163089938b360e11b815260048101899052602401610387565b5f8881526007840160205260409020600101546001600160401b03908116908216111561114a575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611168565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f61117c610eb0565b5f838152600b820160205260408120805491905590915061044584826121bf565b5f806111a7610eb0565b90505f6111b66101958561219c565b90505f6111c1610eb0565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611205573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261122c91908101906133a8565b905061123788610e87565b611257576040516330efa98b60e01b815260048101899052602401610387565b60028151600581111561126c5761126c613475565b1461128d57805160405163170cc93360e21b81526103879190600401613489565b5f82826080015161129e9190613771565b905083600301600a9054906101000a90046001600160401b031682604001516112c79190613791565b6001600160401b0316816001600160401b0316111561130457604051636d51fe0560e11b81526001600160401b0382166004820152602401610387565b5f898960405160200161132e92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9061142e908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f8061144f610eb0565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561148857611488613475565b600381111561149957611499613475565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61150e610eb0565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611552573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261157991908101906133a8565b905060028351600381111561159057611590613475565b146115b1578251604051633b0d540d60e21b8152610387919060040161360f565b60208301516001600160a01b0316331461164d575f8281526007850160205260409020546001600160a01b031633146115ea573361051d565b5f82815260078501602052604090205460a082015161161991600160b01b90046001600160401b031690613771565b6001600160401b031642101561164d5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b60028151600581111561166257611662613475565b036117505760038401546080840151611684916001600160401b031690613771565b6001600160401b03164210156116b85760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b87156116ca576116c88288610ed4565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b0390911617905561171284888c61222c565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506117a89350505050565b60048151600581111561176557611765613475565b0361178c5761177583878b61222c565b5061177f89612482565b60019450505050506117a8565b805160405163170cc93360e21b81526103879190600401613489565b95945050505050565b6117b96126c6565b6117c282612711565b6117cb8161278c565b5050565b604080516080810182525f8082526020820181905291810182905260608101919091526117fe828401846137bc565b9392505050565b5f8061180f610eb0565b90505f61181a610eb0565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561185e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261188591908101906133a8565b905061189087610e87565b61189f5760019250505061143d565b5f8781526007830160205260409020546001600160a01b031633146118c4573361051d565b5f87815260078301602052604090205460a08201516118f391600160b01b90046001600160401b031690613771565b6001600160401b03168160c001516001600160401b0316101561193a5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610387565b5f86156119525761194b8887610ed4565b9050611970565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f906119959061049f565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156119fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a229190613691565b90508084600b015f8b81526020019081526020015f205f828254611a46919061383e565b90915550506001600160a01b03861615611a83575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611a9a610eb0565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611ad357611ad3613475565b6003811115611ae457611ae4613475565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b59610eb0565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b9d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bc491908101906133a8565b9050600183516003811115611bdb57611bdb613475565b14611bfc578251604051633b0d540d60e21b8152610387919060040161360f565b600481516005811115611c1157611c11613475565b03611c1f5761035a86612482565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611c44896127f4565b604001516040518263ffffffff1660e01b8152600401611c64919061367f565b606060405180830381865af4158015611c7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca39190613851565b5091509150818414611cd057846040015160405163089938b360e11b815260040161038791815260200190565b806001600160401b031683606001516001600160401b03161080611d095750806001600160401b03168560a001516001600160401b0316115b15611d3257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610387565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611dc861290a565b5f611dd1610eb0565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611e0a57611e0a613475565b6003811115611e1b57611e1b613475565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e9457611e94613475565b14611eb5578051604051633b0d540d60e21b8152610387919060040161360f565b6004611ebf610eb0565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611ef49160040190815260200190565b5f60405180830381865afa158015611f0e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f3591908101906133a8565b516005811115611f4757611f47613475565b14612046575f611f56846127f4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f95919061367f565b606060405180830381865af4158015611fb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd49190613851565b5091509150818460400151146120005760405163089938b360e11b815260048101839052602401610387565b806001600160401b03168460c001516001600160401b0316111561204257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610387565b5050505b61204f84612482565b50506117cb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612083610eb0565b90505f61208e610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156120d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120f991908101906133a8565b905061210483610e87565b61210d57505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612144575080612162565b5f858152600c85016020526040902080546001600160a01b03191690555b60048351600581111561217757612177613475565b03612186576121868186611173565b61080882612197856040015161049f565b61297a565b5f610499825f8051602061394a833981519152546001600160a01b03169061299d565b5f5f8051602061394a83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b15801561221a575f80fd5b505af1158015610805573d5f803e3d5ffd5b5f80612236610eb0565b90505f612241610eb0565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916122769160040190815260200190565b5f60405180830381865afa158015612290573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122b791908101906133a8565b90505f6003825160058111156122cf576122cf613475565b14806122ed57506004825160058111156122eb576122eb613475565b145b156122fd575060c081015161233a565b60028251600581111561231257612312613475565b0361231e57504261233a565b815160405163170cc93360e21b81526103879190600401613489565b86608001516001600160401b0316816001600160401b031611612362575f93505050506117fe565b600583015460608801515f916001600160a01b031690634f22429f906123879061049f565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242c9190613691565b5f878152600986016020526040902081905590506001600160a01b03871615611168575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f61248b610eb0565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156124c4576124c4613475565b60038111156124d5576124d5613475565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a99190613891565b82608001516125b89190613771565b6001600160401b03164210156125ec5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b03168061263c5750602082015161265a565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806126678388866129a9565b915091506126808560200151612197876060015161049f565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661270f57604051631afcd79f60e31b815260040160405180910390fd5b565b6127196126c6565b612721612a56565b6101dc61273160208301836138ac565b6020830135604084013561274b60808601606087016130eb565b61275b60a08701608088016138c7565b61276b60c0880160a089016138e0565b60c08801356127816101008a0160e08b016138ac565b896101000135612a66565b6127946126c6565b5f8051602061394a8339815191526001600160a01b0382166127d457604051637330680360e01b81526001600160a01b0383166004820152602401610387565b80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612858573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261287f91908101906136a8565b91509150806128a157604051636b2f19e960e01b815260040160405180910390fd5b8151156128c7578151604051636ba589a560e01b81526004810191909152602401610387565b60208201516001600160a01b031615612903576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161294e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f8051602061394a833981519152546117cb906001600160a01b03168383612c8f565b5f6117fe833384612cee565b5f805f6129b4610eb0565b5f86815260098201602052604081208054908290559192509081908015612a48575f878152600785016020526040902054612710906129fe90600160a01b900461ffff16836134d6565b612a0891906134b7565b91508184600b015f8981526020019081526020015f205f828254612a2c919061383e565b90915550612a3c90508282613900565b9250612a4889846121bf565b509097909650945050505050565b612a5e6126c6565b61270f612e51565b612a6e6126c6565b5f612a77610eb0565b905061ffff86161580612a8f575061271061ffff8716115b15612ab357604051635f12e6c360e11b815261ffff87166004820152602401610387565b87891115612ad75760405163222d164360e21b8152600481018a9052602401610387565b60ff85161580612aea5750600a60ff8616115b15612b0d5760405163170db35960e31b815260ff86166004820152602401610387565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6d9190613891565b6001600160401b0316876001600160401b03161015612ba9576040516202a06d60e11b81526001600160401b0388166004820152602401610387565b835f03612bc95760405163a733007160e01b815260040160405180910390fd5b81612bea57604051632f6bd1db60e01b815260048101839052602401610387565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b6040516001600160a01b0383811660248301526044820183905261059a91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612e59565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612d34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d589190613691565b9050612d6f6001600160a01b038616853086612eba565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612db3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd79190613691565b9050818111612e3d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610387565b612e478282613900565b9695505050505050565b6129546126c6565b5f612e6d6001600160a01b03841683612ef3565b905080515f14158015612e91575080806020019051810190612e8f9190613913565b155b1561059a57604051635274afe760e01b81526001600160a01b0384166004820152602401610387565b6040516001600160a01b0384811660248301528381166044830152606482018390526104459186918216906323b872dd90608401612cbc565b60606117fe83835f845f80856001600160a01b03168486604051612f17919061392e565b5f6040518083038185875af1925050503d805f8114612f51576040519150601f19603f3d011682016040523d82523d5f602084013e612f56565b606091505b5091509150612e47868383606082612f7657612f7182612fbd565b6117fe565b8151158015612f8d57506001600160a01b0384163b155b15612fb657604051639996b31560e01b81526001600160a01b0385166004820152602401610387565b50806117fe565b805115612fcd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160401b03811681146101dc575f80fd5b5f8083601f84011261300a575f80fd5b5081356001600160401b03811115613020575f80fd5b602083019150836020828501011115613037575f80fd5b9250929050565b5f805f8060608587031215613051575f80fd5b84359350602085013561306381612fe6565b925060408501356001600160401b0381111561307d575f80fd5b61308987828801612ffa565b95989497509550505050565b63ffffffff811681146101dc575f80fd5b5f80604083850312156130b7575f80fd5b8235915060208301356130c981613095565b809150509250929050565b5f602082840312156130e4575f80fd5b5035919050565b5f602082840312156130fb575f80fd5b81356117fe81612fe6565b6001600160a01b03811681146101dc575f80fd5b5f806040838503121561312b575f80fd5b8235915060208301356130c981613106565b5f805f805f60808688031215613151575f80fd5b85359450602086013561316381612fe6565b9350604086013561317381612fe6565b925060608601356001600160401b0381111561318d575f80fd5b61319988828901612ffa565b969995985093965092949392505050565b5f808284036101408112156131bd575f80fd5b610120808212156131cc575f80fd5b84935083013590506130c981613106565b5f805f604084860312156131ef575f80fd5b8335925060208401356001600160401b0381111561320b575f80fd5b61321786828701612ffa565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561325a5761325a613224565b60405290565b604051601f8201601f191681016001600160401b038111828210171561328857613288613224565b604052919050565b803561ffff811681146132a1575f80fd5b919050565b5f604082840312156132b6575f80fd5b604051604081018181106001600160401b03821117156132d8576132d8613224565b6040526132e483613290565b815260208301356132f481612fe6565b60208201529392505050565b8051600681106132a1575f80fd5b5f6001600160401b0382111561332657613326613224565b50601f01601f191660200190565b5f5b8381101561334e578181015183820152602001613336565b50505f910152565b5f82601f830112613365575f80fd5b81516133786133738261330e565b613260565b81815284602083860101111561338c575f80fd5b61143d826020830160208701613334565b80516132a181612fe6565b5f602082840312156133b8575f80fd5b81516001600160401b03808211156133ce575f80fd5b9083019060e082860312156133e1575f80fd5b6133e9613238565b6133f283613300565b8152602083015182811115613405575f80fd5b61341187828601613356565b6020830152506134236040840161339d565b60408201526134346060840161339d565b60608201526134456080840161339d565b608082015261345660a0840161339d565b60a082015261346760c0840161339d565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061349d5761349d613475565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826134d157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610499576104996134a3565b5f80604083850312156134fe575f80fd5b8235915060208301356001600160401b0381111561351a575f80fd5b8301601f8101851361352a575f80fd5b80356135386133738261330e565b81815286602083850101111561354c575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561357b575f80fd5b81516117fe81613106565b6001600160401b03828116828216039080821115612903576129036134a3565b80151581146101dc575f80fd5b5f805f80608085870312156135c6575f80fd5b84516135d1816135a6565b60208601519094506135e2816135a6565b60408601519093506135f381613095565b606086015190925061360481613106565b939692955090935050565b602081016004831061349d5761349d613475565b5f60208284031215613633575f80fd5b81516001600160401b03811115613648575f80fd5b61143d84828501613356565b5f815180845261366b816020860160208601613334565b601f01601f19169290920160200192915050565b602081525f6117fe6020830184613654565b5f602082840312156136a1575f80fd5b5051919050565b5f80604083850312156136b9575f80fd5b82516001600160401b03808211156136cf575f80fd5b90840190606082870312156136e2575f80fd5b6040516060810181811083821117156136fd576136fd613224565b60405282518152602083015161371281613106565b6020820152604083015182811115613728575f80fd5b61373488828601613356565b60408301525080945050505060208301516130c9816135a6565b5f806040838503121561375f575f80fd5b8251915060208301516130c981612fe6565b6001600160401b03818116838216019080821115612903576129036134a3565b6001600160401b038181168382160280821691908281146137b4576137b46134a3565b505092915050565b5f608082840312156137cc575f80fd5b604051608081018181106001600160401b03821117156137ee576137ee613224565b60405282356137fc816135a6565b8152602083013561380c816135a6565b6020820152604083013561381f81613095565b6040820152606083013561383281613106565b60608201529392505050565b80820180821115610499576104996134a3565b5f805f60608486031215613863575f80fd5b83519250602084015161387581612fe6565b604085015190925061388681612fe6565b809150509250925092565b5f602082840312156138a1575f80fd5b81516117fe81612fe6565b5f602082840312156138bc575f80fd5b81356117fe81613106565b5f602082840312156138d7575f80fd5b6117fe82613290565b5f602082840312156138f0575f80fd5b813560ff811681146117fe575f80fd5b81810381811115610499576104996134a3565b5f60208284031215613923575f80fd5b81516117fe816135a6565b5f825161393f818460208701613334565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00a26469706673582212205b6b3715c40ff1d8d0b44491583e2e03dc8180dca4e29607a4950b6da51e5f6464736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -277,37 +250,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 +281,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 +312,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 +343,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 +436,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 +498,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) @@ -898,1345 +623,198 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Clai return _ERC20TokenStakingManager.Contract.ClaimDelegationFees(&_ERC20TokenStakingManager.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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// 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) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleCompleteEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleCompleteEndValidation", validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// 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) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleCompleteValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleCompleteValidatorRegistration", validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleCompleteValidatorWeightChange(opts *bind.TransactOpts, arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleCompleteValidatorWeightChange", arg0, args) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleCompleteValidatorWeightChange(arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteValidatorWeightChange(&_ERC20TokenStakingManager.TransactOpts, arg0, args) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleCompleteValidatorWeightChange(arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleCompleteValidatorWeightChange(&_ERC20TokenStakingManager.TransactOpts, arg0, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleInitializeEndValidation", validationID, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleInitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleInitializeValidatorWeightChange", validationID, weight, nonce, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorWeightChange(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, nonce, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorWeightChange(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, nonce, args) } -// 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) } -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// 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) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.ResendUpdateDelegation(&_ERC20TokenStakingManager.TransactOpts, delegationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.ResendEndValidatorMessage(&_ERC20TokenStakingManager.TransactOpts, validationID) +// 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) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // -// 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() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.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) -} - -// 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) -} - -// 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) -} - -// 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) +// 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) } // 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) -} - -// 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, 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(ERC20TokenStakingManagerDelegationEnded) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// 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 -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*ERC20TokenStakingManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _ERC20TokenStakingManager.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 -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -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{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - 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 { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*ERC20TokenStakingManagerDelegatorAdded, error) { - event := new(ERC20TokenStakingManagerDelegatorAdded) - if err := _ERC20TokenStakingManager.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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, 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(ERC20TokenStakingManagerDelegatorRegistered) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, 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(ERC20TokenStakingManagerDelegatorRemovalInitialized) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - return nil, err - } - event.Raw = log - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) 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 -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. -// -// 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) - } - - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.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 (_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) - } - - logs, sub, err := _ERC20TokenStakingManager.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(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.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 (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { - event := new(ERC20TokenStakingManagerInitialValidatorCreated) - if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *ERC20TokenStakingManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TokenStakingManagerInitializedIterator) 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 -} - -// 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) { - - 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 +// 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) } -// 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2250,7 +828,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 *ERC20TokenStakingManagerDelegationEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2259,7 +837,7 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerUptimeUpdated) + it.Event = new(ERC20TokenStakingManagerDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2274,7 +852,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(ERC20TokenStakingManagerDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2290,52 +868,62 @@ func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *ERC20TokenStakingManagerDelegationEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *ERC20TokenStakingManagerDelegationEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerUptimeUpdated struct { +// ERC20TokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegationEnded struct { + DelegationID [32]byte ValidationID [32]byte - Uptime uint64 + Rewards *big.Int + Fees *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerUptimeUpdatedIterator, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2345,8 +933,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(ERC20TokenStakingManagerDelegationEnded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -2367,21 +955,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUp }), nil } -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// 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 { +// 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 { return nil, err } event.Raw = log 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2395,7 +983,7 @@ type ERC20TokenStakingManagerValidationPeriodCreatedIterator 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 *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2404,7 +992,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + it.Event = new(ERC20TokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2419,7 +1007,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodCreated) + it.Event = new(ERC20TokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2435,71 +1023,72 @@ func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Error() error { +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodCreatedIterator) Close() error { +func (it *ERC20TokenStakingManagerDelegatorAddedIterator) 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 +// 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 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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) { +// 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{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerDelegatorAddedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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) { +// 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{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -2509,8 +1098,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati 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 { + event := new(ERC20TokenStakingManagerDelegatorAdded) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -2531,21 +1120,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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 { +// 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 { 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2559,7 +1148,7 @@ type ERC20TokenStakingManagerValidationPeriodEndedIterator 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 *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2568,7 +1157,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2583,7 +1172,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodEnded) + it.Event = new(ERC20TokenStakingManagerDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2599,60 +1188,61 @@ func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Error() error { +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodEndedIterator) Close() error { +func (it *ERC20TokenStakingManagerDelegatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodEnded struct { +// ERC20TokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte ValidationID [32]byte - Status uint8 + StartTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*ERC20TokenStakingManagerValidationPeriodEndedIterator, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerDelegatorRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// 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) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2662,8 +1252,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati 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 { + event := new(ERC20TokenStakingManagerDelegatorRegistered) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return err } event.Raw = log @@ -2684,21 +1274,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// 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 { +// 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 { 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2712,7 +1302,7 @@ type ERC20TokenStakingManagerValidationPeriodRegisteredIterator 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 *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2721,7 +1311,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2736,7 +1326,7 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidationPeriodRegistered) + it.Event = new(ERC20TokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2752,53 +1342,60 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Next() boo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Error() error { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() error { +func (it *ERC20TokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. -type ERC20TokenStakingManagerValidationPeriodRegistered struct { +// ERC20TokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte 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. +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*ERC20TokenStakingManagerDelegatorRemovalInitializedIterator, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerDelegatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// 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) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2808,8 +1405,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati 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 { + event := new(ERC20TokenStakingManagerDelegatorRemovalInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -2830,21 +1427,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// 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 { +// 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 { 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 +// 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 @@ -2858,7 +1455,7 @@ type ERC20TokenStakingManagerValidatorRemovalInitializedIterator 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 *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { +func (it *ERC20TokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2867,7 +1464,7 @@ func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2882,7 +1479,7 @@ func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorRemovalInitialized) + it.Event = new(ERC20TokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2898,62 +1495,41 @@ func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Error() error { +func (it *ERC20TokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() error { +func (it *ERC20TokenStakingManagerInitializedIterator) 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 +// ERC20TokenStakingManagerInitialized represents a Initialized event raised by the ERC20TokenStakingManager contract. +type ERC20TokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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) - } +// Solidity: event Initialized(uint64 version) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC20TokenStakingManagerInitializedIterator, error) { - logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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) - } +// 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, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2963,8 +1539,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato 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 { + event := new(ERC20TokenStakingManagerInitialized) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2985,21 +1561,21 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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 { +// 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 } -// 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 +// 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 @@ -3013,7 +1589,7 @@ type ERC20TokenStakingManagerValidatorWeightUpdateIterator 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 *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3022,7 +1598,7 @@ func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3037,7 +1613,7 @@ func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20TokenStakingManagerValidatorWeightUpdate) + it.Event = new(ERC20TokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3053,62 +1629,52 @@ func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Error() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { +func (it *ERC20TokenStakingManagerUptimeUpdatedIterator) 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 +// 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 } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// 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 { 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) + logs, sub, err := _ERC20TokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &ERC20TokenStakingManagerValidatorWeightUpdateIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &ERC20TokenStakingManagerUptimeUpdatedIterator{contract: _ERC20TokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerUptimeUpdated, validationID [][32]byte) (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) + logs, sub, err := _ERC20TokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -3118,8 +1684,8 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato 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 { + event := new(ERC20TokenStakingManagerUptimeUpdated) + if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -3140,12 +1706,12 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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 { +// 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 { return nil, err } event.Raw = log @@ -3155,7 +1721,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidato // 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: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212208be80a4303a1e07ea62903f910297923f4ddaac89ceab64ca0f1e1f9914c4bc264736f6c63430008190033", } // 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..8ab728dfd 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 @@ -92,19 +74,10 @@ type ValidatorMessagesValidationPeriod struct { 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 -} - // 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\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b506040516136c63803806136c683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6135798061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610131575f3560e01c80638ef34c98116100b4578063b771b3bc11610079578063b771b3bc14610295578063ba3a4b97146102a3578063bddb5a14146102b6578063effb55b4146102c9578063f7795a8c146102dc578063fb8b11dd146102ef575f80fd5b80638ef34c981461023557806393e245981461024857806398d9fa7c1461025b578063a9778a7a146101e0578063afb980961461026e575f80fd5b8063329c3e12116100fa578063329c3e12146101ba57806335455ded146101e057806356ab447d146101fc578063620658561461020d578063732214f81461022e575f80fd5b80624050c8146101355780630d4363171461014a578063151d30d11461015d57806325e1c7761461017c5780632e2194d81461018f575b5f80fd5b610148610143366004612c8a565b610302565b005b610148610158366004612ce1565b610338565b610165600a81565b60405160ff90911681526020015b60405180910390f35b61014861018a366004612d09565b61041a565b6101a261019d366004612d37565b610503565b6040516001600160401b039091168152602001610173565b6101c86001600160991b0181565b6040516001600160a01b039091168152602001610173565b6101e961271081565b60405161ffff9091168152602001610173565b61014861020a366004612d37565b50565b61022061021b366004612d4e565b610557565b604051908152602001610173565b6102205f81565b610148610243366004612d7d565b610577565b610148610256366004612d37565b610657565b610148610269366004612da0565b610755565b6102207f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101c86005600160991b0181565b6101486102b1366004612d37565b6108c7565b6101486102c4366004612e0d565b610b91565b6101486102d7366004612e0d565b610be9565b6101486102ea366004612d37565b610c4a565b6101486102fd366004612d7d565b610c53565b5f61030c84610557565b90505f61031b83850185612ed6565b90506103308683835f01518460200151610d1a565b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610381575080546001600160401b03808416911610155b1561039f5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556103c983610e51565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61042382610e62565b610448576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610451610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610495573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104bc9190810190612fd8565b51905060028160058111156104d3576104d36130a5565b146104f3578060405163170cc93360e21b815260040161043f91906130b9565b6104fd8383610eaf565b50505050565b5f8061050d610e8b565b6004015461051b90846130e7565b905080158061053057506001600160401b0381115b156105515760405163222d164360e21b81526004810184905260240161043f565b92915050565b5f610560610e8b565b60040154610551906001600160401b038416613106565b5f610580610e8b565b90506001600160a01b0382166105b45760405163caa903f960e01b81526001600160a01b038316600482015260240161043f565b5f8381526007820160205260409020546001600160a01b031633146105fa57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161043f565b336001600160a01b03831603610629575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f610660610e8b565b90505f61066b610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156106af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106d69190810190612fd8565b51905060048160058111156106ed576106ed6130a5565b1461070d578060405163170cc93360e21b815260040161043f91906130b9565b5f8381526007830160205260409020546001600160a01b0316331461073257336105d5565b5f838152600783016020526040902054610652906001600160a01b03168461114e565b5f806107638385018561311d565b90925090505f610771610e8b565b5f848152600891909101602052604090205460ff166003811115610797576107976130a5565b03610854575f818060200190518101906107b1919061319b565b90505f876107bd610e8b565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610801573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108289190810190612fd8565b6080015161083691906131b6565b905061084c89888461084785610557565b611178565b5050506108bd565b5f805f808480602001905181019061086c91906131e3565b93509350935093505f6108828a8886868661141d565b9050841561089657505050505050506108c0565b806108b757604051631036cf9160e11b81526004810188905260240161043f565b50505050505b50505b5050505050565b5f6108d0610e8b565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610909576109096130a5565b600381111561091a5761091a6130a5565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115610993576109936130a5565b141580156109b457506003815160038111156109b1576109b16130a5565b14155b156109d5578051604051633b0d540d60e21b815261043f919060040161323f565b5f6109de610e8b565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610a139160040190815260200190565b5f60405180830381865afa158015610a2d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a549190810190612fd8565b905080606001516001600160401b03165f03610a86576040516339b894f960e21b81526004810185905260240161043f565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610af493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610b0e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b359190810190613253565b6040518263ffffffff1660e01b8152600401610b5191906132af565b6020604051808303815f875af1158015610b6d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c091906132c1565b5f610b9c8383611789565b90505f610bb7858360200151846040015185606001516117bf565b825190915015610bc8575050505050565b806108c057604051635bff683f60e11b81526004810186905260240161043f565b5f80610bf783850185612d09565b90925090506001610c06610e8b565b5f848152600891909101602052604090205460ff166003811115610c2c57610c2c6130a5565b03610c4057610c3b8282611a4b565b6108c0565b6108c08282611d7a565b61020a81612038565b6001600160a01b038116610c855760405163caa903f960e01b81526001600160a01b038216600482015260240161043f565b5f610c8e610e8b565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610cbc57336105d5565b336001600160a01b03831603610ceb575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610d23610e8b565b600381015490915061ffff600160401b90910481169084161080610d4c575061271061ffff8416115b15610d7057604051635f12e6c360e11b815261ffff8416600482015260240161043f565b60038101546001600160401b039081169083161015610dac576040516202a06d60e11b81526001600160401b038316600482015260240161043f565b8060010154841080610dc15750806002015484115b15610de25760405163222d164360e21b81526004810185905260240161043f565b5f948552600701602052604090932080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b03949094169390930292909217825550600101805467ffffffffffffffff19169055565b610e5961215a565b61020a816121a5565b5f80610e6c610e8b565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610efa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f2191908101906132d8565b9150915080610f4357604051636b2f19e960e01b815260040160405180910390fd5b5f610f4c610e8b565b6006810154845191925014610f7a578251604051636ba589a560e01b8152600481019190915260240161043f565b60208301516001600160a01b031615610fb6576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b60208301516001600160a01b031615610ff2576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b815260040161102f91906132af565b6040805180830381865af4158015611049573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106d919061337e565b915091508188146110945760405163089938b360e11b81526004810189905260240161043f565b5f8881526007840160205260409020600101546001600160401b039081169082161115611125575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611143565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f611157610e8b565b5f838152600b82016020526040812080549190559091506104fd8482612220565b5f80611182610e8b565b90505f61118e84610503565b90505f611199610e8b565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156111dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112049190810190612fd8565b905061120f88610e62565b61122f576040516330efa98b60e01b81526004810189905260240161043f565b600281516005811115611244576112446130a5565b1461126557805160405163170cc93360e21b815261043f91906004016130b9565b5f82826080015161127691906133a1565b905083600301600a9054906101000a90046001600160401b0316826040015161129f91906133c1565b6001600160401b0316816001600160401b031611156112dc57604051636d51fe0560e11b81526001600160401b038216600482015260240161043f565b5f898960405160200161130692919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b90611406908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f80611427610e8b565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611460576114606130a5565b6003811115611471576114716130a5565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6114e6610e8b565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115519190810190612fd8565b9050600283516003811115611568576115686130a5565b14611589578251604051633b0d540d60e21b815261043f919060040161323f565b60208301516001600160a01b03163314611625575f8281526007850160205260409020546001600160a01b031633146115c257336105d5565b5f82815260078501602052604090205460a08201516115f191600160b01b90046001600160401b0316906133a1565b6001600160401b03164210156116255760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b60028151600581111561163a5761163a6130a5565b03611728576003840154608084015161165c916001600160401b0316906133a1565b6001600160401b03164210156116905760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b87156116a2576116a08288610eaf565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b039091161790556116ea84888c61227e565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506117809350505050565b60048151600581111561173d5761173d6130a5565b036117645761174d83878b61227e565b50611757896124d4565b6001945050505050611780565b805160405163170cc93360e21b815261043f91906004016130b9565b95945050505050565b604080516080810182525f8082526020820181905291810182905260608101919091526117b8828401846133ec565b9392505050565b5f806117c9610e8b565b90505f6117d4610e8b565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611818573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261183f9190810190612fd8565b905061184a87610e62565b61185957600192505050611415565b5f8781526007830160205260409020546001600160a01b0316331461187e57336105d5565b5f87815260078301602052604090205460a08201516118ad91600160b01b90046001600160401b0316906133a1565b6001600160401b03168160c001516001600160401b031610156118f45760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161043f565b5f861561190c576119058887610eaf565b905061192a565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f9061194f90610557565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156119b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dc91906132c1565b90508084600b015f8b81526020019081526020015f205f828254611a00919061346e565b90915550506001600160a01b03861615611a3d575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611a54610e8b565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a8d57611a8d6130a5565b6003811115611a9e57611a9e6130a5565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b13610e8b565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b57573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b7e9190810190612fd8565b9050600183516003811115611b9557611b956130a5565b14611bb6578251604051633b0d540d60e21b815261043f919060040161323f565b600481516005811115611bcb57611bcb6130a5565b03611bd957610330866124d4565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611bfe89612718565b604001516040518263ffffffff1660e01b8152600401611c1e91906132af565b606060405180830381865af4158015611c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5d9190613481565b5091509150818414611c8a57846040015160405163089938b360e11b815260040161043f91815260200190565b806001600160401b031683606001516001600160401b03161080611cc35750806001600160401b03168560a001516001600160401b0316115b15611cec57604051632e19bc2d60e11b81526001600160401b038216600482015260240161043f565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611d8261282e565b5f611d8b610e8b565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611dc457611dc46130a5565b6003811115611dd557611dd56130a5565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e4e57611e4e6130a5565b14611e6f578051604051633b0d540d60e21b815261043f919060040161323f565b6004611e79610e8b565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611eae9160040190815260200190565b5f60405180830381865afa158015611ec8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611eef9190810190612fd8565b516005811115611f0157611f016130a5565b14612000575f611f1084612718565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f4f91906132af565b606060405180830381865af4158015611f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8e9190613481565b509150915081846040015114611fba5760405163089938b360e11b81526004810183905260240161043f565b806001600160401b03168460c001516001600160401b03161115611ffc57604051632e19bc2d60e11b81526001600160401b038216600482015260240161043f565b5050505b612009846124d4565b505061203460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b5f612041610e8b565b90505f61204c610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015612090573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120b79190810190612fd8565b90506120c283610e62565b6120cb57505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612102575080612120565b5f858152600c85016020526040902080546001600160a01b03191690555b600483516005811115612135576121356130a5565b0361214457612144818661114e565b6108c0826121558560400151610557565b61289e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166121a357604051631afcd79f60e31b815260040160405180910390fd5b565b6121ad61215a565b6121b56128b1565b61020a6121c560208301836134c1565b602083013560408401356121df6080860160608701612d4e565b6121ef60a08701608088016134dc565b6121ff60c0880160a089016134f5565b60c08801356122156101008a0160e08b016134c1565b8961010001356128c1565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b15801561226c575f80fd5b505af1158015610330573d5f803e3d5ffd5b5f80612288610e8b565b90505f612293610e8b565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916122c89160040190815260200190565b5f60405180830381865afa1580156122e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123099190810190612fd8565b90505f600382516005811115612321576123216130a5565b148061233f575060048251600581111561233d5761233d6130a5565b145b1561234f575060c081015161238c565b600282516005811115612364576123646130a5565b0361237057504261238c565b815160405163170cc93360e21b815261043f91906004016130b9565b86608001516001600160401b0316816001600160401b0316116123b4575f93505050506117b8565b600583015460608801515f916001600160a01b031690634f22429f906123d990610557565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561245a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247e91906132c1565b5f878152600986016020526040902081905590506001600160a01b03871615611143575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f6124dd610e8b565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115612516576125166130a5565b6003811115612527576125276130a5565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa1580156125d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fb9190613515565b826080015161260a91906133a1565b6001600160401b031642101561263e5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b03168061268e575060208201516126ac565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806126b9838886612aea565b915091506126d285602001516121558760600151610557565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561277c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127a391908101906132d8565b91509150806127c557604051636b2f19e960e01b815260040160405180910390fd5b8151156127eb578151604051636ba589a560e01b8152600481019190915260240161043f565b60208201516001600160a01b031615612827576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161287257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6120346001600160a01b03831682612b97565b6128b961215a565b6121a3612c2a565b6128c961215a565b5f6128d2610e8b565b905061ffff861615806128ea575061271061ffff8716115b1561290e57604051635f12e6c360e11b815261ffff8716600482015260240161043f565b878911156129325760405163222d164360e21b8152600481018a905260240161043f565b60ff851615806129455750600a60ff8616115b156129685760405163170db35960e31b815260ff8616600482015260240161043f565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c89190613515565b6001600160401b0316876001600160401b03161015612a04576040516202a06d60e11b81526001600160401b038816600482015260240161043f565b835f03612a245760405163a733007160e01b815260040160405180910390fd5b81612a4557604051632f6bd1db60e01b81526004810183905260240161043f565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f805f612af5610e8b565b5f86815260098201602052604081208054908290559192509081908015612b89575f87815260078501602052604090205461271090612b3f90600160a01b900461ffff1683613106565b612b4991906130e7565b91508184600b015f8981526020019081526020015f205f828254612b6d919061346e565b90915550612b7d90508282613530565b9250612b898984612220565b509097909650945050505050565b80471015612bba5760405163cd78605960e01b815230600482015260240161043f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612c03576040519150601f19603f3d011682016040523d82523d5f602084013e612c08565b606091505b505090508061065257604051630a12f52160e11b815260040160405180910390fd5b61287861215a565b6001600160401b038116811461020a575f80fd5b5f8083601f840112612c56575f80fd5b5081356001600160401b03811115612c6c575f80fd5b602083019150836020828501011115612c83575f80fd5b9250929050565b5f805f8060608587031215612c9d575f80fd5b843593506020850135612caf81612c32565b925060408501356001600160401b03811115612cc9575f80fd5b612cd587828801612c46565b95989497509550505050565b5f6101208284031215612cf2575f80fd5b50919050565b63ffffffff8116811461020a575f80fd5b5f8060408385031215612d1a575f80fd5b823591506020830135612d2c81612cf8565b809150509250929050565b5f60208284031215612d47575f80fd5b5035919050565b5f60208284031215612d5e575f80fd5b81356117b881612c32565b6001600160a01b038116811461020a575f80fd5b5f8060408385031215612d8e575f80fd5b823591506020830135612d2c81612d69565b5f805f805f60808688031215612db4575f80fd5b853594506020860135612dc681612c32565b93506040860135612dd681612c32565b925060608601356001600160401b03811115612df0575f80fd5b612dfc88828901612c46565b969995985093965092949392505050565b5f805f60408486031215612e1f575f80fd5b8335925060208401356001600160401b03811115612e3b575f80fd5b612e4786828701612c46565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715612e8a57612e8a612e54565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612eb857612eb8612e54565b604052919050565b803561ffff81168114612ed1575f80fd5b919050565b5f60408284031215612ee6575f80fd5b604051604081018181106001600160401b0382111715612f0857612f08612e54565b604052612f1483612ec0565b81526020830135612f2481612c32565b60208201529392505050565b805160068110612ed1575f80fd5b5f6001600160401b03821115612f5657612f56612e54565b50601f01601f191660200190565b5f5b83811015612f7e578181015183820152602001612f66565b50505f910152565b5f82601f830112612f95575f80fd5b8151612fa8612fa382612f3e565b612e90565b818152846020838601011115612fbc575f80fd5b611415826020830160208701612f64565b8051612ed181612c32565b5f60208284031215612fe8575f80fd5b81516001600160401b0380821115612ffe575f80fd5b9083019060e08286031215613011575f80fd5b613019612e68565b61302283612f30565b8152602083015182811115613035575f80fd5b61304187828601612f86565b60208301525061305360408401612fcd565b604082015261306460608401612fcd565b606082015261307560808401612fcd565b608082015261308660a08401612fcd565b60a082015261309760c08401612fcd565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106130cd576130cd6130a5565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f8261310157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610551576105516130d3565b5f806040838503121561312e575f80fd5b8235915060208301356001600160401b0381111561314a575f80fd5b8301601f8101851361315a575f80fd5b8035613168612fa382612f3e565b81815286602083850101111561317c575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156131ab575f80fd5b81516117b881612d69565b6001600160401b03828116828216039080821115612827576128276130d3565b801515811461020a575f80fd5b5f805f80608085870312156131f6575f80fd5b8451613201816131d6565b6020860151909450613212816131d6565b604086015190935061322381612cf8565b606086015190925061323481612d69565b939692955090935050565b60208101600483106130cd576130cd6130a5565b5f60208284031215613263575f80fd5b81516001600160401b03811115613278575f80fd5b61141584828501612f86565b5f815180845261329b816020860160208601612f64565b601f01601f19169290920160200192915050565b602081525f6117b86020830184613284565b5f602082840312156132d1575f80fd5b5051919050565b5f80604083850312156132e9575f80fd5b82516001600160401b03808211156132ff575f80fd5b9084019060608287031215613312575f80fd5b60405160608101818110838211171561332d5761332d612e54565b60405282518152602083015161334281612d69565b6020820152604083015182811115613358575f80fd5b61336488828601612f86565b6040830152508094505050506020830151612d2c816131d6565b5f806040838503121561338f575f80fd5b825191506020830151612d2c81612c32565b6001600160401b03818116838216019080821115612827576128276130d3565b6001600160401b038181168382160280821691908281146133e4576133e46130d3565b505092915050565b5f608082840312156133fc575f80fd5b604051608081018181106001600160401b038211171561341e5761341e612e54565b604052823561342c816131d6565b8152602083013561343c816131d6565b6020820152604083013561344f81612cf8565b6040820152606083013561346281612d69565b60608201529392505050565b80820180821115610551576105516130d3565b5f805f60608486031215613493575f80fd5b8351925060208401516134a581612c32565b60408501519092506134b681612c32565b809150509250925092565b5f602082840312156134d1575f80fd5b81356117b881612d69565b5f602082840312156134ec575f80fd5b6117b882612ec0565b5f60208284031215613505575f80fd5b813560ff811681146117b8575f80fd5b5f60208284031215613525575f80fd5b81516117b881612c32565b81810381811115610551576105516130d356fea2646970667358221220950d1ff047a8bb5ef96dbff5d05283e1e4e5a54c8040e48278e1f45ac026a17764736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -277,37 +250,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 +281,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 +312,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 +436,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 +467,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) @@ -867,1345 +592,198 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Cl return _NativeTokenStakingManager.Contract.ClaimDelegationFees(&_NativeTokenStakingManager.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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// 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) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleCompleteEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleCompleteEndValidation", validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// 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) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleCompleteValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleCompleteValidatorRegistration", validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleCompleteValidatorWeightChange(opts *bind.TransactOpts, arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleCompleteValidatorWeightChange", arg0, args) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleCompleteValidatorWeightChange(arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteValidatorWeightChange(&_NativeTokenStakingManager.TransactOpts, arg0, args) } -// ForceInitializeEndDelegation is a paid mutator transaction binding the contract method 0x1ec44724. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 , bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleCompleteValidatorWeightChange(arg0 [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleCompleteValidatorWeightChange(&_NativeTokenStakingManager.TransactOpts, arg0, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleInitializeEndValidation", validationID, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, args) } -// ForceInitializeEndDelegation0 is a paid mutator transaction binding the contract method 0x37b9be8f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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) +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, weight, args) } -// ForceInitializeEndValidation is a paid mutator transaction binding the contract method 0x3a1cfff6. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, weight, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleInitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleInitializeValidatorWeightChange", validationID, weight, nonce, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorWeightChange(&_NativeTokenStakingManager.TransactOpts, validationID, weight, nonce, args) } -// ForceInitializeEndValidation0 is a paid mutator transaction binding the contract method 0x7d8d2f77. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorWeightChange(&_NativeTokenStakingManager.TransactOpts, validationID, weight, nonce, args) } -// 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) } -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// 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) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// ResendUpdateDelegation is a paid mutator transaction binding the contract method 0xba3a4b97. // -// 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) +// Solidity: function resendUpdateDelegation(bytes32 delegationID) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) ResendUpdateDelegation(delegationID [32]byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.ResendUpdateDelegation(&_NativeTokenStakingManager.TransactOpts, delegationID) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // -// Solidity: function resendEndValidatorMessage(bytes32 validationID) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) ResendEndValidatorMessage(validationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.ResendEndValidatorMessage(&_NativeTokenStakingManager.TransactOpts, validationID) +// 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) } -// ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. +// SubmitUptimeProof is a paid mutator transaction binding the contract method 0x25e1c776. // -// 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() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) ResendUpdateDelegation(opts *bind.TransactOpts, delegationID [32]byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.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) -} - -// 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) -} - -// 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) -} - -// 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) +// 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) } // 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) -} - -// 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegationEnded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegationEnded struct { - DelegationID [32]byte - ValidationID [32]byte - Rewards *big.Int - Fees *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, 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(NativeTokenStakingManagerDelegationEnded) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// 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 -} - -// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorAdded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, delegatorAddress []common.Address) (*NativeTokenStakingManagerDelegatorAddedIterator, error) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _NativeTokenStakingManager.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 -} - -// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -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{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - var delegatorAddressRule []interface{} - for _, delegatorAddressItem := range delegatorAddress { - delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - 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 { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDelegatorAdded is a log parse operation binding the contract event 0xb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426. -// -// Solidity: event DelegatorAdded(bytes32 indexed delegationID, bytes32 indexed validationID, address indexed delegatorAddress, uint64 nonce, uint64 validatorWeight, uint64 delegatorWeight, bytes32 setWeightMessageID) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegatorAdded(log types.Log) (*NativeTokenStakingManagerDelegatorAdded, error) { - event := new(NativeTokenStakingManagerDelegatorAdded) - if err := _NativeTokenStakingManager.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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRegistered struct { - DelegationID [32]byte - ValidationID [32]byte - StartTime *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, 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(NativeTokenStakingManagerDelegatorRegistered) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerDelegatorRemovalInitialized struct { - DelegationID [32]byte - ValidationID [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// 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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.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) { - - var delegationIDRule []interface{} - for _, delegationIDItem := range delegationID { - delegationIDRule = append(delegationIDRule, delegationIDItem) - } - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, 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(NativeTokenStakingManagerDelegatorRemovalInitialized) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// 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 { - return nil, err - } - event.Raw = log - 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerInitialValidatorCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialValidatorCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) 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 -} - -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. -// -// 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) - } - - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) - if err != nil { - return nil, err - } - return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.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 (_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) - } - - logs, sub, err := _NativeTokenStakingManager.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(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.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 (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { - event := new(NativeTokenStakingManagerInitialValidatorCreated) - if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *NativeTokenStakingManagerInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *NativeTokenStakingManagerInitializedIterator) 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 -} - -// 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) { - - 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 +// 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) } -// 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2219,7 +797,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 *NativeTokenStakingManagerDelegationEndedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2228,7 +806,7 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerUptimeUpdated) + it.Event = new(NativeTokenStakingManagerDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2243,7 +821,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(NativeTokenStakingManagerDelegationEnded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2259,52 +837,62 @@ func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { +func (it *NativeTokenStakingManagerDelegationEndedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Close() error { +func (it *NativeTokenStakingManagerDelegationEndedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerUptimeUpdated represents a UptimeUpdated event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerUptimeUpdated struct { +// NativeTokenStakingManagerDelegationEnded represents a DelegationEnded event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegationEnded struct { + DelegationID [32]byte ValidationID [32]byte - Uptime uint64 + Rewards *big.Int + Fees *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerUptimeUpdatedIterator, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } -// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (event.Subscription, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegationEnded", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2314,8 +902,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(NativeTokenStakingManagerDelegationEnded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { return err } event.Raw = log @@ -2336,21 +924,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptime }), nil } -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// ParseDelegationEnded is a log parse operation binding the contract event 0x8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993. // -// 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 { +// 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 { return nil, err } event.Raw = log 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2364,7 +952,7 @@ type NativeTokenStakingManagerValidationPeriodCreatedIterator 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 *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2373,7 +961,7 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + it.Event = new(NativeTokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2388,7 +976,7 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodCreated) + it.Event = new(NativeTokenStakingManagerDelegatorAdded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2404,71 +992,72 @@ func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Error() error { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodCreatedIterator) Close() error { +func (it *NativeTokenStakingManagerDelegatorAddedIterator) 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 +// 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 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// FilterDelegatorAdded is a free log retrieval operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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) { +// 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{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegatorAddedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorAdded", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// WatchDelegatorAdded is a free log subscription operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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) { +// 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{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + var delegatorAddressRule []interface{} + for _, delegatorAddressItem := range delegatorAddress { + delegatorAddressRule = append(delegatorAddressRule, delegatorAddressItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodCreated", validationIDRule, nodeIDRule, registerValidationMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorAdded", delegationIDRule, validationIDRule, delegatorAddressRule) if err != nil { return nil, err } @@ -2478,8 +1067,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida 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 { + event := new(NativeTokenStakingManagerDelegatorAdded) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorAdded", log); err != nil { return err } event.Raw = log @@ -2500,21 +1089,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. +// ParseDelegatorAdded is a log parse operation binding the contract event 0xeea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b. // -// 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 { +// 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 { 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2528,7 +1117,7 @@ type NativeTokenStakingManagerValidationPeriodEndedIterator 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 *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2537,7 +1126,7 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2552,7 +1141,7 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodEnded) + it.Event = new(NativeTokenStakingManagerDelegatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2568,60 +1157,61 @@ func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Error() error { +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodEndedIterator) Close() error { +func (it *NativeTokenStakingManagerDelegatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerValidationPeriodEnded represents a ValidationPeriodEnded event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodEnded struct { +// NativeTokenStakingManagerDelegatorRegistered represents a DelegatorRegistered event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRegistered struct { + DelegationID [32]byte ValidationID [32]byte - Status uint8 + StartTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodEnded is a free log retrieval operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// FilterDelegatorRegistered is a free log retrieval operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// Solidity: event ValidationPeriodEnded(bytes32 indexed validationID, uint8 indexed status) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodEnded(opts *bind.FilterOpts, validationID [][32]byte, status []uint8) (*NativeTokenStakingManagerValidationPeriodEndedIterator, error) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodEndedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodEnded", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegatorRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodEnded is a free log subscription operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// WatchDelegatorRegistered is a free log subscription operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// 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) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } 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) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRegistered", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2631,8 +1221,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida 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 { + event := new(NativeTokenStakingManagerDelegatorRegistered) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRegistered", log); err != nil { return err } event.Raw = log @@ -2653,21 +1243,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodEnded is a log parse operation binding the contract event 0x1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16. +// ParseDelegatorRegistered is a log parse operation binding the contract event 0x047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6. // -// 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 { +// 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 { 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2681,7 +1271,7 @@ type NativeTokenStakingManagerValidationPeriodRegisteredIterator 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 *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bool { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2690,7 +1280,7 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2705,7 +1295,7 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidationPeriodRegistered) + it.Event = new(NativeTokenStakingManagerDelegatorRemovalInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2721,53 +1311,60 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Next() bo } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Error() error { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() error { +func (it *NativeTokenStakingManagerDelegatorRemovalInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. -type NativeTokenStakingManagerValidationPeriodRegistered struct { +// NativeTokenStakingManagerDelegatorRemovalInitialized represents a DelegatorRemovalInitialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerDelegatorRemovalInitialized struct { + DelegationID [32]byte 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. +// FilterDelegatorRemovalInitialized is a free log retrieval operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) -func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { +// Solidity: event DelegatorRemovalInitialized(bytes32 indexed delegationID, bytes32 indexed validationID) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegatorRemovalInitialized(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte) (*NativeTokenStakingManagerDelegatorRemovalInitializedIterator, error) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerDelegatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// WatchDelegatorRemovalInitialized is a free log subscription operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// 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) { +// 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) { + var delegationIDRule []interface{} + for _, delegationIDItem := range delegationID { + delegationIDRule = append(delegationIDRule, delegationIDItem) + } var validationIDRule []interface{} for _, validationIDItem := range validationID { validationIDRule = append(validationIDRule, validationIDItem) } - logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "ValidationPeriodRegistered", validationIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "DelegatorRemovalInitialized", delegationIDRule, validationIDRule) if err != nil { return nil, err } @@ -2777,8 +1374,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida 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 { + event := new(NativeTokenStakingManagerDelegatorRemovalInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegatorRemovalInitialized", log); err != nil { return err } event.Raw = log @@ -2799,21 +1396,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. +// ParseDelegatorRemovalInitialized is a log parse operation binding the contract event 0x366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed57. // -// 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 { +// 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 { 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 +// 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 @@ -2827,7 +1424,7 @@ type NativeTokenStakingManagerValidatorRemovalInitializedIterator 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 *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() bool { +func (it *NativeTokenStakingManagerInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2836,7 +1433,7 @@ func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() b if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2851,7 +1448,7 @@ func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() b // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorRemovalInitialized) + it.Event = new(NativeTokenStakingManagerInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2867,62 +1464,41 @@ func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Next() b } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Error() error { +func (it *NativeTokenStakingManagerInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() error { +func (it *NativeTokenStakingManagerInitializedIterator) 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 +// NativeTokenStakingManagerInitialized represents a Initialized event raised by the NativeTokenStakingManager contract. +type NativeTokenStakingManagerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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) - } +// Solidity: event Initialized(uint64 version) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*NativeTokenStakingManagerInitializedIterator, error) { - logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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) - } +// 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, "ValidatorRemovalInitialized", validationIDRule, setWeightMessageIDRule) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2932,8 +1508,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida 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 { + event := new(NativeTokenStakingManagerInitialized) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2954,21 +1530,21 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// 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 { +// 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 } -// 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 +// 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 @@ -2982,7 +1558,7 @@ type NativeTokenStakingManagerValidatorWeightUpdateIterator 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 *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2991,7 +1567,7 @@ func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3006,7 +1582,7 @@ func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(NativeTokenStakingManagerValidatorWeightUpdate) + it.Event = new(NativeTokenStakingManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3022,62 +1598,52 @@ func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Error() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error { +func (it *NativeTokenStakingManagerUptimeUpdatedIterator) 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 +// 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 } -// FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// 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 { 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) + logs, sub, err := _NativeTokenStakingManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &NativeTokenStakingManagerValidatorWeightUpdateIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorWeightUpdate", logs: logs, sub: sub}, nil + return &NativeTokenStakingManagerUptimeUpdatedIterator{contract: _NativeTokenStakingManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } -// WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerUptimeUpdated, validationID [][32]byte) (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) + logs, sub, err := _NativeTokenStakingManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -3087,8 +1653,8 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida 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 { + event := new(NativeTokenStakingManagerUptimeUpdated) + if err := _NativeTokenStakingManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -3109,12 +1675,12 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. +// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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 { +// 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 { return nil, err } event.Raw = log @@ -3124,7 +1690,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValida // 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: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212208be80a4303a1e07ea62903f910297923f4ddaac89ceab64ca0f1e1f9914c4bc264736f6c63430008190033", } // 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..568c4bfb5 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 @@ -79,19 +61,10 @@ type ValidatorMessagesValidationPeriod struct { 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 -} - // 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\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"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: "0x608060405234801561000f575f80fd5b5060405161072238038061072283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6105d58061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061009a575f3560e01c8063bddb5a1411610063578063bddb5a1414610120578063c4d66de814610133578063effb55b414610120578063f2fde38b14610146578063f7795a8c146100b4575f80fd5b80624050c81461009e57806356ab447d146100b4578063715018a6146100c55780638da5cb5b146100cd57806398d9fa7c1461010b575b5f80fd5b6100b26100ac366004610453565b50505050565b005b6100b26100c23660046104a9565b50565b6100b2610159565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054604080516001600160a01b039092168252519081900360200190f35b6100b26101193660046104c0565b5050505050565b6100b261012e36600461052a565b505050565b6100b2610141366004610572565b61016c565b6100b2610154366004610572565b61027a565b6101616102b9565b61016a5f610314565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156101b15750825b90505f8267ffffffffffffffff1660011480156101cd5750303b155b9050811580156101db575080155b156101f95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561022357845460ff60401b1916600160401b1785555b61022c86610384565b831561027257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6102826102b9565b6001600160a01b0381166102b057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100c281610314565b336102eb7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461016a5760405163118cdaa760e01b81523360048201526024016102a7565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61038c610395565b6100c2816103de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661016a57604051631afcd79f60e31b815260040160405180910390fd5b6103e6610395565b6100c281610282610395565b803567ffffffffffffffff81168114610409575f80fd5b919050565b5f8083601f84011261041e575f80fd5b50813567ffffffffffffffff811115610435575f80fd5b60208301915083602082850101111561044c575f80fd5b9250929050565b5f805f8060608587031215610466575f80fd5b84359350610476602086016103f2565b9250604085013567ffffffffffffffff811115610491575f80fd5b61049d8782880161040e565b95989497509550505050565b5f602082840312156104b9575f80fd5b5035919050565b5f805f805f608086880312156104d4575f80fd5b853594506104e4602087016103f2565b93506104f2604087016103f2565b9250606086013567ffffffffffffffff81111561050d575f80fd5b6105198882890161040e565b969995985093965092949392505050565b5f805f6040848603121561053c575f80fd5b83359250602084013567ffffffffffffffff811115610559575f80fd5b6105658682870161040e565b9497909650939450505050565b5f60208284031215610582575f80fd5b81356001600160a01b0381168114610598575f80fd5b939250505056fea26469706673582212205e037ebe51d2c4c027cab6f7d561f74a41c1ccb79f3bcaa4c324743be8f9255f64736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -112,9 +85,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,285 +234,6 @@ 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. -// -// Solidity: function VALIDATOR_MANAGER_STORAGE_LOCATION() view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCaller) VALIDATORMANAGERSTORAGELOCATION(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _PoAValidatorManager.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 (_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. -// -// 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) -} - -// 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 *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) -} - // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) @@ -574,161 +265,151 @@ func (_PoAValidatorManager *PoAValidatorManagerCallerSession) Owner() (common.Ad return _PoAValidatorManager.Contract.Owner(&_PoAValidatorManager.CallOpts) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// 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 - +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleCompleteEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleCompleteEndValidation", validationID) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteEndValidation(&_PoAValidatorManager.TransactOpts, validationID) } -// RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. // -// Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) -func (_PoAValidatorManager *PoAValidatorManagerCallerSession) RegisteredValidators(nodeID []byte) ([32]byte, error) { - return _PoAValidatorManager.Contract.RegisteredValidators(&_PoAValidatorManager.CallOpts, nodeID) +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteEndValidation(&_PoAValidatorManager.TransactOpts, validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// 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) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleCompleteValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleCompleteValidatorRegistration", validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID) } -// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. // -// Solidity: function completeEndValidation(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteEndValidation(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteEndValidation(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// 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) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleCompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleCompleteValidatorWeightChange", validationID, args) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleCompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteValidatorWeightChange(&_PoAValidatorManager.TransactOpts, validationID, args) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleCompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleCompleteValidatorWeightChange(&_PoAValidatorManager.TransactOpts, validationID, args) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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 handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleInitializeEndValidation", validationID, args) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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 handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID, args) } -// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. // -// 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 handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID, args) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// 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) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, weight, args) } -// InitializeEndValidation is a paid mutator transaction binding the contract method 0x97fb70d4. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. // -// Solidity: function initializeEndValidation(bytes32 validationID) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.InitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, weight, args) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleInitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleInitializeValidatorWeightChange", validationID, weight, nonce, args) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorWeightChange(&_PoAValidatorManager.TransactOpts, validationID, weight, nonce, args) } -// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x9ba96b86. +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. // -// 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) +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorWeightChange(&_PoAValidatorManager.TransactOpts, validationID, weight, nonce, args) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. // -// 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) +// Solidity: function initialize(address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "initialize", initialOwner) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. // -// 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) +// Solidity: function initialize(address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. // -// 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) +// Solidity: function initialize(address initialOwner) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(initialOwner common.Address) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, initialOwner) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -752,48 +433,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 +454,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 +470,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 +479,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 +494,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 +510,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 +554,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 +576,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 +604,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 +613,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 +628,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,147 +644,13 @@ 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 { - 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 -} - -// 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 { +func (it *PoAValidatorManagerOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } @@ -1256,783 +741,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: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212208be80a4303a1e07ea62903f910297923f4ddaac89ceab64ca0f1e1f9914c4bc264736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go b/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go new file mode 100644 index 000000000..dc7bed39a --- /dev/null +++ b/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go @@ -0,0 +1,307 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iacp99securitymodule + +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 +) + +// IACP99SecurityModuleMetaData contains all meta data concerning the IACP99SecurityModule contract. +var IACP99SecurityModuleMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IACP99SecurityModuleABI is the input ABI used to generate the binding from. +// Deprecated: Use IACP99SecurityModuleMetaData.ABI instead. +var IACP99SecurityModuleABI = IACP99SecurityModuleMetaData.ABI + +// IACP99SecurityModule is an auto generated Go binding around an Ethereum contract. +type IACP99SecurityModule struct { + IACP99SecurityModuleCaller // Read-only binding to the contract + IACP99SecurityModuleTransactor // Write-only binding to the contract + IACP99SecurityModuleFilterer // Log filterer for contract events +} + +// IACP99SecurityModuleCaller is an auto generated read-only Go binding around an Ethereum contract. +type IACP99SecurityModuleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99SecurityModuleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IACP99SecurityModuleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99SecurityModuleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IACP99SecurityModuleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IACP99SecurityModuleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IACP99SecurityModuleSession struct { + Contract *IACP99SecurityModule // 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 +} + +// IACP99SecurityModuleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IACP99SecurityModuleCallerSession struct { + Contract *IACP99SecurityModuleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IACP99SecurityModuleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IACP99SecurityModuleTransactorSession struct { + Contract *IACP99SecurityModuleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IACP99SecurityModuleRaw is an auto generated low-level Go binding around an Ethereum contract. +type IACP99SecurityModuleRaw struct { + Contract *IACP99SecurityModule // Generic contract binding to access the raw methods on +} + +// IACP99SecurityModuleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IACP99SecurityModuleCallerRaw struct { + Contract *IACP99SecurityModuleCaller // Generic read-only contract binding to access the raw methods on +} + +// IACP99SecurityModuleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IACP99SecurityModuleTransactorRaw struct { + Contract *IACP99SecurityModuleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIACP99SecurityModule creates a new instance of IACP99SecurityModule, bound to a specific deployed contract. +func NewIACP99SecurityModule(address common.Address, backend bind.ContractBackend) (*IACP99SecurityModule, error) { + contract, err := bindIACP99SecurityModule(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IACP99SecurityModule{IACP99SecurityModuleCaller: IACP99SecurityModuleCaller{contract: contract}, IACP99SecurityModuleTransactor: IACP99SecurityModuleTransactor{contract: contract}, IACP99SecurityModuleFilterer: IACP99SecurityModuleFilterer{contract: contract}}, nil +} + +// NewIACP99SecurityModuleCaller creates a new read-only instance of IACP99SecurityModule, bound to a specific deployed contract. +func NewIACP99SecurityModuleCaller(address common.Address, caller bind.ContractCaller) (*IACP99SecurityModuleCaller, error) { + contract, err := bindIACP99SecurityModule(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IACP99SecurityModuleCaller{contract: contract}, nil +} + +// NewIACP99SecurityModuleTransactor creates a new write-only instance of IACP99SecurityModule, bound to a specific deployed contract. +func NewIACP99SecurityModuleTransactor(address common.Address, transactor bind.ContractTransactor) (*IACP99SecurityModuleTransactor, error) { + contract, err := bindIACP99SecurityModule(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IACP99SecurityModuleTransactor{contract: contract}, nil +} + +// NewIACP99SecurityModuleFilterer creates a new log filterer instance of IACP99SecurityModule, bound to a specific deployed contract. +func NewIACP99SecurityModuleFilterer(address common.Address, filterer bind.ContractFilterer) (*IACP99SecurityModuleFilterer, error) { + contract, err := bindIACP99SecurityModule(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IACP99SecurityModuleFilterer{contract: contract}, nil +} + +// bindIACP99SecurityModule binds a generic wrapper to an already deployed contract. +func bindIACP99SecurityModule(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IACP99SecurityModuleMetaData.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 (_IACP99SecurityModule *IACP99SecurityModuleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IACP99SecurityModule.Contract.IACP99SecurityModuleCaller.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 (_IACP99SecurityModule *IACP99SecurityModuleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.IACP99SecurityModuleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IACP99SecurityModule *IACP99SecurityModuleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.IACP99SecurityModuleTransactor.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 (_IACP99SecurityModule *IACP99SecurityModuleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IACP99SecurityModule.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 (_IACP99SecurityModule *IACP99SecurityModuleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.contract.Transact(opts, method, params...) +} + +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. +// +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleCompleteEndValidation(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleCompleteEndValidation", validationID) +} + +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. +// +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteEndValidation(&_IACP99SecurityModule.TransactOpts, validationID) +} + +// HandleCompleteEndValidation is a paid mutator transaction binding the contract method 0xf7795a8c. +// +// Solidity: function handleCompleteEndValidation(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleCompleteEndValidation(validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteEndValidation(&_IACP99SecurityModule.TransactOpts, validationID) +} + +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. +// +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleCompleteValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleCompleteValidatorRegistration", validationID) +} + +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. +// +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID) +} + +// HandleCompleteValidatorRegistration is a paid mutator transaction binding the contract method 0x56ab447d. +// +// Solidity: function handleCompleteValidatorRegistration(bytes32 validationID) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleCompleteValidatorRegistration(validationID [32]byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID) +} + +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. +// +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleCompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleCompleteValidatorWeightChange", validationID, args) +} + +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. +// +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleCompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteValidatorWeightChange(&_IACP99SecurityModule.TransactOpts, validationID, args) +} + +// HandleCompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0xeffb55b4. +// +// Solidity: function handleCompleteValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleCompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleCompleteValidatorWeightChange(&_IACP99SecurityModule.TransactOpts, validationID, args) +} + +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. +// +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleInitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleInitializeEndValidation", validationID, args) +} + +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. +// +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeEndValidation(&_IACP99SecurityModule.TransactOpts, validationID, args) +} + +// HandleInitializeEndValidation is a paid mutator transaction binding the contract method 0xbddb5a14. +// +// Solidity: function handleInitializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeEndValidation(&_IACP99SecurityModule.TransactOpts, validationID, args) +} + +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) +} + +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, weight, args) +} + +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, weight, args) +} + +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. +// +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleInitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleInitializeValidatorWeightChange", validationID, weight, nonce, args) +} + +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. +// +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorWeightChange(&_IACP99SecurityModule.TransactOpts, validationID, weight, nonce, args) +} + +// HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. +// +// Solidity: function handleInitializeValidatorWeightChange(bytes32 validationID, uint64 weight, uint64 nonce, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitializeValidatorWeightChange(validationID [32]byte, weight uint64, nonce uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorWeightChange(&_IACP99SecurityModule.TransactOpts, validationID, weight, nonce, args) +} 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..529002586 --- /dev/null +++ b/abi-bindings/go/validator-manager/interfaces/IACP99ValidatorManager/IACP99ValidatorManager.go @@ -0,0 +1,358 @@ +// 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 +} + +// 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\":[],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"completeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"initializeValidatorWeightChange\",\"outputs\":[],\"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...) +} + +// CompleteEndValidation is a paid mutator transaction binding the contract method 0x467ef06f. +// +// Solidity: function completeEndValidation(uint32 messageIndex) returns() +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() +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() +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() +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() +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() +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 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) CompleteValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "completeValidatorWeightChange", validationID, args) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) CompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, args) +} + +// CompleteValidatorWeightChange is a paid mutator transaction binding the contract method 0x670301ae. +// +// Solidity: function completeValidatorWeightChange(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) CompleteValidatorWeightChange(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.CompleteValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, args) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeEndValidation(opts *bind.TransactOpts, validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeEndValidation", validationID, args) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeEndValidation(&_IACP99ValidatorManager.TransactOpts, validationID, args) +} + +// InitializeEndValidation is a paid mutator transaction binding the contract method 0xd492edfc. +// +// Solidity: function initializeEndValidation(bytes32 validationID, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeEndValidation(validationID [32]byte, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeEndValidation(&_IACP99ValidatorManager.TransactOpts, validationID, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeValidatorRegistration(opts *bind.TransactOpts, input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeValidatorRegistration", input, weight, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, input, weight, args) +} + +// InitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x7db1dd48. +// +// Solidity: function initializeValidatorRegistration((bytes,bytes,uint64,(uint32,address[]),(uint32,address[])) input, uint64 weight, bytes args) returns(bytes32) +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeValidatorRegistration(input ValidatorRegistrationInput, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorRegistration(&_IACP99ValidatorManager.TransactOpts, input, weight, args) +} + +// 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 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactor) InitializeValidatorWeightChange(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.contract.Transact(opts, "initializeValidatorWeightChange", validationID, weight, args) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, weight, args) +} + +// InitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x3d89e86f. +// +// Solidity: function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes args) returns() +func (_IACP99ValidatorManager *IACP99ValidatorManagerTransactorSession) InitializeValidatorWeightChange(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99ValidatorManager.Contract.InitializeValidatorWeightChange(&_IACP99ValidatorManager.TransactOpts, validationID, weight, args) +} diff --git a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go index 5acc40a14..ac572195a 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\"}],\"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. @@ -258,321 +243,6 @@ func (_IPoSValidatorManager *IPoSValidatorManagerTransactorSession) ClaimDelegat return _IPoSValidatorManager.Contract.ClaimDelegationFees(&_IPoSValidatorManager.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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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() -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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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) -} - -// 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 +509,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 +543,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 +593,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,9 +912,9 @@ 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 +// 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 contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1259,7 +928,7 @@ type IPoSValidatorManagerInitialValidatorCreatedIterator 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 *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1268,7 +937,7 @@ func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + it.Event = new(IPoSValidatorManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1283,7 +952,7 @@ func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IPoSValidatorManagerInitialValidatorCreated) + it.Event = new(IPoSValidatorManagerUptimeUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1299,61 +968,52 @@ func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Error() error { +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { +func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// IPoSValidatorManagerInitialValidatorCreated represents a InitialValidatorCreated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerInitialValidatorCreated struct { +// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. +type IPoSValidatorManagerUptimeUpdated struct { ValidationID [32]byte - NodeID common.Hash - Weight uint64 + Uptime uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// FilterUptimeUpdated is a free log retrieval operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, 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) + logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } - return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil + return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.contract, event: "UptimeUpdated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. +// WatchUptimeUpdated is a free log subscription operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. // -// 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) { +// Solidity: event UptimeUpdated(bytes32 indexed validationID, uint64 uptime) +func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchUptimeUpdated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerUptimeUpdated, validationID [][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) - } - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "InitialValidatorCreated", validationIDRule, nodeIDRule) + logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", validationIDRule) if err != nil { return nil, err } @@ -1363,8 +1023,8 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidator 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 { + event := new(IPoSValidatorManagerUptimeUpdated) + if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { return err } event.Raw = log @@ -1385,152 +1045,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidator }), 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 - - contract *bind.BoundContract // Generic contract to use for unpacking 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 *IPoSValidatorManagerUptimeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IPoSValidatorManagerUptimeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IPoSValidatorManagerUptimeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IPoSValidatorManagerUptimeUpdated represents a UptimeUpdated event raised by the IPoSValidatorManager contract. -type IPoSValidatorManagerUptimeUpdated 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 (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterUptimeUpdated(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerUptimeUpdatedIterator, error) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.FilterLogs(opts, "UptimeUpdated", validationIDRule) - if err != nil { - return nil, err - } - return &IPoSValidatorManagerUptimeUpdatedIterator{contract: _IPoSValidatorManager.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) { - - var validationIDRule []interface{} - for _, validationIDItem := range validationID { - validationIDRule = append(validationIDRule, validationIDItem) - } - - logs, sub, err := _IPoSValidatorManager.contract.WatchLogs(opts, "UptimeUpdated", 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(IPoSValidatorManagerUptimeUpdated) - if err := _IPoSValidatorManager.contract.UnpackLog(event, "UptimeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUptimeUpdated is a log parse operation binding the contract event 0xec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435. +// 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) { @@ -1541,776 +1056,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..8ff65631e 100644 --- a/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go @@ -29,24 +29,20 @@ 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 +// 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 } // 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\":[],\"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\":\"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,67 +191,66 @@ 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. +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. // -// 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) -} +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IValidatorManager *IValidatorManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IValidatorManager.contract.Call(opts, &out, "getChurnPeriodSeconds") -// 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) -} + if err != nil { + return *new(uint64), err + } -// 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) -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err -// 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. +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IValidatorManager *IValidatorManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _IValidatorManager.Contract.GetChurnPeriodSeconds(&_IValidatorManager.CallOpts) } -// CompleteValidatorRegistration is a paid mutator transaction binding the contract method 0xa3a65e48. +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. // -// Solidity: function completeValidatorRegistration(uint32 messageIndex) returns() -func (_IValidatorManager *IValidatorManagerTransactorSession) CompleteValidatorRegistration(messageIndex uint32) (*types.Transaction, error) { - return _IValidatorManager.Contract.CompleteValidatorRegistration(&_IValidatorManager.TransactOpts, messageIndex) +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_IValidatorManager *IValidatorManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _IValidatorManager.Contract.GetChurnPeriodSeconds(&_IValidatorManager.CallOpts) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// 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) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IValidatorManager *IValidatorManagerCaller) GetValidator(opts *bind.CallOpts, validationID [32]byte) (Validator, error) { + var out []interface{} + err := _IValidatorManager.contract.Call(opts, &out, "getValidator", validationID) + + if err != nil { + return *new(Validator), err + } + + out0 := *abi.ConvertType(out[0], new(Validator)).(*Validator) + + return out0, err + } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// 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) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IValidatorManager *IValidatorManagerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _IValidatorManager.Contract.GetValidator(&_IValidatorManager.CallOpts, validationID) } -// InitializeValidatorSet is a paid mutator transaction binding the contract method 0x20d91b7a. +// GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // -// 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) +// Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) +func (_IValidatorManager *IValidatorManagerCallerSession) GetValidator(validationID [32]byte) (Validator, error) { + return _IValidatorManager.Contract.GetValidator(&_IValidatorManager.CallOpts, validationID) } // ResendEndValidatorMessage is a paid mutator transaction binding the contract method 0x0322ed98. diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index 6fb73760b..7fc02d1b4 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -6,15 +6,57 @@ import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; import {ValidatorManager} from "./ValidatorManager.sol"; import {IACP99ValidatorManager, ConversionData, ValidatorRegistrationInput} from "./interfaces/IACP99ValidatorManager.sol"; +import {ICMInitializable} from "@utilities/ICMInitializable.sol"; +import {ValidatorManagerSettings} from "./interfaces/IValidatorManager.sol"; pragma solidity 0.8.25; contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { - IACP99SecurityModule public securityModule; + struct ACP99ValidatorManagerStorage { + IACP99SecurityModule securityModule; + } + // keccak256(abi.encode(uint256(keccak256("avalanche-icm.storage.ACP99ValidatorManager")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 public constant ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION = + 0x6d7896c90f86967e463241c430aa4c1ef638639857cb8d4f18c905fa5443d600; + + function _getACP99ValidatorManagerStorage() + private + pure + returns (ACP99ValidatorManagerStorage storage $) + { + // solhint-disable-next-line no-inline-assembly + assembly { + $.slot := ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION + } + } + + constructor(ICMInitializable init) { + if (init == ICMInitializable.Disallowed) { + _disableInitializers(); + } + } + + function initialize(ValidatorManagerSettings calldata settings, IACP99SecurityModule securityModule) external initializer { + __ACP99ValidatorManager_init(settings, securityModule); + } // TODO: calling this should be restricted to...who? - function setSecurityModule(IACP99SecurityModule _securityModule) external { - securityModule = _securityModule; + function setSecurityModule(IACP99SecurityModule securityModule) external { + _getACP99ValidatorManagerStorage().securityModule = securityModule; + } + + function getSecurityModule() external view returns (IACP99SecurityModule) { + return _getACP99ValidatorManagerStorage().securityModule; + } + + function __ACP99ValidatorManager_init(ValidatorManagerSettings calldata settings, IACP99SecurityModule securityModule) internal onlyInitializing { + __ValidatorManager_init(settings); + __ACP99ValidatorManager_init_unchained(securityModule); + } + + function __ACP99ValidatorManager_init_unchained(IACP99SecurityModule securityModule) internal onlyInitializing { + ACP99ValidatorManagerStorage storage $ = _getACP99ValidatorManagerStorage(); + $.securityModule = securityModule; } function initializeValidatorSet( @@ -30,31 +72,44 @@ contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { bytes calldata args ) external returns (bytes32){ bytes32 validationID = _initializeValidatorRegistration(input, weight); - securityModule.handleInitializeValidatorRegistration(validationID, weight, args); + ACP99ValidatorManagerStorage storage $ = _getACP99ValidatorManagerStorage(); + // address securityModule = address($.securityModule); + + // // Delegate call so that the sender can approval ERC20 transfers by the validator manager + // (bool success, bytes memory data) = securityModule.delegatecall(abi.encodeWithSelector($.securityModule.handleInitializeValidatorRegistration.selector, validationID, weight, args)); + // require(success, string(data)); + + $.securityModule.handleInitializeValidatorRegistration(validationID, weight, args); return validationID; } function completeValidatorRegistration(uint32 messageIndex) external{ bytes32 validationID = _completeValidatorRegistration(messageIndex); - securityModule.handleCompleteValidatorRegistration(validationID); + _getACP99ValidatorManagerStorage().securityModule.handleCompleteValidatorRegistration(validationID); } function initializeEndValidation(bytes32 validationID, bytes calldata args) external{ _initializeEndValidation(validationID); - securityModule.handleInitializeEndValidation(validationID, args); + _getACP99ValidatorManagerStorage().securityModule.handleInitializeEndValidation(validationID, args); } function completeEndValidation(uint32 messageIndex) external{ bytes32 validationID = _completeEndValidation(messageIndex); - securityModule.handleCompleteEndValidation(validationID); + ACP99ValidatorManagerStorage storage $ = _getACP99ValidatorManagerStorage(); + // address securityModule = address($.securityModule); + + // (bool success, bytes memory data) = securityModule.delegatecall(abi.encodeWithSelector($.securityModule.handleCompleteEndValidation.selector, validationID)); + // require(success, string(data)); + + $.securityModule.handleCompleteEndValidation(validationID); } function initializeValidatorWeightChange(bytes32 validationID, uint64 weight, bytes calldata args) external{ (uint64 nonce, ) = _setValidatorWeight(validationID, weight); - securityModule.handleInitializeValidatorWeightChange(validationID, weight, nonce, args); + _getACP99ValidatorManagerStorage().securityModule.handleInitializeValidatorWeightChange(validationID, weight, nonce, args); } function completeValidatorWeightChange(bytes32 validationID, bytes calldata args) external{ - securityModule.handleCompleteValidatorWeightChange(validationID, args); + _getACP99ValidatorManagerStorage().securityModule.handleCompleteValidatorWeightChange(validationID, args); } } \ No newline at end of file diff --git a/contracts/validator-manager/Arguments.sol b/contracts/validator-manager/Arguments.sol new file mode 100644 index 000000000..2a56e2bfd --- /dev/null +++ b/contracts/validator-manager/Arguments.sol @@ -0,0 +1,28 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +pragma solidity 0.8.25; + +struct InitializeValidatorRegistrationArgs { + uint16 delegationFeeBips; + uint64 minStakeDuration; +} + +struct InitializeEndValidationArgs { + bool force; + bool includeUptimeProof; + uint32 messageIndex; + address rewardRecipient; +} + +library Arguments { + function decodeInitializeValidatorRegistrationArgs(bytes calldata args) internal pure returns (InitializeValidatorRegistrationArgs memory) { + return abi.decode(args, (InitializeValidatorRegistrationArgs)); + } + + function decodeInitializeEndValidationArgs(bytes calldata args) internal pure returns (InitializeEndValidationArgs memory) { + return abi.decode(args, (InitializeEndValidationArgs)); + } +} \ No newline at end of file diff --git a/contracts/validator-manager/ArgumentsExternal.sol b/contracts/validator-manager/ArgumentsExternal.sol new file mode 100644 index 000000000..ffebbe97c --- /dev/null +++ b/contracts/validator-manager/ArgumentsExternal.sol @@ -0,0 +1,18 @@ +// (c) 2024, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. + +// SPDX-License-Identifier: Ecosystem + +pragma solidity 0.8.25; + +import {InitializeEndValidationArgs, InitializeValidatorRegistrationArgs} from "./Arguments.sol"; + +contract ArgumentsExternal { + function decodeInitializeEndValidationArgs(bytes calldata args) external pure returns (InitializeEndValidationArgs memory) { + return abi.decode(args, (InitializeEndValidationArgs)); + } + + function decodeInitializeValidatorRegistrationArgs(bytes calldata args) external pure returns (InitializeValidatorRegistrationArgs memory) { + return abi.decode(args, (InitializeValidatorRegistrationArgs)); + } +} \ No newline at end of file diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index 73df3d9c1..de3b8c227 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -5,9 +5,6 @@ pragma solidity 0.8.25; -import { - ValidatorManagerSettings -} from "./interfaces/IValidatorManager.sol"; import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; @@ -27,15 +24,13 @@ contract PoAValidatorManager is IACP99SecurityModule, OwnableUpgradeable { } function initialize( - ValidatorManagerSettings calldata settings, address initialOwner ) external initializer { - __PoAValidatorManager_init(settings, initialOwner); + __PoAValidatorManager_init(initialOwner); } // solhint-disable func-name-mixedcase, ordering function __PoAValidatorManager_init( - ValidatorManagerSettings calldata, address initialOwner ) internal onlyInitializing { __Ownable_init(initialOwner); diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 3feab915b..f2d70ebc6 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -27,6 +27,7 @@ import {IACP99SecurityModule} from "./interfaces/IACP99SecurityModule.sol"; import {IValidatorManager} from "./interfaces/IValidatorManager.sol"; import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/utils/ContextUpgradeable.sol"; +import {InitializeValidatorRegistrationArgs, InitializeEndValidationArgs, Arguments} from "./Arguments.sol"; /** * @dev Implementation of the {IPoSValidatorManager} interface. @@ -135,6 +136,7 @@ abstract contract PoSValidatorManager is { __ReentrancyGuard_init(); __POS_Validator_Manager_init_unchained({ + validatorManager: settings.validatorManager, minimumStakeAmount: settings.minimumStakeAmount, maximumStakeAmount: settings.maximumStakeAmount, minimumStakeDuration: settings.minimumStakeDuration, @@ -148,6 +150,7 @@ abstract contract PoSValidatorManager is // solhint-disable-next-line func-name-mixedcase function __POS_Validator_Manager_init_unchained( + IValidatorManager validatorManager, uint256 minimumStakeAmount, uint256 maximumStakeAmount, uint64 minimumStakeDuration, @@ -170,7 +173,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 < $.validatorManager.getChurnPeriodSeconds()) { + if (minimumStakeDuration < validatorManager.getChurnPeriodSeconds()) { revert InvalidMinStakeDuration(minimumStakeDuration); } if (weightToValueFactor == 0) { @@ -180,6 +183,7 @@ abstract contract PoSValidatorManager is revert InvalidUptimeBlockchainID(uptimeBlockchainID); } + $.validatorManager = validatorManager; $._minimumStakeAmount = minimumStakeAmount; $._maximumStakeAmount = maximumStakeAmount; $._minimumStakeDuration = minimumStakeDuration; @@ -192,8 +196,8 @@ abstract contract PoSValidatorManager is function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { uint256 stakeAmount = weightToValue(weight); - (uint16 delegationFeeBips, uint64 minStakeDuration) = abi.decode(args, (uint16, uint64)); - _initializeValidatorRegistration(validationID, stakeAmount, delegationFeeBips, minStakeDuration); + InitializeValidatorRegistrationArgs memory decoded = abi.decode(args, (InitializeValidatorRegistrationArgs)); + _initializeValidatorRegistration(validationID, stakeAmount, decoded.delegationFeeBips, decoded.minStakeDuration); } function handleCompleteValidatorRegistration(bytes32 validationID) external { @@ -201,12 +205,12 @@ abstract contract PoSValidatorManager is } function handleInitializeEndValidation(bytes32 validationID, bytes calldata args) external { - (bool force, bool includeUptimeProof, uint32 messageIndex, address rewardRecipient) = abi.decode(args, (bool, bool, uint32, address)); + InitializeEndValidationArgs memory decoded = Arguments.decodeInitializeEndValidationArgs(args); bool success = _initializeEndPoSValidation( - validationID, includeUptimeProof, messageIndex, rewardRecipient + validationID, decoded.includeUptimeProof, decoded.messageIndex, decoded.rewardRecipient ); - if (force) { + if (decoded.force) { return; } diff --git a/contracts/validator-manager/interfaces/IPoSValidatorManager.sol b/contracts/validator-manager/interfaces/IPoSValidatorManager.sol index c6f61bb41..a4fb28e66 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 {IValidatorManager} from "./IValidatorManager.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; + IValidatorManager validatorManager; uint256 minimumStakeAmount; uint256 maximumStakeAmount; uint64 minimumStakeDuration; diff --git a/scripts/abi_bindings.sh b/scripts/abi_bindings.sh index 762af320d..5d835321f 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 ACP99ValidatorManager IACP99SecurityModule ArgumentsExternal" 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..c7f77ec81 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" + acp99validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ACP99ValidatorManager" + erc20stakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" localnetwork "github.com/ava-labs/teleporter/tests/network" "github.com/ava-labs/teleporter/tests/utils" . "github.com/onsi/gomega" @@ -57,11 +55,17 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { false, ) stakingManagerAddress := network.GetValidatorManager(subnetAInfo.SubnetID) - erc20StakingManager, err := erc20tokenstakingmanager.NewERC20TokenStakingManager( + acp99ValidatorManager, err := acp99validatormanager.NewACP99ValidatorManager( stakingManagerAddress, subnetAInfo.RPCClient, ) Expect(err).Should(BeNil()) + securityModule, err := acp99ValidatorManager.GetSecurityModule(&bind.CallOpts{}) + Expect(err).Should(BeNil()) + + erc20StakingManager, err := erc20stakingmanager.NewERC20TokenStakingManager(securityModule, subnetAInfo.RPCClient) + Expect(err).Should(BeNil()) + erc20Address, err := erc20StakingManager.Erc20(&bind.CallOpts{}) Expect(err).Should(BeNil()) erc20, err := exampleerc20.NewExampleERC20(erc20Address, subnetAInfo.RPCClient) @@ -70,15 +74,13 @@ 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, + acp99ValidatorManager, stakingManagerAddress, initialValidationIDs[0], 0, @@ -91,13 +93,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, + acp99ValidatorManager, stakingManagerAddress, erc20, expiry, @@ -110,165 +112,165 @@ func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { // // 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, + acp99ValidatorManager, stakingManagerAddress, validationID, expiry, 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..c621773c7 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -32,17 +32,19 @@ 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" + acp99validatormanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ACP99ValidatorManager" + arguments "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ArgumentsExternal" erc20tokenstakingmanager "github.com/ava-labs/teleporter/abi-bindings/go/validator-manager/ERC20TokenStakingManager" 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" + 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 +75,29 @@ func DeployValidatorManager( ctx context.Context, senderKey *ecdsa.PrivateKey, subnet interfaces.SubnetTestInfo, - managerType ValidatorManagerConcreteType, -) (common.Address, *ivalidatormanager.IValidatorManager) { + securityModuleAddress common.Address, +) (common.Address, *acp99validatormanager.ACP99ValidatorManager) { 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()) - } + acp99validatormanager.ACP99ValidatorManagerBin = acp99validatormanager.ACP99ValidatorManagerMetaData.Bin + address, tx, _, err := acp99validatormanager.DeployACP99ValidatorManager(opts, subnet.RPCClient, 0) + Expect(err).Should(BeNil()) - validatorManager, err = ivalidatormanager.NewIValidatorManager(address, subnet.RPCClient) + validatorManager, err := acp99validatormanager.NewACP99ValidatorManager(address, subnet.RPCClient) Expect(err).Should(BeNil()) + validatorManager.Initialize( + opts, + acp99validatormanager.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,40 +109,33 @@ 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 *acp99validatormanager.ACP99ValidatorManager ) - 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), ) Expect(err).Should(BeNil()) @@ -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, + acp99validatormanager.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,50 +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, + stakingManagerAddress common.Address, node Node, expiry uint64, - stakingManager *nativetokenstakingmanager.NativeTokenStakingManager, + stakingManager *acp99validatormanager.ACP99ValidatorManager, ) (*types.Receipt, ids.ID) { - opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) + securityModule, err := stakingManager.GetSecurityModule(&bind.CallOpts{}) 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, - ) + erc20Module, err := erc20tokenstakingmanager.NewERC20TokenStakingManager(securityModule, subnet.RPCClient) Expect(err).Should(BeNil()) - receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) - registrationInitiatedEvent, err := GetEventFromLogs( - receipt.Logs, - stakingManager.ParseValidationPeriodCreated, + + stakeAmount, err := erc20Module.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, @@ -424,16 +447,22 @@ func InitializeERC20ValidatorRegistration( opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) + args := arguments.InitializeValidatorRegistrationArgs{ + DelegationFeeBips: DefaultMinDelegateFeeBips, + MinStakeDuration: DefaultMinStakeDurationSeconds, + } + argsBytes, err := args.Pack() + Expect(err).Should(BeNil()) + tx, err := stakingManager.InitializeValidatorRegistration( opts, - erc20tokenstakingmanager.ValidatorRegistrationInput{ + acp99validatormanager.ValidatorRegistrationInput{ NodeID: node.NodeID[:], RegistrationExpiry: expiry, BlsPublicKey: node.NodePoP.PublicKey[:], }, - DefaultMinDelegateFeeBips, - DefaultMinStakeDurationSeconds, - stakeAmount, + weight, + argsBytes, ) Expect(err).Should(BeNil()) receipt := WaitForTransactionSuccess(ctx, subnet, tx.Hash()) @@ -445,35 +474,79 @@ func InitializeERC20ValidatorRegistration( 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 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, @@ -482,7 +555,7 @@ func CompleteValidatorRegistration( stakingManagerContractAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := ivalidatormanager.IValidatorManagerMetaData.GetAbi() + abi, err := iacp99validatormanager.IACP99ValidatorManagerMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeValidatorRegistration", uint32(0)) Expect(err).Should(BeNil()) @@ -523,40 +596,113 @@ 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 *acp99validatormanager.ACP99ValidatorManager, + 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 - receipt, validationID := InitializeNativeValidatorRegistration( + var receipt *types.Receipt + log.Println("Initializing validator v registration") + receipt, validationID := InitializeACP99ERC20ValidatorRegistration( ctx, fundedKey, subnetInfo, - stakeAmount, + node.Weight, + erc20, + stakingManagerAddress, 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( + _, err := pchainWallet.IssueRegisterL1ValidatorTx( 100*units.Avax, node.NodePoP.ProofOfPossession, signedWarpMessage.Bytes(), @@ -583,7 +729,7 @@ func InitializeAndCompleteNativeValidatorRegistration( ctx, fundedKey, subnetInfo, - stakingManagerContractAddress, + stakingManagerAddress, registrationSignedMessage, ) // Check that the validator is registered in the staking contract @@ -597,216 +743,287 @@ 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, + stakingManager *acp99validatormanager.ACP99ValidatorManager, + validationID ids.ID, + force bool, + includeUptime bool, + messageIndex uint32, + rewardRecipient common.Address, +) *types.Receipt { + opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) + Expect(err).Should(BeNil()) + args := arguments.InitializeEndValidationArgs{ + Force: force, + IncludeUptimeProof: includeUptime, + MessageIndex: messageIndex, + RewardRecipient: rewardRecipient, + } + argsPacked, err := args.Pack() 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 := stakingManager.InitializeEndValidation( + opts, + validationID, + argsPacked, ) 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, + stakingManagerAddress 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, ) + args := arguments.InitializeEndValidationArgs{ + Force: true, + IncludeUptimeProof: true, + MessageIndex: 0, + RewardRecipient: common.Address{}, + } + argsPacked, err := args.Pack() 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()) + abi, err := acp99validatormanager.ACP99ValidatorManagerMetaData.GetAbi() Expect(err).Should(BeNil()) - uptimeProofUnsignedMessage, err := avalancheWarp.NewUnsignedMessage( - networkID, - subnet.BlockchainID, - addressedCall.Bytes(), - ) + callData, err := abi.Pack("initializeEndValidation", validationID, argsPacked) Expect(err).Should(BeNil()) - - uptimeProofSignedMessage, err := signatureAggregator.CreateSignedMessage( - uptimeProofUnsignedMessage, - nil, - subnet.SubnetID, - 67, + return CallWarpReceiver( + ctx, + callData, + senderKey, + subnet, + stakingManagerAddress, + uptimeMsg.Bytes(), ) - Expect(err).Should(BeNil()) - return uptimeProofSignedMessage } func ForceInitializeEndPoSValidationWithUptime( @@ -873,22 +1090,22 @@ 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, @@ -897,7 +1114,7 @@ func CompleteEndValidation( stakingManagerContractAddress common.Address, registrationSignedMessage *avalancheWarp.Message, ) *types.Receipt { - abi, err := ivalidatormanager.IValidatorManagerMetaData.GetAbi() + abi, err := iacp99validatormanager.IACP99ValidatorManagerMetaData.GetAbi() Expect(err).Should(BeNil()) callData, err := abi.Pack("completeEndValidation", uint32(0)) Expect(err).Should(BeNil()) @@ -911,69 +1128,69 @@ func CompleteEndValidation( ) } -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 +1214,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,13 +1258,13 @@ func CompleteEndDelegation( ) } -func InitializeAndCompleteEndInitialPoSValidation( +func InitializeAndCompleteEndInitialACP99PoSValidation( ctx context.Context, signatureAggregator *aggregator.SignatureAggregator, fundedKey *ecdsa.PrivateKey, subnetInfo interfaces.SubnetTestInfo, pChainInfo interfaces.SubnetTestInfo, - stakingManager *iposvalidatormanager.IPoSValidatorManager, + stakingManager *acp99validatormanager.ACP99ValidatorManager, stakingManagerAddress common.Address, validationID ids.ID, index uint32, @@ -1057,16 +1274,22 @@ func InitializeAndCompleteEndInitialPoSValidation( ) { log.Println("Initializing initial validator removal") WaitMinStakeDuration(ctx, subnetInfo, fundedKey) - receipt := ForceInitializeEndPoSValidation( + receipt := InitializeEndACP99PoSValidation( ctx, fundedKey, subnetInfo, stakingManager, validationID, + true, + false, + 0, + common.Address{}, ) + ivdrmgr, err := ivalidatormanager.NewIValidatorManager(stakingManagerAddress, subnetInfo.RPCClient) + Expect(err).Should(BeNil()) validatorRemovalEvent, err := GetEventFromLogs( receipt.Logs, - stakingManager.ParseValidatorRemovalInitialized, + ivdrmgr.ParseValidatorRemovalInitialized, ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) @@ -1112,19 +1335,96 @@ func InitializeAndCompleteEndInitialPoSValidation( // Check that the validator is has been delisted from the staking contract validationEndedEvent, err := GetEventFromLogs( receipt.Logs, - stakingManager.ParseValidationPeriodEnded, + ivdrmgr.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, + stakingManager *acp99validatormanager.ACP99ValidatorManager, stakingManagerAddress common.Address, validationID ids.ID, expiry uint64, @@ -1141,7 +1441,7 @@ func InitializeAndCompleteEndPoSValidation( var receipt *types.Receipt if includeUptime { uptime := uint64(time.Since(validatorStartTime).Seconds()) - receipt = ForceInitializeEndPoSValidationWithUptime( + receipt = InitializeEndACP99PoSValidationWithUptime( ctx, networkID, signatureAggregator, @@ -1152,12 +1452,16 @@ func InitializeAndCompleteEndPoSValidation( uptime, ) } else { - receipt = ForceInitializeEndPoSValidation( + receipt = InitializeEndACP99PoSValidation( ctx, fundedKey, subnetInfo, stakingManager, validationID, + true, + false, + 0, + common.Address{}, ) } @@ -1215,150 +1519,247 @@ func InitializeAndCompleteEndPoSValidation( 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[:])) -} +// 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 da6f676ccbd25d487ea7cbc0bb17945c07d15436 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 5 Dec 2024 08:57:19 -0600 Subject: [PATCH 8/8] validator management passing --- .../ACP99ValidatorManager.go | 2 +- .../ERC20TokenStakingManager.go | 28 +++++++++---------- .../NativeTokenStakingManager.go | 28 +++++++++---------- .../PoAValidatorManager.go | 28 +++++++++---------- .../IACP99SecurityModule.go | 26 ++++++++--------- .../ACP99ValidatorManager.sol | 4 +-- .../ERC20TokenStakingManager.sol | 4 +-- .../NativeTokenStakingManager.sol | 2 +- .../validator-manager/PoAValidatorManager.sol | 2 +- .../validator-manager/PoSValidatorManager.sol | 11 ++++---- .../interfaces/IACP99SecurityModule.sol | 1 + tests/utils/validator_manager.go | 2 +- 12 files changed, 70 insertions(+), 68 deletions(-) diff --git a/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go b/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go index 7b8209672..fe4471a21 100644 --- a/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go +++ b/abi-bindings/go/validator-manager/ACP99ValidatorManager/ACP99ValidatorManager.go @@ -91,7 +91,7 @@ type ValidatorRegistrationInput struct { // ACP99ValidatorManagerMetaData contains all meta data concerning the ACP99ValidatorManager contract. var ACP99ValidatorManagerMetaData = &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\":\"ACP_99_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\":\"contractIACP99SecurityModule\",\"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\":\"contractIACP99SecurityModule\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"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\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"initializeValidatorWeightChange\",\"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\":\"contractIACP99SecurityModule\",\"name\":\"securityModule\",\"type\":\"address\"}],\"name\":\"setSecurityModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051613c65380380613c6583398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613b188061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c8063a3a65e48116100bf578063d492edfc11610079578063d492edfc14610334578063d588c18f14610347578063d5f20ff61461035a578063db4a0eca1461037a578063df93d8de1461038e578063fd7ac5e714610398575f80fd5b8063a3a65e48146102af578063b771b3bc146102c2578063bc5fbfec146102e8578063bee0a03f146102fc578063c974d1b61461030f578063cdeea3c914610317575f80fd5b806366435abf1161011057806366435abf1461020b578063670301ae1461021e578063732214f8146102315780637db1dd48146102465780638280a25a146102595780639a68b05014610273575f80fd5b80630322ed981461015757806309c1df661461016c57806320d91b7a146101b55780633d89e86f146101c8578063467ef06f146101db57806360305d62146101ee575b5f80fd5b61016a610165366004612aef565b6103ab565b005b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03165b6040516001600160401b0390911681526020015b60405180910390f35b61016a6101c3366004612b1e565b61063b565b61016a6101d6366004612bbf565b610649565b61016a6101e9366004612c14565b6106ce565b6101f6601481565b60405163ffffffff90911681526020016101ac565b610198610219366004612aef565b6107ad565b61016a61022c366004612c34565b6107c1565b6102385f81565b6040519081526020016101ac565b610238610254366004612c7b565b61082a565b610261603081565b60405160ff90911681526020016101ac565b61016a610281366004612cfc565b5f80516020613ac383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61016a6102bd366004612c14565b61092a565b6102d06005600160991b0181565b6040516001600160a01b0390911681526020016101ac565b6102385f80516020613a8383398151915281565b61016a61030a366004612aef565b61099f565b610261601481565b5f80516020613ac3833981519152546001600160a01b03166102d0565b61016a610342366004612c34565b610ae0565b61016a610355366004612d17565b610b2a565b61036d610368366004612aef565b610c37565b6040516101ac9190612dd4565b6102385f80516020613ac383398151915281565b6101986202a30081565b6102386103a6366004612e54565b610db2565b5f8181525f80516020613aa38339815191526020526040808220815160e0810190925280545f80516020613a8383398151915293929190829060ff1660058111156103f8576103f8612d53565b600581111561040957610409612d53565b815260200160018201805461041d90612e92565b80601f016020809104026020016040519081016040528092919081815260200182805461044990612e92565b80156104945780601f1061046b57610100808354040283529160200191610494565b820191905f5260205f20905b81548152906001019060200180831161047757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104ff576104ff612d53565b1461053b575f8381526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156105b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105d99190810190612fdb565b6040518263ffffffff1660e01b81526004016105f5919061300c565b6020604051808303815f875af1158015610611573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610635919061301e565b50505050565b6106458282610e0e565b5050565b5f61065485856113c9565b505f80516020613ac3833981519152546040516326367e9f60e21b81529192506001600160a01b0316906398d9fa7c9061069a908890889086908990899060040161305d565b5f604051808303815f87803b1580156106b1575f80fd5b505af11580156106c3573d5f803e3d5ffd5b505050505050505050565b5f6106d8826115a0565b5f80516020613ac3833981519152805460408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316633dde56a360e21b179052905193945091926001600160a01b03909116915f9182918491610742919061309a565b5f60405180830381855af49150503d805f811461077a576040519150601f19603f3d011682016040523d82523d5f602084013e61077f565b606091505b50915091508181906107a45760405162461bcd60e51b8152600401610532919061300c565b50505050505050565b5f6107b782610c37565b6080015192915050565b5f80516020613ac383398151915254604051633bfed56d60e21b81526001600160a01b039091169063effb55b490610801908690869086906004016130b5565b5f604051808303815f87803b158015610818575f80fd5b505af11580156107a4573d5f803e3d5ffd5b5f80610836868661194d565b90505f5f80516020613ac383398151915280546040519192506001600160a01b0316905f908190839062080a1960e31b9061087b9088908d908d908d906024016130d7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108b9919061309a565b5f60405180830381855af49150503d805f81146108f1576040519150601f19603f3d011682016040523d82523d5f602084013e6108f6565b606091505b509150915081819061091b5760405162461bcd60e51b8152600401610532919061300c565b50939998505050505050505050565b5f61093482611ebf565b90505f80516020613ac3833981519152546040516356ab447d60e01b8152600481018390526001600160a01b03909116906356ab447d906024015f604051808303815f87803b158015610985575f80fd5b505af1158015610997573d5f803e3d5ffd5b505050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020613a8383398151915291906109e690612e92565b90505f03610a0a5760405163089938b360e11b815260048101839052602401610532565b60015f838152600580840160205260409091205460ff1690811115610a3157610a31612d53565b14610a64575f8281526005820160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92610a9b9201613109565b6020604051808303815f875af1158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb919061301e565b505050565b610ae9836120b8565b505f80516020613ac383398151915254604051632f76d68560e21b81526001600160a01b039091169063bddb5a1490610801908690869086906004016130b5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b6e5750825b90505f826001600160401b03166001148015610b895750303b155b905081158015610b97575080155b15610bb55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bdf57845460ff60401b1916600160401b1785555b610be987876123ce565b83156107a457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6040805160e080820183525f808352606060208085018290528486018390529084018290526080840182905260a0840182905260c084018290528582525f80516020613aa383398151915290528390208351918201909352825491925f80516020613a8383398151915292829060ff166005811115610cb857610cb8612d53565b6005811115610cc957610cc9612d53565b8152602001600182018054610cdd90612e92565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0990612e92565b8015610d545780601f10610d2b57610100808354040283529160200191610d54565b820191905f5260205f20905b815481529060010190602001808311610d3757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f80516020613a83833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0690610df59086908690613193565b9081526020016040518091039020549150505b92915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020613a838339815191529060ff1615610e6057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec7919061301e565b836020013514610ef0576040516372b0a7e760e11b815260208401356004820152602401610532565b30610f016060850160408601612cfc565b6001600160a01b031614610f4457610f1f6060840160408501612cfc565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610532565b5f610f5260608501856131a2565b905090505f805b828163ffffffff1610156111ba575f610f7560608801886131a2565b8363ffffffff16818110610f8b57610f8b6131e7565b9050602002810190610f9d91906131fb565b610fa69061325c565b80516040519192505f916006880191610fbe9161309a565b90815260200160405180910390205414610fee57805160405163a41f772f60e01b8152610532919060040161300c565b5f6002885f01358460405160200161101d92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526110379161309a565b602060405180830381855afa158015611052573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611075919061301e565b90508086600601835f015160405161108d919061309a565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff1916600217815582516001909101906110cd9082613320565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff1916905561114d90856133ef565b825160405191955061115e9161309a565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a35050806111b39061340f565b9050610f59565b506003830180546fffffffffffffffff00000000000000001916600160401b6001600160401b0384168102919091179091556001840154606491611202910460ff1683613431565b6001600160401b0316101561123557604051633e1a785160e01b81526001600160401b0382166004820152602401610532565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884611259876123e8565b604001516040518263ffffffff1660e01b8152600401611279919061300c565b602060405180830381865af4158015611294573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b8919061301e565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b81526004016112f29190613557565b5f60405180830381865af415801561130c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113339190810190612fdb565b90505f600282604051611346919061309a565b602060405180830381855afa158015611361573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611384919061301e565b90508281146113b05760405163baaea89d60e01b81526004810182905260248101849052604401610532565b5050506007909201805460ff1916600117905550505050565b5f8281525f80516020613aa3833981519152602052604081206002015481905f80516020613a8383398151915290600160801b90046001600160401b031661141185826124fe565b5f61141b87612768565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156114c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114eb9190810190612fdb565b6040518263ffffffff1660e01b8152600401611507919061300c565b6020604051808303815f875af1158015611523573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611547919061301e565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f5f80516020613a83833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6115d4876123e8565b604001516040518263ffffffff1660e01b81526004016115f4919061300c565b6040805180830381865af415801561160e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163291906135f1565b91509150801561165957604051632d07135360e01b81528115156004820152602401610532565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff9091169081111561169057611690612d53565b60058111156116a1576116a1612d53565b81526020016001820180546116b590612e92565b80601f01602080910402602001604051908101604052809291908181526020018280546116e190612e92565b801561172c5780601f106117035761010080835404028352916020019161172c565b820191905f5260205f20905b81548152906001019060200180831161170f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561179757611797612d53565b141580156117b857506001815160058111156117b5576117b5612d53565b14155b156117d957805160405163170cc93360e21b81526105329190600401612eca565b6003815160058111156117ee576117ee612d53565b036117fc5760048152611801565b600581525b836006018160200151604051611817919061309a565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff191690600190849081111561185a5761185a612d53565b0217905550602082015160018201906118739082613320565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561191957611919612d53565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a35090949350505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff1661199157604051637fab81e560e01b815260040160405180910390fd5b5f80516020613a83833981519152426119b06060860160408701613612565b6001600160401b03161115806119ea57506119ce6202a3004261362b565b6119de6060860160408701613612565b6001600160401b031610155b15611a24576119ff6060850160408601613612565b604051635879da1360e11b81526001600160401b039091166004820152602401610532565b60038101546001600160401b0390611a4790600160401b9004821685831661362b565b1115611a7157604051633e1a785160e01b81526001600160401b0384166004820152602401610532565b611a86611a81606086018661363e565b6127dd565b611a96611a81608086018661363e565b6030611aa56020860186613652565b905014611ad757611ab96020850185613652565b6040516326475b2f60e11b8152610532925060040190815260200190565b611ae18480613652565b90505f03611b0e57611af38480613652565b604051633e08a12560e11b8152600401610532929190613694565b5f60068201611b1d8680613652565b604051611b2b929190613193565b90815260200160405180910390205414611b6457611b498480613652565b60405163a41f772f60e01b8152600401610532929190613694565b611b6e835f6124fe565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611bab8a80613652565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611bf3908b018b613652565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611c3c60608b0160408c01613612565b6001600160401b03168152602001611c5760608b018b61363e565b611c60906136a7565b8152602001611c7260808b018b61363e565b611c7b906136a7565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611ca991906137d4565b5f60405180830381865af4158015611cc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cea919081019061388b565b5f82815260048601602052604090209193509150611d088282613320565b508160068401611d188880613652565b604051611d26929190613193565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611d6290859060040161300c565b6020604051808303815f875af1158015611d7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da2919061301e565b5f8481526005860160205260409020805460ff191660011790559050611dc88780613652565b5f858152600587016020526040902060010191611de69190836138ce565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611e458880613652565b604051611e53929190613193565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b6040016020810190611e919190613612565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f5f80516020613a83833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611ef3876123e8565b604001516040518263ffffffff1660e01b8152600401611f13919061300c565b6040805180830381865af4158015611f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5191906135f1565b9150915080611f7757604051632d07135360e01b81528115156004820152602401610532565b5f82815260048401602052604090208054611f9190612e92565b90505f03611fb55760405163089938b360e11b815260048101839052602401610532565b60015f838152600580860160205260409091205460ff1690811115611fdc57611fdc612d53565b1461200f575f8281526005840160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b5f828152600484016020526040812061202791612aa5565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a2509392505050565b6040805160e0810182525f8082526060602083018190529282018190529181018290526080810182905260a0810182905260c08101919091525f8281525f80516020613aa38339815191526020526040808220815160e0810190925280545f80516020613a8383398151915293929190829060ff16600581111561213e5761213e612d53565b600581111561214f5761214f612d53565b815260200160018201805461216390612e92565b80601f016020809104026020016040519081016040528092919081815260200182805461218f90612e92565b80156121da5780601f106121b1576101008083540402835291602001916121da565b820191905f5260205f20905b8154815290600101906020018083116121bd57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561224857612248612d53565b1461227b575f8481526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612eca565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff19169060019084908111156122c0576122c0612d53565b0217905550602082015160018201906122d99082613320565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f61237785826113c9565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6123d6612946565b6123df82612991565b610645816129ad565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561244c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124739190810190613987565b915091508061249557604051636b2f19e960e01b815260040160405180910390fd5b8151156124bb578151604051636ba589a560e01b81526004810191909152602401610532565b60208201516001600160a01b0316156124f7576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610532565b5092915050565b5f80516020613a838339815191525f6001600160401b0380841690851611156125325761252b8385613a14565b905061253f565b61253c8484613a14565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b90049092166060820152429115806125ac5750600184015481516125a8916001600160401b03169061362b565b8210155b156125d4576001600160401b03808416606083015282825260408201511660208201526125f3565b82816060018181516125e691906133ef565b6001600160401b03169052505b6060810151612603906064613431565b602082015160018601546001600160401b03929092169161262e9190600160401b900460ff16613431565b6001600160401b0316101561266757606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610532565b858160400181815161267991906133ef565b6001600160401b0316905250604081018051869190612699908390613a14565b6001600160401b0316905250600184015460408201516064916126c791600160401b90910460ff1690613431565b6001600160401b03161015612700576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610532565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020613aa38339815191526020526040812060020180545f80516020613a8383398151915291906008906127b290600160401b90046001600160401b0316613a34565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6127ea6020820182612c14565b63ffffffff1615801561280a575061280560208201826131a2565b151590505b156128515761281c6020820182612c14565b61282960208301836131a2565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610532565b61285e60208201826131a2565b905061286d6020830183612c14565b63ffffffff1611156128865761281c6020820182612c14565b60015b61289660208301836131a2565b9050811015610645576128ac60208301836131a2565b6128b7600184613a4f565b8181106128c6576128c66131e7565b90506020020160208101906128db9190612cfc565b6001600160a01b03166128f160208401846131a2565b83818110612901576129016131e7565b90506020020160208101906129169190612cfc565b6001600160a01b0316101561293e57604051630dbc8d5f60e31b815260040160405180910390fd5b600101612889565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661298f57604051631afcd79f60e31b815260040160405180910390fd5b565b612999612946565b6129a16129b5565b6129aa816129bd565b50565b610281612946565b61298f612946565b6129c5612946565b80355f80516020613a8383398151915290815560146129ea6060840160408501613a62565b60ff161180612a095750612a046060830160408401613a62565b60ff16155b15612a3d57612a1e6060830160408401613a62565b604051634a59bbff60e11b815260ff9091166004820152602401610532565b612a4d6060830160408401613a62565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612a7e6040830160208401613612565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b508054612ab190612e92565b5f825580601f10612ac0575050565b601f0160209004905f5260205f20908101906129aa91905b80821115612aeb575f8155600101612ad8565b5090565b5f60208284031215612aff575f80fd5b5035919050565b803563ffffffff81168114612b19575f80fd5b919050565b5f8060408385031215612b2f575f80fd5b82356001600160401b03811115612b44575f80fd5b830160808186031215612b55575f80fd5b9150612b6360208401612b06565b90509250929050565b80356001600160401b0381168114612b19575f80fd5b5f8083601f840112612b92575f80fd5b5081356001600160401b03811115612ba8575f80fd5b602083019150836020828501011115611599575f80fd5b5f805f8060608587031215612bd2575f80fd5b84359350612be260208601612b6c565b925060408501356001600160401b03811115612bfc575f80fd5b612c0887828801612b82565b95989497509550505050565b5f60208284031215612c24575f80fd5b612c2d82612b06565b9392505050565b5f805f60408486031215612c46575f80fd5b8335925060208401356001600160401b03811115612c62575f80fd5b612c6e86828701612b82565b9497909650939450505050565b5f805f8060608587031215612c8e575f80fd5b84356001600160401b0380821115612ca4575f80fd5b9086019060a08289031215612cb7575f80fd5b819550612cc660208801612b6c565b94506040870135915080821115612cdb575f80fd5b50612c0887828801612b82565b6001600160a01b03811681146129aa575f80fd5b5f60208284031215612d0c575f80fd5b8135612c2d81612ce8565b5f808284036080811215612d29575f80fd5b6060811215612d36575f80fd5b508291506060830135612d4881612ce8565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612d8357634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612da1578181015183820152602001612d89565b50505f910152565b5f8151808452612dc0816020860160208601612d87565b601f01601f19169290920160200192915050565b60208152612de6602082018351612d67565b5f602083015160e06040840152612e01610100840182612da9565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215612e65575f80fd5b82356001600160401b03811115612e7a575f80fd5b612e8685828601612b82565b90969095509350505050565b600181811c90821680612ea657607f821691505b602082108103612ec457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e088284612d67565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612f0e57612f0e612ed8565b60405290565b604080519081016001600160401b0381118282101715612f0e57612f0e612ed8565b604051601f8201601f191681016001600160401b0381118282101715612f5e57612f5e612ed8565b604052919050565b5f6001600160401b03821115612f7e57612f7e612ed8565b50601f01601f191660200190565b5f82601f830112612f9b575f80fd5b8151612fae612fa982612f66565b612f36565b818152846020838601011115612fc2575f80fd5b612fd3826020830160208701612d87565b949350505050565b5f60208284031215612feb575f80fd5b81516001600160401b03811115613000575f80fd5b612fd384828501612f8c565b602081525f612c2d6020830184612da9565b5f6020828403121561302e575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8581525f6001600160401b0380871660208401528086166040840152506080606083015261308f608083018486613035565b979650505050505050565b5f82516130ab818460208701612d87565b9190910192915050565b838152604060208201525f6130ce604083018486613035565b95945050505050565b8481526001600160401b0384166020820152606060408201525f6130ff606083018486613035565b9695505050505050565b5f60208083525f845461311b81612e92565b806020870152604060018084165f811461313c576001811461315857613185565b60ff19851660408a0152604084151560051b8a01019550613185565b895f5260205f205f5b8581101561317c5781548b8201860152908301908801613161565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f808335601e198436030181126131b7575f80fd5b8301803591506001600160401b038211156131d0575f80fd5b6020019150600581901b3603821315611599575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130ab575f80fd5b5f82601f83011261321e575f80fd5b813561322c612fa982612f66565b818152846020838601011115613240575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561326c575f80fd5b613274612eec565b82356001600160401b038082111561328a575f80fd5b6132963683870161320f565b835260208501359150808211156132ab575f80fd5b506132b83682860161320f565b6020830152506132ca60408401612b6c565b604082015292915050565b601f821115610adb57805f5260205f20601f840160051c810160208510156132fa5750805b601f840160051c820191505b81811015613319575f8155600101613306565b5050505050565b81516001600160401b0381111561333957613339612ed8565b61334d816133478454612e92565b846132d5565b602080601f831160018114613380575f84156133695750858301515b5f19600386901b1c1916600185901b178555610997565b5f85815260208120601f198616915b828110156133ae5788860151825594840194600190910190840161338f565b50858210156133cb57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156124f7576124f76133db565b5f63ffffffff808316818103613427576134276133db565b6001019392505050565b6001600160401b03818116838216028082169190828114613454576134546133db565b505092915050565b5f808335601e19843603018112613471575f80fd5b83016020810192503590506001600160401b0381111561348f575f80fd5b803603821315611599575f80fd5b5f8383855260208086019550808560051b830101845f5b8781101561354a57848303601f19018952813536889003605e190181126134d9575f80fd5b870160606134e7828061345c565b8287526134f78388018284613035565b925050506135078683018361345c565b86830388880152613519838284613035565b9250505060406001600160401b03613532828501612b6c565b169501949094525097830197908301906001016134b4565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561357b81612ce8565b6001600160a01b031660608381019190915283013536849003601e190181126135a2575f80fd5b83016020810190356001600160401b038111156135bd575f80fd5b8060051b36038213156135ce575f80fd5b6080808501526130ce60a08501828461349d565b80518015158114612b19575f80fd5b5f8060408385031215613602575f80fd5b82519150612b63602084016135e2565b5f60208284031215613622575f80fd5b612c2d82612b6c565b80820180821115610e0857610e086133db565b5f8235603e198336030181126130ab575f80fd5b5f808335601e19843603018112613667575f80fd5b8301803591506001600160401b03821115613680575f80fd5b602001915036819003821315611599575f80fd5b602081525f612fd3602083018486613035565b5f604082360312156136b7575f80fd5b6136bf612f14565b6136c883612b06565b81526020808401356001600160401b03808211156136e4575f80fd5b9085019036601f8301126136f6575f80fd5b81358181111561370857613708612ed8565b8060051b9150613719848301612f36565b8181529183018401918481019036841115613732575f80fd5b938501935b8385101561375c578435925061374c83612ce8565b8282529385019390850190613737565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156137c95784516001600160a01b031682529383019360019290920191908301906137a0565b509695505050505050565b60208152815160208201525f602083015160e060408401526137fa610100840182612da9565b90506040840151601f19808584030160608601526138188383612da9565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152613848838361376e565b925060a08601519150808584030160c086015250613866828261376e565b91505060c084015161388360e08501826001600160401b03169052565b509392505050565b5f806040838503121561389c575f80fd5b8251915060208301516001600160401b038111156138b8575f80fd5b6138c485828601612f8c565b9150509250929050565b6001600160401b038311156138e5576138e5612ed8565b6138f9836138f38354612e92565b836132d5565b5f601f84116001811461392a575f85156139135750838201355b5f19600387901b1c1916600186901b178355613319565b5f83815260208120601f198716915b828110156139595786850135825560209485019460019092019101613939565b5086821015613975575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f8060408385031215613998575f80fd5b82516001600160401b03808211156139ae575f80fd5b90840190606082870312156139c1575f80fd5b6139c9612eec565b8251815260208301516139db81612ce8565b60208201526040830151828111156139f1575f80fd5b6139fd88828601612f8c565b6040830152509350612b63915050602084016135e2565b6001600160401b038281168282160390808211156124f7576124f76133db565b5f6001600160401b03808316818103613427576134276133db565b81810381811115610e0857610e086133db565b5f60208284031215613a72575f80fd5b813560ff81168114612c2d575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb056d7896c90f86967e463241c430aa4c1ef638639857cb8d4f18c905fa5443d600a2646970667358221220235693c08007255b3393c129119e6f85dd27b50747e8dfb56bfd6d88d4810dcd64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051613b6c380380613b6c83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b613a1f8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c8063a3a65e48116100bf578063d492edfc11610079578063d492edfc14610334578063d588c18f14610347578063d5f20ff61461035a578063db4a0eca1461037a578063df93d8de1461038e578063fd7ac5e714610398575f80fd5b8063a3a65e48146102af578063b771b3bc146102c2578063bc5fbfec146102e8578063bee0a03f146102fc578063c974d1b61461030f578063cdeea3c914610317575f80fd5b806366435abf1161011057806366435abf1461020b578063670301ae1461021e578063732214f8146102315780637db1dd48146102465780638280a25a146102595780639a68b05014610273575f80fd5b80630322ed981461015757806309c1df661461016c57806320d91b7a146101b55780633d89e86f146101c8578063467ef06f146101db57806360305d62146101ee575b5f80fd5b61016a6101653660046129ef565b6103ab565b005b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03165b6040516001600160401b0390911681526020015b60405180910390f35b61016a6101c3366004612a1e565b61063b565b61016a6101d6366004612abf565b610649565b61016a6101e9366004612b14565b6106ce565b6101f6601481565b60405163ffffffff90911681526020016101ac565b6101986102193660046129ef565b610748565b61016a61022c366004612b34565b61075c565b6102385f81565b6040519081526020016101ac565b610238610254366004612b7b565b61079c565b610261603081565b60405160ff90911681526020016101ac565b61016a610281366004612bfc565b5f805160206139ca83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61016a6102bd366004612b14565b61082a565b6102d06005600160991b0181565b6040516001600160a01b0390911681526020016101ac565b6102385f8051602061398a83398151915281565b61016a61030a3660046129ef565b61089f565b610261601481565b5f805160206139ca833981519152546001600160a01b03166102d0565b61016a610342366004612b34565b6109e0565b61016a610355366004612c17565b610a2a565b61036d6103683660046129ef565b610b37565b6040516101ac9190612cd4565b6102385f805160206139ca83398151915281565b6101986202a30081565b6102386103a6366004612d54565b610cb2565b5f8181525f805160206139aa8339815191526020526040808220815160e0810190925280545f8051602061398a83398151915293929190829060ff1660058111156103f8576103f8612c53565b600581111561040957610409612c53565b815260200160018201805461041d90612d92565b80601f016020809104026020016040519081016040528092919081815260200182805461044990612d92565b80156104945780601f1061046b57610100808354040283529160200191610494565b820191905f5260205f20905b81548152906001019060200180831161047757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104ff576104ff612c53565b1461053b575f8381526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612dca565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156105b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105d99190810190612edb565b6040518263ffffffff1660e01b81526004016105f59190612f0c565b6020604051808303815f875af1158015610611573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106359190612f1e565b50505050565b6106458282610d0e565b5050565b5f61065485856112c9565b505f805160206139ca833981519152546040516326367e9f60e21b81529192506001600160a01b0316906398d9fa7c9061069a9088908890869089908990600401612f5d565b5f604051808303815f87803b1580156106b1575f80fd5b505af11580156106c3573d5f803e3d5ffd5b505050505050505050565b5f6106d8826114a0565b90505f5f805160206139ca8339815191528054604051633dde56a360e21b8152600481018590529192506001600160a01b03169063f7795a8c906024015b5f604051808303815f87803b15801561072d575f80fd5b505af115801561073f573d5f803e3d5ffd5b50505050505050565b5f61075282610b37565b6080015192915050565b5f805160206139ca83398151915254604051633bfed56d60e21b81526001600160a01b039091169063effb55b49061071690869086908690600401612f9a565b5f806107a8868661184d565b5f805160206139ca833981519152805460405163361d87d360e21b815292935090916001600160a01b039091169063d8761f4c906107f290859033908b908b908b90600401612fbc565b5f604051808303815f87803b158015610809575f80fd5b505af115801561081b573d5f803e3d5ffd5b50939998505050505050505050565b5f61083482611dbf565b90505f805160206139ca833981519152546040516356ab447d60e01b8152600481018390526001600160a01b03909116906356ab447d906024015f604051808303815f87803b158015610885575f80fd5b505af1158015610897573d5f803e3d5ffd5b505050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f8051602061398a83398151915291906108e690612d92565b90505f0361090a5760405163089938b360e11b815260048101839052602401610532565b60015f838152600580840160205260409091205460ff169081111561093157610931612c53565b14610964575f8281526005820160205260409081902054905163170cc93360e21b81526105329160ff1690600401612dca565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb9261099b9201612ff5565b6020604051808303815f875af11580156109b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109db9190612f1e565b505050565b6109e983611fb8565b505f805160206139ca83398151915254604051632f76d68560e21b81526001600160a01b039091169063bddb5a149061071690869086908690600401612f9a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610a6e5750825b90505f826001600160401b03166001148015610a895750303b155b905081158015610a97575080155b15610ab55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610adf57845460ff60401b1916600160401b1785555b610ae987876122ce565b831561073f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6040805160e080820183525f808352606060208085018290528486018390529084018290526080840182905260a0840182905260c084018290528582525f805160206139aa83398151915290528390208351918201909352825491925f8051602061398a83398151915292829060ff166005811115610bb857610bb8612c53565b6005811115610bc957610bc9612c53565b8152602001600182018054610bdd90612d92565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0990612d92565b8015610c545780601f10610c2b57610100808354040283529160200191610c54565b820191905f5260205f20905b815481529060010190602001808311610c3757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6040515f905f8051602061398a833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0690610cf5908690869061307f565b9081526020016040518091039020549150505b92915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f8051602061398a8339815191529060ff1615610d6057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc79190612f1e565b836020013514610df0576040516372b0a7e760e11b815260208401356004820152602401610532565b30610e016060850160408601612bfc565b6001600160a01b031614610e4457610e1f6060840160408501612bfc565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610532565b5f610e52606085018561308e565b905090505f805b828163ffffffff1610156110ba575f610e75606088018861308e565b8363ffffffff16818110610e8b57610e8b6130d3565b9050602002810190610e9d91906130e7565b610ea690613152565b80516040519192505f916006880191610ebe916131cb565b90815260200160405180910390205414610eee57805160405163a41f772f60e01b81526105329190600401612f0c565b5f6002885f013584604051602001610f1d92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610f37916131cb565b602060405180830381855afa158015610f52573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610f759190612f1e565b90508086600601835f0151604051610f8d91906131cb565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610fcd9082613227565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff1916905561104d90856132f6565b825160405191955061105e916131cb565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a35050806110b390613316565b9050610e59565b506003830180546fffffffffffffffff00000000000000001916600160401b6001600160401b0384168102919091179091556001840154606491611102910460ff1683613338565b6001600160401b0316101561113557604051633e1a785160e01b81526001600160401b0382166004820152602401610532565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884611159876122e8565b604001516040518263ffffffff1660e01b81526004016111799190612f0c565b602060405180830381865af4158015611194573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b89190612f1e565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b81526004016111f2919061345e565b5f60405180830381865af415801561120c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112339190810190612edb565b90505f60028260405161124691906131cb565b602060405180830381855afa158015611261573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112849190612f1e565b90508281146112b05760405163baaea89d60e01b81526004810182905260248101849052604401610532565b5050506007909201805460ff1916600117905550505050565b5f8281525f805160206139aa833981519152602052604081206002015481905f8051602061398a83398151915290600160801b90046001600160401b031661131185826123fe565b5f61131b87612668565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156113c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113eb9190810190612edb565b6040518263ffffffff1660e01b81526004016114079190612f0c565b6020604051808303815f875af1158015611423573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114479190612f1e565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f5f8051602061398a833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6114d4876122e8565b604001516040518263ffffffff1660e01b81526004016114f49190612f0c565b6040805180830381865af415801561150e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153291906134f8565b91509150801561155957604051632d07135360e01b81528115156004820152602401610532565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff9091169081111561159057611590612c53565b60058111156115a1576115a1612c53565b81526020016001820180546115b590612d92565b80601f01602080910402602001604051908101604052809291908181526020018280546115e190612d92565b801561162c5780601f106116035761010080835404028352916020019161162c565b820191905f5260205f20905b81548152906001019060200180831161160f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561169757611697612c53565b141580156116b857506001815160058111156116b5576116b5612c53565b14155b156116d957805160405163170cc93360e21b81526105329190600401612dca565b6003815160058111156116ee576116ee612c53565b036116fc5760048152611701565b600581525b83600601816020015160405161171791906131cb565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff191690600190849081111561175a5761175a612c53565b0217905550602082015160018201906117739082613227565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561181957611819612c53565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a35090949350505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff1661189157604051637fab81e560e01b815260040160405180910390fd5b5f8051602061398a833981519152426118b06060860160408701613519565b6001600160401b03161115806118ea57506118ce6202a30042613532565b6118de6060860160408701613519565b6001600160401b031610155b15611924576118ff6060850160408601613519565b604051635879da1360e11b81526001600160401b039091166004820152602401610532565b60038101546001600160401b039061194790600160401b90048216858316613532565b111561197157604051633e1a785160e01b81526001600160401b0384166004820152602401610532565b6119866119816060860186613545565b6126dd565b6119966119816080860186613545565b60306119a56020860186613559565b9050146119d7576119b96020850185613559565b6040516326475b2f60e11b8152610532925060040190815260200190565b6119e18480613559565b90505f03611a0e576119f38480613559565b604051633e08a12560e11b815260040161053292919061359b565b5f60068201611a1d8680613559565b604051611a2b92919061307f565b90815260200160405180910390205414611a6457611a498480613559565b60405163a41f772f60e01b815260040161053292919061359b565b611a6e835f6123fe565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611aab8a80613559565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611af3908b018b613559565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611b3c60608b0160408c01613519565b6001600160401b03168152602001611b5760608b018b613545565b611b60906135ae565b8152602001611b7260808b018b613545565b611b7b906135ae565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611ba991906136db565b5f60405180830381865af4158015611bc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bea9190810190613792565b5f82815260048601602052604090209193509150611c088282613227565b508160068401611c188880613559565b604051611c2692919061307f565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611c62908590600401612f0c565b6020604051808303815f875af1158015611c7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca29190612f1e565b5f8481526005860160205260409020805460ff191660011790559050611cc88780613559565b5f858152600587016020526040902060010191611ce69190836137d5565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611d458880613559565b604051611d5392919061307f565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b6040016020810190611d919190613519565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f5f8051602061398a833981519152818073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611df3876122e8565b604001516040518263ffffffff1660e01b8152600401611e139190612f0c565b6040805180830381865af4158015611e2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5191906134f8565b9150915080611e7757604051632d07135360e01b81528115156004820152602401610532565b5f82815260048401602052604090208054611e9190612d92565b90505f03611eb55760405163089938b360e11b815260048101839052602401610532565b60015f838152600580860160205260409091205460ff1690811115611edc57611edc612c53565b14611f0f575f8281526005840160205260409081902054905163170cc93360e21b81526105329160ff1690600401612dca565b5f8281526004840160205260408120611f27916129a5565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a2509392505050565b6040805160e0810182525f8082526060602083018190529282018190529181018290526080810182905260a0810182905260c08101919091525f8281525f805160206139aa8339815191526020526040808220815160e0810190925280545f8051602061398a83398151915293929190829060ff16600581111561203e5761203e612c53565b600581111561204f5761204f612c53565b815260200160018201805461206390612d92565b80601f016020809104026020016040519081016040528092919081815260200182805461208f90612d92565b80156120da5780601f106120b1576101008083540402835291602001916120da565b820191905f5260205f20905b8154815290600101906020018083116120bd57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561214857612148612c53565b1461217b575f8481526005830160205260409081902054905163170cc93360e21b81526105329160ff1690600401612dca565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff19169060019084908111156121c0576121c0612c53565b0217905550602082015160018201906121d99082613227565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f61227785826112c9565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6122d6612846565b6122df82612891565b610645816128ad565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561234c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612373919081019061388e565b915091508061239557604051636b2f19e960e01b815260040160405180910390fd5b8151156123bb578151604051636ba589a560e01b81526004810191909152602401610532565b60208201516001600160a01b0316156123f7576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610532565b5092915050565b5f8051602061398a8339815191525f6001600160401b0380841690851611156124325761242b838561391b565b905061243f565b61243c848461391b565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b90049092166060820152429115806124ac5750600184015481516124a8916001600160401b031690613532565b8210155b156124d4576001600160401b03808416606083015282825260408201511660208201526124f3565b82816060018181516124e691906132f6565b6001600160401b03169052505b6060810151612503906064613338565b602082015160018601546001600160401b03929092169161252e9190600160401b900460ff16613338565b6001600160401b0316101561256757606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610532565b858160400181815161257991906132f6565b6001600160401b031690525060408101805186919061259990839061391b565b6001600160401b0316905250600184015460408201516064916125c791600160401b90910460ff1690613338565b6001600160401b03161015612600576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610532565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f805160206139aa8339815191526020526040812060020180545f8051602061398a83398151915291906008906126b290600160401b90046001600160401b031661393b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6126ea6020820182612b14565b63ffffffff1615801561270a5750612705602082018261308e565b151590505b156127515761271c6020820182612b14565b612729602083018361308e565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610532565b61275e602082018261308e565b905061276d6020830183612b14565b63ffffffff1611156127865761271c6020820182612b14565b60015b612796602083018361308e565b9050811015610645576127ac602083018361308e565b6127b7600184613956565b8181106127c6576127c66130d3565b90506020020160208101906127db9190612bfc565b6001600160a01b03166127f1602084018461308e565b83818110612801576128016130d3565b90506020020160208101906128169190612bfc565b6001600160a01b0316101561283e57604051630dbc8d5f60e31b815260040160405180910390fd5b600101612789565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661288f57604051631afcd79f60e31b815260040160405180910390fd5b565b612899612846565b6128a16128b5565b6128aa816128bd565b50565b610281612846565b61288f612846565b6128c5612846565b80355f8051602061398a83398151915290815560146128ea6060840160408501613969565b60ff16118061290957506129046060830160408401613969565b60ff16155b1561293d5761291e6060830160408401613969565b604051634a59bbff60e11b815260ff9091166004820152602401610532565b61294d6060830160408401613969565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561297e6040830160208401613519565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b5080546129b190612d92565b5f825580601f106129c0575050565b601f0160209004905f5260205f20908101906128aa91905b808211156129eb575f81556001016129d8565b5090565b5f602082840312156129ff575f80fd5b5035919050565b803563ffffffff81168114612a19575f80fd5b919050565b5f8060408385031215612a2f575f80fd5b82356001600160401b03811115612a44575f80fd5b830160808186031215612a55575f80fd5b9150612a6360208401612a06565b90509250929050565b80356001600160401b0381168114612a19575f80fd5b5f8083601f840112612a92575f80fd5b5081356001600160401b03811115612aa8575f80fd5b602083019150836020828501011115611499575f80fd5b5f805f8060608587031215612ad2575f80fd5b84359350612ae260208601612a6c565b925060408501356001600160401b03811115612afc575f80fd5b612b0887828801612a82565b95989497509550505050565b5f60208284031215612b24575f80fd5b612b2d82612a06565b9392505050565b5f805f60408486031215612b46575f80fd5b8335925060208401356001600160401b03811115612b62575f80fd5b612b6e86828701612a82565b9497909650939450505050565b5f805f8060608587031215612b8e575f80fd5b84356001600160401b0380821115612ba4575f80fd5b9086019060a08289031215612bb7575f80fd5b819550612bc660208801612a6c565b94506040870135915080821115612bdb575f80fd5b50612b0887828801612a82565b6001600160a01b03811681146128aa575f80fd5b5f60208284031215612c0c575f80fd5b8135612b2d81612be8565b5f808284036080811215612c29575f80fd5b6060811215612c36575f80fd5b508291506060830135612c4881612be8565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b60068110612c8357634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612ca1578181015183820152602001612c89565b50505f910152565b5f8151808452612cc0816020860160208601612c87565b601f01601f19169290920160200192915050565b60208152612ce6602082018351612c67565b5f602083015160e06040840152612d01610100840182612ca9565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215612d65575f80fd5b82356001600160401b03811115612d7a575f80fd5b612d8685828601612a82565b90969095509350505050565b600181811c90821680612da657607f821691505b602082108103612dc457634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610d088284612c67565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612e0e57612e0e612dd8565b60405290565b604080519081016001600160401b0381118282101715612e0e57612e0e612dd8565b604051601f8201601f191681016001600160401b0381118282101715612e5e57612e5e612dd8565b604052919050565b5f6001600160401b03821115612e7e57612e7e612dd8565b50601f01601f191660200190565b5f82601f830112612e9b575f80fd5b8151612eae612ea982612e66565b612e36565b818152846020838601011115612ec2575f80fd5b612ed3826020830160208701612c87565b949350505050565b5f60208284031215612eeb575f80fd5b81516001600160401b03811115612f00575f80fd5b612ed384828501612e8c565b602081525f612b2d6020830184612ca9565b5f60208284031215612f2e575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8581525f6001600160401b03808716602084015280861660408401525060806060830152612f8f608083018486612f35565b979650505050505050565b838152604060208201525f612fb3604083018486612f35565b95945050505050565b8581526001600160a01b03851660208201526001600160401b03841660408201526080606082018190525f90612f8f9083018486612f35565b5f60208083525f845461300781612d92565b806020870152604060018084165f8114613028576001811461304457613071565b60ff19851660408a0152604084151560051b8a01019550613071565b895f5260205f205f5b858110156130685781548b820186015290830190880161304d565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f808335601e198436030181126130a3575f80fd5b8301803591506001600160401b038211156130bc575f80fd5b6020019150600581901b3603821315611499575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130fb575f80fd5b9190910192915050565b5f82601f830112613114575f80fd5b8135613122612ea982612e66565b818152846020838601011115613136575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215613162575f80fd5b61316a612dec565b82356001600160401b0380821115613180575f80fd5b61318c36838701613105565b835260208501359150808211156131a1575f80fd5b506131ae36828601613105565b6020830152506131c060408401612a6c565b604082015292915050565b5f82516130fb818460208701612c87565b601f8211156109db57805f5260205f20601f840160051c810160208510156132015750805b601f840160051c820191505b81811015613220575f815560010161320d565b5050505050565b81516001600160401b0381111561324057613240612dd8565b6132548161324e8454612d92565b846131dc565b602080601f831160018114613287575f84156132705750858301515b5f19600386901b1c1916600185901b178555610897565b5f85815260208120601f198616915b828110156132b557888601518255948401946001909101908401613296565b50858210156132d257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156123f7576123f76132e2565b5f63ffffffff80831681810361332e5761332e6132e2565b6001019392505050565b6001600160401b0381811683821602808216919082811461335b5761335b6132e2565b505092915050565b5f808335601e19843603018112613378575f80fd5b83016020810192503590506001600160401b03811115613396575f80fd5b803603821315611499575f80fd5b5f8383855260208086019550808560051b830101845f5b8781101561345157848303601f19018952813536889003605e190181126133e0575f80fd5b870160606133ee8280613363565b8287526133fe8388018284612f35565b9250505061340e86830183613363565b86830388880152613420838284612f35565b9250505060406001600160401b03613439828501612a6c565b169501949094525097830197908301906001016133bb565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561348281612be8565b6001600160a01b031660608381019190915283013536849003601e190181126134a9575f80fd5b83016020810190356001600160401b038111156134c4575f80fd5b8060051b36038213156134d5575f80fd5b608080850152612fb360a0850182846133a4565b80518015158114612a19575f80fd5b5f8060408385031215613509575f80fd5b82519150612a63602084016134e9565b5f60208284031215613529575f80fd5b612b2d82612a6c565b80820180821115610d0857610d086132e2565b5f8235603e198336030181126130fb575f80fd5b5f808335601e1984360301811261356e575f80fd5b8301803591506001600160401b03821115613587575f80fd5b602001915036819003821315611499575f80fd5b602081525f612ed3602083018486612f35565b5f604082360312156135be575f80fd5b6135c6612e14565b6135cf83612a06565b81526020808401356001600160401b03808211156135eb575f80fd5b9085019036601f8301126135fd575f80fd5b81358181111561360f5761360f612dd8565b8060051b9150613620848301612e36565b8181529183018401918481019036841115613639575f80fd5b938501935b83851015613663578435925061365383612be8565b828252938501939085019061363e565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156136d05784516001600160a01b031682529383019360019290920191908301906136a7565b509695505050505050565b60208152815160208201525f602083015160e06040840152613701610100840182612ca9565b90506040840151601f198085840301606086015261371f8383612ca9565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261374f8383613675565b925060a08601519150808584030160c08601525061376d8282613675565b91505060c084015161378a60e08501826001600160401b03169052565b509392505050565b5f80604083850312156137a3575f80fd5b8251915060208301516001600160401b038111156137bf575f80fd5b6137cb85828601612e8c565b9150509250929050565b6001600160401b038311156137ec576137ec612dd8565b613800836137fa8354612d92565b836131dc565b5f601f841160018114613831575f851561381a5750838201355b5f19600387901b1c1916600186901b178355613220565b5f83815260208120601f198716915b828110156138605786850135825560209485019460019092019101613840565b508682101561387c575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f806040838503121561389f575f80fd5b82516001600160401b03808211156138b5575f80fd5b90840190606082870312156138c8575f80fd5b6138d0612dec565b8251815260208301516138e281612be8565b60208201526040830151828111156138f8575f80fd5b61390488828601612e8c565b6040830152509350612a63915050602084016134e9565b6001600160401b038281168282160390808211156123f7576123f76132e2565b5f6001600160401b0380831681810361332e5761332e6132e2565b81810381811115610d0857610d086132e2565b5f60208284031215613979575f80fd5b813560ff81168114612b2d575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb056d7896c90f86967e463241c430aa4c1ef638639857cb8d4f18c905fa5443d600a26469706673582212207ed5b348f3b5e8fb612f26f21556ee337c8306374f86e30619edfde64842889264736f6c63430008190033", } // ACP99ValidatorManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 44fe2d8a6..a19e71aed 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -76,8 +76,8 @@ type ValidatorMessagesValidationPeriod 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\":\"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\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b50604051613aec380380613aec83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61399f8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061013c575f3560e01c806398d9fa7c116100b4578063ba3a4b9711610079578063ba3a4b97146102b9578063bddb5a14146102cc578063e4a63c40146102df578063effb55b4146102f3578063f7795a8c14610306578063fb8b11dd14610319575f80fd5b806398d9fa7c1461025e578063a9778a7a146101b2578063afb9809614610271578063b5c9349814610298578063b771b3bc146102ab575f80fd5b806356ab447d1161010557806356ab447d146101ce57806362065856146101df578063732214f814610200578063785e9e86146102075780638ef34c981461023857806393e245981461024b575f80fd5b80624050c814610140578063151d30d11461015557806325e1c776146101745780632e2194d81461018757806335455ded146101b2575b5f80fd5b61015361014e36600461303e565b61032c565b005b61015d600a81565b60405160ff90911681526020015b60405180910390f35b6101536101823660046130a6565b610362565b61019a6101953660046130d4565b61044b565b6040516001600160401b03909116815260200161016b565b6101bb61271081565b60405161ffff909116815260200161016b565b6101536101dc3660046130d4565b50565b6101f26101ed3660046130eb565b61049f565b60405190815260200161016b565b6101f25f81565b5f8051602061394a833981519152546001600160a01b03165b6040516001600160a01b03909116815260200161016b565b61015361024636600461311a565b6104bf565b6101536102593660046130d4565b61059f565b61015361026c36600461313d565b61069d565b6101f27f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101536102a63660046131aa565b61080f565b6102206005600160991b0181565b6101536102c73660046130d4565b6108f3565b6101536102da3660046131dd565b610bbd565b6101f25f8051602061394a83398151915281565b6101536103013660046131dd565b610c15565b6101536103143660046130d4565b610c76565b61015361032736600461311a565b610c7f565b5f6103368461049f565b90505f610345838501856132a6565b905061035a8683835f01518460200151610d46565b505050505050565b61036b82610e87565b610390576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610399610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261040491908101906133a8565b519050600281600581111561041b5761041b613475565b1461043b578060405163170cc93360e21b81526004016103879190613489565b6104458383610ed4565b50505050565b5f80610455610eb0565b6004015461046390846134b7565b905080158061047857506001600160401b0381115b156104995760405163222d164360e21b815260048101849052602401610387565b92915050565b5f6104a8610eb0565b60040154610499906001600160401b0384166134d6565b5f6104c8610eb0565b90506001600160a01b0382166104fc5760405163caa903f960e01b81526001600160a01b0383166004820152602401610387565b5f8381526007820160205260409020546001600160a01b0316331461054257335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610387565b336001600160a01b03831603610571575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f6105a8610eb0565b90505f6105b3610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156105f7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261061e91908101906133a8565b519050600481600581111561063557610635613475565b14610655578060405163170cc93360e21b81526004016103879190613489565b5f8381526007830160205260409020546001600160a01b0316331461067a573361051d565b5f83815260078301602052604090205461059a906001600160a01b031684611173565b5f806106ab838501856134ed565b90925090505f6106b9610eb0565b5f848152600891909101602052604090205460ff1660038111156106df576106df613475565b0361079c575f818060200190518101906106f9919061356b565b90505f87610705610eb0565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610749573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261077091908101906133a8565b6080015161077e9190613586565b905061079489888461078f8561049f565b61119d565b505050610805565b5f805f80848060200190518101906107b491906135b3565b93509350935093505f6107ca8a88868686611445565b905084156107de5750505050505050610808565b806107ff57604051631036cf9160e11b815260048101889052602401610387565b50505050505b50505b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610858575080546001600160401b03808416911610155b156108765760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556108a184846117b1565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6108fc610eb0565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561093557610935613475565b600381111561094657610946613475565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156109bf576109bf613475565b141580156109e057506003815160038111156109dd576109dd613475565b14155b15610a01578051604051633b0d540d60e21b8152610387919060040161360f565b5f610a0a610eb0565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610a3f9160040190815260200190565b5f60405180830381865afa158015610a59573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8091908101906133a8565b905080606001516001600160401b03165f03610ab2576040516339b894f960e21b815260048101859052602401610387565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610b2093906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610b3a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b619190810190613623565b6040518263ffffffff1660e01b8152600401610b7d919061367f565b6020604051808303815f875af1158015610b99573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108089190613691565b5f610bc883836117cf565b90505f610be385836020015184604001518560600151611805565b825190915015610bf4575050505050565b8061080857604051635bff683f60e11b815260048101869052602401610387565b5f80610c23838501856130a6565b90925090506001610c32610eb0565b5f848152600891909101602052604090205460ff166003811115610c5857610c58613475565b03610c6c57610c678282611a91565b610808565b6108088282611dc0565b6101dc8161207a565b6001600160a01b038116610cb15760405163caa903f960e01b81526001600160a01b0382166004820152602401610387565b5f610cba610eb0565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610ce8573361051d565b336001600160a01b03831603610d17575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610d4f610eb0565b600381015490915061ffff600160401b90910481169084161080610d78575061271061ffff8416115b15610d9c57604051635f12e6c360e11b815261ffff84166004820152602401610387565b60038101546001600160401b039081169083161015610dd8576040516202a06d60e11b81526001600160401b0383166004820152602401610387565b8060010154841080610ded5750806002015484115b15610e0e5760405163222d164360e21b815260048101859052602401610387565b610e178461219c565b505f948552600701602052604090932080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b03949094169390930292909217825550600101805467ffffffffffffffff19169055565b5f80610e91610eb0565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610f1f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4691908101906136a8565b9150915080610f6857604051636b2f19e960e01b815260040160405180910390fd5b5f610f71610eb0565b6006810154845191925014610f9f578251604051636ba589a560e01b81526004810191909152602401610387565b60208301516001600160a01b031615610fdb576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b60208301516001600160a01b031615611017576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401611054919061367f565b6040805180830381865af415801561106e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611092919061374e565b915091508188146110b95760405163089938b360e11b815260048101899052602401610387565b5f8881526007840160205260409020600101546001600160401b03908116908216111561114a575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611168565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f61117c610eb0565b5f838152600b820160205260408120805491905590915061044584826121bf565b5f806111a7610eb0565b90505f6111b66101958561219c565b90505f6111c1610eb0565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611205573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261122c91908101906133a8565b905061123788610e87565b611257576040516330efa98b60e01b815260048101899052602401610387565b60028151600581111561126c5761126c613475565b1461128d57805160405163170cc93360e21b81526103879190600401613489565b5f82826080015161129e9190613771565b905083600301600a9054906101000a90046001600160401b031682604001516112c79190613791565b6001600160401b0316816001600160401b0316111561130457604051636d51fe0560e11b81526001600160401b0382166004820152602401610387565b5f898960405160200161132e92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b9061142e908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f8061144f610eb0565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff16600381111561148857611488613475565b600381111561149957611499613475565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61150e610eb0565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611552573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261157991908101906133a8565b905060028351600381111561159057611590613475565b146115b1578251604051633b0d540d60e21b8152610387919060040161360f565b60208301516001600160a01b0316331461164d575f8281526007850160205260409020546001600160a01b031633146115ea573361051d565b5f82815260078501602052604090205460a082015161161991600160b01b90046001600160401b031690613771565b6001600160401b031642101561164d5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b60028151600581111561166257611662613475565b036117505760038401546080840151611684916001600160401b031690613771565b6001600160401b03164210156116b85760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b87156116ca576116c88288610ed4565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b0390911617905561171284888c61222c565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506117a89350505050565b60048151600581111561176557611765613475565b0361178c5761177583878b61222c565b5061177f89612482565b60019450505050506117a8565b805160405163170cc93360e21b81526103879190600401613489565b95945050505050565b6117b96126c6565b6117c282612711565b6117cb8161278c565b5050565b604080516080810182525f8082526020820181905291810182905260608101919091526117fe828401846137bc565b9392505050565b5f8061180f610eb0565b90505f61181a610eb0565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561185e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261188591908101906133a8565b905061189087610e87565b61189f5760019250505061143d565b5f8781526007830160205260409020546001600160a01b031633146118c4573361051d565b5f87815260078301602052604090205460a08201516118f391600160b01b90046001600160401b031690613771565b6001600160401b03168160c001516001600160401b0316101561193a5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610387565b5f86156119525761194b8887610ed4565b9050611970565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f906119959061049f565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156119fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a229190613691565b90508084600b015f8b81526020019081526020015f205f828254611a46919061383e565b90915550506001600160a01b03861615611a83575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611a9a610eb0565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611ad357611ad3613475565b6003811115611ae457611ae4613475565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b59610eb0565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b9d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bc491908101906133a8565b9050600183516003811115611bdb57611bdb613475565b14611bfc578251604051633b0d540d60e21b8152610387919060040161360f565b600481516005811115611c1157611c11613475565b03611c1f5761035a86612482565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611c44896127f4565b604001516040518263ffffffff1660e01b8152600401611c64919061367f565b606060405180830381865af4158015611c7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca39190613851565b5091509150818414611cd057846040015160405163089938b360e11b815260040161038791815260200190565b806001600160401b031683606001516001600160401b03161080611d095750806001600160401b03168560a001516001600160401b0316115b15611d3257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610387565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611dc861290a565b5f611dd1610eb0565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611e0a57611e0a613475565b6003811115611e1b57611e1b613475565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e9457611e94613475565b14611eb5578051604051633b0d540d60e21b8152610387919060040161360f565b6004611ebf610eb0565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611ef49160040190815260200190565b5f60405180830381865afa158015611f0e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f3591908101906133a8565b516005811115611f4757611f47613475565b14612046575f611f56846127f4565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f95919061367f565b606060405180830381865af4158015611fb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd49190613851565b5091509150818460400151146120005760405163089938b360e11b815260048101839052602401610387565b806001600160401b03168460c001516001600160401b0316111561204257604051632e19bc2d60e11b81526001600160401b0382166004820152602401610387565b5050505b61204f84612482565b50506117cb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612083610eb0565b90505f61208e610eb0565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156120d2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120f991908101906133a8565b905061210483610e87565b61210d57505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612144575080612162565b5f858152600c85016020526040902080546001600160a01b03191690555b60048351600581111561217757612177613475565b03612186576121868186611173565b61080882612197856040015161049f565b61297a565b5f610499825f8051602061394a833981519152546001600160a01b03169061299d565b5f5f8051602061394a83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b15801561221a575f80fd5b505af1158015610805573d5f803e3d5ffd5b5f80612236610eb0565b90505f612241610eb0565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916122769160040190815260200190565b5f60405180830381865afa158015612290573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122b791908101906133a8565b90505f6003825160058111156122cf576122cf613475565b14806122ed57506004825160058111156122eb576122eb613475565b145b156122fd575060c081015161233a565b60028251600581111561231257612312613475565b0361231e57504261233a565b815160405163170cc93360e21b81526103879190600401613489565b86608001516001600160401b0316816001600160401b031611612362575f93505050506117fe565b600583015460608801515f916001600160a01b031690634f22429f906123879061049f565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015612408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242c9190613691565b5f878152600986016020526040902081905590506001600160a01b03871615611168575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f61248b610eb0565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156124c4576124c4613475565b60038111156124d5576124d5613475565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa158015612585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a99190613891565b82608001516125b89190613771565b6001600160401b03164210156125ec5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610387565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b03168061263c5750602082015161265a565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806126678388866129a9565b915091506126808560200151612197876060015161049f565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661270f57604051631afcd79f60e31b815260040160405180910390fd5b565b6127196126c6565b612721612a56565b6101dc61273160208301836138ac565b6020830135604084013561274b60808601606087016130eb565b61275b60a08701608088016138c7565b61276b60c0880160a089016138e0565b60c08801356127816101008a0160e08b016138ac565b896101000135612a66565b6127946126c6565b5f8051602061394a8339815191526001600160a01b0382166127d457604051637330680360e01b81526001600160a01b0383166004820152602401610387565b80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612858573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261287f91908101906136a8565b91509150806128a157604051636b2f19e960e01b815260040160405180910390fd5b8151156128c7578151604051636ba589a560e01b81526004810191909152602401610387565b60208201516001600160a01b031615612903576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610387565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161294e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f8051602061394a833981519152546117cb906001600160a01b03168383612c8f565b5f6117fe833384612cee565b5f805f6129b4610eb0565b5f86815260098201602052604081208054908290559192509081908015612a48575f878152600785016020526040902054612710906129fe90600160a01b900461ffff16836134d6565b612a0891906134b7565b91508184600b015f8981526020019081526020015f205f828254612a2c919061383e565b90915550612a3c90508282613900565b9250612a4889846121bf565b509097909650945050505050565b612a5e6126c6565b61270f612e51565b612a6e6126c6565b5f612a77610eb0565b905061ffff86161580612a8f575061271061ffff8716115b15612ab357604051635f12e6c360e11b815261ffff87166004820152602401610387565b87891115612ad75760405163222d164360e21b8152600481018a9052602401610387565b60ff85161580612aea5750600a60ff8616115b15612b0d5760405163170db35960e31b815260ff86166004820152602401610387565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6d9190613891565b6001600160401b0316876001600160401b03161015612ba9576040516202a06d60e11b81526001600160401b0388166004820152602401610387565b835f03612bc95760405163a733007160e01b815260040160405180910390fd5b81612bea57604051632f6bd1db60e01b815260048101839052602401610387565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b6040516001600160a01b0383811660248301526044820183905261059a91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612e59565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612d34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d589190613691565b9050612d6f6001600160a01b038616853086612eba565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612db3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd79190613691565b9050818111612e3d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610387565b612e478282613900565b9695505050505050565b6129546126c6565b5f612e6d6001600160a01b03841683612ef3565b905080515f14158015612e91575080806020019051810190612e8f9190613913565b155b1561059a57604051635274afe760e01b81526001600160a01b0384166004820152602401610387565b6040516001600160a01b0384811660248301528381166044830152606482018390526104459186918216906323b872dd90608401612cbc565b60606117fe83835f845f80856001600160a01b03168486604051612f17919061392e565b5f6040518083038185875af1925050503d805f8114612f51576040519150601f19603f3d011682016040523d82523d5f602084013e612f56565b606091505b5091509150612e47868383606082612f7657612f7182612fbd565b6117fe565b8151158015612f8d57506001600160a01b0384163b155b15612fb657604051639996b31560e01b81526001600160a01b0385166004820152602401610387565b50806117fe565b805115612fcd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160401b03811681146101dc575f80fd5b5f8083601f84011261300a575f80fd5b5081356001600160401b03811115613020575f80fd5b602083019150836020828501011115613037575f80fd5b9250929050565b5f805f8060608587031215613051575f80fd5b84359350602085013561306381612fe6565b925060408501356001600160401b0381111561307d575f80fd5b61308987828801612ffa565b95989497509550505050565b63ffffffff811681146101dc575f80fd5b5f80604083850312156130b7575f80fd5b8235915060208301356130c981613095565b809150509250929050565b5f602082840312156130e4575f80fd5b5035919050565b5f602082840312156130fb575f80fd5b81356117fe81612fe6565b6001600160a01b03811681146101dc575f80fd5b5f806040838503121561312b575f80fd5b8235915060208301356130c981613106565b5f805f805f60808688031215613151575f80fd5b85359450602086013561316381612fe6565b9350604086013561317381612fe6565b925060608601356001600160401b0381111561318d575f80fd5b61319988828901612ffa565b969995985093965092949392505050565b5f808284036101408112156131bd575f80fd5b610120808212156131cc575f80fd5b84935083013590506130c981613106565b5f805f604084860312156131ef575f80fd5b8335925060208401356001600160401b0381111561320b575f80fd5b61321786828701612ffa565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561325a5761325a613224565b60405290565b604051601f8201601f191681016001600160401b038111828210171561328857613288613224565b604052919050565b803561ffff811681146132a1575f80fd5b919050565b5f604082840312156132b6575f80fd5b604051604081018181106001600160401b03821117156132d8576132d8613224565b6040526132e483613290565b815260208301356132f481612fe6565b60208201529392505050565b8051600681106132a1575f80fd5b5f6001600160401b0382111561332657613326613224565b50601f01601f191660200190565b5f5b8381101561334e578181015183820152602001613336565b50505f910152565b5f82601f830112613365575f80fd5b81516133786133738261330e565b613260565b81815284602083860101111561338c575f80fd5b61143d826020830160208701613334565b80516132a181612fe6565b5f602082840312156133b8575f80fd5b81516001600160401b03808211156133ce575f80fd5b9083019060e082860312156133e1575f80fd5b6133e9613238565b6133f283613300565b8152602083015182811115613405575f80fd5b61341187828601613356565b6020830152506134236040840161339d565b60408201526134346060840161339d565b60608201526134456080840161339d565b608082015261345660a0840161339d565b60a082015261346760c0840161339d565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061349d5761349d613475565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f826134d157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610499576104996134a3565b5f80604083850312156134fe575f80fd5b8235915060208301356001600160401b0381111561351a575f80fd5b8301601f8101851361352a575f80fd5b80356135386133738261330e565b81815286602083850101111561354c575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561357b575f80fd5b81516117fe81613106565b6001600160401b03828116828216039080821115612903576129036134a3565b80151581146101dc575f80fd5b5f805f80608085870312156135c6575f80fd5b84516135d1816135a6565b60208601519094506135e2816135a6565b60408601519093506135f381613095565b606086015190925061360481613106565b939692955090935050565b602081016004831061349d5761349d613475565b5f60208284031215613633575f80fd5b81516001600160401b03811115613648575f80fd5b61143d84828501613356565b5f815180845261366b816020860160208601613334565b601f01601f19169290920160200192915050565b602081525f6117fe6020830184613654565b5f602082840312156136a1575f80fd5b5051919050565b5f80604083850312156136b9575f80fd5b82516001600160401b03808211156136cf575f80fd5b90840190606082870312156136e2575f80fd5b6040516060810181811083821117156136fd576136fd613224565b60405282518152602083015161371281613106565b6020820152604083015182811115613728575f80fd5b61373488828601613356565b60408301525080945050505060208301516130c9816135a6565b5f806040838503121561375f575f80fd5b8251915060208301516130c981612fe6565b6001600160401b03818116838216019080821115612903576129036134a3565b6001600160401b038181168382160280821691908281146137b4576137b46134a3565b505092915050565b5f608082840312156137cc575f80fd5b604051608081018181106001600160401b03821117156137ee576137ee613224565b60405282356137fc816135a6565b8152602083013561380c816135a6565b6020820152604083013561381f81613095565b6040820152606083013561383281613106565b60608201529392505050565b80820180821115610499576104996134a3565b5f805f60608486031215613863575f80fd5b83519250602084015161387581612fe6565b604085015190925061388681612fe6565b809150509250925092565b5f602082840312156138a1575f80fd5b81516117fe81612fe6565b5f602082840312156138bc575f80fd5b81356117fe81613106565b5f602082840312156138d7575f80fd5b6117fe82613290565b5f602082840312156138f0575f80fd5b813560ff811681146117fe575f80fd5b81810381811115610499576104996134a3565b5f60208284031215613923575f80fd5b81516117fe816135a6565b5f825161393f818460208701613334565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00a26469706673582212205b6b3715c40ff1d8d0b44491583e2e03dc8180dca4e29607a4950b6da51e5f6464736f6c63430008190033", + 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\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b50604051613ab6380380613ab683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6139698061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c8063a9778a7a116100b4578063bddb5a1411610079578063bddb5a14146102ba578063d8761f4c146102cd578063e4a63c40146102e0578063effb55b4146102f4578063f7795a8c14610307578063fb8b11dd1461031a575f80fd5b8063a9778a7a146101a0578063afb980961461025f578063b5c9349814610286578063b771b3bc14610299578063ba3a4b97146102a7575f80fd5b8063620658561161010557806362065856146101cd578063732214f8146101ee578063785e9e86146101f55780638ef34c981461022657806393e245981461023957806398d9fa7c1461024c575f80fd5b8063151d30d11461014157806325e1c776146101605780632e2194d81461017557806335455ded146101a057806356ab447d146101bc575b5f80fd5b610149600a81565b60405160ff90911681526020015b60405180910390f35b61017361016e366004612ff2565b61032d565b005b610188610183366004613020565b610416565b6040516001600160401b039091168152602001610157565b6101a961271081565b60405161ffff9091168152602001610157565b6101736101ca366004613020565b50565b6101e06101db36600461304b565b61046a565b604051908152602001610157565b6101e05f81565b5f80516020613914833981519152546001600160a01b03165b6040516001600160a01b039091168152602001610157565b61017361023436600461307a565b61048a565b610173610247366004613020565b61056a565b61017361025a3660046130e1565b610668565b6101e07f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b61017361029436600461314e565b6107da565b61020e6005600160991b0181565b6101736102b5366004613020565b6108be565b6101736102c8366004613181565b610b88565b6101736102db3660046131c8565b610be0565b6101e05f8051602061391483398151915281565b610173610302366004613181565b610c0f565b610173610315366004613020565b610c70565b61017361032836600461307a565b610c79565b61033682610d40565b61035b576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610364610d69565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156103a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103cf9190810190613307565b51905060028160058111156103e6576103e66133d4565b14610406578060405163170cc93360e21b815260040161035291906133e8565b6104108383610d8d565b50505050565b5f80610420610d69565b6004015461042e9084613416565b905080158061044357506001600160401b0381115b156104645760405163222d164360e21b815260048101849052602401610352565b92915050565b5f610473610d69565b60040154610464906001600160401b038416613435565b5f610493610d69565b90506001600160a01b0382166104c75760405163caa903f960e01b81526001600160a01b0383166004820152602401610352565b5f8381526007820160205260409020546001600160a01b0316331461050d57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610352565b336001600160a01b0383160361053c575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f610573610d69565b90505f61057e610d69565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156105c2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105e99190810190613307565b5190506004816005811115610600576106006133d4565b14610620578060405163170cc93360e21b815260040161035291906133e8565b5f8381526007830160205260409020546001600160a01b0316331461064557336104e8565b5f838152600783016020526040902054610565906001600160a01b03168461102c565b5f806106768385018561344c565b90925090505f610684610d69565b5f848152600891909101602052604090205460ff1660038111156106aa576106aa6133d4565b03610767575f818060200190518101906106c491906134ca565b90505f876106d0610d69565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610714573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261073b9190810190613307565b6080015161074991906134e5565b905061075f89888461075a8561046a565b611056565b5050506107d0565b5f805f808480602001905181019061077f9190613512565b93509350935093505f6107958a888686866112ff565b905084156107a957505050505050506107d3565b806107ca57604051631036cf9160e11b815260048101889052602401610352565b50505050505b50505b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610823575080546001600160401b03808416911610155b156108415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561086c848461166b565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f6108c7610d69565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610900576109006133d4565b6003811115610911576109116133d4565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561098a5761098a6133d4565b141580156109ab57506003815160038111156109a8576109a86133d4565b14155b156109cc578051604051633b0d540d60e21b8152610352919060040161356e565b5f6109d5610d69565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610a0a9160040190815260200190565b5f60405180830381865afa158015610a24573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a4b9190810190613307565b905080606001516001600160401b03165f03610a7d576040516339b894f960e21b815260048101859052602401610352565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610aeb93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610b05573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2c9190810190613582565b6040518263ffffffff1660e01b8152600401610b4891906135de565b6020604051808303815f875af1158015610b64573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d391906135f0565b5f610b938383611689565b90505f610bae858360200151846040015185606001516116bf565b825190915015610bbf575050505050565b806107d357604051635bff683f60e11b815260048101869052602401610352565b5f610bea8461046a565b90505f610bf983850185613618565b90506107d0878784845f0151856020015161194b565b5f80610c1d83850185612ff2565b90925090506001610c2c610d69565b5f848152600891909101602052604090205460ff166003811115610c5257610c526133d4565b03610c6657610c618282611a8e565b6107d3565b6107d38282611dc5565b6101ca8161207f565b6001600160a01b038116610cab5760405163caa903f960e01b81526001600160a01b0382166004820152602401610352565b5f610cb4610d69565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610ce257336104e8565b336001600160a01b03831603610d11575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f80610d4a610d69565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610dd8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dff9190810190613672565b9150915080610e2157604051636b2f19e960e01b815260040160405180910390fd5b5f610e2a610d69565b6006810154845191925014610e58578251604051636ba589a560e01b81526004810191909152602401610352565b60208301516001600160a01b031615610e94576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610352565b60208301516001600160a01b031615610ed0576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610352565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401610f0d91906135de565b6040805180830381865af4158015610f27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4b9190613718565b91509150818814610f725760405163089938b360e11b815260048101899052602401610352565b5f8881526007840160205260409020600101546001600160401b039081169082161115611003575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611021565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f611035610d69565b5f838152600b820160205260408120805491905590915061041084826121a1565b5f80611060610d69565b90505f6110706101835f8661220e565b90505f61107b610d69565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156110bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110e69190810190613307565b90506110f188610d40565b611111576040516330efa98b60e01b815260048101899052602401610352565b600281516005811115611126576111266133d4565b1461114757805160405163170cc93360e21b815261035291906004016133e8565b5f828260800151611158919061373b565b905083600301600a9054906101000a90046001600160401b03168260400151611181919061375b565b6001600160401b0316816001600160401b031611156111be57604051636d51fe0560e11b81526001600160401b0382166004820152602401610352565b5f89896040516020016111e892919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b906112e8908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f80611309610d69565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611342576113426133d4565b6003811115611353576113536133d4565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6113c8610d69565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561140c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114339190810190613307565b905060028351600381111561144a5761144a6133d4565b1461146b578251604051633b0d540d60e21b8152610352919060040161356e565b60208301516001600160a01b03163314611507575f8281526007850160205260409020546001600160a01b031633146114a457336104e8565b5f82815260078501602052604090205460a08201516114d391600160b01b90046001600160401b03169061373b565b6001600160401b03164210156115075760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610352565b60028151600581111561151c5761151c6133d4565b0361160a576003840154608084015161153e916001600160401b03169061373b565b6001600160401b03164210156115725760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610352565b8715611584576115828288610d8d565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b039091161790556115cc84888c612233565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506116629350505050565b60048151600581111561161f5761161f6133d4565b036116465761162f83878b612233565b5061163989612489565b6001945050505050611662565b805160405163170cc93360e21b815261035291906004016133e8565b95945050505050565b6116736126cd565b61167c82612718565b61168581612793565b5050565b604080516080810182525f8082526020820181905291810182905260608101919091526116b882840184613786565b9392505050565b5f806116c9610d69565b90505f6116d4610d69565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611718573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261173f9190810190613307565b905061174a87610d40565b611759576001925050506112f7565b5f8781526007830160205260409020546001600160a01b0316331461177e57336104e8565b5f87815260078301602052604090205460a08201516117ad91600160b01b90046001600160401b03169061373b565b6001600160401b03168160c001516001600160401b031610156117f45760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610352565b5f861561180c576118058887610d8d565b905061182a565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f9061184f9061046a565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156118b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118dc91906135f0565b90508084600b015f8b81526020019081526020015f205f8282546119009190613808565b90915550506001600160a01b0386161561193d575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611954610d69565b600381015490915061ffff600160401b9091048116908416108061197d575061271061ffff8416115b156119a157604051635f12e6c360e11b815261ffff84166004820152602401610352565b60038101546001600160401b0390811690831610156119dd576040516202a06d60e11b81526001600160401b0383166004820152602401610352565b80600101548410806119f25750806002015484115b15611a135760405163222d164360e21b815260048101859052602401610352565b611a1d858561220e565b505f958652600701602052604090942080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b0395909516949094029390931783555050600101805467ffffffffffffffff19169055565b5f611a97610d69565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611ad057611ad06133d4565b6003811115611ae157611ae16133d4565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b56610d69565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b9a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bc19190810190613307565b9050600183516003811115611bd857611bd86133d4565b14611bf9578251604051633b0d540d60e21b8152610352919060040161356e565b600481516005811115611c0e57611c0e6133d4565b03611c2457611c1c86612489565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611c49896127fb565b604001516040518263ffffffff1660e01b8152600401611c6991906135de565b606060405180830381865af4158015611c84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca8919061381b565b5091509150818414611cd557846040015160405163089938b360e11b815260040161035291815260200190565b806001600160401b031683606001516001600160401b03161080611d0e5750806001600160401b03168560a001516001600160401b0316115b15611d3757604051632e19bc2d60e11b81526001600160401b0382166004820152602401610352565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611dcd612911565b5f611dd6610d69565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611e0f57611e0f6133d4565b6003811115611e2057611e206133d4565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e9957611e996133d4565b14611eba578051604051633b0d540d60e21b8152610352919060040161356e565b6004611ec4610d69565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611ef99160040190815260200190565b5f60405180830381865afa158015611f13573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f3a9190810190613307565b516005811115611f4c57611f4c6133d4565b1461204b575f611f5b846127fb565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f9a91906135de565b606060405180830381865af4158015611fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd9919061381b565b5091509150818460400151146120055760405163089938b360e11b815260048101839052602401610352565b806001600160401b03168460c001516001600160401b0316111561204757604051632e19bc2d60e11b81526001600160401b0382166004820152602401610352565b5050505b61205484612489565b505061168560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f612088610d69565b90505f612093610d69565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156120d7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120fe9190810190613307565b905061210983610d40565b61211257505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612149575080612167565b5f858152600c85016020526040902080546001600160a01b03191690555b60048351600581111561217c5761217c6133d4565b0361218b5761218b818661102c565b6107d38261219c856040015161046a565b612981565b5f5f8051602061391483398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b1580156121fc575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5f6116b883835f80516020613914833981519152546001600160a01b031691906129a4565b5f8061223d610d69565b90505f612248610d69565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff69161227d9160040190815260200190565b5f60405180830381865afa158015612297573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122be9190810190613307565b90505f6003825160058111156122d6576122d66133d4565b14806122f457506004825160058111156122f2576122f26133d4565b145b15612304575060c0810151612341565b600282516005811115612319576123196133d4565b03612325575042612341565b815160405163170cc93360e21b815261035291906004016133e8565b86608001516001600160401b0316816001600160401b031611612369575f93505050506116b8565b600583015460608801515f916001600160a01b031690634f22429f9061238e9061046a565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561240f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243391906135f0565b5f878152600986016020526040902081905590506001600160a01b03871615611021575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f612492610d69565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156124cb576124cb6133d4565b60038111156124dc576124dc6133d4565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa15801561258c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b0919061385b565b82608001516125bf919061373b565b6001600160401b03164210156125f35760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610352565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b03168061264357506020820151612661565b5f858152600a85016020526040902080546001600160a01b03191690555b5f8061266e838886612b07565b91509150612687856020015161219c876060015161046a565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661271657604051631afcd79f60e31b815260040160405180910390fd5b565b6127206126cd565b612728612bb4565b6101ca6127386020830183613876565b60208301356040840135612752608086016060870161304b565b61276260a0870160808801613891565b61277260c0880160a089016138aa565b60c08801356127886101008a0160e08b01613876565b896101000135612bc4565b61279b6126cd565b5f805160206139148339815191526001600160a01b0382166127db57604051637330680360e01b81526001600160a01b0383166004820152602401610352565b80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561285f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128869190810190613672565b91509150806128a857604051636b2f19e960e01b815260040160405180910390fd5b8151156128ce578151604051636ba589a560e01b81526004810191909152602401610352565b60208201516001600160a01b03161561290a576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610352565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161295557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f8051602061391483398151915254611685906001600160a01b03168383612ded565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156129ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0e91906135f0565b9050612a256001600160a01b038616853086612e4c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015612a69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a8d91906135f0565b9050818111612af35760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610352565b612afd82826138ca565b9695505050505050565b5f805f612b12610d69565b5f86815260098201602052604081208054908290559192509081908015612ba6575f87815260078501602052604090205461271090612b5c90600160a01b900461ffff1683613435565b612b669190613416565b91508184600b015f8981526020019081526020015f205f828254612b8a9190613808565b90915550612b9a905082826138ca565b9250612ba689846121a1565b509097909650945050505050565b612bbc6126cd565b612716612e85565b612bcc6126cd565b5f612bd5610d69565b905061ffff86161580612bed575061271061ffff8716115b15612c1157604051635f12e6c360e11b815261ffff87166004820152602401610352565b87891115612c355760405163222d164360e21b8152600481018a9052602401610352565b60ff85161580612c485750600a60ff8616115b15612c6b5760405163170db35960e31b815260ff86166004820152602401610352565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ccb919061385b565b6001600160401b0316876001600160401b03161015612d07576040516202a06d60e11b81526001600160401b0388166004820152602401610352565b835f03612d275760405163a733007160e01b815260040160405180910390fd5b81612d4857604051632f6bd1db60e01b815260048101839052602401610352565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b6040516001600160a01b0383811660248301526044820183905261056591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612e8d565b6040516001600160a01b0384811660248301528381166044830152606482018390526104109186918216906323b872dd90608401612e1a565b61295b6126cd565b5f612ea16001600160a01b03841683612eee565b905080515f14158015612ec5575080806020019051810190612ec391906138dd565b155b1561056557604051635274afe760e01b81526001600160a01b0384166004820152602401610352565b60606116b883835f845f80856001600160a01b03168486604051612f1291906138f8565b5f6040518083038185875af1925050503d805f8114612f4c576040519150601f19603f3d011682016040523d82523d5f602084013e612f51565b606091505b5091509150612afd868383606082612f7157612f6c82612fb8565b6116b8565b8151158015612f8857506001600160a01b0384163b155b15612fb157604051639996b31560e01b81526001600160a01b0385166004820152602401610352565b50806116b8565b805115612fc85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b63ffffffff811681146101ca575f80fd5b5f8060408385031215613003575f80fd5b82359150602083013561301581612fe1565b809150509250929050565b5f60208284031215613030575f80fd5b5035919050565b6001600160401b03811681146101ca575f80fd5b5f6020828403121561305b575f80fd5b81356116b881613037565b6001600160a01b03811681146101ca575f80fd5b5f806040838503121561308b575f80fd5b82359150602083013561301581613066565b5f8083601f8401126130ad575f80fd5b5081356001600160401b038111156130c3575f80fd5b6020830191508360208285010111156130da575f80fd5b9250929050565b5f805f805f608086880312156130f5575f80fd5b85359450602086013561310781613037565b9350604086013561311781613037565b925060608601356001600160401b03811115613131575f80fd5b61313d8882890161309d565b969995985093965092949392505050565b5f80828403610140811215613161575f80fd5b61012080821215613170575f80fd5b849350830135905061301581613066565b5f805f60408486031215613193575f80fd5b8335925060208401356001600160401b038111156131af575f80fd5b6131bb8682870161309d565b9497909650939450505050565b5f805f805f608086880312156131dc575f80fd5b85359450602086013561310781613066565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715613224576132246131ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613252576132526131ee565b604052919050565b805160068110613268575f80fd5b919050565b5f6001600160401b03821115613285576132856131ee565b50601f01601f191660200190565b5f5b838110156132ad578181015183820152602001613295565b50505f910152565b5f82601f8301126132c4575f80fd5b81516132d76132d28261326d565b61322a565b8181528460208386010111156132eb575f80fd5b6112f7826020830160208701613293565b805161326881613037565b5f60208284031215613317575f80fd5b81516001600160401b038082111561332d575f80fd5b9083019060e08286031215613340575f80fd5b613348613202565b6133518361325a565b8152602083015182811115613364575f80fd5b613370878286016132b5565b602083015250613382604084016132fc565b6040820152613393606084016132fc565b60608201526133a4608084016132fc565b60808201526133b560a084016132fc565b60a08201526133c660c084016132fc565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106133fc576133fc6133d4565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f8261343057634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761046457610464613402565b5f806040838503121561345d575f80fd5b8235915060208301356001600160401b03811115613479575f80fd5b8301601f81018513613489575f80fd5b80356134976132d28261326d565b8181528660208385010111156134ab575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156134da575f80fd5b81516116b881613066565b6001600160401b0382811682821603908082111561290a5761290a613402565b80151581146101ca575f80fd5b5f805f8060808587031215613525575f80fd5b845161353081613505565b602086015190945061354181613505565b604086015190935061355281612fe1565b606086015190925061356381613066565b939692955090935050565b60208101600483106133fc576133fc6133d4565b5f60208284031215613592575f80fd5b81516001600160401b038111156135a7575f80fd5b6112f7848285016132b5565b5f81518084526135ca816020860160208601613293565b601f01601f19169290920160200192915050565b602081525f6116b860208301846135b3565b5f60208284031215613600575f80fd5b5051919050565b803561ffff81168114613268575f80fd5b5f60408284031215613628575f80fd5b604051604081018181106001600160401b038211171561364a5761364a6131ee565b60405261365683613607565b8152602083013561366681613037565b60208201529392505050565b5f8060408385031215613683575f80fd5b82516001600160401b0380821115613699575f80fd5b90840190606082870312156136ac575f80fd5b6040516060810181811083821117156136c7576136c76131ee565b6040528251815260208301516136dc81613066565b60208201526040830151828111156136f2575f80fd5b6136fe888286016132b5565b604083015250809450505050602083015161301581613505565b5f8060408385031215613729575f80fd5b82519150602083015161301581613037565b6001600160401b0381811683821601908082111561290a5761290a613402565b6001600160401b0381811683821602808216919082811461377e5761377e613402565b505092915050565b5f60808284031215613796575f80fd5b604051608081018181106001600160401b03821117156137b8576137b86131ee565b60405282356137c681613505565b815260208301356137d681613505565b602082015260408301356137e981612fe1565b604082015260608301356137fc81613066565b60608201529392505050565b8082018082111561046457610464613402565b5f805f6060848603121561382d575f80fd5b83519250602084015161383f81613037565b604085015190925061385081613037565b809150509250925092565b5f6020828403121561386b575f80fd5b81516116b881613037565b5f60208284031215613886575f80fd5b81356116b881613066565b5f602082840312156138a1575f80fd5b6116b882613607565b5f602082840312156138ba575f80fd5b813560ff811681146116b8575f80fd5b8181038181111561046457610464613402565b5f602082840312156138ed575f80fd5b81516116b881613505565b5f8251613909818460208701613293565b919091019291505056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00a26469706673582212207041196227278470b83e2d327ab4c274f2302ba3f5427b80e99a7c2178640faf64736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -707,25 +707,25 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Hand return _ERC20TokenStakingManager.Contract.HandleInitializeEndValidation(&_ERC20TokenStakingManager.TransactOpts, validationID, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _ERC20TokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, validationID, sender, weight, args) } // HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 8ab728dfd..57b1d05ab 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -76,8 +76,8 @@ type ValidatorMessagesValidationPeriod 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\":\"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\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b506040516136c63803806136c683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6135798061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610131575f3560e01c80638ef34c98116100b4578063b771b3bc11610079578063b771b3bc14610295578063ba3a4b97146102a3578063bddb5a14146102b6578063effb55b4146102c9578063f7795a8c146102dc578063fb8b11dd146102ef575f80fd5b80638ef34c981461023557806393e245981461024857806398d9fa7c1461025b578063a9778a7a146101e0578063afb980961461026e575f80fd5b8063329c3e12116100fa578063329c3e12146101ba57806335455ded146101e057806356ab447d146101fc578063620658561461020d578063732214f81461022e575f80fd5b80624050c8146101355780630d4363171461014a578063151d30d11461015d57806325e1c7761461017c5780632e2194d81461018f575b5f80fd5b610148610143366004612c8a565b610302565b005b610148610158366004612ce1565b610338565b610165600a81565b60405160ff90911681526020015b60405180910390f35b61014861018a366004612d09565b61041a565b6101a261019d366004612d37565b610503565b6040516001600160401b039091168152602001610173565b6101c86001600160991b0181565b6040516001600160a01b039091168152602001610173565b6101e961271081565b60405161ffff9091168152602001610173565b61014861020a366004612d37565b50565b61022061021b366004612d4e565b610557565b604051908152602001610173565b6102205f81565b610148610243366004612d7d565b610577565b610148610256366004612d37565b610657565b610148610269366004612da0565b610755565b6102207f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101c86005600160991b0181565b6101486102b1366004612d37565b6108c7565b6101486102c4366004612e0d565b610b91565b6101486102d7366004612e0d565b610be9565b6101486102ea366004612d37565b610c4a565b6101486102fd366004612d7d565b610c53565b5f61030c84610557565b90505f61031b83850185612ed6565b90506103308683835f01518460200151610d1a565b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610381575080546001600160401b03808416911610155b1561039f5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556103c983610e51565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61042382610e62565b610448576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f610451610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610495573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104bc9190810190612fd8565b51905060028160058111156104d3576104d36130a5565b146104f3578060405163170cc93360e21b815260040161043f91906130b9565b6104fd8383610eaf565b50505050565b5f8061050d610e8b565b6004015461051b90846130e7565b905080158061053057506001600160401b0381115b156105515760405163222d164360e21b81526004810184905260240161043f565b92915050565b5f610560610e8b565b60040154610551906001600160401b038416613106565b5f610580610e8b565b90506001600160a01b0382166105b45760405163caa903f960e01b81526001600160a01b038316600482015260240161043f565b5f8381526007820160205260409020546001600160a01b031633146105fa57335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161043f565b336001600160a01b03831603610629575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f610660610e8b565b90505f61066b610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156106af573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106d69190810190612fd8565b51905060048160058111156106ed576106ed6130a5565b1461070d578060405163170cc93360e21b815260040161043f91906130b9565b5f8381526007830160205260409020546001600160a01b0316331461073257336105d5565b5f838152600783016020526040902054610652906001600160a01b03168461114e565b5f806107638385018561311d565b90925090505f610771610e8b565b5f848152600891909101602052604090205460ff166003811115610797576107976130a5565b03610854575f818060200190518101906107b1919061319b565b90505f876107bd610e8b565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610801573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108289190810190612fd8565b6080015161083691906131b6565b905061084c89888461084785610557565b611178565b5050506108bd565b5f805f808480602001905181019061086c91906131e3565b93509350935093505f6108828a8886868661141d565b9050841561089657505050505050506108c0565b806108b757604051631036cf9160e11b81526004810188905260240161043f565b50505050505b50505b5050505050565b5f6108d0610e8b565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115610909576109096130a5565b600381111561091a5761091a6130a5565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115610993576109936130a5565b141580156109b457506003815160038111156109b1576109b16130a5565b14155b156109d5578051604051633b0d540d60e21b815261043f919060040161323f565b5f6109de610e8b565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691610a139160040190815260200190565b5f60405180830381865afa158015610a2d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a549190810190612fd8565b905080606001516001600160401b03165f03610a86576040516339b894f960e21b81526004810185905260240161043f565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610af493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610b0e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b359190810190613253565b6040518263ffffffff1660e01b8152600401610b5191906132af565b6020604051808303815f875af1158015610b6d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c091906132c1565b5f610b9c8383611789565b90505f610bb7858360200151846040015185606001516117bf565b825190915015610bc8575050505050565b806108c057604051635bff683f60e11b81526004810186905260240161043f565b5f80610bf783850185612d09565b90925090506001610c06610e8b565b5f848152600891909101602052604090205460ff166003811115610c2c57610c2c6130a5565b03610c4057610c3b8282611a4b565b6108c0565b6108c08282611d7a565b61020a81612038565b6001600160a01b038116610c855760405163caa903f960e01b81526001600160a01b038216600482015260240161043f565b5f610c8e610e8b565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610cbc57336105d5565b336001600160a01b03831603610ceb575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f610d23610e8b565b600381015490915061ffff600160401b90910481169084161080610d4c575061271061ffff8416115b15610d7057604051635f12e6c360e11b815261ffff8416600482015260240161043f565b60038101546001600160401b039081169083161015610dac576040516202a06d60e11b81526001600160401b038316600482015260240161043f565b8060010154841080610dc15750806002015484115b15610de25760405163222d164360e21b81526004810185905260240161043f565b5f948552600701602052604090932080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b03949094169390930292909217825550600101805467ffffffffffffffff19169055565b610e5961215a565b61020a816121a5565b5f80610e6c610e8b565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610efa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f2191908101906132d8565b9150915080610f4357604051636b2f19e960e01b815260040160405180910390fd5b5f610f4c610e8b565b6006810154845191925014610f7a578251604051636ba589a560e01b8152600481019190915260240161043f565b60208301516001600160a01b031615610fb6576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b60208301516001600160a01b031615610ff2576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b815260040161102f91906132af565b6040805180830381865af4158015611049573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106d919061337e565b915091508188146110945760405163089938b360e11b81526004810189905260240161043f565b5f8881526007840160205260409020600101546001600160401b039081169082161115611125575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611143565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f611157610e8b565b5f838152600b82016020526040812080549190559091506104fd8482612220565b5f80611182610e8b565b90505f61118e84610503565b90505f611199610e8b565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156111dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112049190810190612fd8565b905061120f88610e62565b61122f576040516330efa98b60e01b81526004810189905260240161043f565b600281516005811115611244576112446130a5565b1461126557805160405163170cc93360e21b815261043f91906004016130b9565b5f82826080015161127691906133a1565b905083600301600a9054906101000a90046001600160401b0316826040015161129f91906133c1565b6001600160401b0316816001600160401b031611156112dc57604051636d51fe0560e11b81526001600160401b038216600482015260240161043f565b5f898960405160200161130692919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b90611406908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f80611427610e8b565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611460576114606130a5565b6003811115611471576114716130a5565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6114e6610e8b565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115519190810190612fd8565b9050600283516003811115611568576115686130a5565b14611589578251604051633b0d540d60e21b815261043f919060040161323f565b60208301516001600160a01b03163314611625575f8281526007850160205260409020546001600160a01b031633146115c257336105d5565b5f82815260078501602052604090205460a08201516115f191600160b01b90046001600160401b0316906133a1565b6001600160401b03164210156116255760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b60028151600581111561163a5761163a6130a5565b03611728576003840154608084015161165c916001600160401b0316906133a1565b6001600160401b03164210156116905760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b87156116a2576116a08288610eaf565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b039091161790556116ea84888c61227e565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506117809350505050565b60048151600581111561173d5761173d6130a5565b036117645761174d83878b61227e565b50611757896124d4565b6001945050505050611780565b805160405163170cc93360e21b815261043f91906004016130b9565b95945050505050565b604080516080810182525f8082526020820181905291810182905260608101919091526117b8828401846133ec565b9392505050565b5f806117c9610e8b565b90505f6117d4610e8b565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611818573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261183f9190810190612fd8565b905061184a87610e62565b61185957600192505050611415565b5f8781526007830160205260409020546001600160a01b0316331461187e57336105d5565b5f87815260078301602052604090205460a08201516118ad91600160b01b90046001600160401b0316906133a1565b6001600160401b03168160c001516001600160401b031610156118f45760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161043f565b5f861561190c576119058887610eaf565b905061192a565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f9061194f90610557565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156119b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dc91906132c1565b90508084600b015f8b81526020019081526020015f205f828254611a00919061346e565b90915550506001600160a01b03861615611a3d575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611a54610e8b565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a8d57611a8d6130a5565b6003811115611a9e57611a9e6130a5565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b13610e8b565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b57573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b7e9190810190612fd8565b9050600183516003811115611b9557611b956130a5565b14611bb6578251604051633b0d540d60e21b815261043f919060040161323f565b600481516005811115611bcb57611bcb6130a5565b03611bd957610330866124d4565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611bfe89612718565b604001516040518263ffffffff1660e01b8152600401611c1e91906132af565b606060405180830381865af4158015611c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5d9190613481565b5091509150818414611c8a57846040015160405163089938b360e11b815260040161043f91815260200190565b806001600160401b031683606001516001600160401b03161080611cc35750806001600160401b03168560a001516001600160401b0316115b15611cec57604051632e19bc2d60e11b81526001600160401b038216600482015260240161043f565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611d8261282e565b5f611d8b610e8b565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611dc457611dc46130a5565b6003811115611dd557611dd56130a5565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e4e57611e4e6130a5565b14611e6f578051604051633b0d540d60e21b815261043f919060040161323f565b6004611e79610e8b565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611eae9160040190815260200190565b5f60405180830381865afa158015611ec8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611eef9190810190612fd8565b516005811115611f0157611f016130a5565b14612000575f611f1084612718565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f4f91906132af565b606060405180830381865af4158015611f6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8e9190613481565b509150915081846040015114611fba5760405163089938b360e11b81526004810183905260240161043f565b806001600160401b03168460c001516001600160401b03161115611ffc57604051632e19bc2d60e11b81526001600160401b038216600482015260240161043f565b5050505b612009846124d4565b505061203460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b5f612041610e8b565b90505f61204c610e8b565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015612090573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120b79190810190612fd8565b90506120c283610e62565b6120cb57505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612102575080612120565b5f858152600c85016020526040902080546001600160a01b03191690555b600483516005811115612135576121356130a5565b0361214457612144818661114e565b6108c0826121558560400151610557565b61289e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166121a357604051631afcd79f60e31b815260040160405180910390fd5b565b6121ad61215a565b6121b56128b1565b61020a6121c560208301836134c1565b602083013560408401356121df6080860160608701612d4e565b6121ef60a08701608088016134dc565b6121ff60c0880160a089016134f5565b60c08801356122156101008a0160e08b016134c1565b8961010001356128c1565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b15801561226c575f80fd5b505af1158015610330573d5f803e3d5ffd5b5f80612288610e8b565b90505f612293610e8b565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916122c89160040190815260200190565b5f60405180830381865afa1580156122e2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123099190810190612fd8565b90505f600382516005811115612321576123216130a5565b148061233f575060048251600581111561233d5761233d6130a5565b145b1561234f575060c081015161238c565b600282516005811115612364576123646130a5565b0361237057504261238c565b815160405163170cc93360e21b815261043f91906004016130b9565b86608001516001600160401b0316816001600160401b0316116123b4575f93505050506117b8565b600583015460608801515f916001600160a01b031690634f22429f906123d990610557565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561245a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247e91906132c1565b5f878152600986016020526040902081905590506001600160a01b03871615611143575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f6124dd610e8b565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115612516576125166130a5565b6003811115612527576125276130a5565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa1580156125d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fb9190613515565b826080015161260a91906133a1565b6001600160401b031642101561263e5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161043f565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b03168061268e575060208201516126ac565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806126b9838886612aea565b915091506126d285602001516121558760600151610557565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561277c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127a391908101906132d8565b91509150806127c557604051636b2f19e960e01b815260040160405180910390fd5b8151156127eb578151604051636ba589a560e01b8152600481019190915260240161043f565b60208201516001600160a01b031615612827576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161043f565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161287257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6120346001600160a01b03831682612b97565b6128b961215a565b6121a3612c2a565b6128c961215a565b5f6128d2610e8b565b905061ffff861615806128ea575061271061ffff8716115b1561290e57604051635f12e6c360e11b815261ffff8716600482015260240161043f565b878911156129325760405163222d164360e21b8152600481018a905260240161043f565b60ff851615806129455750600a60ff8616115b156129685760405163170db35960e31b815260ff8616600482015260240161043f565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c89190613515565b6001600160401b0316876001600160401b03161015612a04576040516202a06d60e11b81526001600160401b038816600482015260240161043f565b835f03612a245760405163a733007160e01b815260040160405180910390fd5b81612a4557604051632f6bd1db60e01b81526004810183905260240161043f565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f805f612af5610e8b565b5f86815260098201602052604081208054908290559192509081908015612b89575f87815260078501602052604090205461271090612b3f90600160a01b900461ffff1683613106565b612b4991906130e7565b91508184600b015f8981526020019081526020015f205f828254612b6d919061346e565b90915550612b7d90508282613530565b9250612b898984612220565b509097909650945050505050565b80471015612bba5760405163cd78605960e01b815230600482015260240161043f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612c03576040519150601f19603f3d011682016040523d82523d5f602084013e612c08565b606091505b505090508061065257604051630a12f52160e11b815260040160405180910390fd5b61287861215a565b6001600160401b038116811461020a575f80fd5b5f8083601f840112612c56575f80fd5b5081356001600160401b03811115612c6c575f80fd5b602083019150836020828501011115612c83575f80fd5b9250929050565b5f805f8060608587031215612c9d575f80fd5b843593506020850135612caf81612c32565b925060408501356001600160401b03811115612cc9575f80fd5b612cd587828801612c46565b95989497509550505050565b5f6101208284031215612cf2575f80fd5b50919050565b63ffffffff8116811461020a575f80fd5b5f8060408385031215612d1a575f80fd5b823591506020830135612d2c81612cf8565b809150509250929050565b5f60208284031215612d47575f80fd5b5035919050565b5f60208284031215612d5e575f80fd5b81356117b881612c32565b6001600160a01b038116811461020a575f80fd5b5f8060408385031215612d8e575f80fd5b823591506020830135612d2c81612d69565b5f805f805f60808688031215612db4575f80fd5b853594506020860135612dc681612c32565b93506040860135612dd681612c32565b925060608601356001600160401b03811115612df0575f80fd5b612dfc88828901612c46565b969995985093965092949392505050565b5f805f60408486031215612e1f575f80fd5b8335925060208401356001600160401b03811115612e3b575f80fd5b612e4786828701612c46565b9497909650939450505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715612e8a57612e8a612e54565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612eb857612eb8612e54565b604052919050565b803561ffff81168114612ed1575f80fd5b919050565b5f60408284031215612ee6575f80fd5b604051604081018181106001600160401b0382111715612f0857612f08612e54565b604052612f1483612ec0565b81526020830135612f2481612c32565b60208201529392505050565b805160068110612ed1575f80fd5b5f6001600160401b03821115612f5657612f56612e54565b50601f01601f191660200190565b5f5b83811015612f7e578181015183820152602001612f66565b50505f910152565b5f82601f830112612f95575f80fd5b8151612fa8612fa382612f3e565b612e90565b818152846020838601011115612fbc575f80fd5b611415826020830160208701612f64565b8051612ed181612c32565b5f60208284031215612fe8575f80fd5b81516001600160401b0380821115612ffe575f80fd5b9083019060e08286031215613011575f80fd5b613019612e68565b61302283612f30565b8152602083015182811115613035575f80fd5b61304187828601612f86565b60208301525061305360408401612fcd565b604082015261306460608401612fcd565b606082015261307560808401612fcd565b608082015261308660a08401612fcd565b60a082015261309760c08401612fcd565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106130cd576130cd6130a5565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f8261310157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610551576105516130d3565b5f806040838503121561312e575f80fd5b8235915060208301356001600160401b0381111561314a575f80fd5b8301601f8101851361315a575f80fd5b8035613168612fa382612f3e565b81815286602083850101111561317c575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156131ab575f80fd5b81516117b881612d69565b6001600160401b03828116828216039080821115612827576128276130d3565b801515811461020a575f80fd5b5f805f80608085870312156131f6575f80fd5b8451613201816131d6565b6020860151909450613212816131d6565b604086015190935061322381612cf8565b606086015190925061323481612d69565b939692955090935050565b60208101600483106130cd576130cd6130a5565b5f60208284031215613263575f80fd5b81516001600160401b03811115613278575f80fd5b61141584828501612f86565b5f815180845261329b816020860160208601612f64565b601f01601f19169290920160200192915050565b602081525f6117b86020830184613284565b5f602082840312156132d1575f80fd5b5051919050565b5f80604083850312156132e9575f80fd5b82516001600160401b03808211156132ff575f80fd5b9084019060608287031215613312575f80fd5b60405160608101818110838211171561332d5761332d612e54565b60405282518152602083015161334281612d69565b6020820152604083015182811115613358575f80fd5b61336488828601612f86565b6040830152508094505050506020830151612d2c816131d6565b5f806040838503121561338f575f80fd5b825191506020830151612d2c81612c32565b6001600160401b03818116838216019080821115612827576128276130d3565b6001600160401b038181168382160280821691908281146133e4576133e46130d3565b505092915050565b5f608082840312156133fc575f80fd5b604051608081018181106001600160401b038211171561341e5761341e612e54565b604052823561342c816131d6565b8152602083013561343c816131d6565b6020820152604083013561344f81612cf8565b6040820152606083013561346281612d69565b60608201529392505050565b80820180821115610551576105516130d3565b5f805f60608486031215613493575f80fd5b8351925060208401516134a581612c32565b60408501519092506134b681612c32565b809150509250925092565b5f602082840312156134d1575f80fd5b81356117b881612d69565b5f602082840312156134ec575f80fd5b6117b882612ec0565b5f60208284031215613505575f80fd5b813560ff811681146117b8575f80fd5b5f60208284031215613525575f80fd5b81516117b881612c32565b81810381811115610551576105516130d356fea2646970667358221220950d1ff047a8bb5ef96dbff5d05283e1e4e5a54c8040e48278e1f45ac026a17764736f6c63430008190033", + 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\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIValidatorManager\",\"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\":\"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: "0x608060405234801561000f575f80fd5b5060405161369838038061369883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61354b8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c806393e24598116100b4578063ba3a4b9711610079578063ba3a4b9714610291578063bddb5a14146102a4578063d8761f4c146102b7578063effb55b4146102ca578063f7795a8c146102dd578063fb8b11dd146102f0575f80fd5b806393e245981461023657806398d9fa7c14610249578063a9778a7a146101ce578063afb980961461025c578063b771b3bc14610283575f80fd5b806335455ded116100fa57806335455ded146101ce57806356ab447d146101ea57806362065856146101fb578063732214f81461021c5780638ef34c9814610223575f80fd5b80630d43631714610136578063151d30d11461014b57806325e1c7761461016a5780632e2194d81461017d578063329c3e12146101a8575b5f80fd5b610149610144366004612c35565b610303565b005b610153600a81565b60405160ff90911681526020015b60405180910390f35b610149610178366004612c5d565b6103e5565b61019061018b366004612c8b565b6104ce565b6040516001600160401b039091168152602001610161565b6101b66001600160991b0181565b6040516001600160a01b039091168152602001610161565b6101d761271081565b60405161ffff9091168152602001610161565b6101496101f8366004612c8b565b50565b61020e610209366004612cb6565b610522565b604051908152602001610161565b61020e5f81565b610149610231366004612ce5565b610542565b610149610244366004612c8b565b610622565b610149610257366004612d4c565b610720565b61020e7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6101b66005600160991b0181565b61014961029f366004612c8b565b610892565b6101496102b2366004612db9565b610b5c565b6101496102c5366004612e00565b610bb4565b6101496102d8366004612db9565b610be3565b6101496102eb366004612c8b565b610c44565b6101496102fe366004612ce5565b610c4d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061034c575080546001600160401b03808416911610155b1561036a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561039483610d14565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6103ee82610d25565b610413576040516330efa98b60e01b8152600481018390526024015b60405180910390fd5b5f61041c610d4e565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015610460573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104879190810190612f3f565b519050600281600581111561049e5761049e61300c565b146104be578060405163170cc93360e21b815260040161040a9190613020565b6104c88383610d72565b50505050565b5f806104d8610d4e565b600401546104e6908461304e565b90508015806104fb57506001600160401b0381115b1561051c5760405163222d164360e21b81526004810184905260240161040a565b92915050565b5f61052b610d4e565b6004015461051c906001600160401b03841661306d565b5f61054b610d4e565b90506001600160a01b03821661057f5760405163caa903f960e01b81526001600160a01b038316600482015260240161040a565b5f8381526007820160205260409020546001600160a01b031633146105c557335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161040a565b336001600160a01b038316036105f4575f928352600c01602052506040902080546001600160a01b0319169055565b5f838152600c82016020526040902080546001600160a01b0319166001600160a01b0384161790555b505050565b5f61062b610d4e565b90505f610636610d4e565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa15801561067a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106a19190810190612f3f565b51905060048160058111156106b8576106b861300c565b146106d8578060405163170cc93360e21b815260040161040a9190613020565b5f8381526007830160205260409020546001600160a01b031633146106fd57336105a0565b5f83815260078301602052604090205461061d906001600160a01b031684611011565b5f8061072e83850185613084565b90925090505f61073c610d4e565b5f848152600891909101602052604090205460ff1660038111156107625761076261300c565b0361081f575f8180602001905181019061077c9190613102565b90505f87610788610d4e565b54604051636af907fb60e11b8152600481018c90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156107cc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107f39190810190612f3f565b60800151610801919061311d565b905061081789888461081285610522565b61103b565b505050610888565b5f805f8084806020019051810190610837919061314a565b93509350935093505f61084d8a888686866112e0565b90508415610861575050505050505061088b565b8061088257604051631036cf9160e11b81526004810188905260240161040a565b50505050505b50505b5050505050565b5f61089b610d4e565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156108d4576108d461300c565b60038111156108e5576108e561300c565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529091508151600381111561095e5761095e61300c565b1415801561097f575060038151600381111561097c5761097c61300c565b14155b156109a0578051604051633b0d540d60e21b815261040a91906004016131a6565b5f6109a9610d4e565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916109de9160040190815260200190565b5f60405180830381865afa1580156109f8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a1f9190810190612f3f565b905080606001516001600160401b03165f03610a51576040516339b894f960e21b81526004810185905260240161040a565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93610abf93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015610ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0091908101906131ba565b6040518263ffffffff1660e01b8152600401610b1c9190613216565b6020604051808303815f875af1158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088b9190613228565b5f610b67838361164c565b90505f610b8285836020015184604001518560600151611682565b825190915015610b93575050505050565b8061088b57604051635bff683f60e11b81526004810186905260240161040a565b5f610bbe84610522565b90505f610bcd83850185613250565b9050610888878784845f0151856020015161190e565b5f80610bf183850185612c5d565b90925090506001610c00610d4e565b5f848152600891909101602052604090205460ff166003811115610c2657610c2661300c565b03610c3a57610c358282611a46565b61088b565b61088b8282611d7d565b6101f88161203b565b6001600160a01b038116610c7f5760405163caa903f960e01b81526001600160a01b038216600482015260240161040a565b5f610c88610d4e565b5f8481526008820160205260409020549091506001600160a01b03610100909104163314610cb657336105a0565b336001600160a01b03831603610ce5575f928352600a01602052506040902080546001600160a01b0319169055565b5f838152600a82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b610d1c61215d565b6101f8816121a8565b5f80610d2f610d4e565b5f938452600701602052505060409020546001600160a01b0316151590565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015610dbd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610de491908101906132aa565b9150915080610e0657604051636b2f19e960e01b815260040160405180910390fd5b5f610e0f610d4e565b6006810154845191925014610e3d578251604051636ba589a560e01b8152600481019190915260240161040a565b60208301516001600160a01b031615610e79576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161040a565b60208301516001600160a01b031615610eb5576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161040a565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401610ef29190613216565b6040805180830381865af4158015610f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f309190613350565b91509150818814610f575760405163089938b360e11b81526004810189905260240161040a565b5f8881526007840160205260409020600101546001600160401b039081169082161115610fe8575f888152600784016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2611006565b505f8781526007830160205260409020600101546001600160401b03165b979650505050505050565b5f61101a610d4e565b5f838152600b82016020526040812080549190559091506104c88482612223565b5f80611045610d4e565b90505f611051846104ce565b90505f61105c610d4e565b54604051636af907fb60e11b8152600481018a90526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156110a0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110c79190810190612f3f565b90506110d288610d25565b6110f2576040516330efa98b60e01b81526004810189905260240161040a565b6002815160058111156111075761110761300c565b1461112857805160405163170cc93360e21b815261040a9190600401613020565b5f8282608001516111399190613373565b905083600301600a9054906101000a90046001600160401b031682604001516111629190613393565b6001600160401b0316816001600160401b0316111561119f57604051636d51fe0560e11b81526001600160401b038216600482015260240161040a565b5f89896040516020016111c992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f818152600889019093529120805491925060019160ff1916828002179055505f8181526008860160205260409081902080546001600160a01b038b166101008102610100600160a81b0319909216919091178255600182018d9055600290910180546001600160c01b036001600160401b038e8116600160801b026001600160c01b0319909316908a16179190911716905590518b9083907feea0c6dd7e326ed588ce418df1563a24af963b7a54714ba659fab8152435795b906112c9908e9088908b906001600160401b0393841681529183166020830152909116604082015260600190565b60405180910390a49450505050505b949350505050565b5f806112ea610d4e565b5f878152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156113235761132361300c565b60038111156113345761133461300c565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6113a9610d4e565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156113ed573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114149190810190612f3f565b905060028351600381111561142b5761142b61300c565b1461144c578251604051633b0d540d60e21b815261040a91906004016131a6565b60208301516001600160a01b031633146114e8575f8281526007850160205260409020546001600160a01b0316331461148557336105a0565b5f82815260078501602052604090205460a08201516114b491600160b01b90046001600160401b031690613373565b6001600160401b03164210156114e85760405163fb6ce63f60e01b81526001600160401b034216600482015260240161040a565b6002815160058111156114fd576114fd61300c565b036115eb576003840154608084015161151f916001600160401b031690613373565b6001600160401b03164210156115535760405163fb6ce63f60e01b81526001600160401b034216600482015260240161040a565b8715611565576115638288610d72565b505b5f8981526008850160205260408120805460ff1916600317815560020180546001600160401b038d16600160c01b026001600160c01b039091161790556115ad84888c612281565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506116439350505050565b6004815160058111156116005761160061300c565b036116275761161083878b612281565b5061161a896124d7565b6001945050505050611643565b805160405163170cc93360e21b815261040a9190600401613020565b95945050505050565b604080516080810182525f80825260208201819052918101829052606081019190915261167b828401846133be565b9392505050565b5f8061168c610d4e565b90505f611697610d4e565b54604051636af907fb60e11b8152600481018990526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa1580156116db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117029190810190612f3f565b905061170d87610d25565b61171c576001925050506112d8565b5f8781526007830160205260409020546001600160a01b0316331461174157336105a0565b5f87815260078301602052604090205460a082015161177091600160b01b90046001600160401b031690613373565b6001600160401b03168160c001516001600160401b031610156117b75760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161040a565b5f86156117cf576117c88887610d72565b90506117ed565b505f8781526007830160205260409020600101546001600160401b03165b600583015460408301515f916001600160a01b031690634f22429f9061181290610522565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561187b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189f9190613228565b90508084600b015f8b81526020019081526020015f205f8282546118c39190613440565b90915550506001600160a01b03861615611900575f898152600c85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f611917610d4e565b600381015490915061ffff600160401b90910481169084161080611940575061271061ffff8416115b1561196457604051635f12e6c360e11b815261ffff8416600482015260240161040a565b60038101546001600160401b0390811690831610156119a0576040516202a06d60e11b81526001600160401b038316600482015260240161040a565b80600101548410806119b55750806002015484115b156119d65760405163222d164360e21b81526004810185905260240161040a565b5f958652600701602052604090942080546001600160b01b0319163317600160a01b61ffff93909316929092029190911767ffffffffffffffff60b01b1916600160b01b6001600160401b0395909516949094029390931783555050600101805467ffffffffffffffff19169055565b5f611a4f610d4e565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a8857611a8861300c565b6003811115611a9957611a9961300c565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611b0e610d4e565b54604051636af907fb60e11b8152600481018490526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015611b52573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b799190810190612f3f565b9050600183516003811115611b9057611b9061300c565b14611bb1578251604051633b0d540d60e21b815261040a91906004016131a6565b600481516005811115611bc657611bc661300c565b03611bdc57611bd4866124d7565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611c018961271b565b604001516040518263ffffffff1660e01b8152600401611c219190613216565b606060405180830381865af4158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613453565b5091509150818414611c8d57846040015160405163089938b360e11b815260040161040a91815260200190565b806001600160401b031683606001516001600160401b03161080611cc65750806001600160401b03168560a001516001600160401b0316115b15611cef57604051632e19bc2d60e11b81526001600160401b038216600482015260240161040a565b5f888152600887016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b611d85612831565b5f611d8e610d4e565b5f848152600882016020526040808220815160e0810190925280549394509192909190829060ff166003811115611dc757611dc761300c565b6003811115611dd857611dd861300c565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611e5157611e5161300c565b14611e72578051604051633b0d540d60e21b815261040a91906004016131a6565b6004611e7c610d4e565b546040808401519051636af907fb60e11b81526001600160a01b039092169163d5f20ff691611eb19160040190815260200190565b5f60405180830381865afa158015611ecb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ef29190810190612f3f565b516005811115611f0457611f0461300c565b14612003575f611f138461271b565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611f529190613216565b606060405180830381865af4158015611f6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f919190613453565b509150915081846040015114611fbd5760405163089938b360e11b81526004810183905260240161040a565b806001600160401b03168460c001516001600160401b03161115611fff57604051632e19bc2d60e11b81526001600160401b038216600482015260240161040a565b5050505b61200c846124d7565b505061203760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b5f612044610d4e565b90505f61204f610d4e565b54604051636af907fb60e11b8152600481018590526001600160a01b039091169063d5f20ff6906024015f60405180830381865afa158015612093573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120ba9190810190612f3f565b90506120c583610d25565b6120ce57505050565b5f838152600783016020908152604080832054600c8601909252909120546001600160a01b03918216911680612105575080612123565b5f858152600c85016020526040902080546001600160a01b03191690555b6004835160058111156121385761213861300c565b03612147576121478186611011565b61088b826121588560400151610522565b6128a1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166121a657604051631afcd79f60e31b815260040160405180910390fd5b565b6121b061215d565b6121b86128b4565b6101f86121c86020830183613493565b602083013560408401356121e26080860160608701612cb6565b6121f260a08701608088016134ae565b61220260c0880160a089016134c7565b60c08801356122186101008a0160e08b01613493565b8961010001356128c4565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b15801561226f575f80fd5b505af1158015611bd4573d5f803e3d5ffd5b5f8061228b610d4e565b90505f612296610d4e565b546040808801519051636af907fb60e11b81526001600160a01b039092169163d5f20ff6916122cb9160040190815260200190565b5f60405180830381865afa1580156122e5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261230c9190810190612f3f565b90505f6003825160058111156123245761232461300c565b148061234257506004825160058111156123405761234061300c565b145b15612352575060c081015161238f565b6002825160058111156123675761236761300c565b0361237357504261238f565b815160405163170cc93360e21b815261040a9190600401613020565b86608001516001600160401b0316816001600160401b0316116123b7575f935050505061167b565b600583015460608801515f916001600160a01b031690634f22429f906123dc90610522565b60a086015160808c01516040808e01515f90815260078b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561245d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124819190613228565b5f878152600986016020526040902081905590506001600160a01b03871615611006575f868152600a85016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b5f6124e0610d4e565b5f838152600882016020526040808220815160e0810190925280549394509192909190829060ff1660038111156125195761251961300c565b600381111561252a5761252a61300c565b815281546001600160a01b03610100909104811660208084019190915260018401546040808501919091526002909401546001600160401b038082166060860152600160401b820481166080860152600160801b8204811660a0860152600160c01b9091041660c09093019290925283830151865484516304e0efb360e11b8152945195965090949116926309c1df669260048083019391928290030181865afa1580156125da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fe91906134e7565b826080015161260d9190613373565b6001600160401b03164210156126415760405163fb6ce63f60e01b81526001600160401b034216600482015260240161040a565b5f848152600884016020908152604080832080546001600160a81b031916815560018101849055600201839055600a86019091529020546001600160a01b031680612691575060208201516126af565b5f858152600a85016020526040902080546001600160a01b03191690555b5f806126bc838886612aed565b915091506126d585602001516121588760600151610522565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561277f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127a691908101906132aa565b91509150806127c857604051636b2f19e960e01b815260040160405180910390fd5b8151156127ee578151604051636ba589a560e01b8152600481019190915260240161040a565b60208201516001600160a01b03161561282a576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161040a565b5092915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161287557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6120376001600160a01b03831682612b9a565b6128bc61215d565b6121a6612c2d565b6128cc61215d565b5f6128d5610d4e565b905061ffff861615806128ed575061271061ffff8716115b1561291157604051635f12e6c360e11b815261ffff8716600482015260240161040a565b878911156129355760405163222d164360e21b8152600481018a905260240161040a565b60ff851615806129485750600a60ff8616115b1561296b5760405163170db35960e31b815260ff8616600482015260240161040a565b896001600160a01b03166309c1df666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129cb91906134e7565b6001600160401b0316876001600160401b03161015612a07576040516202a06d60e11b81526001600160401b038816600482015260240161040a565b835f03612a275760405163a733007160e01b815260040160405180910390fd5b81612a4857604051632f6bd1db60e01b81526004810183905260240161040a565b80546001600160a01b039a8b166001600160a01b031991821617825560018201999099556002810197909755600387018054600160501b60ff9096169590950267ffffffffffffffff60501b1961ffff909716600160401b0269ffffffffffffffffffff199096166001600160401b03909816979097179490941794909416949094179091556004840155600583018054929095169190931617909255600690910155565b5f805f612af8610d4e565b5f86815260098201602052604081208054908290559192509081908015612b8c575f87815260078501602052604090205461271090612b4290600160a01b900461ffff168361306d565b612b4c919061304e565b91508184600b015f8981526020019081526020015f205f828254612b709190613440565b90915550612b8090508282613502565b9250612b8c8984612223565b509097909650945050505050565b80471015612bbd5760405163cd78605960e01b815230600482015260240161040a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612c06576040519150601f19603f3d011682016040523d82523d5f602084013e612c0b565b606091505b505090508061061d57604051630a12f52160e11b815260040160405180910390fd5b61287b61215d565b5f6101208284031215612c46575f80fd5b50919050565b63ffffffff811681146101f8575f80fd5b5f8060408385031215612c6e575f80fd5b823591506020830135612c8081612c4c565b809150509250929050565b5f60208284031215612c9b575f80fd5b5035919050565b6001600160401b03811681146101f8575f80fd5b5f60208284031215612cc6575f80fd5b813561167b81612ca2565b6001600160a01b03811681146101f8575f80fd5b5f8060408385031215612cf6575f80fd5b823591506020830135612c8081612cd1565b5f8083601f840112612d18575f80fd5b5081356001600160401b03811115612d2e575f80fd5b602083019150836020828501011115612d45575f80fd5b9250929050565b5f805f805f60808688031215612d60575f80fd5b853594506020860135612d7281612ca2565b93506040860135612d8281612ca2565b925060608601356001600160401b03811115612d9c575f80fd5b612da888828901612d08565b969995985093965092949392505050565b5f805f60408486031215612dcb575f80fd5b8335925060208401356001600160401b03811115612de7575f80fd5b612df386828701612d08565b9497909650939450505050565b5f805f805f60808688031215612e14575f80fd5b853594506020860135612d7281612cd1565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715612e5c57612e5c612e26565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e8a57612e8a612e26565b604052919050565b805160068110612ea0575f80fd5b919050565b5f6001600160401b03821115612ebd57612ebd612e26565b50601f01601f191660200190565b5f5b83811015612ee5578181015183820152602001612ecd565b50505f910152565b5f82601f830112612efc575f80fd5b8151612f0f612f0a82612ea5565b612e62565b818152846020838601011115612f23575f80fd5b6112d8826020830160208701612ecb565b8051612ea081612ca2565b5f60208284031215612f4f575f80fd5b81516001600160401b0380821115612f65575f80fd5b9083019060e08286031215612f78575f80fd5b612f80612e3a565b612f8983612e92565b8152602083015182811115612f9c575f80fd5b612fa887828601612eed565b602083015250612fba60408401612f34565b6040820152612fcb60608401612f34565b6060820152612fdc60808401612f34565b6080820152612fed60a08401612f34565b60a0820152612ffe60c08401612f34565b60c082015295945050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600683106130345761303461300c565b91905290565b634e487b7160e01b5f52601160045260245ffd5b5f8261306857634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761051c5761051c61303a565b5f8060408385031215613095575f80fd5b8235915060208301356001600160401b038111156130b1575f80fd5b8301601f810185136130c1575f80fd5b80356130cf612f0a82612ea5565b8181528660208385010111156130e3575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215613112575f80fd5b815161167b81612cd1565b6001600160401b0382811682821603908082111561282a5761282a61303a565b80151581146101f8575f80fd5b5f805f806080858703121561315d575f80fd5b84516131688161313d565b60208601519094506131798161313d565b604086015190935061318a81612c4c565b606086015190925061319b81612cd1565b939692955090935050565b60208101600483106130345761303461300c565b5f602082840312156131ca575f80fd5b81516001600160401b038111156131df575f80fd5b6112d884828501612eed565b5f8151808452613202816020860160208601612ecb565b601f01601f19169290920160200192915050565b602081525f61167b60208301846131eb565b5f60208284031215613238575f80fd5b5051919050565b803561ffff81168114612ea0575f80fd5b5f60408284031215613260575f80fd5b604051604081018181106001600160401b038211171561328257613282612e26565b60405261328e8361323f565b8152602083013561329e81612ca2565b60208201529392505050565b5f80604083850312156132bb575f80fd5b82516001600160401b03808211156132d1575f80fd5b90840190606082870312156132e4575f80fd5b6040516060810181811083821117156132ff576132ff612e26565b60405282518152602083015161331481612cd1565b602082015260408301518281111561332a575f80fd5b61333688828601612eed565b6040830152508094505050506020830151612c808161313d565b5f8060408385031215613361575f80fd5b825191506020830151612c8081612ca2565b6001600160401b0381811683821601908082111561282a5761282a61303a565b6001600160401b038181168382160280821691908281146133b6576133b661303a565b505092915050565b5f608082840312156133ce575f80fd5b604051608081018181106001600160401b03821117156133f0576133f0612e26565b60405282356133fe8161313d565b8152602083013561340e8161313d565b6020820152604083013561342181612c4c565b6040820152606083013561343481612cd1565b60608201529392505050565b8082018082111561051c5761051c61303a565b5f805f60608486031215613465575f80fd5b83519250602084015161347781612ca2565b604085015190925061348881612ca2565b809150509250925092565b5f602082840312156134a3575f80fd5b813561167b81612cd1565b5f602082840312156134be575f80fd5b61167b8261323f565b5f602082840312156134d7575f80fd5b813560ff8116811461167b575f80fd5b5f602082840312156134f7575f80fd5b815161167b81612ca2565b8181038181111561051c5761051c61303a56fea2646970667358221220c26fd96c787caf5d11c9a9a7398a74cb0585a5d5ee098fb329f08cc18aad823164736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -676,25 +676,25 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Ha return _NativeTokenStakingManager.Contract.HandleInitializeEndValidation(&_NativeTokenStakingManager.TransactOpts, validationID, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _NativeTokenStakingManager.Contract.HandleInitializeValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, validationID, sender, weight, args) } // HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 568c4bfb5..6da65615d 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -63,8 +63,8 @@ type ValidatorMessagesValidationPeriod 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\":[],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"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: "0x608060405234801561000f575f80fd5b5060405161072238038061072283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6105d58061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061009a575f3560e01c8063bddb5a1411610063578063bddb5a1414610120578063c4d66de814610133578063effb55b414610120578063f2fde38b14610146578063f7795a8c146100b4575f80fd5b80624050c81461009e57806356ab447d146100b4578063715018a6146100c55780638da5cb5b146100cd57806398d9fa7c1461010b575b5f80fd5b6100b26100ac366004610453565b50505050565b005b6100b26100c23660046104a9565b50565b6100b2610159565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054604080516001600160a01b039092168252519081900360200190f35b6100b26101193660046104c0565b5050505050565b6100b261012e36600461052a565b505050565b6100b2610141366004610572565b61016c565b6100b2610154366004610572565b61027a565b6101616102b9565b61016a5f610314565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156101b15750825b90505f8267ffffffffffffffff1660011480156101cd5750303b155b9050811580156101db575080155b156101f95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561022357845460ff60401b1916600160401b1785555b61022c86610384565b831561027257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6102826102b9565b6001600160a01b0381166102b057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100c281610314565b336102eb7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461016a5760405163118cdaa760e01b81523360048201526024016102a7565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61038c610395565b6100c2816103de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661016a57604051631afcd79f60e31b815260040160405180910390fd5b6103e6610395565b6100c281610282610395565b803567ffffffffffffffff81168114610409575f80fd5b919050565b5f8083601f84011261041e575f80fd5b50813567ffffffffffffffff811115610435575f80fd5b60208301915083602082850101111561044c575f80fd5b9250929050565b5f805f8060608587031215610466575f80fd5b84359350610476602086016103f2565b9250604085013567ffffffffffffffff811115610491575f80fd5b61049d8782880161040e565b95989497509550505050565b5f602082840312156104b9575f80fd5b5035919050565b5f805f805f608086880312156104d4575f80fd5b853594506104e4602087016103f2565b93506104f2604087016103f2565b9250606086013567ffffffffffffffff81111561050d575f80fd5b6105198882890161040e565b969995985093965092949392505050565b5f805f6040848603121561053c575f80fd5b83359250602084013567ffffffffffffffff811115610559575f80fd5b6105658682870161040e565b9497909650939450505050565b5f60208284031215610582575f80fd5b81356001600160a01b0381168114610598575f80fd5b939250505056fea26469706673582212205e037ebe51d2c4c027cab6f7d561f74a41c1ccb79f3bcaa4c324743be8f9255f64736f6c63430008190033", + 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\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"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: "0x608060405234801561000f575f80fd5b506040516106f43803806106f483398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6105a78061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c8063c4d66de811610063578063c4d66de814610120578063d8761f4c14610133578063effb55b41461010d578063f2fde38b14610141578063f7795a8c1461009f575f80fd5b806356ab447d1461009f578063715018a6146100b25780638da5cb5b146100ba57806398d9fa7c146100f8578063bddb5a141461010d575b5f80fd5b6100b06100ad3660046103ed565b50565b005b6100b0610154565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054604080516001600160a01b039092168252519081900360200190f35b6100b0610106366004610465565b5050505050565b6100b061011b3660046104cf565b505050565b6100b061012e36600461052d565b610167565b6100b061010636600461054d565b6100b061014f36600461052d565b610275565b61015c6102b4565b6101655f61030f565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156101ac5750825b90505f8267ffffffffffffffff1660011480156101c85750303b155b9050811580156101d6575080155b156101f45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561021e57845460ff60401b1916600160401b1785555b6102278661037f565b831561026d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b61027d6102b4565b6001600160a01b0381166102ab57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100ad8161030f565b336102e67f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146101655760405163118cdaa760e01b81523360048201526024016102a2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610387610390565b6100ad816103d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661016557604051631afcd79f60e31b815260040160405180910390fd5b6103e1610390565b6100ad8161027d610390565b5f602082840312156103fd575f80fd5b5035919050565b803567ffffffffffffffff8116811461041b575f80fd5b919050565b5f8083601f840112610430575f80fd5b50813567ffffffffffffffff811115610447575f80fd5b60208301915083602082850101111561045e575f80fd5b9250929050565b5f805f805f60808688031215610479575f80fd5b8535945061048960208701610404565b935061049760408701610404565b9250606086013567ffffffffffffffff8111156104b2575f80fd5b6104be88828901610420565b969995985093965092949392505050565b5f805f604084860312156104e1575f80fd5b83359250602084013567ffffffffffffffff8111156104fe575f80fd5b61050a86828701610420565b9497909650939450505050565b80356001600160a01b038116811461041b575f80fd5b5f6020828403121561053d575f80fd5b61054682610517565b9392505050565b5f805f805f60808688031215610561575f80fd5b853594506104896020870161051756fea264697066735822122051c50b83a6d1a43a33aea9169e2c35f9d3bac18235f8891e499f66cb7306c5b264736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -349,25 +349,25 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitiali return _PoAValidatorManager.Contract.HandleInitializeEndValidation(&_PoAValidatorManager.TransactOpts, validationID, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _PoAValidatorManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_PoAValidatorManager *PoAValidatorManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _PoAValidatorManager.Contract.HandleInitializeValidatorRegistration(&_PoAValidatorManager.TransactOpts, validationID, sender, weight, args) } // HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. diff --git a/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go b/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go index dc7bed39a..4d6e3d742 100644 --- a/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go +++ b/abi-bindings/go/validator-manager/interfaces/IACP99SecurityModule/IACP99SecurityModule.go @@ -31,7 +31,7 @@ var ( // IACP99SecurityModuleMetaData contains all meta data concerning the IACP99SecurityModule contract. var IACP99SecurityModuleMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"handleCompleteValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleCompleteValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"args\",\"type\":\"bytes\"}],\"name\":\"handleInitializeValidatorWeightChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // IACP99SecurityModuleABI is the input ABI used to generate the binding from. @@ -264,25 +264,25 @@ func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitia return _IACP99SecurityModule.Contract.HandleInitializeEndValidation(&_IACP99SecurityModule.TransactOpts, validationID, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _IACP99SecurityModule.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactor) HandleInitializeValidatorRegistration(opts *bind.TransactOpts, validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.contract.Transact(opts, "handleInitializeValidatorRegistration", validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, sender, weight, args) } -// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0x004050c8. +// HandleInitializeValidatorRegistration is a paid mutator transaction binding the contract method 0xd8761f4c. // -// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes args) returns() -func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, weight uint64, args []byte) (*types.Transaction, error) { - return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, weight, args) +// Solidity: function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes args) returns() +func (_IACP99SecurityModule *IACP99SecurityModuleTransactorSession) HandleInitializeValidatorRegistration(validationID [32]byte, sender common.Address, weight uint64, args []byte) (*types.Transaction, error) { + return _IACP99SecurityModule.Contract.HandleInitializeValidatorRegistration(&_IACP99SecurityModule.TransactOpts, validationID, sender, weight, args) } // HandleInitializeValidatorWeightChange is a paid mutator transaction binding the contract method 0x98d9fa7c. diff --git a/contracts/validator-manager/ACP99ValidatorManager.sol b/contracts/validator-manager/ACP99ValidatorManager.sol index 7fc02d1b4..b6fcd9616 100644 --- a/contracts/validator-manager/ACP99ValidatorManager.sol +++ b/contracts/validator-manager/ACP99ValidatorManager.sol @@ -78,8 +78,8 @@ contract ACP99ValidatorManager is IACP99ValidatorManager, ValidatorManager { // // Delegate call so that the sender can approval ERC20 transfers by the validator manager // (bool success, bytes memory data) = securityModule.delegatecall(abi.encodeWithSelector($.securityModule.handleInitializeValidatorRegistration.selector, validationID, weight, args)); // require(success, string(data)); - - $.securityModule.handleInitializeValidatorRegistration(validationID, weight, args); + + $.securityModule.handleInitializeValidatorRegistration(validationID, _msgSender(), weight, args); return validationID; } diff --git a/contracts/validator-manager/ERC20TokenStakingManager.sol b/contracts/validator-manager/ERC20TokenStakingManager.sol index f8a429160..8c4a52e84 100644 --- a/contracts/validator-manager/ERC20TokenStakingManager.sol +++ b/contracts/validator-manager/ERC20TokenStakingManager.sol @@ -104,8 +104,8 @@ contract ERC20TokenStakingManager is * @notice See {PoSValidatorManager-_lock} * Note: Must be guarded with reentrancy guard for safe transfer from. */ - function _lock(uint256 value) internal virtual override returns (uint256) { - return _getERC20StakingManagerStorage()._token.safeTransferFrom(value); + function _lock(address sender, uint256 value) internal virtual override returns (uint256) { + return _getERC20StakingManagerStorage()._token.safeTransferFrom(sender, value); } /** diff --git a/contracts/validator-manager/NativeTokenStakingManager.sol b/contracts/validator-manager/NativeTokenStakingManager.sol index 9688dd8ee..83db036d0 100644 --- a/contracts/validator-manager/NativeTokenStakingManager.sol +++ b/contracts/validator-manager/NativeTokenStakingManager.sol @@ -58,7 +58,7 @@ contract NativeTokenStakingManager is /** * @notice See {PoSValidatorManager-_lock} */ - function _lock(uint256 value) internal virtual override returns (uint256) { + function _lock(address, uint256 value) internal virtual override returns (uint256) { return value; } diff --git a/contracts/validator-manager/PoAValidatorManager.sol b/contracts/validator-manager/PoAValidatorManager.sol index de3b8c227..0f4fc6c23 100644 --- a/contracts/validator-manager/PoAValidatorManager.sol +++ b/contracts/validator-manager/PoAValidatorManager.sol @@ -47,7 +47,7 @@ contract PoAValidatorManager is IACP99SecurityModule, OwnableUpgradeable { /** * @notice See {IValidatorManager-completeEndValidation}. */ - function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { + function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes calldata args) external { } function handleCompleteValidatorRegistration(bytes32 validationID) external { diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index f2d70ebc6..a84201799 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -194,10 +194,10 @@ abstract contract PoSValidatorManager is $._uptimeBlockchainID = uptimeBlockchainID; } - function handleInitializeValidatorRegistration(bytes32 validationID, uint64 weight, bytes calldata args) external { + function handleInitializeValidatorRegistration(bytes32 validationID, address sender, uint64 weight, bytes calldata args) external { uint256 stakeAmount = weightToValue(weight); InitializeValidatorRegistrationArgs memory decoded = abi.decode(args, (InitializeValidatorRegistrationArgs)); - _initializeValidatorRegistration(validationID, stakeAmount, decoded.delegationFeeBips, decoded.minStakeDuration); + _initializeValidatorRegistration(validationID, sender, stakeAmount, decoded.delegationFeeBips, decoded.minStakeDuration); } function handleCompleteValidatorRegistration(bytes32 validationID) external { @@ -457,6 +457,7 @@ abstract contract PoSValidatorManager is function _initializeValidatorRegistration( bytes32 validationID, + address sender, uint256 stakeAmount, uint16 delegationFeeBips, uint64 minStakeDuration @@ -480,7 +481,7 @@ abstract contract PoSValidatorManager is } // Lock the stake in the contract. - _lock(stakeAmount); + _lock(sender, stakeAmount); $._posValidatorInfo[validationID].owner = _msgSender(); $._posValidatorInfo[validationID].delegationFeeBips = delegationFeeBips; @@ -512,7 +513,7 @@ abstract contract PoSValidatorManager is * @notice Locks tokens in this contract. * @param value Number of tokens to lock. */ - function _lock(uint256 value) internal virtual returns (uint256); + function _lock(address sender, uint256 value) internal virtual returns (uint256); /** * @notice Unlocks token to a specific address. @@ -528,7 +529,7 @@ abstract contract PoSValidatorManager is uint256 delegationAmount ) internal returns (bytes32) { PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - uint64 weight = valueToWeight(_lock(delegationAmount)); + uint64 weight = valueToWeight(_lock(address(0), delegationAmount)); // TODONOW: Use the sender's address // Ensure the validation period is active Validator memory validator = _getPoSValidatorManagerStorage().validatorManager.getValidator(validationID); diff --git a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol index 45511d07b..a1c670904 100644 --- a/contracts/validator-manager/interfaces/IACP99SecurityModule.sol +++ b/contracts/validator-manager/interfaces/IACP99SecurityModule.sol @@ -8,6 +8,7 @@ pragma solidity 0.8.25; interface IACP99SecurityModule { function handleInitializeValidatorRegistration( bytes32 validationID, + address sender, uint64 weight, bytes calldata args ) external; diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index c621773c7..344986444 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -438,7 +438,7 @@ func InitializeACP99ERC20ValidatorRegistration( ERC20Approve( ctx, token, - stakingManagerAddress, + securityModule, stakeAmount, subnet, senderKey,