diff --git a/packages/xrpl/src/models/transactions/XChainModifyBridge.ts b/packages/xrpl/src/models/transactions/XChainModifyBridge.ts new file mode 100644 index 0000000000..f81f52de16 --- /dev/null +++ b/packages/xrpl/src/models/transactions/XChainModifyBridge.ts @@ -0,0 +1,38 @@ +import { ValidationError } from '../../errors' +import { Amount, XChainBridge } from '../common' + +import { BaseTransaction, validateBaseTransaction } from './common' + +/** + * + * @category Transaction Models + */ +export interface XChainModifyBridge extends BaseTransaction { + TransactionType: 'XChainModifyBridge' + + XChainBridge: XChainBridge + + SignatureReward: Amount + + MinAccountCreateAmount?: Amount +} + +/** + * Verify the form and type of a XChainModifyBridge at runtime. + * + * @param tx - A XChainModifyBridge Transaction. + * @throws When the XChainModifyBridge is malformed. + */ +export function validateXChainModifyBridge(tx: Record): void { + validateBaseTransaction(tx) + + if (tx.XChainBridge == null) { + throw new ValidationError('XChainModifyBridge: missing field XChainBridge') + } + + if (tx.SignatureReward == null) { + throw new ValidationError( + 'XChainModifyBridge: missing field SignatureReward', + ) + } +} diff --git a/packages/xrpl/src/models/transactions/index.ts b/packages/xrpl/src/models/transactions/index.ts index 0327bdb86f..a47cca29b0 100644 --- a/packages/xrpl/src/models/transactions/index.ts +++ b/packages/xrpl/src/models/transactions/index.ts @@ -51,3 +51,4 @@ export { XChainCommit } from './XChainCommit' export { XChainCreateBridge } from './XChainCreateBridge' export { XChainCreateClaimID } from './XChainCreateClaimID' export { SidechainXChainAccountCreate } from './sidechainXChainAccountCreate' +export { XChainModifyBridge } from './XChainModifyBridge' diff --git a/packages/xrpl/src/models/transactions/transaction.ts b/packages/xrpl/src/models/transactions/transaction.ts index 466aa9b65a..9c3ab8d4a7 100644 --- a/packages/xrpl/src/models/transactions/transaction.ts +++ b/packages/xrpl/src/models/transactions/transaction.ts @@ -68,6 +68,10 @@ import { XChainCreateClaimID, validateXChainCreateClaimID, } from './XChainCreateClaimID' +import { + XChainModifyBridge, + validateXChainModifyBridge, +} from './XChainModifyBridge' /** * @category Transaction Models @@ -103,6 +107,7 @@ export type Transaction = | XChainCreateBridge | XChainCreateClaimID | SidechainXChainAccountCreate + | XChainModifyBridge /** * @category Transaction Models @@ -251,6 +256,10 @@ export function validate(transaction: Record): void { validateSidechainXChainAccountCreate(tx) break + case 'XChainModifyBridge': + validateXChainModifyBridge(tx) + break + default: throw new ValidationError( `Invalid field TransactionType: ${tx.TransactionType}`,