xrpl
Version: 
A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser
53 lines (50 loc) • 1.7 kB
text/typescript
import {
  Account,
  BaseTransaction,
  isAccount,
  isString,
  validateBaseTransaction,
  validateOptionalField,
  validateRequiredField,
} from './common'
/**
 * The NFTokenBurn transaction is used to remove an NFToken object from the
 * NFTokenPage in which it is being held, effectively removing the token from
 * the ledger ("burning" it).
 *
 * If this operation succeeds, the corresponding NFToken is removed. If this
 * operation empties the NFTokenPage holding the NFToken or results in the
 * consolidation, thus removing an NFTokenPage, the owner’s reserve requirement
 * is reduced by one.
 */
export interface NFTokenBurn extends BaseTransaction {
  TransactionType: 'NFTokenBurn'
  /**
   * Indicates the AccountID that submitted this transaction. The account MUST
   * be either the present owner of the token or, if the lsfBurnable flag is set
   * in the NFToken, either the issuer account or an account authorized by the
   * issuer, i.e. MintAccount.
   */
  Account: Account
  /**
   * Identifies the NFToken object to be removed by the transaction.
   */
  NFTokenID: string
  /**
   * Indicates which account currently owns the token if it is different than
   * Account. Only used to burn tokens which have the lsfBurnable flag enabled
   * and are not owned by the signing account.
   */
  Owner?: Account
}
/**
 * Verify the form and type of an NFTokenBurn at runtime.
 *
 * @param tx - An NFTokenBurn Transaction.
 * @throws When the NFTokenBurn is Malformed.
 */
export function validateNFTokenBurn(tx: Record<string, unknown>): void {
  validateBaseTransaction(tx)
  validateRequiredField(tx, 'NFTokenID', isString)
  validateOptionalField(tx, 'Owner', isAccount)
}