xrpl 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/build/xrpl-latest-min.js +3 -0
  2. package/build/xrpl-latest-min.js.map +1 -0
  3. package/build/xrpl-latest.js +240 -54
  4. package/build/xrpl-latest.js.map +1 -1
  5. package/dist/npm/client/index.d.ts +4 -0
  6. package/dist/npm/client/index.d.ts.map +1 -1
  7. package/dist/npm/client/index.js +11 -1
  8. package/dist/npm/client/index.js.map +1 -1
  9. package/dist/npm/models/index.d.ts +1 -1
  10. package/dist/npm/models/index.d.ts.map +1 -1
  11. package/dist/npm/models/index.js +3 -2
  12. package/dist/npm/models/index.js.map +1 -1
  13. package/dist/npm/models/ledger/LedgerEntry.d.ts +3 -2
  14. package/dist/npm/models/ledger/LedgerEntry.d.ts.map +1 -1
  15. package/dist/npm/models/ledger/PermissionedDomain.d.ts +11 -0
  16. package/dist/npm/models/ledger/PermissionedDomain.d.ts.map +1 -0
  17. package/dist/npm/models/ledger/PermissionedDomain.js +3 -0
  18. package/dist/npm/models/ledger/PermissionedDomain.js.map +1 -0
  19. package/dist/npm/models/ledger/RippleState.d.ts +3 -1
  20. package/dist/npm/models/ledger/RippleState.d.ts.map +1 -1
  21. package/dist/npm/models/ledger/RippleState.js +2 -0
  22. package/dist/npm/models/ledger/RippleState.js.map +1 -1
  23. package/dist/npm/models/methods/index.d.ts +5 -4
  24. package/dist/npm/models/methods/index.d.ts.map +1 -1
  25. package/dist/npm/models/methods/ledger.d.ts +2 -2
  26. package/dist/npm/models/methods/ledger.d.ts.map +1 -1
  27. package/dist/npm/models/methods/serverState.d.ts +1 -0
  28. package/dist/npm/models/methods/serverState.d.ts.map +1 -1
  29. package/dist/npm/models/methods/simulate.d.ts +42 -0
  30. package/dist/npm/models/methods/simulate.d.ts.map +1 -0
  31. package/dist/npm/models/methods/simulate.js +3 -0
  32. package/dist/npm/models/methods/simulate.js.map +1 -0
  33. package/dist/npm/models/transactions/AMMClawback.d.ts +17 -0
  34. package/dist/npm/models/transactions/AMMClawback.d.ts.map +1 -0
  35. package/dist/npm/models/transactions/AMMClawback.js +34 -0
  36. package/dist/npm/models/transactions/AMMClawback.js.map +1 -0
  37. package/dist/npm/models/transactions/NFTokenMint.d.ts +3 -1
  38. package/dist/npm/models/transactions/NFTokenMint.d.ts.map +1 -1
  39. package/dist/npm/models/transactions/NFTokenMint.js +1 -0
  40. package/dist/npm/models/transactions/NFTokenMint.js.map +1 -1
  41. package/dist/npm/models/transactions/NFTokenModify.d.ts +9 -0
  42. package/dist/npm/models/transactions/NFTokenModify.d.ts.map +1 -0
  43. package/dist/npm/models/transactions/NFTokenModify.js +22 -0
  44. package/dist/npm/models/transactions/NFTokenModify.js.map +1 -0
  45. package/dist/npm/models/transactions/accountDelete.d.ts.map +1 -1
  46. package/dist/npm/models/transactions/accountDelete.js +1 -1
  47. package/dist/npm/models/transactions/accountDelete.js.map +1 -1
  48. package/dist/npm/models/transactions/common.d.ts +5 -2
  49. package/dist/npm/models/transactions/common.d.ts.map +1 -1
  50. package/dist/npm/models/transactions/common.js +25 -7
  51. package/dist/npm/models/transactions/common.js.map +1 -1
  52. package/dist/npm/models/transactions/depositPreauth.d.ts.map +1 -1
  53. package/dist/npm/models/transactions/depositPreauth.js +2 -2
  54. package/dist/npm/models/transactions/depositPreauth.js.map +1 -1
  55. package/dist/npm/models/transactions/escrowFinish.d.ts.map +1 -1
  56. package/dist/npm/models/transactions/escrowFinish.js +1 -1
  57. package/dist/npm/models/transactions/escrowFinish.js.map +1 -1
  58. package/dist/npm/models/transactions/index.d.ts +5 -1
  59. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  60. package/dist/npm/models/transactions/index.js +5 -1
  61. package/dist/npm/models/transactions/index.js.map +1 -1
  62. package/dist/npm/models/transactions/payment.d.ts.map +1 -1
  63. package/dist/npm/models/transactions/payment.js +1 -1
  64. package/dist/npm/models/transactions/payment.js.map +1 -1
  65. package/dist/npm/models/transactions/paymentChannelClaim.d.ts.map +1 -1
  66. package/dist/npm/models/transactions/paymentChannelClaim.js +1 -1
  67. package/dist/npm/models/transactions/paymentChannelClaim.js.map +1 -1
  68. package/dist/npm/models/transactions/permissionedDomainDelete.d.ts +7 -0
  69. package/dist/npm/models/transactions/permissionedDomainDelete.d.ts.map +1 -0
  70. package/dist/npm/models/transactions/permissionedDomainDelete.js +10 -0
  71. package/dist/npm/models/transactions/permissionedDomainDelete.js.map +1 -0
  72. package/dist/npm/models/transactions/permissionedDomainSet.d.ts +9 -0
  73. package/dist/npm/models/transactions/permissionedDomainSet.d.ts.map +1 -0
  74. package/dist/npm/models/transactions/permissionedDomainSet.js +13 -0
  75. package/dist/npm/models/transactions/permissionedDomainSet.js.map +1 -0
  76. package/dist/npm/models/transactions/transaction.d.ts +5 -1
  77. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  78. package/dist/npm/models/transactions/transaction.js +17 -1
  79. package/dist/npm/models/transactions/transaction.js.map +1 -1
  80. package/dist/npm/models/transactions/trustSet.d.ts +5 -1
  81. package/dist/npm/models/transactions/trustSet.d.ts.map +1 -1
  82. package/dist/npm/models/transactions/trustSet.js +2 -0
  83. package/dist/npm/models/transactions/trustSet.js.map +1 -1
  84. package/dist/npm/models/utils/flags.d.ts +1 -0
  85. package/dist/npm/models/utils/flags.d.ts.map +1 -1
  86. package/dist/npm/models/utils/flags.js +41 -28
  87. package/dist/npm/models/utils/flags.js.map +1 -1
  88. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  89. package/dist/npm/src/client/index.d.ts +4 -0
  90. package/dist/npm/src/client/index.d.ts.map +1 -1
  91. package/dist/npm/src/client/index.js +11 -1
  92. package/dist/npm/src/client/index.js.map +1 -1
  93. package/dist/npm/src/models/index.d.ts +1 -1
  94. package/dist/npm/src/models/index.d.ts.map +1 -1
  95. package/dist/npm/src/models/index.js +3 -2
  96. package/dist/npm/src/models/index.js.map +1 -1
  97. package/dist/npm/src/models/ledger/LedgerEntry.d.ts +3 -2
  98. package/dist/npm/src/models/ledger/LedgerEntry.d.ts.map +1 -1
  99. package/dist/npm/src/models/ledger/PermissionedDomain.d.ts +11 -0
  100. package/dist/npm/src/models/ledger/PermissionedDomain.d.ts.map +1 -0
  101. package/dist/npm/src/models/ledger/PermissionedDomain.js +3 -0
  102. package/dist/npm/src/models/ledger/PermissionedDomain.js.map +1 -0
  103. package/dist/npm/src/models/ledger/RippleState.d.ts +3 -1
  104. package/dist/npm/src/models/ledger/RippleState.d.ts.map +1 -1
  105. package/dist/npm/src/models/ledger/RippleState.js +2 -0
  106. package/dist/npm/src/models/ledger/RippleState.js.map +1 -1
  107. package/dist/npm/src/models/methods/index.d.ts +5 -4
  108. package/dist/npm/src/models/methods/index.d.ts.map +1 -1
  109. package/dist/npm/src/models/methods/ledger.d.ts +2 -2
  110. package/dist/npm/src/models/methods/ledger.d.ts.map +1 -1
  111. package/dist/npm/src/models/methods/serverState.d.ts +1 -0
  112. package/dist/npm/src/models/methods/serverState.d.ts.map +1 -1
  113. package/dist/npm/src/models/methods/simulate.d.ts +42 -0
  114. package/dist/npm/src/models/methods/simulate.d.ts.map +1 -0
  115. package/dist/npm/src/models/methods/simulate.js +3 -0
  116. package/dist/npm/src/models/methods/simulate.js.map +1 -0
  117. package/dist/npm/src/models/transactions/AMMClawback.d.ts +17 -0
  118. package/dist/npm/src/models/transactions/AMMClawback.d.ts.map +1 -0
  119. package/dist/npm/src/models/transactions/AMMClawback.js +34 -0
  120. package/dist/npm/src/models/transactions/AMMClawback.js.map +1 -0
  121. package/dist/npm/src/models/transactions/NFTokenMint.d.ts +3 -1
  122. package/dist/npm/src/models/transactions/NFTokenMint.d.ts.map +1 -1
  123. package/dist/npm/src/models/transactions/NFTokenMint.js +1 -0
  124. package/dist/npm/src/models/transactions/NFTokenMint.js.map +1 -1
  125. package/dist/npm/src/models/transactions/NFTokenModify.d.ts +9 -0
  126. package/dist/npm/src/models/transactions/NFTokenModify.d.ts.map +1 -0
  127. package/dist/npm/src/models/transactions/NFTokenModify.js +22 -0
  128. package/dist/npm/src/models/transactions/NFTokenModify.js.map +1 -0
  129. package/dist/npm/src/models/transactions/accountDelete.d.ts.map +1 -1
  130. package/dist/npm/src/models/transactions/accountDelete.js +1 -1
  131. package/dist/npm/src/models/transactions/accountDelete.js.map +1 -1
  132. package/dist/npm/src/models/transactions/common.d.ts +5 -2
  133. package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
  134. package/dist/npm/src/models/transactions/common.js +25 -7
  135. package/dist/npm/src/models/transactions/common.js.map +1 -1
  136. package/dist/npm/src/models/transactions/depositPreauth.d.ts.map +1 -1
  137. package/dist/npm/src/models/transactions/depositPreauth.js +2 -2
  138. package/dist/npm/src/models/transactions/depositPreauth.js.map +1 -1
  139. package/dist/npm/src/models/transactions/escrowFinish.d.ts.map +1 -1
  140. package/dist/npm/src/models/transactions/escrowFinish.js +1 -1
  141. package/dist/npm/src/models/transactions/escrowFinish.js.map +1 -1
  142. package/dist/npm/src/models/transactions/index.d.ts +5 -1
  143. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  144. package/dist/npm/src/models/transactions/index.js +5 -1
  145. package/dist/npm/src/models/transactions/index.js.map +1 -1
  146. package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
  147. package/dist/npm/src/models/transactions/payment.js +1 -1
  148. package/dist/npm/src/models/transactions/payment.js.map +1 -1
  149. package/dist/npm/src/models/transactions/paymentChannelClaim.d.ts.map +1 -1
  150. package/dist/npm/src/models/transactions/paymentChannelClaim.js +1 -1
  151. package/dist/npm/src/models/transactions/paymentChannelClaim.js.map +1 -1
  152. package/dist/npm/src/models/transactions/permissionedDomainDelete.d.ts +7 -0
  153. package/dist/npm/src/models/transactions/permissionedDomainDelete.d.ts.map +1 -0
  154. package/dist/npm/src/models/transactions/permissionedDomainDelete.js +10 -0
  155. package/dist/npm/src/models/transactions/permissionedDomainDelete.js.map +1 -0
  156. package/dist/npm/src/models/transactions/permissionedDomainSet.d.ts +9 -0
  157. package/dist/npm/src/models/transactions/permissionedDomainSet.d.ts.map +1 -0
  158. package/dist/npm/src/models/transactions/permissionedDomainSet.js +13 -0
  159. package/dist/npm/src/models/transactions/permissionedDomainSet.js.map +1 -0
  160. package/dist/npm/src/models/transactions/transaction.d.ts +5 -1
  161. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  162. package/dist/npm/src/models/transactions/transaction.js +17 -1
  163. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  164. package/dist/npm/src/models/transactions/trustSet.d.ts +5 -1
  165. package/dist/npm/src/models/transactions/trustSet.d.ts.map +1 -1
  166. package/dist/npm/src/models/transactions/trustSet.js +2 -0
  167. package/dist/npm/src/models/transactions/trustSet.js.map +1 -1
  168. package/dist/npm/src/models/utils/flags.d.ts +1 -0
  169. package/dist/npm/src/models/utils/flags.d.ts.map +1 -1
  170. package/dist/npm/src/models/utils/flags.js +41 -28
  171. package/dist/npm/src/models/utils/flags.js.map +1 -1
  172. package/dist/npm/src/sugar/submit.d.ts.map +1 -1
  173. package/dist/npm/src/sugar/submit.js +7 -7
  174. package/dist/npm/src/sugar/submit.js.map +1 -1
  175. package/dist/npm/sugar/submit.d.ts.map +1 -1
  176. package/dist/npm/sugar/submit.js +7 -7
  177. package/dist/npm/sugar/submit.js.map +1 -1
  178. package/package.json +4 -4
  179. package/src/client/index.ts +42 -2
  180. package/src/models/index.ts +2 -1
  181. package/src/models/ledger/LedgerEntry.ts +3 -0
  182. package/src/models/ledger/PermissionedDomain.ts +29 -0
  183. package/src/models/ledger/RippleState.ts +4 -0
  184. package/src/models/methods/index.ts +18 -0
  185. package/src/models/methods/ledger.ts +2 -2
  186. package/src/models/methods/serverState.ts +1 -0
  187. package/src/models/methods/simulate.ts +88 -0
  188. package/src/models/transactions/AMMClawback.ts +120 -0
  189. package/src/models/transactions/NFTokenMint.ts +5 -0
  190. package/src/models/transactions/NFTokenModify.ts +67 -0
  191. package/src/models/transactions/accountDelete.ts +2 -0
  192. package/src/models/transactions/common.ts +49 -9
  193. package/src/models/transactions/depositPreauth.ts +3 -0
  194. package/src/models/transactions/escrowFinish.ts +2 -0
  195. package/src/models/transactions/index.ts +10 -1
  196. package/src/models/transactions/payment.ts +2 -0
  197. package/src/models/transactions/paymentChannelClaim.ts +2 -0
  198. package/src/models/transactions/permissionedDomainDelete.ts +28 -0
  199. package/src/models/transactions/permissionedDomainSet.ts +54 -0
  200. package/src/models/transactions/transaction.ts +32 -2
  201. package/src/models/transactions/trustSet.ts +10 -0
  202. package/src/models/utils/flags.ts +61 -35
  203. package/src/sugar/submit.ts +2 -3
