diff --git a/packages/xrpl/src/models/transactions/claimReward.ts b/packages/xrpl/src/models/transactions/claimReward.ts new file mode 100644 index 00000000..74df1ac5 --- /dev/null +++ b/packages/xrpl/src/models/transactions/claimReward.ts @@ -0,0 +1,28 @@ +import { ValidationError } from '../../errors' + +import { BaseTransaction, validateBaseTransaction } from './common' + +/** + * ClaimReward is a transaction model that allows an account to claim rewards. + * + * @category Transaction Models + */ +export interface ClaimReward extends BaseTransaction { + TransactionType: 'ClaimReward' + /** The unique address of the issuer where the reward.c hook is installed. */ + Issuer?: string +} + +/** + * Verify the form and type of an ClaimReward at runtime. + * + * @param tx - An ClaimReward Transaction. + * @throws When the ClaimReward is Malformed. + */ +export function validateClaimReward(tx: Record): void { + validateBaseTransaction(tx) + + if (tx.Issuer !== undefined && typeof tx.Issuer !== 'string') { + throw new ValidationError('ClaimReward: invalid Issuer') + } +} diff --git a/packages/xrpl/src/models/transactions/index.ts b/packages/xrpl/src/models/transactions/index.ts index 4b36d951..b88d4d9f 100644 --- a/packages/xrpl/src/models/transactions/index.ts +++ b/packages/xrpl/src/models/transactions/index.ts @@ -10,6 +10,7 @@ export { AccountDelete } from './accountDelete' export { CheckCancel } from './checkCancel' export { CheckCash } from './checkCash' export { CheckCreate } from './checkCreate' +export { ClaimReward } from './claimReward' export { DepositPreauth } from './depositPreauth' export { EscrowCancel } from './escrowCancel' export { EscrowCreate } from './escrowCreate' diff --git a/packages/xrpl/src/models/transactions/transaction.ts b/packages/xrpl/src/models/transactions/transaction.ts index 794b90c6..df53e19e 100644 --- a/packages/xrpl/src/models/transactions/transaction.ts +++ b/packages/xrpl/src/models/transactions/transaction.ts @@ -9,6 +9,7 @@ import { AccountSet, validateAccountSet } from './accountSet' import { CheckCancel, validateCheckCancel } from './checkCancel' import { CheckCash, validateCheckCash } from './checkCash' import { CheckCreate, validateCheckCreate } from './checkCreate' +import { ClaimReward, validateClaimReward } from './claimReward' import { DepositPreauth, validateDepositPreauth } from './depositPreauth' import { EscrowCancel, validateEscrowCancel } from './escrowCancel' import { EscrowCreate, validateEscrowCreate } from './escrowCreate' @@ -71,6 +72,7 @@ export type Transaction = | CheckCancel | CheckCash | CheckCreate + | ClaimReward | DepositPreauth | EscrowCancel | EscrowCreate @@ -146,6 +148,10 @@ export function validate(transaction: Record): void { validateCheckCreate(tx) break + case 'ClaimReward': + validateClaimReward(tx) + break + case 'DepositPreauth': validateDepositPreauth(tx) break