/** * The IDL of the module. * * @module */ /** The IDL of the module. */ export declare const idl: { readonly module_id: "0x1::stake"; readonly doc: "Validator lifecycle:\n1. Prepare a validator node set up and call stake::initialize_validator\n2. Once ready to deposit stake (or have funds assigned by a staking service in exchange for ownership capability),\ncall stake::add_stake (or *_with_cap versions if called from the staking service)\n3. Call stake::join_validator_set (or _with_cap version) to join the active validator set. Changes are effective in\nthe next epoch.\n4. Validate and gain rewards. The stake will automatically be locked up for a fixed duration (set by governance) and\nautomatically renewed at expiration.\n5. At any point, if the validator operator wants to update the consensus key or network/fullnode addresses, they can\ncall stake::rotate_consensus_key and stake::update_network_and_fullnode_addresses. Similar to changes to stake, the\nchanges to consensus key/network/fullnode addresses are only effective in the next epoch.\n6. Validator can request to unlock their stake at any time. However, their stake will only become withdrawable when\ntheir current lockup expires. This can be at most as long as the fixed lockup duration.\n7. After exiting, the validator can either explicitly leave the validator set by calling stake::leave_validator_set\nor if their stake drops below the min required, they would get removed at the end of the epoch.\n8. Validator can always rejoin the validator set by going through steps 2-3 again.\n9. An owner can always switch operators by calling stake::set_operator.\n10. An owner can always switch designated voter by calling stake::set_designated_voter."; readonly functions: readonly [{ readonly name: "withdraw"; readonly doc: "Withdraw from `account`'s inactive stake."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "withdraw_amount"; readonly ty: "u64"; }]; }, { readonly name: "add_stake"; readonly doc: "Add `amount` of coins from the `account` owning the StakePool."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "amount"; readonly ty: "u64"; }]; }, { readonly name: "increase_lockup"; readonly doc: "Similar to increase_lockup_with_cap but will use ownership capability from the signing account."; readonly ty_args: readonly []; readonly args: readonly []; }, { readonly name: "initialize_stake_owner"; readonly doc: "Initialize the validator account and give ownership to the signing account\nexcept it leaves the ValidatorConfig to be set by another entity.\nNote: this triggers setting the operator and owner, set it to the account's address\nto set later."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "initial_stake_amount"; readonly ty: "u64"; }, { readonly name: "operator"; readonly ty: "address"; }, { readonly name: "voter"; readonly ty: "address"; }]; }, { readonly name: "initialize_validator"; readonly doc: "Initialize the validator account and give ownership to the signing account."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "consensus_pubkey"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "proof_of_possession"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "network_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "fullnode_addresses"; readonly ty: { readonly vector: "u8"; }; }]; }, { readonly name: "join_validator_set"; readonly doc: "This can only called by the operator of the validator/staking pool."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; }, { readonly name: "leave_validator_set"; readonly doc: "Request to have `pool_address` leave the validator set. The validator is only actually removed from the set when\nthe next epoch starts.\nThe last validator in the set cannot leave. This is an edge case that should never happen as long as the network\nis still operational.\n\nCan only be called by the operator of the validator/staking pool."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; }, { readonly name: "reactivate_stake"; readonly doc: "Move `amount` of coins from pending_inactive to active."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "amount"; readonly ty: "u64"; }]; }, { readonly name: "rotate_consensus_key"; readonly doc: "Rotate the consensus key of the validator, it'll take effect in next epoch."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "new_consensus_pubkey"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "proof_of_possession"; readonly ty: { readonly vector: "u8"; }; }]; }, { readonly name: "set_delegated_voter"; readonly doc: "Allows an owner to change the delegated voter of the stake pool."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "new_delegated_voter"; readonly ty: "address"; }]; }, { readonly name: "set_operator"; readonly doc: "Allows an owner to change the operator of the stake pool."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "new_operator"; readonly ty: "address"; }]; }, { readonly name: "unlock"; readonly doc: "Similar to unlock_with_cap but will use ownership capability from the signing account."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "amount"; readonly ty: "u64"; }]; }, { readonly name: "update_network_and_fullnode_addresses"; readonly doc: "Update the network and full node addresses of the validator. This only takes effect in the next epoch."; readonly ty_args: readonly []; readonly args: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "new_network_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "new_fullnode_addresses"; readonly ty: { readonly vector: "u8"; }; }]; }]; readonly structs: readonly [{ readonly name: "0x1::stake::AptosCoinCapabilities"; readonly doc: "AptosCoin capabilities, set during genesis and stored in @CoreResource account.\nThis allows the Stake module to mint rewards to stakers."; readonly fields: readonly [{ readonly name: "mint_cap"; readonly ty: { readonly struct: { readonly name: "0x1::coin::MintCapability"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::aptos_coin::AptosCoin"; }; }]; }; }; }]; readonly abilities: readonly ["key"]; }, { readonly name: "0x1::stake::AddStakeEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "amount_added"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::DistributeRewardsEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "rewards_amount"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::IncreaseLockupEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "old_locked_until_secs"; readonly ty: "u64"; }, { readonly name: "new_locked_until_secs"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::IndividualValidatorPerformance"; readonly fields: readonly [{ readonly name: "successful_proposals"; readonly ty: "u64"; }, { readonly name: "failed_proposals"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::JoinValidatorSetEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::LeaveValidatorSetEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::OwnerCapability"; readonly doc: "Capability that represents ownership and can be used to control the validator and the associated stake pool.\nHaving this be separate from the signer for the account that the validator resources are hosted at allows\nmodules to have control over a validator."; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; readonly abilities: readonly ["store", "key"]; }, { readonly name: "0x1::stake::ReactivateStakeEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "amount"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::RegisterValidatorCandidateEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::RotateConsensusKeyEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "old_consensus_pubkey"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "new_consensus_pubkey"; readonly ty: { readonly vector: "u8"; }; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::SetOperatorEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "old_operator"; readonly ty: "address"; }, { readonly name: "new_operator"; readonly ty: "address"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::StakePool"; readonly doc: "Each validator has a separate StakePool resource and can provide a stake.\nChanges in stake for an active validator:\n1. If a validator calls add_stake, the newly added stake is moved to pending_active.\n2. If validator calls unlock, their stake is moved to pending_inactive.\n2. When the next epoch starts, any pending_inactive stake is moved to inactive and can be withdrawn.\n Any pending_active stake is moved to active and adds to the validator's voting power.\n\nChanges in stake for an inactive validator:\n1. If a validator calls add_stake, the newly added stake is moved directly to active.\n2. If validator calls unlock, their stake is moved directly to inactive.\n3. When the next epoch starts, the validator can be activated if their active stake is more than the minimum."; readonly fields: readonly [{ readonly name: "active"; readonly ty: { readonly struct: { readonly name: "0x1::coin::Coin"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::aptos_coin::AptosCoin"; }; }]; }; }; }, { readonly name: "inactive"; readonly ty: { readonly struct: { readonly name: "0x1::coin::Coin"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::aptos_coin::AptosCoin"; }; }]; }; }; }, { readonly name: "pending_active"; readonly ty: { readonly struct: { readonly name: "0x1::coin::Coin"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::aptos_coin::AptosCoin"; }; }]; }; }; }, { readonly name: "pending_inactive"; readonly ty: { readonly struct: { readonly name: "0x1::coin::Coin"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::aptos_coin::AptosCoin"; }; }]; }; }; }, { readonly name: "locked_until_secs"; readonly ty: "u64"; }, { readonly name: "operator_address"; readonly ty: "address"; }, { readonly name: "delegated_voter"; readonly ty: "address"; }, { readonly name: "initialize_validator_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::RegisterValidatorCandidateEvent"; }; }]; }; }; }, { readonly name: "set_operator_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::SetOperatorEvent"; }; }]; }; }; }, { readonly name: "add_stake_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::AddStakeEvent"; }; }]; }; }; }, { readonly name: "reactivate_stake_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::ReactivateStakeEvent"; }; }]; }; }; }, { readonly name: "rotate_consensus_key_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::RotateConsensusKeyEvent"; }; }]; }; }; }, { readonly name: "update_network_and_fullnode_addresses_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::UpdateNetworkAndFullnodeAddressesEvent"; }; }]; }; }; }, { readonly name: "increase_lockup_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::IncreaseLockupEvent"; }; }]; }; }; }, { readonly name: "join_validator_set_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::JoinValidatorSetEvent"; }; }]; }; }; }, { readonly name: "distribute_rewards_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::DistributeRewardsEvent"; }; }]; }; }; }, { readonly name: "unlock_stake_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::UnlockStakeEvent"; }; }]; }; }; }, { readonly name: "withdraw_stake_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::WithdrawStakeEvent"; }; }]; }; }; }, { readonly name: "leave_validator_set_events"; readonly ty: { readonly struct: { readonly name: "0x1::event::EventHandle"; readonly ty_args: readonly [{ readonly struct: { readonly name: "0x1::stake::LeaveValidatorSetEvent"; }; }]; }; }; }]; readonly abilities: readonly ["key"]; }, { readonly name: "0x1::stake::UnlockStakeEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "amount_unlocked"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::UpdateNetworkAndFullnodeAddressesEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "old_network_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "new_network_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "old_fullnode_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "new_fullnode_addresses"; readonly ty: { readonly vector: "u8"; }; }]; readonly abilities: readonly ["drop", "store"]; }, { readonly name: "0x1::stake::ValidatorConfig"; readonly doc: "Validator info stored in validator address."; readonly fields: readonly [{ readonly name: "consensus_pubkey"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "network_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "fullnode_addresses"; readonly ty: { readonly vector: "u8"; }; }, { readonly name: "validator_index"; readonly ty: "u64"; }]; readonly abilities: readonly ["copy", "drop", "store", "key"]; }, { readonly name: "0x1::stake::ValidatorInfo"; readonly doc: "Consensus information per validator, stored in ValidatorSet."; readonly fields: readonly [{ readonly name: "addr"; readonly ty: "address"; }, { readonly name: "voting_power"; readonly ty: "u64"; }, { readonly name: "config"; readonly ty: { readonly struct: { readonly name: "0x1::stake::ValidatorConfig"; }; }; }]; readonly abilities: readonly ["copy", "drop", "store"]; }, { readonly name: "0x1::stake::ValidatorPerformance"; readonly fields: readonly [{ readonly name: "validators"; readonly ty: { readonly vector: { readonly struct: { readonly name: "0x1::stake::IndividualValidatorPerformance"; }; }; }; }]; readonly abilities: readonly ["key"]; }, { readonly name: "0x1::stake::ValidatorSet"; readonly doc: "Full ValidatorSet, stored in @aptos_framework.\n1. join_validator_set adds to pending_active queue.\n2. leave_valdiator_set moves from active to pending_inactive queue.\n3. on_new_epoch processes two pending queues and refresh ValidatorInfo from the owner's address."; readonly fields: readonly [{ readonly name: "consensus_scheme"; readonly ty: "u8"; }, { readonly name: "active_validators"; readonly ty: { readonly vector: { readonly struct: { readonly name: "0x1::stake::ValidatorInfo"; }; }; }; }, { readonly name: "pending_inactive"; readonly ty: { readonly vector: { readonly struct: { readonly name: "0x1::stake::ValidatorInfo"; }; }; }; }, { readonly name: "pending_active"; readonly ty: { readonly vector: { readonly struct: { readonly name: "0x1::stake::ValidatorInfo"; }; }; }; }, { readonly name: "total_voting_power"; readonly ty: "u128"; }, { readonly name: "total_joining_power"; readonly ty: "u128"; }]; readonly abilities: readonly ["key"]; }, { readonly name: "0x1::stake::WithdrawStakeEvent"; readonly fields: readonly [{ readonly name: "pool_address"; readonly ty: "address"; }, { readonly name: "amount_withdrawn"; readonly ty: "u64"; }]; readonly abilities: readonly ["drop", "store"]; }]; readonly errors: { readonly "1": { readonly name: "ELOCK_TIME_TOO_SHORT"; readonly doc: "Lockup period is shorter than required."; }; readonly "2": { readonly name: "EWITHDRAW_NOT_ALLOWED"; readonly doc: "Withdraw not allowed, the stake is still locked."; }; readonly "3": { readonly name: "EVALIDATOR_CONFIG"; readonly doc: "Validator Config not published."; }; readonly "4": { readonly name: "ESTAKE_TOO_LOW"; readonly doc: "Not enough stake to join validator set."; }; readonly "5": { readonly name: "ESTAKE_TOO_HIGH"; readonly doc: "Too much stake to join validator set."; }; readonly "6": { readonly name: "EALREADY_ACTIVE_VALIDATOR"; readonly doc: "Account is already a validator or pending validator."; }; readonly "7": { readonly name: "ENOT_VALIDATOR"; readonly doc: "Account is not a validator."; }; readonly "8": { readonly name: "ELAST_VALIDATOR"; readonly doc: "Can't remove last validator."; }; readonly "9": { readonly name: "ESTAKE_EXCEEDS_MAX"; readonly doc: "Total stake exceeds maximum allowed."; }; readonly "10": { readonly name: "EALREADY_REGISTERED"; readonly doc: "Account is already registered as a validator candidate."; }; readonly "11": { readonly name: "ENO_COINS_TO_WITHDRAW"; readonly doc: "No coins in inactive state to withdraw from specified pool."; }; readonly "12": { readonly name: "ENOT_OPERATOR"; readonly doc: "Account does not have the right operator capability."; }; readonly "13": { readonly name: "ELOCK_TIME_TOO_LONG"; readonly doc: "Lockup period is longer than allowed."; }; readonly "14": { readonly name: "ENO_POST_GENESIS_VALIDATOR_SET_CHANGE_ALLOWED"; }; readonly "15": { readonly name: "EINVALID_PUBLIC_KEY"; readonly doc: "Invalid consensus public key"; }; readonly "16": { readonly name: "EINVALID_STAKE_AMOUNT"; readonly doc: "Invalid stake amount (usuaully 0)."; }; readonly "18": { readonly name: "EVALIDATOR_SET_TOO_LARGE"; readonly doc: "Validator set exceeds the limit"; }; readonly "19": { readonly name: "EVOTING_POWER_INCREASE_EXCEEDS_LIMIT"; readonly doc: "Voting power increase has exceeded the limit for this current epoch."; }; }; }; //# sourceMappingURL=idl.d.ts.map