@libra-opensource/client-sdk-typescript
Version:
659 lines (658 loc) • 149 kB
TypeScript
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 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. |
* | `Errors::LIMIT_EXCEEDED` | ` RecoveryAddress::EMAX_KEYS_REGISTERED` | `RecoveryAddress::MAX_REGISTERED_KEYS` have already been registered with this `recovery_address`. |
*
* # Related Scripts
* * `Script::create_recovery_address`
* * `Script::rotate_authentication_key_with_recovery_address`
*/
static encodeAddRecoveryRotationCapabilityScript(recovery_address: DiemTypes.AccountAddress): 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 currencies 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 `CoinType` is not a registered currency on-chain. |
* | `Errors::ALREADY_PUBLISHED` | `Roles::EROLE_ID` | The `new_account_address` address is already taken. |
*
* # Related Scripts
* * `Script::create_child_vasp_account`
* * `Script::add_currency_to_account`
* * `Script::rotate_authentication_key`
* * `Script::add_recovery_rotation_capability`
* * `Script::create_recovery_address`
* * `Script::rotate_dual_attestation_info`
*/
static encodeCreateParentVaspAccountScript(coin_type: DiemTypes.TypeTag, sliding_nonce: BigInt, new_account_address: DiemTypes.AccountAddress, auth_key_prefix: Uint8Array, human_name: Uint8Array, add_all_currencies: boolean): DiemTypes.Script;
/**
* # Summary
* Initializes the sending account as a recovery address that may be used by
* the VASP that it belongs to. The sending account must be a VASP account.
* Multiple recovery addresses can exist for a single VASP, but accounts in
* each must be disjoint.
*
* # Technical Description
* Publishes a `RecoveryAddress::RecoveryAddress` resource under `account`. It then
* extracts the `DiemAccount::KeyRotationCapability` for `account` and adds
* it to the resource. After the successful execution of this transaction
* other accounts may add their key rotation to this resource so that `account`
* may be used as a recovery account for those accounts.
*
* # Parameters
* | Name | Type | Description |
* | ------ | ------ | ------------- |
* | `account` | `&signer` | The signer of the sending account of the transaction. |
*
* # Common Abort Conditions
* | Error Category | Error Reason | Description |
* | ---------------- | ------