@@ -4,11 +4,12 @@
4
4
  import { ValidationError } from '../../errors'
5
5
  import { IssuedCurrencyAmount, Memo } from '../common'
6
6
  import { isHex } from '../utils'
7
- import { setTransactionFlagsToNumber } from '../utils/flags'
7
+ import { convertTxFlagsToNumber } from '../utils/flags'
8
8
 
9
9
  import { AccountDelete, validateAccountDelete } from './accountDelete'
10
10
  import { AccountSet, validateAccountSet } from './accountSet'
11
11
  import { AMMBid, validateAMMBid } from './AMMBid'
12
+ import { AMMClawback, validateAMMClawback } from './AMMClawback'
12
13
  import { AMMCreate, validateAMMCreate } from './AMMCreate'
13
14
  import { AMMDelete, validateAMMDelete } from './AMMDelete'
14
15
  import { AMMDeposit, validateAMMDeposit } from './AMMDeposit'
@@ -57,6 +58,7 @@ import {
57
58
  validateNFTokenCreateOffer,
58
59
  } from './NFTokenCreateOffer'
59
60
  import { NFTokenMint, validateNFTokenMint } from './NFTokenMint'
61
+ import { NFTokenModify, validateNFTokenModify } from './NFTokenModify'
60
62
  import { OfferCancel, validateOfferCancel } from './offerCancel'
