add XChainCommit tx

This commit is contained in:
Mayukha Vadari
2022-07-12 11:04:45 -04:00
parent 9d58400373
commit 29282298d6
3 changed files with 47 additions and 0 deletions

View File

@@ -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<string, unknown>): 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')
}
}

View File

@@ -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'

View File

@@ -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<string, unknown>): void {
validateXChainClaim(tx)
break
case 'XChainCommit':
validateXChainCommit(tx)
break
default:
throw new ValidationError(
`Invalid field TransactionType: ${tx.TransactionType}`,