xrpl
Version:
A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser
56 lines (48 loc) • 1.6 kB
text/typescript
import { ClawbackAmount } from '../common'
import {
BaseTransaction,
validateBaseTransaction,
validateRequiredField,
isString,
Account,
isAccount,
validateOptionalField,
isClawbackAmount,
} from './common'
/**
* The VaultClawback transaction performs a Clawback from the Vault, exchanging the shares of an account.
*
* Conceptually, the transaction performs VaultWithdraw on behalf of the Holder, sending the funds to the
* Issuer account of the asset. In case there are insufficient funds for the entire Amount the transaction
* will perform a partial Clawback, up to the Vault.AssetsAvailable. The Clawback transaction must respect
* any future fees or penalties.
*
* @category Transaction Models
*/
export interface VaultClawback extends BaseTransaction {
TransactionType: 'VaultClawback'
/**
* The ID of the vault from which assets are withdrawn.
*/
VaultID: string
/**
* The account ID from which to clawback the assets.
*/
Holder: Account
/**
* The asset amount to clawback. When Amount is 0 clawback all funds, up to the total shares the Holder owns.
*/
Amount?: ClawbackAmount
}
/**
* Verify the form and type of a {@link VaultClawback} at runtime.
*
* @param tx - A {@link VaultClawback} Transaction.
* @throws When the {@link VaultClawback} is malformed.
*/
export function validateVaultClawback(tx: Record<string, unknown>): void {
validateBaseTransaction(tx)
validateRequiredField(tx, 'VaultID', isString)
validateRequiredField(tx, 'Holder', isAccount)
validateOptionalField(tx, 'Amount', isClawbackAmount)
}