61
63
  import { OfferCreate, validateOfferCreate } from './offerCreate'
62
64
  import { OracleDelete, validateOracleDelete } from './oracleDelete'
@@ -74,6 +76,14 @@ import {
74
76
  PaymentChannelFund,
75
77
  validatePaymentChannelFund,
76
78
  } from './paymentChannelFund'
79
+ import {
80
+ PermissionedDomainDelete,
81
+ validatePermissionedDomainDelete,
82
+ } from './permissionedDomainDelete'
83
+ import {
84
+ PermissionedDomainSet,
85
+ validatePermissionedDomainSet,
86
+ } from './permissionedDomainSet'
77
87
  import { SetFee } from './setFee'
78
88
  import { SetRegularKey, validateSetRegularKey } from './setRegularKey'
79
89
  import { SignerListSet, validateSignerListSet } from './signerListSet'
@@ -114,6 +124,7 @@ import {
114
124
  */
115
125
  export type SubmittableTransaction =
116
126
  | AMMBid
127
+ | AMMClawback
117
128
  | AMMCreate
118
129
  | AMMDelete
119
130
  | AMMDeposit
@@ -143,6 +154,7 @@ export type SubmittableTransaction =
143
154
  | NFTokenCancelOffer
144
155
  | NFTokenCreateOffer
145
156
  | NFTokenMint
157
+ | NFTokenModify
146
158
  | OfferCancel
147
159
  | OfferCreate
148
160
  | OracleDelete
@@ -151,6 +163,8 @@ export type SubmittableTransaction =
151
163
  | PaymentChannelClaim
152
164
  | PaymentChannelCreate
153
165
  | PaymentChannelFund
166
+ | PermissionedDomainSet
167
+ | PermissionedDomainDelete
154
168
  | SetRegularKey
155
169
  | SignerListSet
156
170
  | TicketCreate
@@ -255,12 +269,16 @@ export function validate(transaction: Record<string, unknown>): void {
255
269
  })
