UNPKG

@libra-opensource/client-sdk-typescript

Version:
655 lines (654 loc) 153 kB
import { bool, uint64, bytes } from '../serde/types'; import * as DiemTypes from '../diemTypes'; /** * Structured representation of a call into a known Move script. */ export declare abstract class ScriptCall { } export declare class ScriptCallVariantAddCurrencyToAccount extends ScriptCall { currency: DiemTypes.TypeTag; constructor(currency: DiemTypes.TypeTag); } export declare class ScriptCallVariantAddRecoveryRotationCapability extends ScriptCall { recovery_address: DiemTypes.AccountAddress; constructor(recovery_address: DiemTypes.AccountAddress); } export declare class ScriptCallVariantAddToScriptAllowList extends ScriptCall { hash: bytes; sliding_nonce: uint64; constructor(hash: bytes, sliding_nonce: uint64); } export declare class ScriptCallVariantAddValidatorAndReconfigure extends ScriptCall { sliding_nonce: uint64; validator_name: bytes; validator_address: DiemTypes.AccountAddress; constructor(sliding_nonce: uint64, validator_name: bytes, validator_address: DiemTypes.AccountAddress); } export declare class ScriptCallVariantBurn extends ScriptCall { token: DiemTypes.TypeTag; sliding_nonce: uint64; preburn_address: DiemTypes.AccountAddress; constructor(token: DiemTypes.TypeTag, sliding_nonce: uint64, preburn_address: DiemTypes.AccountAddress); } export declare class ScriptCallVariantBurnTxnFees extends ScriptCall { coin_type: DiemTypes.TypeTag; constructor(coin_type: DiemTypes.TypeTag); } export declare class ScriptCallVariantCancelBurn extends ScriptCall { token: DiemTypes.TypeTag; preburn_address: DiemTypes.AccountAddress; constructor(token: DiemTypes.TypeTag, preburn_address: DiemTypes.AccountAddress); } export declare class ScriptCallVariantCreateChildVaspAccount extends ScriptCall { coin_type: DiemTypes.TypeTag; child_address: DiemTypes.AccountAddress; auth_key_prefix: bytes; add_all_currencies: bool; child_initial_balance: uint64; constructor(coin_type: DiemTypes.TypeTag, child_address: DiemTypes.AccountAddress, auth_key_prefix: bytes, add_all_currencies: bool, child_initial_balance: uint64); } export declare class ScriptCallVariantCreateDesignatedDealer extends ScriptCall { currency: DiemTypes.TypeTag; sliding_nonce: uint64; addr: DiemTypes.AccountAddress; auth_key_prefix: bytes; human_name: bytes; add_all_currencies: bool; constructor(currency: DiemTypes.TypeTag, sliding_nonce: uint64, addr: DiemTypes.AccountAddress, auth_key_prefix: bytes, human_name: bytes, add_all_currencies: bool); } export declare class ScriptCallVariantCreateParentVaspAccount extends ScriptCall { coin_type: DiemTypes.TypeTag; sliding_nonce: uint64; new_account_address: DiemTypes.AccountAddress; auth_key_prefix: bytes; human_name: bytes; add_all_currencies: bool; constructor(coin_type: DiemTypes.TypeTag, sliding_nonce: uint64, new_account_address: DiemTypes.AccountAddress, auth_key_prefix: bytes, human_name: bytes, add_all_currencies: bool); } export declare class ScriptCallVariantCreateRecoveryAddress extends ScriptCall { constructor(); } export declare class ScriptCallVariantCreateValidatorAccount extends ScriptCall { sliding_nonce: uint64; new_account_address: DiemTypes.AccountAddress; auth_key_prefix: bytes; human_name: bytes; constructor(sliding_nonce: uint64, new_account_address: DiemTypes.AccountAddress, auth_key_prefix: bytes, human_name: bytes); } export declare class ScriptCallVariantCreateValidatorOperatorAccount extends ScriptCall { sliding_nonce: uint64; new_account_address: DiemTypes.AccountAddress; auth_key_prefix: bytes; human_name: bytes; constructor(sliding_nonce: uint64, new_account_address: DiemTypes.AccountAddress, auth_key_prefix: bytes, human_name: bytes); } export declare class ScriptCallVariantFreezeAccount extends ScriptCall { sliding_nonce: uint64; to_freeze_account: DiemTypes.AccountAddress; constructor(sliding_nonce: uint64, to_freeze_account: DiemTypes.AccountAddress); } export declare class ScriptCallVariantPeerToPeerWithMetadata extends ScriptCall { currency: DiemTypes.TypeTag; payee: DiemTypes.AccountAddress; amount: uint64; metadata: bytes; metadata_signature: bytes; constructor(currency: DiemTypes.TypeTag, payee: DiemTypes.AccountAddress, amount: uint64, metadata: bytes, metadata_signature: bytes); } export declare class ScriptCallVariantPreburn extends ScriptCall { token: DiemTypes.TypeTag; amount: uint64; constructor(token: DiemTypes.TypeTag, amount: uint64); } export declare class ScriptCallVariantPublishSharedEd25519PublicKey extends ScriptCall { public_key: bytes; constructor(public_key: bytes); } export declare class ScriptCallVariantRegisterValidatorConfig extends ScriptCall { validator_account: DiemTypes.AccountAddress; consensus_pubkey: bytes; validator_network_addresses: bytes; fullnode_network_addresses: bytes; constructor(validator_account: DiemTypes.AccountAddress, consensus_pubkey: bytes, validator_network_addresses: bytes, fullnode_network_addresses: bytes); } export declare class ScriptCallVariantRemoveValidatorAndReconfigure extends ScriptCall { sliding_nonce: uint64; validator_name: bytes; validator_address: DiemTypes.AccountAddress; constructor(sliding_nonce: uint64, validator_name: bytes, validator_address: DiemTypes.AccountAddress); } export declare class ScriptCallVariantRotateAuthenticationKey extends ScriptCall { new_key: bytes; constructor(new_key: bytes); } export declare class ScriptCallVariantRotateAuthenticationKeyWithNonce extends ScriptCall { sliding_nonce: uint64; new_key: bytes; constructor(sliding_nonce: uint64, new_key: bytes); } export declare class ScriptCallVariantRotateAuthenticationKeyWithNonceAdmin extends ScriptCall { sliding_nonce: uint64; new_key: bytes; constructor(sliding_nonce: uint64, new_key: bytes); } export declare class ScriptCallVariantRotateAuthenticationKeyWithRecoveryAddress extends ScriptCall { recovery_address: DiemTypes.AccountAddress; to_recover: DiemTypes.AccountAddress; new_key: bytes; constructor(recovery_address: DiemTypes.AccountAddress, to_recover: DiemTypes.AccountAddress, new_key: bytes); } export declare class ScriptCallVariantRotateDualAttestationInfo extends ScriptCall { new_url: bytes; new_key: bytes; constructor(new_url: bytes, new_key: bytes); } export declare class ScriptCallVariantRotateSharedEd25519PublicKey extends ScriptCall { public_key: bytes; constructor(public_key: bytes); } export declare class ScriptCallVariantSetValidatorConfigAndReconfigure extends ScriptCall { validator_account: DiemTypes.AccountAddress; consensus_pubkey: bytes; validator_network_addresses: bytes; fullnode_network_addresses: bytes; constructor(validator_account: DiemTypes.AccountAddress, consensus_pubkey: bytes, validator_network_addresses: bytes, fullnode_network_addresses: bytes); } export declare class ScriptCallVariantSetValidatorOperator extends ScriptCall { operator_name: bytes; operator_account: DiemTypes.AccountAddress; constructor(operator_name: bytes, operator_account: DiemTypes.AccountAddress); } export declare class ScriptCallVariantSetValidatorOperatorWithNonceAdmin extends ScriptCall { sliding_nonce: uint64; operator_name: bytes; operator_account: DiemTypes.AccountAddress; constructor(sliding_nonce: uint64, operator_name: bytes, operator_account: DiemTypes.AccountAddress); } export declare class ScriptCallVariantTieredMint extends ScriptCall { coin_type: DiemTypes.TypeTag; sliding_nonce: uint64; designated_dealer_address: DiemTypes.AccountAddress; mint_amount: uint64; tier_index: uint64; constructor(coin_type: DiemTypes.TypeTag, sliding_nonce: uint64, designated_dealer_address: DiemTypes.AccountAddress, mint_amount: uint64, tier_index: uint64); } export declare class ScriptCallVariantUnfreezeAccount extends ScriptCall { sliding_nonce: uint64; to_unfreeze_account: DiemTypes.AccountAddress; constructor(sliding_nonce: uint64, to_unfreeze_account: DiemTypes.AccountAddress); } export declare class ScriptCallVariantUpdateDiemVersion extends ScriptCall { sliding_nonce: uint64; major: uint64; constructor(sliding_nonce: uint64, major: uint64); } export declare class ScriptCallVariantUpdateDualAttestationLimit extends ScriptCall { sliding_nonce: uint64; new_micro_xdx_limit: uint64; constructor(sliding_nonce: uint64, new_micro_xdx_limit: uint64); } export declare class ScriptCallVariantUpdateExchangeRate extends ScriptCall { currency: DiemTypes.TypeTag; sliding_nonce: uint64; new_exchange_rate_numerator: uint64; new_exchange_rate_denominator: uint64; constructor(currency: DiemTypes.TypeTag, sliding_nonce: uint64, new_exchange_rate_numerator: uint64, new_exchange_rate_denominator: uint64); } export declare class ScriptCallVariantUpdateMintingAbility extends ScriptCall { currency: DiemTypes.TypeTag; allow_minting: bool; constructor(currency: DiemTypes.TypeTag, allow_minting: bool); } export interface TypeTagDef { type: Types; arrayType?: TypeTagDef; name?: string; module?: string; address?: string; typeParams?: TypeTagDef[]; } export interface ArgDef { readonly name: string; readonly type: TypeTagDef; readonly choices?: string[]; readonly mandatory?: boolean; } export interface ScriptDef { readonly stdlibEncodeFunction: (...args: any[]) => DiemTypes.Script; readonly stdlibDecodeFunction: (script: DiemTypes.Script) => ScriptCall; readonly codeName: string; readonly description: string; readonly typeArgs: string[]; readonly args: ArgDef[]; } export declare enum Types { Boolean = 0, U8 = 1, U64 = 2, U128 = 3, Address = 4, Array = 5, Struct = 6 } export declare class Stdlib { private static fromHexString; /** * # Summary * Adds a zero `Currency` balance to the sending `account`. This will enable `account` to * send, receive, and hold `Diem::Diem<Currency>` coins. This transaction can be * successfully sent by any account that is allowed to hold balances * (e.g., VASP, Designated Dealer). * * # Technical Description * After the successful execution of this transaction the sending account will have a * `DiemAccount::Balance<Currency>` resource with zero balance published under it. Only * accounts that can hold balances can send this transaction, the sending account cannot * already have a `DiemAccount::Balance<Currency>` published under it. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `Currency` | Type | The Move type for the `Currency` being added to the sending account of the transaction. `Currency` must be an already-registered currency on-chain. | * | `account` | `&signer` | The signer of the sending account of the transaction. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | * | `Errors::INVALID_ARGUMENT` | `DiemAccount::EROLE_CANT_STORE_BALANCE` | The sending `account`'s role does not permit balances. | * | `Errors::ALREADY_PUBLISHED` | `DiemAccount::EADD_EXISTING_CURRENCY` | A balance for `Currency` is already published under the sending `account`. | * * # Related Scripts * * `Script::create_child_vasp_account` * * `Script::create_parent_vasp_account` * * `Script::peer_to_peer_with_metadata` */ static encodeAddCurrencyToAccountScript(currency: DiemTypes.TypeTag): DiemTypes.Script; /** * # Summary * Stores the sending accounts ability to rotate its authentication key with a designated recovery * account. Both the sending and recovery accounts need to belong to the same VASP and * both be VASP accounts. After this transaction both the sending account and the * specified recovery account can rotate the sender account's authentication key. * * # Technical Description * Adds the `DiemAccount::KeyRotationCapability` for the sending account * (`to_recover_account`) to the `RecoveryAddress::RecoveryAddress` resource under * `recovery_address`. After this transaction has been executed successfully the account at * `recovery_address` and the `to_recover_account` may rotate the authentication key of * `to_recover_account` (the sender of this transaction). * * The sending account of this transaction (`to_recover_account`) must not have previously given away its unique key * rotation capability, and must be a VASP account. The account at `recovery_address` * must also be a VASP account belonging to the same VASP as the `to_recover_account`. * Additionally the account at `recovery_address` must have already initialized itself as * a recovery account address using the `Script::create_recovery_address` transaction script. * * The sending account's (`to_recover_account`) key rotation capability is * removed in this transaction and stored in the `RecoveryAddress::RecoveryAddress` * resource stored under the account at `recovery_address`. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `to_recover_account` | `&signer` | The signer reference of the sending account of this transaction. | * | `recovery_address` | `address` | The account address where the `to_recover_account`'s `DiemAccount::KeyRotationCapability` will be stored. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::INVALID_STATE` | `DiemAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTED` | `to_recover_account` has already delegated/extracted its `DiemAccount::KeyRotationCapability`. | * | `Errors::NOT_PUBLISHED` | `RecoveryAddress::ERECOVERY_ADDRESS` | `recovery_address` does not have a `RecoveryAddress` resource published under it. | * | `Errors::INVALID_ARGUMENT` | `RecoveryAddress::EINVALID_KEY_ROTATION_DELEGATION` | `to_recover_account` and `recovery_address` do not belong to the same VASP. | * * # Related Scripts * * `Script::create_recovery_address` * * `Script::rotate_authentication_key_with_recovery_address` */ static encodeAddRecoveryRotationCapabilityScript(recovery_address: DiemTypes.AccountAddress): DiemTypes.Script; /** * # Summary * Adds a script hash to the transaction allowlist. This transaction * can only be sent by the Diem Root account. Scripts with this hash can be * sent afterward the successful execution of this script. * * # Technical Description * * The sending account (`dr_account`) must be the Diem Root account. The script allow * list must not already hold the script `hash` being added. The `sliding_nonce` must be * a valid nonce for the Diem Root account. After this transaction has executed * successfully a reconfiguration will be initiated, and the on-chain config * `DiemTransactionPublishingOption::DiemTransactionPublishingOption`'s * `script_allow_list` field will contain the new script `hash` and transactions * with this `hash` can be successfully sent to the network. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | * | `hash` | `vector<u8>` | The hash of the script to be added to the script allowlist. | * | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | * | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | * | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | * | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EINVALID_SCRIPT_HASH` | The script `hash` is an invalid length. | * | `Errors::INVALID_ARGUMENT` | `DiemTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPT` | The on-chain allowlist already contains the script `hash`. | */ static encodeAddToScriptAllowListScript(hash: Uint8Array, sliding_nonce: BigInt): DiemTypes.Script; /** * # Summary * Adds a validator account to the validator set, and triggers a * reconfiguration of the system to admit the account to the validator set for the system. This * transaction can only be successfully called by the Diem Root account. * * # Technical Description * This script adds the account at `validator_address` to the validator set. * This transaction emits a `DiemConfig::NewEpochEvent` event and triggers a * reconfiguration. Once the reconfiguration triggered by this script's * execution has been performed, the account at the `validator_address` is * considered to be a validator in the network. * * This transaction script will fail if the `validator_address` address is already in the validator set * or does not have a `ValidatorConfig::ValidatorConfig` resource already published under it. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `dr_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Diem Root signer. | * | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | * | `validator_name` | `vector<u8>` | ASCII-encoded human name for the validator. Must match the human name in the `ValidatorConfig::ValidatorConfig` for the validator. | * | `validator_address` | `address` | The validator account address to be added to the validator set. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `dr_account`. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | * | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::EDIEM_ROOT` | The sending account is not the Diem Root account. | * | `Errors::REQUIRES_ROLE` | `Roles::EDIEM_ROOT` | The sending account is not the Diem Root account. | * | 0 | 0 | The provided `validator_name` does not match the already-recorded human name for the validator. | * | `Errors::INVALID_ARGUMENT` | `DiemSystem::EINVALID_PROSPECTIVE_VALIDATOR` | The validator to be added does not have a `ValidatorConfig::ValidatorConfig` resource published under it, or its `config` field is empty. | * | `Errors::INVALID_ARGUMENT` | `DiemSystem::EALREADY_A_VALIDATOR` | The `validator_address` account is already a registered validator. | * | `Errors::INVALID_STATE` | `DiemConfig::EINVALID_BLOCK_TIME` | An invalid time value was encountered in reconfiguration. Unlikely to occur. | * * # Related Scripts * * `Script::create_validator_account` * * `Script::create_validator_operator_account` * * `Script::register_validator_config` * * `Script::remove_validator_and_reconfigure` * * `Script::set_validator_operator` * * `Script::set_validator_operator_with_nonce_admin` * * `Script::set_validator_config_and_reconfigure` */ static encodeAddValidatorAndReconfigureScript(sliding_nonce: BigInt, validator_name: Uint8Array, validator_address: DiemTypes.AccountAddress): DiemTypes.Script; /** * # Summary * Burns all coins held in the preburn resource at the specified * preburn address and removes them from the system. The sending account must * be the Treasury Compliance account. * The account that holds the preburn resource will normally be a Designated * Dealer, but there are no enforced requirements that it be one. * * # Technical Description * This transaction permanently destroys all the coins of `Token` type * stored in the `Diem::Preburn<Token>` resource published under the * `preburn_address` account address. * * This transaction will only succeed if the sending `account` has a * `Diem::BurnCapability<Token>`, and a `Diem::Preburn<Token>` resource * exists under `preburn_address`, with a non-zero `to_burn` field. After the successful execution * of this transaction the `total_value` field in the * `Diem::CurrencyInfo<Token>` resource published under `0xA550C18` will be * decremented by the value of the `to_burn` field of the preburn resource * under `preburn_address` immediately before this transaction, and the * `to_burn` field of the preburn resource will have a zero value. * * ## Events * The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle * held in the `Diem::CurrencyInfo<Token>` resource's `burn_events` published under * `0xA550C18`. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `Token` | Type | The Move type for the `Token` currency being burned. `Token` must be an already-registered currency on-chain. | * | `tc_account` | `&signer` | The signer reference of the sending account of this transaction, must have a burn capability for `Token` published under it. | * | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | * | `preburn_address` | `address` | The address where the coins to-be-burned are currently held. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `account`. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | * | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability<Token>` published under it. | * | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn<Token>` resource published under it. | * | `Errors::INVALID_STATE` | `Diem::EPREBURN_EMPTY` | The `Diem::Preburn<Token>` resource is empty (has a value of 0). | * | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | * * # Related Scripts * * `Script::burn_txn_fees` * * `Script::cancel_burn` * * `Script::preburn` */ static encodeBurnScript(token: DiemTypes.TypeTag, sliding_nonce: BigInt, preburn_address: DiemTypes.AccountAddress): DiemTypes.Script; /** * # Summary * Burns the transaction fees collected in the `CoinType` currency so that the * Diem association may reclaim the backing coins off-chain. May only be sent * by the Treasury Compliance account. * * # Technical Description * Burns the transaction fees collected in `CoinType` so that the * association may reclaim the backing coins. Once this transaction has executed * successfully all transaction fees that will have been collected in * `CoinType` since the last time this script was called with that specific * currency. Both `balance` and `preburn` fields in the * `TransactionFee::TransactionFee<CoinType>` resource published under the `0xB1E55ED` * account address will have a value of 0 after the successful execution of this script. * * ## Events * The successful execution of this transaction will emit a `Diem::BurnEvent` on the event handle * held in the `Diem::CurrencyInfo<CoinType>` resource's `burn_events` published under * `0xA550C18`. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `CoinType` | Type | The Move type for the `CoinType` being added to the sending account of the transaction. `CoinType` must be an already-registered currency on-chain. | * | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | * | `Errors::NOT_PUBLISHED` | `TransactionFee::ETRANSACTION_FEE` | `CoinType` is not an accepted transaction fee currency. | * | `Errors::INVALID_ARGUMENT` | `Diem::ECOIN` | The collected fees in `CoinType` are zero. | * * # Related Scripts * * `Script::burn` * * `Script::cancel_burn` */ static encodeBurnTxnFeesScript(coin_type: DiemTypes.TypeTag): DiemTypes.Script; /** * # Summary * Cancels and returns all coins held in the preburn area under * `preburn_address` and returns the funds to the `preburn_address`'s balance. * Can only be successfully sent by an account with Treasury Compliance role. * * # Technical Description * Cancels and returns all coins held in the `Diem::Preburn<Token>` resource under the `preburn_address` and * return the funds to the `preburn_address` account's `DiemAccount::Balance<Token>`. * The transaction must be sent by an `account` with a `Diem::BurnCapability<Token>` * resource published under it. The account at `preburn_address` must have a * `Diem::Preburn<Token>` resource published under it, and its value must be nonzero. The transaction removes * the entire balance held in the `Diem::Preburn<Token>` resource, and returns it back to the account's * `DiemAccount::Balance<Token>` under `preburn_address`. Due to this, the account at * `preburn_address` must already have a balance in the `Token` currency published * before this script is called otherwise the transaction will fail. * * ## Events * The successful execution of this transaction will emit: * * A `Diem::CancelBurnEvent` on the event handle held in the `Diem::CurrencyInfo<Token>` * resource's `burn_events` published under `0xA550C18`. * * A `DiemAccount::ReceivedPaymentEvent` on the `preburn_address`'s * `DiemAccount::DiemAccount` `received_events` event handle with both the `payer` and `payee` * being `preburn_address`. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `Token` | Type | The Move type for the `Token` currenty that burning is being cancelled for. `Token` must be an already-registered currency on-chain. | * | `account` | `&signer` | The signer reference of the sending account of this transaction, must have a burn capability for `Token` published under it. | * | `preburn_address` | `address` | The address where the coins to-be-burned are currently held. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::REQUIRES_CAPABILITY` | `Diem::EBURN_CAPABILITY` | The sending `account` does not have a `Diem::BurnCapability<Token>` published under it. | * | `Errors::NOT_PUBLISHED` | `Diem::EPREBURN` | The account at `preburn_address` does not have a `Diem::Preburn<Token>` resource published under it. | * | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The specified `Token` is not a registered currency on-chain. | * | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECOIN_DEPOSIT_IS_ZERO` | The value held in the preburn resource was zero. | * | `Errors::INVALID_ARGUMENT` | `DiemAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPE` | The account at `preburn_address` doesn't have a balance resource for `Token`. | * | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EDEPOSIT_EXCEEDS_LIMITS` | The depositing of the funds held in the prebun area would exceed the `account`'s account limits. | * | `Errors::INVALID_STATE` | `DualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SET` | The `account` does not have a compliance key set on it but dual attestion checking was performed. | * * # Related Scripts * * `Script::burn_txn_fees` * * `Script::burn` * * `Script::preburn` */ static encodeCancelBurnScript(token: DiemTypes.TypeTag, preburn_address: DiemTypes.AccountAddress): DiemTypes.Script; /** * # Summary * Creates a Child VASP account with its parent being the sending account of the transaction. * The sender of the transaction must be a Parent VASP account. * * # Technical Description * Creates a `ChildVASP` account for the sender `parent_vasp` at `child_address` with a balance of * `child_initial_balance` in `CoinType` and an initial authentication key of * `auth_key_prefix | child_address`. * * If `add_all_currencies` is true, the child address will have a zero balance in all available * currencies in the system. * * The new account will be a child account of the transaction sender, which must be a * Parent VASP account. The child account will be recorded against the limit of * child accounts of the creating Parent VASP account. * * ## Events * Successful execution with a `child_initial_balance` greater than zero will emit: * * A `DiemAccount::SentPaymentEvent` with the `payer` field being the Parent VASP's address, * and payee field being `child_address`. This is emitted on the Parent VASP's * `DiemAccount::DiemAccount` `sent_events` handle. * * A `DiemAccount::ReceivedPaymentEvent` with the `payer` field being the Parent VASP's address, * and payee field being `child_address`. This is emitted on the new Child VASPS's * `DiemAccount::DiemAccount` `received_events` handle. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `CoinType` | Type | The Move type for the `CoinType` that the child account should be created with. `CoinType` must be an already-registered currency on-chain. | * | `parent_vasp` | `&signer` | The signer reference of the sending account. Must be a Parent VASP account. | * | `child_address` | `address` | Address of the to-be-created Child VASP account. | * | `auth_key_prefix` | `vector<u8>` | The authentication key prefix that will be used initially for the newly created account. | * | `add_all_currencies` | `bool` | Whether to publish balance resources for all known currencies when the account is created. | * | `child_initial_balance` | `u64` | The initial balance in `CoinType` to give the child account when it's created. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::INVALID_ARGUMENT` | `DiemAccount::EMALFORMED_AUTHENTICATION_KEY` | The `auth_key_prefix` was not of length 32. | * | `Errors::REQUIRES_ROLE` | `Roles::EPARENT_VASP` | The sending account wasn't a Parent VASP account. | * | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `child_address` address is already taken. | * | `Errors::LIMIT_EXCEEDED` | `VASP::ETOO_MANY_CHILDREN` | The sending account has reached the maximum number of allowed child accounts. | * | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `CoinType` is not a registered currency on-chain. | * | `Errors::INVALID_STATE` | `DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED` | The withdrawal capability for the sending account has already been extracted. | * | `Errors::NOT_PUBLISHED` | `DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY` | The sending account doesn't have a balance in `CoinType`. | * | `Errors::LIMIT_EXCEEDED` | `DiemAccount::EINSUFFICIENT_BALANCE` | The sending account doesn't have at least `child_initial_balance` of `CoinType` balance. | * | `Errors::INVALID_ARGUMENT` | `DiemAccount::ECANNOT_CREATE_AT_VM_RESERVED` | The `child_address` is the reserved address 0x0. | * * # Related Scripts * * `Script::create_parent_vasp_account` * * `Script::add_currency_to_account` * * `Script::rotate_authentication_key` * * `Script::add_recovery_rotation_capability` * * `Script::create_recovery_address` */ static encodeCreateChildVaspAccountScript(coin_type: DiemTypes.TypeTag, child_address: DiemTypes.AccountAddress, auth_key_prefix: Uint8Array, add_all_currencies: boolean, child_initial_balance: BigInt): DiemTypes.Script; /** * # Summary * Creates a Designated Dealer account with the provided information, and initializes it with * default mint tiers. The transaction can only be sent by the Treasury Compliance account. * * # Technical Description * Creates an account with the Designated Dealer role at `addr` with authentication key * `auth_key_prefix` | `addr` and a 0 balance of type `Currency`. If `add_all_currencies` is true, * 0 balances for all available currencies in the system will also be added. This can only be * invoked by an account with the TreasuryCompliance role. * * At the time of creation the account is also initialized with default mint tiers of (500_000, * 5000_000, 50_000_000, 500_000_000), and preburn areas for each currency that is added to the * account. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `Currency` | Type | The Move type for the `Currency` that the Designated Dealer should be initialized with. `Currency` must be an already-registered currency on-chain. | * | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | * | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | * | `addr` | `address` | Address of the to-be-created Designated Dealer account. | * | `auth_key_prefix` | `vector<u8>` | The authentication key prefix that will be used initially for the newly created account. | * | `human_name` | `vector<u8>` | ASCII-encoded human name for the Designated Dealer. | * | `add_all_currencies` | `bool` | Whether to publish preburn, balance, and tier info resources for all known (SCS) currencies or just `Currency` when the account is created. | * * # Common Abort Conditions * | Error Category | Error Reason | Description | * | ---------------- | -------------- | ------------- | * | `Errors::NOT_PUBLISHED` | `SlidingNonce::ESLIDING_NONCE` | A `SlidingNonce` resource is not published under `tc_account`. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_OLD` | The `sliding_nonce` is too old and it's impossible to determine if it's duplicated or not. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_TOO_NEW` | The `sliding_nonce` is too far in the future. | * | `Errors::INVALID_ARGUMENT` | `SlidingNonce::ENONCE_ALREADY_RECORDED` | The `sliding_nonce` has been previously recorded. | * | `Errors::REQUIRES_ADDRESS` | `CoreAddresses::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | * | `Errors::REQUIRES_ROLE` | `Roles::ETREASURY_COMPLIANCE` | The sending account is not the Treasury Compliance account. | * | `Errors::NOT_PUBLISHED` | `Diem::ECURRENCY_INFO` | The `Currency` is not a registered currency on-chain. | * | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `addr` address is already taken. | * * # Related Scripts * * `Script::tiered_mint` * * `Script::peer_to_peer_with_metadata` * * `Script::rotate_dual_attestation_info` */ static encodeCreateDesignatedDealerScript(currency: DiemTypes.TypeTag, sliding_nonce: BigInt, addr: DiemTypes.AccountAddress, auth_key_prefix: Uint8Array, human_name: Uint8Array, add_all_currencies: boolean): DiemTypes.Script; /** * # Summary * Creates a Parent VASP account with the specified human name. Must be called by the Treasury Compliance account. * * # Technical Description * Creates an account with the Parent VASP role at `address` with authentication key * `auth_key_prefix` | `new_account_address` and a 0 balance of type `CoinType`. If * `add_all_currencies` is true, 0 balances for all available currencies in the system will * also be added. This can only be invoked by an TreasuryCompliance account. * `sliding_nonce` is a unique nonce for operation, see `SlidingNonce` for details. * * # Parameters * | Name | Type | Description | * | ------ | ------ | ------------- | * | `CoinType` | Type | The Move type for the `CoinType` currency that the Parent VASP account should be initialized with. `CoinType` must be an already-registered currency on-chain. | * | `tc_account` | `&signer` | The signer reference of the sending account of this transaction. Must be the Treasury Compliance account. | * | `sliding_nonce` | `u64` | The `sliding_nonce` (see: `SlidingNonce`) to be used for this transaction. | * | `new_account_address` | `address` | Address of the to-be-created Parent VASP account. | * | `auth_key_prefix` | `vector<u8>` | The authentication key prefix that will be used initially for the newly created account. | * | `human_name` | `vector<u8>` | ASCII-encoded human name for the Parent VASP. | * | `add_all_currencies` | `bool` | Whether to publish balance resources for all known currenc