From 29282298d62fdb51a8465d5413b209cf3ad5693c Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Tue, 12 Jul 2022 11:04:45 -0400 Subject: [PATCH] add XChainCommit tx --- .../src/models/transactions/XChainCommit.ts | 40 +++++++++++++++++++ .../xrpl/src/models/transactions/index.ts | 1 + .../src/models/transactions/transaction.ts | 6 +++ 3 files changed, 47 insertions(+) create mode 100644 packages/xrpl/src/models/transactions/XChainCommit.ts diff --git a/packages/xrpl/src/models/transactions/XChainCommit.ts b/packages/xrpl/src/models/transactions/XChainCommit.ts new file mode 100644 index 00000000..f105b8c6 --- /dev/null +++ b/packages/xrpl/src/models/transactions/XChainCommit.ts @@ -0,0 +1,40 @@ +import { ValidationError } from '../../errors' +import { Amount, Bridge } from '../common' + +import { BaseTransaction, validateBaseTransaction } from './common' + +/** + * + * @category Transaction Models + */ +export interface XChainCommit extends BaseTransaction { + TransactionType: 'XChainCommit' + + Bridge: Bridge + + XChainClaimID: number | string + + Amount: Amount +} + +/** + * Verify the form and type of a XChainCommit at runtime. + * + * @param tx - A XChainCommit Transaction. + * @throws When the XChainCommit is malformed. + */ +export function validateXChainCommit(tx: Record): void { + validateBaseTransaction(tx) + + if (tx.Bridge == null) { + throw new ValidationError('XChainCommit: missing field Bridge') + } + + if (tx.XChainCommitID == null) { + throw new ValidationError('XChainCommit: missing field XChainCommitID') + } + + if (tx.Amount == null) { + throw new ValidationError('XChainCommit: missing field Amount') + } +} diff --git a/packages/xrpl/src/models/transactions/index.ts b/packages/xrpl/src/models/transactions/index.ts index 526046c7..ae5fd8d9 100644 --- a/packages/xrpl/src/models/transactions/index.ts +++ b/packages/xrpl/src/models/transactions/index.ts @@ -46,3 +46,4 @@ export { SignerListSet } from './signerListSet' export { TicketCreate } from './ticketCreate' export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet' export { XChainClaim } from './XChainClaim' +export { XChainCommit } from './XChainCommit' diff --git a/packages/xrpl/src/models/transactions/transaction.ts b/packages/xrpl/src/models/transactions/transaction.ts index 94e48a94..c864c267 100644 --- a/packages/xrpl/src/models/transactions/transaction.ts +++ b/packages/xrpl/src/models/transactions/transaction.ts @@ -51,6 +51,7 @@ import { SignerListSet, validateSignerListSet } from './signerListSet' import { TicketCreate, validateTicketCreate } from './ticketCreate' import { TrustSet, validateTrustSet } from './trustSet' import { XChainClaim, validateXChainClaim } from './XChainClaim' +import { XChainCommit, validateXChainCommit } from './XChainCommit' /** * @category Transaction Models @@ -81,6 +82,7 @@ export type Transaction = | TicketCreate | TrustSet | XChainClaim + | XChainCommit /** * @category Transaction Models @@ -209,6 +211,10 @@ export function validate(transaction: Record): void { validateXChainClaim(tx) break + case 'XChainCommit': + validateXChainCommit(tx) + break + default: throw new ValidationError( `Invalid field TransactionType: ${tx.TransactionType}`,