256
270
 
257
271
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- okay here
258
- setTransactionFlagsToNumber(tx as unknown as Transaction)
272
+ tx.Flags = convertTxFlagsToNumber(tx as unknown as Transaction)
259
273
  switch (tx.TransactionType) {
260
274
  case 'AMMBid':
261
275
  validateAMMBid(tx)
262
276
  break
263
277
 
278
+ case 'AMMClawback':
279
+ validateAMMClawback(tx)
280
+ break
281
+
264
282
  case 'AMMCreate':
265
283
  validateAMMCreate(tx)
266
284
  break
@@ -377,6 +395,10 @@ export function validate(transaction: Record<string, unknown>): void {
377
395
  validateNFTokenMint(tx)
378
396
  break
379
397
 
398
+ case 'NFTokenModify':
399
+ validateNFTokenModify(tx)
400
+ break
401
+
380
402
  case 'OfferCancel':
381
403
  validateOfferCancel(tx)
382
404
  break
@@ -409,6 +431,14 @@ export function validate(transaction: Record<string, unknown>): void {
409
431
  validatePaymentChannelFund(tx)
410
432
  break
411
433
 
434
+ case 'PermissionedDomainSet':
435
+ validatePermissionedDomainSet(tx)
436
+ break
437
+
438
+ case 'PermissionedDomainDelete':
439
+ validatePermissionedDomainDelete(tx)
440
+ break
441
+
412
442
  case 'SetRegularKey':
413
443
  validateSetRegularKey(tx)
414
444
  break
@@ -30,6 +30,11 @@ export enum TrustSetFlags {
30
30
  tfSetFreeze = 0x00100000,
31
31
  /** Unfreeze the trust line. */
32
32
  tfClearFreeze = 0x00200000,
33
+ /** Deep-Freeze the trustline -- disallow sending and receiving the said IssuedCurrency */
34
+ /** Allowed only if the trustline is already regularly frozen, or if tfSetFreeze is set in the same transaction. */
35
+ tfSetDeepFreeze = 0x00400000,
36
+ /** Clear a Deep-Frozen trustline */
37
+ tfClearDeepFreeze = 0x00800000,
33
38
  }
34
39
 
35
40
  /**
@@ -89,6 +94,11 @@ export interface TrustSetFlagsInterface extends GlobalFlags {
89
94
  tfSetFreeze?: boolean
90
95
  /** Unfreeze the trust line. */
91
96
  tfClearFreeze?: boolean
97
+ /** Deep-Freeze the trustline -- disallow sending and receiving the said IssuedCurrency */
98
+ /** Allowed only if the trustline is already regularly frozen, or if tfSetFreeze is set in the same transaction. */
99
+ tfSetDeepFreeze?: boolean
100
+ /** Clear a Deep-Frozen trust line */
101
+ tfClearDeepFreeze?: boolean
92
102
  }
93
103
 
94
104
  /**
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-param-reassign -- param reassign is safe */
2
1
  /* eslint-disable no-bitwise -- flags require bitwise operations */
3
2
  import { ValidationError } from '../../errors'
4
3
  import {
@@ -6,9 +5,9 @@ import {
6
5
  AccountRootFlags,
7
6
  } from '../ledger/AccountRoot'
8
7
  import { AccountSetTfFlags } from '../transactions/accountSet'
8
+ import { AMMClawbackFlags } from '../transactions/AMMClawback'
9
9
  import { AMMDepositFlags } from '../transactions/AMMDeposit'
10
10
  import { AMMWithdrawFlags } from '../transactions/AMMWithdraw'
11
- import { GlobalFlags } from '../transactions/common'
12
11
  import { MPTokenAuthorizeFlags } from '../transactions/MPTokenAuthorize'
13
12
  import { MPTokenIssuanceCreateFlags } from '../transactions/MPTokenIssuanceCreate'
14
13
  import { MPTokenIssuanceSetFlags } from '../transactions/MPTokenIssuanceSet'
@@ -49,6 +48,7 @@ export function parseAccountRootFlags(
49
48
 
50
49
  const txToFlag = {
51
50
  AccountSet: AccountSetTfFlags,
51
+ AMMClawback: AMMClawbackFlags,
52
52
  AMMDeposit: AMMDepositFlags,
53
53
  AMMWithdraw: AMMWithdrawFlags,
54
54
  MPTokenAuthorize: MPTokenAuthorizeFlags,
@@ -63,37 +63,61 @@ const txToFlag = {
63
63
  XChainModifyBridge: XChainModifyBridgeFlags,
64
64
  }
65
65
 
66
+ function isTxToFlagKey(
67
+ transactionType: string,
68
+ ): transactionType is keyof typeof txToFlag {
69
+ return transactionType in txToFlag
70
+ }
71
+
66
72
  /**
67
73
  * Sets a transaction's flags to its numeric representation.
68
74
  *
75
+ * @deprecated
76
+ * This utility function is deprecated.
77
+ * Use convertTxFlagsToNumber() instead and use the returned value to modify the Transaction.Flags from the caller.
78
+ *
69
79
  * @param tx - A transaction to set its flags to its numeric representation.
70
80
  */
71
81
  export function setTransactionFlagsToNumber(tx: Transaction): void {
72
- if (tx.Flags == null) {
73
- tx.Flags = 0
74
- return
82
+ // eslint-disable-next-line no-console -- intended deprecation warning
83
+ console.warn(
84
+ 'This function is deprecated. Use convertTxFlagsToNumber() instead and use the returned value to modify the Transaction.Flags from the caller.',
85
+ )
86
+
87
+ if (tx.Flags) {
88
+ // eslint-disable-next-line no-param-reassign -- intended param reassign in setter, retain old functionality for compatibility
89
+ tx.Flags = convertTxFlagsToNumber(tx)
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Returns a Transaction's Flags as its numeric representation.
95
+ *
96
+ * @param tx - A Transaction to parse Flags for
97
+ * @returns A numerical representation of a Transaction's Flags
98
+ */
99
+ export function convertTxFlagsToNumber(tx: Transaction): number {
100
+ if (!tx.Flags) {
101
+ return 0
75
102
  }
76
103
  if (typeof tx.Flags === 'number') {
77
- return
104
+ return tx.Flags
78
105
  }
79
106
 
80
- tx.Flags = txToFlag[tx.TransactionType]
81
- ? convertFlagsToNumber(tx.Flags, txToFlag[tx.TransactionType])
82
- : 0
83
- }
107
+ if (isTxToFlagKey(tx.TransactionType)) {
108
+ const flagEnum = txToFlag[tx.TransactionType]
109
+ return Object.keys(tx.Flags).reduce((resultFlags, flag) => {
110
+ if (flagEnum[flag] == null) {
111
+ throw new ValidationError(
112
+ `Invalid flag ${flag}. Valid flags are ${JSON.stringify(flagEnum)}`,
113
+ )
114
+ }
84
115
 
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- added ValidationError check for flagEnum
86
- function convertFlagsToNumber(flags: GlobalFlags, flagEnum: any): number {
87
- return Object.keys(flags).reduce((resultFlags, flag) => {
88
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- safe member access
89
- if (flagEnum[flag] == null) {
90
- throw new ValidationError(
91
- `flag ${flag} doesn't exist in flagEnum: ${JSON.stringify(flagEnum)}`,
92
- )
93
- }
94
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- safe member access
95
- return flags[flag] ? resultFlags | flagEnum[flag] : resultFlags
96
- }, 0)
116
+ return tx.Flags?.[flag] ? resultFlags | flagEnum[flag] : resultFlags
117
+ }, 0)
118
+ }
119
+
120
+ return 0
97
121
  }
98
122
 
99
123
  /**
@@ -103,22 +127,24 @@ function convertFlagsToNumber(flags: GlobalFlags, flagEnum: any): number {
103
127
  * @returns A map with all flags as booleans.
104
128
  */
105
129
  export function parseTransactionFlags(tx: Transaction): object {
106
- setTransactionFlagsToNumber(tx)
107
- if (typeof tx.Flags !== 'number' || !tx.Flags || tx.Flags === 0) {
130
+ const flags = convertTxFlagsToNumber(tx)
131
+ if (flags === 0) {
108
132
  return {}
109
133
  }
110
134
 
111
- const flags = tx.Flags
112
- const flagsMap = {}
135
+ const booleanFlagMap = {}
113
136
 
114
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- safe member access
115
- const flagEnum = txToFlag[tx.TransactionType]
116
- Object.values(flagEnum).forEach((flag) => {
117
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- safe member access
118
- if (typeof flag === 'string' && isFlagEnabled(flags, flagEnum[flag])) {
119
- flagsMap[flag] = true
120
- }
121
- })
137
+ if (isTxToFlagKey(tx.TransactionType)) {
138
+ const transactionTypeFlags = txToFlag[tx.TransactionType]
139
+ Object.values(transactionTypeFlags).forEach((flag) => {
140
+ if (
141
+ typeof flag === 'string' &&
142
+ isFlagEnabled(flags, transactionTypeFlags[flag])
143
+ ) {
144
+ booleanFlagMap[flag] = true
145
+ }
146
+ })
147
+ }
122
148
 
123
- return flagsMap
149
+ return booleanFlagMap
124
150
  }
@@ -1,5 +1,3 @@
1
- import { decode, encode } from 'ripple-binary-codec'
2
-
3
1
  import type {
4
2
  Client,
5
3
  SubmitRequest,
@@ -12,6 +10,7 @@ import { ValidationError, XrplError } from '../errors'
12
10
  import { Signer } from '../models/common'
13
11
  import { TxResponse } from '../models/methods'
14
12
  import { BaseTransaction } from '../models/transactions/common'
13
+ import { decode, encode } from '../utils'
15
14
 
16
15
  /** Approximate time for a ledger to close, in milliseconds */
17
16
  const LEDGER_CLOSE_TIME = 1000
@@ -52,7 +51,7 @@ export async function submitRequest(
52
51
  failHard = false,
53
52
  ): Promise<SubmitResponse> {
54
53
  if (!isSigned(signedTransaction)) {
55
- throw new ValidationError('Transaction must be signed')
54
+ throw new ValidationError('Transaction must be signed.')
56
55
  }
57
56
 
58
57
  const signedTxEncoded =