From caddad737ca30d3fa2f7509c9ac04950bd6d2e20 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Tue, 12 Jul 2022 11:08:13 -0400 Subject: [PATCH] add XChainCreateBridge tx --- .../src/models/transactions/XChainCommit.ts | 2 +- .../models/transactions/XChainCreateBridge.ts | 38 +++++++++++++++++++ .../xrpl/src/models/transactions/index.ts | 1 + .../src/models/transactions/transaction.ts | 9 +++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 packages/xrpl/src/models/transactions/XChainCreateBridge.ts diff --git a/packages/xrpl/src/models/transactions/XChainCommit.ts b/packages/xrpl/src/models/transactions/XChainCommit.ts index f105b8c6..87afcd84 100644 --- a/packages/xrpl/src/models/transactions/XChainCommit.ts +++ b/packages/xrpl/src/models/transactions/XChainCommit.ts @@ -31,7 +31,7 @@ export function validateXChainCommit(tx: Record): void { } if (tx.XChainCommitID == null) { - throw new ValidationError('XChainCommit: missing field XChainCommitID') + throw new ValidationError('XChainCommit: missing field XChainClaimID') } if (tx.Amount == null) { diff --git a/packages/xrpl/src/models/transactions/XChainCreateBridge.ts b/packages/xrpl/src/models/transactions/XChainCreateBridge.ts new file mode 100644 index 00000000..1ba45d54 --- /dev/null +++ b/packages/xrpl/src/models/transactions/XChainCreateBridge.ts @@ -0,0 +1,38 @@ +import { ValidationError } from '../../errors' +import { Amount, Bridge } from '../common' + +import { BaseTransaction, validateBaseTransaction } from './common' + +/** + * + * @category Transaction Models + */ +export interface XChainCreateBridge extends BaseTransaction { + TransactionType: 'XChainCreateBridge' + + Bridge: Bridge + + SignatureReward: Amount + + MinAccountCreateAmount?: Amount +} + +/** + * Verify the form and type of a XChainCreateBridge at runtime. + * + * @param tx - A XChainCreateBridge Transaction. + * @throws When the XChainCreateBridge is malformed. + */ +export function validateXChainCreateBridge(tx: Record): void { + validateBaseTransaction(tx) + + if (tx.Bridge == null) { + throw new ValidationError('XChainCreateBridge: missing field Bridge') + } + + if (tx.SignatureReward == null) { + throw new ValidationError( + 'XChainCreateBridge: missing field SignatureReward', + ) + } +} diff --git a/packages/xrpl/src/models/transactions/index.ts b/packages/xrpl/src/models/transactions/index.ts index ae5fd8d9..2206068a 100644 --- a/packages/xrpl/src/models/transactions/index.ts +++ b/packages/xrpl/src/models/transactions/index.ts @@ -47,3 +47,4 @@ export { TicketCreate } from './ticketCreate' export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet' export { XChainClaim } from './XChainClaim' export { XChainCommit } from './XChainCommit' +export { XChainCreateBridge } from './XChainCreateBridge' diff --git a/packages/xrpl/src/models/transactions/transaction.ts b/packages/xrpl/src/models/transactions/transaction.ts index c864c267..4bc19204 100644 --- a/packages/xrpl/src/models/transactions/transaction.ts +++ b/packages/xrpl/src/models/transactions/transaction.ts @@ -52,6 +52,10 @@ import { TicketCreate, validateTicketCreate } from './ticketCreate' import { TrustSet, validateTrustSet } from './trustSet' import { XChainClaim, validateXChainClaim } from './XChainClaim' import { XChainCommit, validateXChainCommit } from './XChainCommit' +import { + XChainCreateBridge, + validateXChainCreateBridge, +} from './XChainCreateBridge' /** * @category Transaction Models @@ -83,6 +87,7 @@ export type Transaction = | TrustSet | XChainClaim | XChainCommit + | XChainCreateBridge /** * @category Transaction Models @@ -215,6 +220,10 @@ export function validate(transaction: Record): void { validateXChainCommit(tx) break + case 'XChainCreateBridge': + validateXChainCreateBridge(tx) + break + default: throw new ValidationError( `Invalid field TransactionType: ${tx.TransactionType}`,