xrpl 4.3.0-smartescrow.3 → 4.3.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 (339) hide show
  1. package/README.md +2 -2
  2. package/build/xrpl-latest-min.js +3 -0
  3. package/build/xrpl-latest-min.js.map +1 -0
  4. package/build/xrpl-latest.js +395 -140
  5. package/build/xrpl-latest.js.map +1 -1
  6. package/dist/npm/Wallet/batchSigner.d.ts +8 -0
  7. package/dist/npm/Wallet/batchSigner.d.ts.map +1 -0
  8. package/dist/npm/Wallet/batchSigner.js +111 -0
  9. package/dist/npm/Wallet/batchSigner.js.map +1 -0
  10. package/dist/npm/Wallet/defaultFaucets.d.ts +4 -4
  11. package/dist/npm/Wallet/defaultFaucets.d.ts.map +1 -1
  12. package/dist/npm/Wallet/defaultFaucets.js +15 -17
  13. package/dist/npm/Wallet/defaultFaucets.js.map +1 -1
  14. package/dist/npm/Wallet/fundWallet.d.ts.map +1 -1
  15. package/dist/npm/Wallet/fundWallet.js +8 -16
  16. package/dist/npm/Wallet/fundWallet.js.map +1 -1
  17. package/dist/npm/Wallet/index.d.ts.map +1 -1
  18. package/dist/npm/Wallet/index.js +10 -4
  19. package/dist/npm/Wallet/index.js.map +1 -1
  20. package/dist/npm/Wallet/signer.d.ts.map +1 -1
  21. package/dist/npm/Wallet/signer.js +4 -20
  22. package/dist/npm/Wallet/signer.js.map +1 -1
  23. package/dist/npm/Wallet/utils.d.ts +9 -0
  24. package/dist/npm/Wallet/utils.d.ts.map +1 -0
  25. package/dist/npm/Wallet/utils.js +28 -0
  26. package/dist/npm/Wallet/utils.js.map +1 -0
  27. package/dist/npm/client/RequestManager.d.ts.map +1 -1
  28. package/dist/npm/client/RequestManager.js +3 -3
  29. package/dist/npm/client/RequestManager.js.map +1 -1
  30. package/dist/npm/client/connection.d.ts.map +1 -1
  31. package/dist/npm/client/connection.js.map +1 -1
  32. package/dist/npm/client/index.d.ts.map +1 -1
  33. package/dist/npm/client/index.js +6 -9
  34. package/dist/npm/client/index.js.map +1 -1
  35. package/dist/npm/client/partialPayment.d.ts.map +1 -1
  36. package/dist/npm/client/partialPayment.js.map +1 -1
  37. package/dist/npm/models/ledger/Credential.d.ts +2 -2
  38. package/dist/npm/models/ledger/Credential.d.ts.map +1 -1
  39. package/dist/npm/models/ledger/Escrow.d.ts +0 -2
  40. package/dist/npm/models/ledger/Escrow.d.ts.map +1 -1
  41. package/dist/npm/models/ledger/FeeSettings.d.ts +0 -2
  42. package/dist/npm/models/ledger/FeeSettings.d.ts.map +1 -1
  43. package/dist/npm/models/ledger/XChainOwnedClaimID.d.ts +1 -2
  44. package/dist/npm/models/ledger/XChainOwnedClaimID.d.ts.map +1 -1
  45. package/dist/npm/models/methods/baseMethod.d.ts +1 -0
  46. package/dist/npm/models/methods/baseMethod.d.ts.map +1 -1
  47. package/dist/npm/models/methods/serverInfo.d.ts +0 -6
  48. package/dist/npm/models/methods/serverInfo.d.ts.map +1 -1
  49. package/dist/npm/models/methods/serverState.d.ts +0 -6
  50. package/dist/npm/models/methods/serverState.d.ts.map +1 -1
  51. package/dist/npm/models/transactions/AMMBid.d.ts.map +1 -1
  52. package/dist/npm/models/transactions/AMMBid.js.map +1 -1
  53. package/dist/npm/models/transactions/AMMClawback.d.ts +2 -2
  54. package/dist/npm/models/transactions/AMMClawback.d.ts.map +1 -1
  55. package/dist/npm/models/transactions/AMMDeposit.d.ts +2 -2
  56. package/dist/npm/models/transactions/AMMDeposit.d.ts.map +1 -1
  57. package/dist/npm/models/transactions/AMMWithdraw.d.ts +2 -2
  58. package/dist/npm/models/transactions/AMMWithdraw.d.ts.map +1 -1
  59. package/dist/npm/models/transactions/MPTokenAuthorize.d.ts +2 -2
  60. package/dist/npm/models/transactions/MPTokenAuthorize.d.ts.map +1 -1
  61. package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts +2 -2
  62. package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
  63. package/dist/npm/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
  64. package/dist/npm/models/transactions/MPTokenIssuanceSet.d.ts +2 -2
  65. package/dist/npm/models/transactions/MPTokenIssuanceSet.d.ts.map +1 -1
  66. package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts +2 -2
  67. package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  68. package/dist/npm/models/transactions/NFTokenMint.d.ts +2 -2
  69. package/dist/npm/models/transactions/NFTokenMint.d.ts.map +1 -1
  70. package/dist/npm/models/transactions/XChainAddAccountCreateAttestation.js.map +1 -1
  71. package/dist/npm/models/transactions/XChainAddClaimAttestation.js.map +1 -1
  72. package/dist/npm/models/transactions/XChainClaim.js.map +1 -1
  73. package/dist/npm/models/transactions/XChainCommit.js.map +1 -1
  74. package/dist/npm/models/transactions/XChainModifyBridge.d.ts +2 -2
  75. package/dist/npm/models/transactions/XChainModifyBridge.d.ts.map +1 -1
  76. package/dist/npm/models/transactions/accountDelete.d.ts.map +1 -1
  77. package/dist/npm/models/transactions/accountDelete.js.map +1 -1
  78. package/dist/npm/models/transactions/accountSet.d.ts +2 -2
  79. package/dist/npm/models/transactions/accountSet.d.ts.map +1 -1
  80. package/dist/npm/models/transactions/accountSet.js.map +1 -1
  81. package/dist/npm/models/transactions/batch.d.ts +39 -0
  82. package/dist/npm/models/transactions/batch.d.ts.map +1 -0
  83. package/dist/npm/models/transactions/batch.js +64 -0
  84. package/dist/npm/models/transactions/batch.js.map +1 -0
  85. package/dist/npm/models/transactions/common.d.ts +22 -6
  86. package/dist/npm/models/transactions/common.d.ts.map +1 -1
  87. package/dist/npm/models/transactions/common.js +25 -10
  88. package/dist/npm/models/transactions/common.js.map +1 -1
  89. package/dist/npm/models/transactions/delegateSet.d.ts.map +1 -1
  90. package/dist/npm/models/transactions/delegateSet.js +1 -0
  91. package/dist/npm/models/transactions/delegateSet.js.map +1 -1
  92. package/dist/npm/models/transactions/depositPreauth.d.ts.map +1 -1
  93. package/dist/npm/models/transactions/depositPreauth.js.map +1 -1
  94. package/dist/npm/models/transactions/escrowCreate.d.ts +0 -2
  95. package/dist/npm/models/transactions/escrowCreate.d.ts.map +1 -1
  96. package/dist/npm/models/transactions/escrowCreate.js +2 -4
  97. package/dist/npm/models/transactions/escrowCreate.js.map +1 -1
  98. package/dist/npm/models/transactions/escrowFinish.d.ts +0 -1
  99. package/dist/npm/models/transactions/escrowFinish.d.ts.map +1 -1
  100. package/dist/npm/models/transactions/escrowFinish.js.map +1 -1
  101. package/dist/npm/models/transactions/index.d.ts +3 -2
  102. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  103. package/dist/npm/models/transactions/index.js.map +1 -1
  104. package/dist/npm/models/transactions/metadata.d.ts +1 -0
  105. package/dist/npm/models/transactions/metadata.d.ts.map +1 -1
  106. package/dist/npm/models/transactions/offerCreate.d.ts +2 -2
  107. package/dist/npm/models/transactions/offerCreate.d.ts.map +1 -1
  108. package/dist/npm/models/transactions/oracleSet.d.ts.map +1 -1
  109. package/dist/npm/models/transactions/oracleSet.js.map +1 -1
  110. package/dist/npm/models/transactions/payment.d.ts +2 -2
  111. package/dist/npm/models/transactions/payment.d.ts.map +1 -1
  112. package/dist/npm/models/transactions/payment.js +3 -0
  113. package/dist/npm/models/transactions/payment.js.map +1 -1
  114. package/dist/npm/models/transactions/paymentChannelClaim.d.ts +2 -2
  115. package/dist/npm/models/transactions/paymentChannelClaim.d.ts.map +1 -1
  116. package/dist/npm/models/transactions/paymentChannelClaim.js.map +1 -1
  117. package/dist/npm/models/transactions/permissionedDomainSet.d.ts.map +1 -1
  118. package/dist/npm/models/transactions/permissionedDomainSet.js +1 -1
  119. package/dist/npm/models/transactions/permissionedDomainSet.js.map +1 -1
  120. package/dist/npm/models/transactions/signerListSet.d.ts.map +1 -1
  121. package/dist/npm/models/transactions/signerListSet.js +1 -1
  122. package/dist/npm/models/transactions/signerListSet.js.map +1 -1
  123. package/dist/npm/models/transactions/transaction.d.ts +2 -1
  124. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  125. package/dist/npm/models/transactions/transaction.js +7 -0
  126. package/dist/npm/models/transactions/transaction.js.map +1 -1
  127. package/dist/npm/models/transactions/trustSet.d.ts +2 -2
  128. package/dist/npm/models/transactions/trustSet.d.ts.map +1 -1
  129. package/dist/npm/models/utils/flags.d.ts.map +1 -1
  130. package/dist/npm/models/utils/flags.js +24 -9
  131. package/dist/npm/models/utils/flags.js.map +1 -1
  132. package/dist/npm/models/utils/index.d.ts +2 -0
  133. package/dist/npm/models/utils/index.d.ts.map +1 -1
  134. package/dist/npm/models/utils/index.js +11 -1
  135. package/dist/npm/models/utils/index.js.map +1 -1
  136. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  137. package/dist/npm/src/Wallet/batchSigner.d.ts +8 -0
  138. package/dist/npm/src/Wallet/batchSigner.d.ts.map +1 -0
  139. package/dist/npm/src/Wallet/batchSigner.js +111 -0
  140. package/dist/npm/src/Wallet/batchSigner.js.map +1 -0
  141. package/dist/npm/src/Wallet/defaultFaucets.d.ts +4 -4
  142. package/dist/npm/src/Wallet/defaultFaucets.d.ts.map +1 -1
  143. package/dist/npm/src/Wallet/defaultFaucets.js +15 -17
  144. package/dist/npm/src/Wallet/defaultFaucets.js.map +1 -1
  145. package/dist/npm/src/Wallet/fundWallet.d.ts.map +1 -1
  146. package/dist/npm/src/Wallet/fundWallet.js +8 -16
  147. package/dist/npm/src/Wallet/fundWallet.js.map +1 -1
  148. package/dist/npm/src/Wallet/index.d.ts.map +1 -1
  149. package/dist/npm/src/Wallet/index.js +10 -4
  150. package/dist/npm/src/Wallet/index.js.map +1 -1
  151. package/dist/npm/src/Wallet/signer.d.ts.map +1 -1
  152. package/dist/npm/src/Wallet/signer.js +4 -20
  153. package/dist/npm/src/Wallet/signer.js.map +1 -1
  154. package/dist/npm/src/Wallet/utils.d.ts +9 -0
  155. package/dist/npm/src/Wallet/utils.d.ts.map +1 -0
  156. package/dist/npm/src/Wallet/utils.js +28 -0
  157. package/dist/npm/src/Wallet/utils.js.map +1 -0
  158. package/dist/npm/src/client/RequestManager.d.ts.map +1 -1
  159. package/dist/npm/src/client/RequestManager.js +3 -3
  160. package/dist/npm/src/client/RequestManager.js.map +1 -1
  161. package/dist/npm/src/client/connection.d.ts.map +1 -1
  162. package/dist/npm/src/client/connection.js.map +1 -1
  163. package/dist/npm/src/client/index.d.ts.map +1 -1
  164. package/dist/npm/src/client/index.js +6 -9
  165. package/dist/npm/src/client/index.js.map +1 -1
  166. package/dist/npm/src/client/partialPayment.d.ts.map +1 -1
  167. package/dist/npm/src/client/partialPayment.js.map +1 -1
  168. package/dist/npm/src/models/ledger/Credential.d.ts +2 -2
  169. package/dist/npm/src/models/ledger/Credential.d.ts.map +1 -1
  170. package/dist/npm/src/models/ledger/Escrow.d.ts +0 -2
  171. package/dist/npm/src/models/ledger/Escrow.d.ts.map +1 -1
  172. package/dist/npm/src/models/ledger/FeeSettings.d.ts +0 -2
  173. package/dist/npm/src/models/ledger/FeeSettings.d.ts.map +1 -1
  174. package/dist/npm/src/models/ledger/XChainOwnedClaimID.d.ts +1 -2
  175. package/dist/npm/src/models/ledger/XChainOwnedClaimID.d.ts.map +1 -1
  176. package/dist/npm/src/models/methods/baseMethod.d.ts +1 -0
  177. package/dist/npm/src/models/methods/baseMethod.d.ts.map +1 -1
  178. package/dist/npm/src/models/methods/serverInfo.d.ts +0 -6
  179. package/dist/npm/src/models/methods/serverInfo.d.ts.map +1 -1
  180. package/dist/npm/src/models/methods/serverState.d.ts +0 -6
  181. package/dist/npm/src/models/methods/serverState.d.ts.map +1 -1
  182. package/dist/npm/src/models/transactions/AMMBid.d.ts.map +1 -1
  183. package/dist/npm/src/models/transactions/AMMBid.js.map +1 -1
  184. package/dist/npm/src/models/transactions/AMMClawback.d.ts +2 -2
  185. package/dist/npm/src/models/transactions/AMMClawback.d.ts.map +1 -1
  186. package/dist/npm/src/models/transactions/AMMDeposit.d.ts +2 -2
  187. package/dist/npm/src/models/transactions/AMMDeposit.d.ts.map +1 -1
  188. package/dist/npm/src/models/transactions/AMMWithdraw.d.ts +2 -2
  189. package/dist/npm/src/models/transactions/AMMWithdraw.d.ts.map +1 -1
  190. package/dist/npm/src/models/transactions/MPTokenAuthorize.d.ts +2 -2
  191. package/dist/npm/src/models/transactions/MPTokenAuthorize.d.ts.map +1 -1
  192. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts +2 -2
  193. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
  194. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
  195. package/dist/npm/src/models/transactions/MPTokenIssuanceSet.d.ts +2 -2
  196. package/dist/npm/src/models/transactions/MPTokenIssuanceSet.d.ts.map +1 -1
  197. package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts +2 -2
  198. package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  199. package/dist/npm/src/models/transactions/NFTokenMint.d.ts +2 -2
  200. package/dist/npm/src/models/transactions/NFTokenMint.d.ts.map +1 -1
  201. package/dist/npm/src/models/transactions/XChainAddAccountCreateAttestation.js.map +1 -1
  202. package/dist/npm/src/models/transactions/XChainAddClaimAttestation.js.map +1 -1
  203. package/dist/npm/src/models/transactions/XChainClaim.js.map +1 -1
  204. package/dist/npm/src/models/transactions/XChainCommit.js.map +1 -1
  205. package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts +2 -2
  206. package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts.map +1 -1
  207. package/dist/npm/src/models/transactions/accountDelete.d.ts.map +1 -1
  208. package/dist/npm/src/models/transactions/accountDelete.js.map +1 -1
  209. package/dist/npm/src/models/transactions/accountSet.d.ts +2 -2
  210. package/dist/npm/src/models/transactions/accountSet.d.ts.map +1 -1
  211. package/dist/npm/src/models/transactions/accountSet.js.map +1 -1
  212. package/dist/npm/src/models/transactions/batch.d.ts +39 -0
  213. package/dist/npm/src/models/transactions/batch.d.ts.map +1 -0
  214. package/dist/npm/src/models/transactions/batch.js +64 -0
  215. package/dist/npm/src/models/transactions/batch.js.map +1 -0
  216. package/dist/npm/src/models/transactions/common.d.ts +22 -6
  217. package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
  218. package/dist/npm/src/models/transactions/common.js +25 -10
  219. package/dist/npm/src/models/transactions/common.js.map +1 -1
  220. package/dist/npm/src/models/transactions/delegateSet.d.ts.map +1 -1
  221. package/dist/npm/src/models/transactions/delegateSet.js +1 -0
  222. package/dist/npm/src/models/transactions/delegateSet.js.map +1 -1
  223. package/dist/npm/src/models/transactions/depositPreauth.d.ts.map +1 -1
  224. package/dist/npm/src/models/transactions/depositPreauth.js.map +1 -1
  225. package/dist/npm/src/models/transactions/escrowCreate.d.ts +0 -2
  226. package/dist/npm/src/models/transactions/escrowCreate.d.ts.map +1 -1
  227. package/dist/npm/src/models/transactions/escrowCreate.js +2 -4
  228. package/dist/npm/src/models/transactions/escrowCreate.js.map +1 -1
  229. package/dist/npm/src/models/transactions/escrowFinish.d.ts +0 -1
  230. package/dist/npm/src/models/transactions/escrowFinish.d.ts.map +1 -1
  231. package/dist/npm/src/models/transactions/escrowFinish.js.map +1 -1
  232. package/dist/npm/src/models/transactions/index.d.ts +3 -2
  233. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  234. package/dist/npm/src/models/transactions/index.js.map +1 -1
  235. package/dist/npm/src/models/transactions/metadata.d.ts +1 -0
  236. package/dist/npm/src/models/transactions/metadata.d.ts.map +1 -1
  237. package/dist/npm/src/models/transactions/offerCreate.d.ts +2 -2
  238. package/dist/npm/src/models/transactions/offerCreate.d.ts.map +1 -1
  239. package/dist/npm/src/models/transactions/oracleSet.d.ts.map +1 -1
  240. package/dist/npm/src/models/transactions/oracleSet.js.map +1 -1
  241. package/dist/npm/src/models/transactions/payment.d.ts +2 -2
  242. package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
  243. package/dist/npm/src/models/transactions/payment.js +3 -0
  244. package/dist/npm/src/models/transactions/payment.js.map +1 -1
  245. package/dist/npm/src/models/transactions/paymentChannelClaim.d.ts +2 -2
  246. package/dist/npm/src/models/transactions/paymentChannelClaim.d.ts.map +1 -1
  247. package/dist/npm/src/models/transactions/paymentChannelClaim.js.map +1 -1
  248. package/dist/npm/src/models/transactions/permissionedDomainSet.d.ts.map +1 -1
  249. package/dist/npm/src/models/transactions/permissionedDomainSet.js +1 -1
  250. package/dist/npm/src/models/transactions/permissionedDomainSet.js.map +1 -1
  251. package/dist/npm/src/models/transactions/signerListSet.d.ts.map +1 -1
  252. package/dist/npm/src/models/transactions/signerListSet.js +1 -1
  253. package/dist/npm/src/models/transactions/signerListSet.js.map +1 -1
  254. package/dist/npm/src/models/transactions/transaction.d.ts +2 -1
  255. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  256. package/dist/npm/src/models/transactions/transaction.js +7 -0
  257. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  258. package/dist/npm/src/models/transactions/trustSet.d.ts +2 -2
  259. package/dist/npm/src/models/transactions/trustSet.d.ts.map +1 -1
  260. package/dist/npm/src/models/utils/flags.d.ts.map +1 -1
  261. package/dist/npm/src/models/utils/flags.js +24 -9
  262. package/dist/npm/src/models/utils/flags.js.map +1 -1
  263. package/dist/npm/src/models/utils/index.d.ts +2 -0
  264. package/dist/npm/src/models/utils/index.d.ts.map +1 -1
  265. package/dist/npm/src/models/utils/index.js +11 -1
  266. package/dist/npm/src/models/utils/index.js.map +1 -1
  267. package/dist/npm/src/sugar/autofill.d.ts +4 -2
  268. package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
  269. package/dist/npm/src/sugar/autofill.js +114 -42
  270. package/dist/npm/src/sugar/autofill.js.map +1 -1
  271. package/dist/npm/src/sugar/submit.d.ts.map +1 -1
  272. package/dist/npm/src/sugar/submit.js.map +1 -1
  273. package/dist/npm/src/utils/hashes/hashLedger.d.ts.map +1 -1
  274. package/dist/npm/src/utils/hashes/hashLedger.js +4 -1
  275. package/dist/npm/src/utils/hashes/hashLedger.js.map +1 -1
  276. package/dist/npm/sugar/autofill.d.ts +4 -2
  277. package/dist/npm/sugar/autofill.d.ts.map +1 -1
  278. package/dist/npm/sugar/autofill.js +114 -42
  279. package/dist/npm/sugar/autofill.js.map +1 -1
  280. package/dist/npm/sugar/submit.d.ts.map +1 -1
  281. package/dist/npm/sugar/submit.js.map +1 -1
  282. package/dist/npm/utils/hashes/hashLedger.d.ts.map +1 -1
  283. package/dist/npm/utils/hashes/hashLedger.js +4 -1
  284. package/dist/npm/utils/hashes/hashLedger.js.map +1 -1
  285. package/package.json +5 -5
  286. package/src/Wallet/batchSigner.ts +198 -0
  287. package/src/Wallet/defaultFaucets.ts +17 -20
  288. package/src/Wallet/fundWallet.ts +17 -28
  289. package/src/Wallet/index.ts +9 -3
  290. package/src/Wallet/signer.ts +4 -39
  291. package/src/Wallet/utils.ts +58 -0
  292. package/src/client/RequestManager.ts +4 -1
  293. package/src/client/connection.ts +0 -1
  294. package/src/client/index.ts +9 -30
  295. package/src/client/partialPayment.ts +3 -4
  296. package/src/models/ledger/Credential.ts +2 -2
  297. package/src/models/ledger/Escrow.ts +0 -4
  298. package/src/models/ledger/FeeSettings.ts +0 -4
  299. package/src/models/ledger/XChainOwnedClaimID.ts +1 -3
  300. package/src/models/methods/baseMethod.ts +1 -0
  301. package/src/models/methods/serverInfo.ts +0 -9
  302. package/src/models/methods/serverState.ts +0 -10
  303. package/src/models/transactions/AMMBid.ts +1 -2
  304. package/src/models/transactions/AMMClawback.ts +2 -2
  305. package/src/models/transactions/AMMDeposit.ts +2 -2
  306. package/src/models/transactions/AMMWithdraw.ts +2 -2
  307. package/src/models/transactions/MPTokenAuthorize.ts +2 -2
  308. package/src/models/transactions/MPTokenIssuanceCreate.ts +3 -2
  309. package/src/models/transactions/MPTokenIssuanceSet.ts +2 -2
  310. package/src/models/transactions/NFTokenCreateOffer.ts +2 -2
  311. package/src/models/transactions/NFTokenMint.ts +2 -2
  312. package/src/models/transactions/XChainAddAccountCreateAttestation.ts +2 -2
  313. package/src/models/transactions/XChainAddClaimAttestation.ts +2 -2
  314. package/src/models/transactions/XChainClaim.ts +1 -1
  315. package/src/models/transactions/XChainCommit.ts +1 -1
  316. package/src/models/transactions/XChainModifyBridge.ts +2 -2
  317. package/src/models/transactions/accountDelete.ts +1 -2
  318. package/src/models/transactions/accountSet.ts +2 -1
  319. package/src/models/transactions/batch.ts +151 -0
  320. package/src/models/transactions/common.ts +82 -30
  321. package/src/models/transactions/delegateSet.ts +1 -0
  322. package/src/models/transactions/depositPreauth.ts +2 -4
  323. package/src/models/transactions/escrowCreate.ts +2 -10
  324. package/src/models/transactions/escrowFinish.ts +1 -4
  325. package/src/models/transactions/index.ts +3 -3
  326. package/src/models/transactions/metadata.ts +2 -0
  327. package/src/models/transactions/offerCreate.ts +2 -2
  328. package/src/models/transactions/oracleSet.ts +95 -91
  329. package/src/models/transactions/payment.ts +8 -6
  330. package/src/models/transactions/paymentChannelClaim.ts +4 -4
  331. package/src/models/transactions/permissionedDomainSet.ts +3 -7
  332. package/src/models/transactions/signerListSet.ts +2 -2
  333. package/src/models/transactions/transaction.ts +15 -0
  334. package/src/models/transactions/trustSet.ts +2 -2
  335. package/src/models/utils/flags.ts +28 -10
  336. package/src/models/utils/index.ts +24 -0
  337. package/src/sugar/autofill.ts +178 -61
  338. package/src/sugar/submit.ts +1 -2
  339. package/src/utils/hashes/hashLedger.ts +5 -2
@@ -47,10 +47,6 @@ export interface EscrowCreate extends BaseTransaction {
47
47
  * payment, such as a hosted recipient at the destination address.
48
48
  */
49
49
  DestinationTag?: number
50
-
51
- FinishFunction?: string
52
-
53
- Data?: string
54
50
  }
55
51
 
56
52
  /**
@@ -79,13 +75,9 @@ export function validateEscrowCreate(tx: Record<string, unknown>): void {
79
75
  )
80
76
  }
81
77
 
82
- if (
83
- tx.FinishAfter === undefined &&
84
- tx.Condition === undefined &&
85
- tx.FinishFunction === undefined
86
- ) {
78
+ if (tx.FinishAfter === undefined && tx.Condition === undefined) {
87
79
  throw new ValidationError(
88
- 'EscrowCreate: Either FinishAfter, Condition, or FinishFunction must be specified',
80
+ 'EscrowCreate: Either Condition or FinishAfter must be specified',
89
81
  )
90
82
  }
91
83
 
@@ -38,8 +38,6 @@ export interface EscrowFinish extends BaseTransaction {
38
38
  * The credentials included must not be expired.
39
39
  */
40
40
  CredentialIDs?: string[]
41
-
42
- ComputationAllowance?: number
43
41
  }
44
42
 
45
43
  /**
@@ -55,8 +53,7 @@ export function validateEscrowFinish(tx: Record<string, unknown>): void {
55
53
 
56
54
  validateCredentialsList(
57
55
  tx.CredentialIDs,
58
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- known from base check
59
- tx.TransactionType as string,
56
+ tx.TransactionType,
60
57
  true,
61
58
  MAX_AUTHORIZED_CREDENTIALS,
62
59
  )
@@ -33,6 +33,7 @@ export {
33
33
  AMMWithdrawFlagsInterface,
34
34
  AMMWithdraw,
35
35
  } from './AMMWithdraw'
36
+ export { Batch } from './batch'
36
37
  export { CheckCancel } from './checkCancel'
37
38
  export { CheckCash } from './checkCash'
38
39
  export { CheckCreate } from './checkCreate'
@@ -100,6 +101,8 @@ export { SignerListSet } from './signerListSet'
100
101
  export { TicketCreate } from './ticketCreate'
101
102
  export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet'
102
103
  export { UNLModify } from './UNLModify'
104
+ export { PermissionedDomainSet } from './permissionedDomainSet'
105
+ export { PermissionedDomainDelete } from './permissionedDomainDelete'
103
106
  export { XChainAddAccountCreateAttestation } from './XChainAddAccountCreateAttestation'
104
107
  export { XChainAddClaimAttestation } from './XChainAddClaimAttestation'
105
108
  export { XChainClaim } from './XChainClaim'
@@ -112,6 +115,3 @@ export {
112
115
  XChainModifyBridgeFlags,
113
116
  XChainModifyBridgeFlagsInterface,
114
117
  } from './XChainModifyBridge'
115
-
116
- export { PermissionedDomainSet } from './permissionedDomainSet'
117
- export { PermissionedDomainDelete } from './permissionedDomainDelete'
@@ -88,6 +88,8 @@ export interface TransactionMetadataBase {
88
88
  delivered_amount?: Amount | MPTAmount | 'unavailable'
89
89
  TransactionIndex: number
90
90
  TransactionResult: string
91
+
92
+ ParentBatchID?: string
91
93
  }
92
94
 
93
95
  export type TransactionMetadata<T extends BaseTransaction = Transaction> =
@@ -3,7 +3,7 @@ import { Amount } from '../common'
3
3
 
4
4
  import {
5
5
  BaseTransaction,
6
- GlobalFlags,
6
+ GlobalFlagsInterface,
7
7
  validateBaseTransaction,
8
8
  isAmount,
9
9
  } from './common'
@@ -78,7 +78,7 @@ export enum OfferCreateFlags {
78
78
  * // }
79
79
  * ```
80
80
  */
81
- export interface OfferCreateFlagsInterface extends GlobalFlags {
81
+ export interface OfferCreateFlagsInterface extends GlobalFlagsInterface {
82
82
  tfPassive?: boolean
83
83
  tfImmediateOrCancel?: boolean
84
84
  tfFillOrKill?: boolean
@@ -86,113 +86,117 @@ export function validateOracleSet(tx: Record<string, unknown>): void {
86
86
  validateOptionalField(tx, 'AssetClass', isString)
87
87
 
88
88
  /* eslint-disable max-statements, max-lines-per-function -- necessary to validate many fields */
89
- validateRequiredField(tx, 'PriceDataSeries', (value) => {
90
- if (!Array.isArray(value)) {
91
- throw new ValidationError('OracleSet: PriceDataSeries must be an array')
92
- }
93
-
94
- if (value.length > PRICE_DATA_SERIES_MAX_LENGTH) {
95
- throw new ValidationError(
96
- `OracleSet: PriceDataSeries must have at most ${PRICE_DATA_SERIES_MAX_LENGTH} PriceData objects`,
97
- )
98
- }
99
-
100
- // TODO: add support for handling inner objects easier (similar to validateRequiredField/validateOptionalField)
101
- for (const priceData of value) {
102
- if (typeof priceData !== 'object') {
103
- throw new ValidationError(
104
- 'OracleSet: PriceDataSeries must be an array of objects',
105
- )
89
+ validateRequiredField(
90
+ tx,
91
+ 'PriceDataSeries',
92
+ (value: unknown): value is PriceData => {
93
+ if (!Array.isArray(value)) {
94
+ throw new ValidationError('OracleSet: PriceDataSeries must be an array')
106
95
  }
107
96
 
108
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
109
- if (priceData.PriceData == null) {
97
+ if (value.length > PRICE_DATA_SERIES_MAX_LENGTH) {
110
98
  throw new ValidationError(
111
- 'OracleSet: PriceDataSeries must have a `PriceData` object',
99
+ `OracleSet: PriceDataSeries must have at most ${PRICE_DATA_SERIES_MAX_LENGTH} PriceData objects`,
112
100
  )
113
101
  }
114
102
 
115
- // check if priceData only has PriceData
116
- if (Object.keys(priceData).length !== 1) {
117
- throw new ValidationError(
118
- 'OracleSet: PriceDataSeries must only have a single PriceData object',
119
- )
120
- }
103
+ // TODO: add support for handling inner objects easier (similar to validateRequiredField/validateOptionalField)
104
+ for (const priceData of value) {
105
+ if (typeof priceData !== 'object') {
106
+ throw new ValidationError(
107
+ 'OracleSet: PriceDataSeries must be an array of objects',
108
+ )
109
+ }
121
110
 
122
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
123
- if (typeof priceData.PriceData.BaseAsset !== 'string') {
124
- throw new ValidationError(
125
- 'OracleSet: PriceDataSeries must have a `BaseAsset` string',
126
- )
127
- }
111
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
112
+ if (priceData.PriceData == null) {
113
+ throw new ValidationError(
114
+ 'OracleSet: PriceDataSeries must have a `PriceData` object',
115
+ )
116
+ }
128
117
 
129
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
130
- if (typeof priceData.PriceData.QuoteAsset !== 'string') {
131
- throw new ValidationError(
132
- 'OracleSet: PriceDataSeries must have a `QuoteAsset` string',
133
- )
134
- }
118
+ // check if priceData only has PriceData
119
+ if (Object.keys(priceData).length !== 1) {
120
+ throw new ValidationError(
121
+ 'OracleSet: PriceDataSeries must only have a single PriceData object',
122
+ )
123
+ }
135
124
 
136
- // Either AssetPrice and Scale are both present or both excluded
137
- if (
138
125
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
139
- (priceData.PriceData.AssetPrice == null) !==
126
+ if (typeof priceData.PriceData.BaseAsset !== 'string') {
127
+ throw new ValidationError(
128
+ 'OracleSet: PriceDataSeries must have a `BaseAsset` string',
129
+ )
130
+ }
131
+
140
132
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
141
- (priceData.PriceData.Scale == null)
142
- ) {
143
- throw new ValidationError(
144
- 'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present',
145
- )
146
- }
133
+ if (typeof priceData.PriceData.QuoteAsset !== 'string') {
134
+ throw new ValidationError(
135
+ 'OracleSet: PriceDataSeries must have a `QuoteAsset` string',
136
+ )
137
+ }
138
+
139
+ // Either AssetPrice and Scale are both present or both excluded
140
+ if (
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
142
+ (priceData.PriceData.AssetPrice == null) !==
143
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
144
+ (priceData.PriceData.Scale == null)
145
+ ) {
146
+ throw new ValidationError(
147
+ 'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present',
148
+ )
149
+ }
147
150
 
148
- /* eslint-disable @typescript-eslint/no-unsafe-member-access, max-depth --
151
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access, max-depth --
149
152
  we need to validate priceData.PriceData.AssetPrice value */
150
- if ('AssetPrice' in priceData.PriceData) {
151
- if (!isNumber(priceData.PriceData.AssetPrice)) {
152
- if (typeof priceData.PriceData.AssetPrice !== 'string') {
153
- throw new ValidationError(
154
- 'OracleSet: Field AssetPrice must be a string or a number',
155
- )
156
- }
157
- if (!isHex(priceData.PriceData.AssetPrice)) {
158
- throw new ValidationError(
159
- 'OracleSet: Field AssetPrice must be a valid hex string',
160
- )
161
- }
162
- if (
163
- priceData.PriceData.AssetPrice.length <
164
- MINIMUM_ASSET_PRICE_LENGTH ||
165
- priceData.PriceData.AssetPrice.length > MAXIMUM_ASSET_PRICE_LENGTH
166
- ) {
167
- throw new ValidationError(
168
- `OracleSet: Length of AssetPrice field must be between ${MINIMUM_ASSET_PRICE_LENGTH} and ${MAXIMUM_ASSET_PRICE_LENGTH} characters long`,
169
- )
153
+ if ('AssetPrice' in priceData.PriceData) {
154
+ if (!isNumber(priceData.PriceData.AssetPrice)) {
155
+ if (typeof priceData.PriceData.AssetPrice !== 'string') {
156
+ throw new ValidationError(
157
+ 'OracleSet: Field AssetPrice must be a string or a number',
158
+ )
159
+ }
160
+ if (!isHex(priceData.PriceData.AssetPrice)) {
161
+ throw new ValidationError(
162
+ 'OracleSet: Field AssetPrice must be a valid hex string',
163
+ )
164
+ }
165
+ if (
166
+ priceData.PriceData.AssetPrice.length <
167
+ MINIMUM_ASSET_PRICE_LENGTH ||
168
+ priceData.PriceData.AssetPrice.length > MAXIMUM_ASSET_PRICE_LENGTH
169
+ ) {
170
+ throw new ValidationError(
171
+ `OracleSet: Length of AssetPrice field must be between ${MINIMUM_ASSET_PRICE_LENGTH} and ${MAXIMUM_ASSET_PRICE_LENGTH} characters long`,
172
+ )
173
+ }
170
174
  }
171
175
  }
172
- }
173
- /* eslint-enable @typescript-eslint/no-unsafe-member-access, max-depth */
174
-
175
- if (
176
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
177
- 'Scale' in priceData.PriceData &&
178
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
179
- !isNumber(priceData.PriceData.Scale)
180
- ) {
181
- throw new ValidationError('OracleSet: invalid field Scale')
182
- }
176
+ /* eslint-enable @typescript-eslint/no-unsafe-member-access, max-depth */
177
+
178
+ if (
179
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
180
+ 'Scale' in priceData.PriceData &&
181
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
182
+ !isNumber(priceData.PriceData.Scale)
183
+ ) {
184
+ throw new ValidationError('OracleSet: invalid field Scale')
185
+ }
183
186
 
184
- if (
185
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
186
- priceData.PriceData.Scale < 0 ||
187
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
188
- priceData.PriceData.Scale > SCALE_MAX
189
- ) {
190
- throw new ValidationError(
191
- `OracleSet: Scale must be in range 0-${SCALE_MAX}`,
192
- )
187
+ if (
188
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
189
+ priceData.PriceData.Scale < 0 ||
190
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
191
+ priceData.PriceData.Scale > SCALE_MAX
192
+ ) {
193
+ throw new ValidationError(
194
+ `OracleSet: Scale must be in range 0-${SCALE_MAX}`,
195
+ )
196
+ }
193
197
  }
194
- }
195
- return true
196
- })
198
+ return true
199
+ },
200
+ )
197
201
  /* eslint-enable max-statements, max-lines-per-function */
198
202
  }
@@ -5,7 +5,7 @@ import { isFlagEnabled } from '../utils'
5
5
  import {
6
6
  BaseTransaction,
7
7
  isAmount,
8
- GlobalFlags,
8
+ GlobalFlagsInterface,
9
9
  validateBaseTransaction,
10
10
  isAccount,
11
11
  validateRequiredField,
@@ -84,7 +84,7 @@ export enum PaymentFlags {
84
84
  * // }
85
85
  * ```
86
86
  */
87
- export interface PaymentFlagsInterface extends GlobalFlags {
87
+ export interface PaymentFlagsInterface extends GlobalFlagsInterface {
88
88
  /**
89
89
  * Do not use the default path; only use paths included in the Paths field.
90
90
  * This is intended to force the transaction to take arbitrage opportunities.
@@ -186,8 +186,7 @@ export function validatePayment(tx: Record<string, unknown>): void {
186
186
 
187
187
  validateCredentialsList(
188
188
  tx.CredentialIDs,
189
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- known from base check
190
- tx.TransactionType as string,
189
+ tx.TransactionType,
191
190
  true,
192
191
  MAX_AUTHORIZED_CREDENTIALS,
193
192
  )
@@ -264,7 +263,10 @@ function isPathStep(pathStep: Record<string, unknown>): boolean {
264
263
  return false
265
264
  }
266
265
 
267
- function isPath(path: Array<Record<string, unknown>>): boolean {
266
+ function isPath(path: unknown): path is Path {
267
+ if (!Array.isArray(path) || path.length === 0) {
268
+ return false
269
+ }
268
270
  for (const pathStep of path) {
269
271
  if (!isPathStep(pathStep)) {
270
272
  return false
@@ -273,7 +275,7 @@ function isPath(path: Array<Record<string, unknown>>): boolean {
273
275
  return true
274
276
  }
275
277
 
276
- function isPaths(paths: Array<Array<Record<string, unknown>>>): boolean {
278
+ function isPaths(paths: unknown): paths is Path[] {
277
279
  if (!Array.isArray(paths) || paths.length === 0) {
278
280
  return false
279
281
  }
@@ -2,7 +2,7 @@ import { ValidationError } from '../../errors'
2
2
 
3
3
  import {
4
4
  BaseTransaction,
5
- GlobalFlags,
5
+ GlobalFlagsInterface,
6
6
  validateBaseTransaction,
7
7
  validateCredentialsList,
8
8
  MAX_AUTHORIZED_CREDENTIALS,
@@ -73,7 +73,8 @@ export enum PaymentChannelClaimFlags {
73
73
  * // }
74
74
  * ```
75
75
  */
76
- export interface PaymentChannelClaimFlagsInterface extends GlobalFlags {
76
+ export interface PaymentChannelClaimFlagsInterface
77
+ extends GlobalFlagsInterface {
77
78
  /**
78
79
  * Clear the channel's Expiration time. (Expiration is different from the
79
80
  * channel's immutable CancelAfter time.) Only the source address of the
@@ -151,8 +152,7 @@ export function validatePaymentChannelClaim(tx: Record<string, unknown>): void {
151
152
 
152
153
  validateCredentialsList(
153
154
  tx.CredentialIDs,
154
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- known from base check
155
- tx.TransactionType as string,
155
+ tx.TransactionType,
156
156
  true,
157
157
  MAX_AUTHORIZED_CREDENTIALS,
158
158
  )
@@ -7,6 +7,7 @@ import {
7
7
  validateOptionalField,
8
8
  validateRequiredField,
9
9
  validateCredentialsList,
10
+ isArray,
10
11
  } from './common'
11
12
 
12
13
  const MAX_ACCEPTED_CREDENTIALS = 10
@@ -36,16 +37,11 @@ export function validatePermissionedDomainSet(
36
37
  validateBaseTransaction(tx)
37
38
 
38
39
  validateOptionalField(tx, 'DomainID', isString)
39
- validateRequiredField(
40
- tx,
41
- 'AcceptedCredentials',
42
- () => tx.AcceptedCredentials instanceof Array,
43
- )
40
+ validateRequiredField(tx, 'AcceptedCredentials', isArray)
44
41
 
45
42
  validateCredentialsList(
46
43
  tx.AcceptedCredentials,
47
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- known from base check
48
- tx.TransactionType as string,
44
+ tx.TransactionType,
49
45
  // PermissionedDomainSet uses AuthorizeCredential nested objects only, strings are not allowed
50
46
  false,
51
47
  // PermissionedDomainSet uses at most 10 accepted credentials. This is different from Credential-feature transactions.
@@ -1,7 +1,7 @@
1
1
  import { ValidationError } from '../../errors'
2
2
  import { SignerEntry } from '../common'
3
3
 
4
- import { BaseTransaction, validateBaseTransaction } from './common'
4
+ import { BaseTransaction, isArray, validateBaseTransaction } from './common'
5
5
 
6
6
  /**
7
7
  * The SignerListSet transaction creates, replaces, or removes a list of
@@ -56,7 +56,7 @@ export function validateSignerListSet(tx: Record<string, unknown>): void {
56
56
  throw new ValidationError('SignerListSet: missing field SignerEntries')
57
57
  }
58
58
 
59
- if (!Array.isArray(tx.SignerEntries)) {
59
+ if (!isArray(tx.SignerEntries)) {
60
60
  throw new ValidationError('SignerListSet: invalid SignerEntries')
61
61
  }
62
62
 
@@ -15,6 +15,7 @@ import { AMMDelete, validateAMMDelete } from './AMMDelete'
15
15
  import { AMMDeposit, validateAMMDeposit } from './AMMDeposit'
16
16
  import { AMMVote, validateAMMVote } from './AMMVote'
17
17
  import { AMMWithdraw, validateAMMWithdraw } from './AMMWithdraw'
18
+ import { Batch, validateBatch } from './batch'
18
19
  import { CheckCancel, validateCheckCancel } from './checkCancel'
19
20
  import { CheckCash, validateCheckCash } from './checkCash'
20
21
  import { CheckCreate, validateCheckCreate } from './checkCreate'
@@ -133,6 +134,7 @@ export type SubmittableTransaction =
133
134
  | AMMWithdraw
134
135
  | AccountDelete
135
136
  | AccountSet
137
+ | Batch
136
138
  | CheckCancel
137
139
  | CheckCash
138
140
  | CheckCreate
@@ -309,6 +311,19 @@ export function validate(transaction: Record<string, unknown>): void {
309
311
  validateAccountSet(tx)
310
312
  break
311
313
 
314
+ case 'Batch':
315
+ validateBatch(tx)
316
+ // This is done here to avoid issues with dependency cycles
317
+
318
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- okay here
319
+ // @ts-expect-error -- already checked
320
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- already checked above
321
+ tx.RawTransactions.forEach((innerTx: Record<string, unknown>) => {
322
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- already checked above
323
+ validate(innerTx.RawTransaction as Record<string, unknown>)
324
+ })
325
+ break
326
+
312
327
  case 'CheckCancel':
313
328
  validateCheckCancel(tx)
314
329
  break
@@ -3,7 +3,7 @@ import { IssuedCurrencyAmount } from '../common'
3
3
 
4
4
  import {
5
5
  BaseTransaction,
6
- GlobalFlags,
6
+ GlobalFlagsInterface,
7
7
  isAmount,
8
8
  validateBaseTransaction,
9
9
  } from './common'
@@ -77,7 +77,7 @@ export enum TrustSetFlags {
77
77
  * // }
78
78
  * ```
79
79
  */
80
- export interface TrustSetFlagsInterface extends GlobalFlags {
80
+ export interface TrustSetFlagsInterface extends GlobalFlagsInterface {
81
81
  /**
82
82
  * Authorize the other party to hold currency issued by this account. (No
83
83
  * effect unless using the asfRequireAuth AccountSet flag.) Cannot be unset.
@@ -8,6 +8,8 @@ import { AccountSetTfFlags } from '../transactions/accountSet'
8
8
  import { AMMClawbackFlags } from '../transactions/AMMClawback'
9
9
  import { AMMDepositFlags } from '../transactions/AMMDeposit'
10
10
  import { AMMWithdrawFlags } from '../transactions/AMMWithdraw'
11
+ import { BatchFlags } from '../transactions/batch'
12
+ import { GlobalFlags } from '../transactions/common'
11
13
  import { MPTokenAuthorizeFlags } from '../transactions/MPTokenAuthorize'
12
14
  import { MPTokenIssuanceCreateFlags } from '../transactions/MPTokenIssuanceCreate'
13
15
  import { MPTokenIssuanceSetFlags } from '../transactions/MPTokenIssuanceSet'
@@ -51,6 +53,7 @@ const txToFlag = {
51
53
  AMMClawback: AMMClawbackFlags,
52
54
  AMMDeposit: AMMDepositFlags,
53
55
  AMMWithdraw: AMMWithdrawFlags,
56
+ Batch: BatchFlags,
54
57
  MPTokenAuthorize: MPTokenAuthorizeFlags,
55
58
  MPTokenIssuanceCreate: MPTokenIssuanceCreateFlags,
56
59
  MPTokenIssuanceSet: MPTokenIssuanceSetFlags,
@@ -97,27 +100,36 @@ export function setTransactionFlagsToNumber(tx: Transaction): void {
97
100
  * @returns A numerical representation of a Transaction's Flags
98
101
  */
99
102
  export function convertTxFlagsToNumber(tx: Transaction): number {
100
- if (!tx.Flags) {
103
+ const txFlags = tx.Flags
104
+ if (txFlags == null) {
101
105
  return 0
102
106
  }
103
- if (typeof tx.Flags === 'number') {
104
- return tx.Flags
107
+ if (typeof txFlags === 'number') {
108
+ return txFlags
105
109
  }
106
110
 
107
111
  if (isTxToFlagKey(tx.TransactionType)) {
108
112
  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
- )
113
+ return Object.keys(txFlags).reduce((resultFlags, flag) => {
114
+ if (flagEnum[flag] == null && GlobalFlags[flag] == null) {
115
+ throw new ValidationError(`Invalid flag ${flag}.`)
114
116
  }
115
117
 
116
- return tx.Flags?.[flag] ? resultFlags | flagEnum[flag] : resultFlags
118
+ return txFlags[flag]
119
+ ? resultFlags | (flagEnum[flag] || GlobalFlags[flag])
120
+ : resultFlags
117
121
  }, 0)
118
122
  }
119
123
 
120
- return 0
124
+ return Object.keys(txFlags).reduce((resultFlags, flag) => {
125
+ if (GlobalFlags[flag] == null) {
126
+ throw new ValidationError(
127
+ `Invalid flag ${flag}. Valid flags are ${JSON.stringify(GlobalFlags)}`,
128
+ )
129
+ }
130
+
131
+ return txFlags[flag] ? resultFlags | GlobalFlags[flag] : resultFlags
132
+ }, 0)
121
133
  }
122
134
 
123
135
  /**
@@ -146,5 +158,11 @@ export function parseTransactionFlags(tx: Transaction): object {
146
158
  })
147
159
  }
148
160
 
161
+ Object.values(GlobalFlags).forEach((flag) => {
162
+ if (typeof flag === 'string' && isFlagEnabled(flags, GlobalFlags[flag])) {
163
+ booleanFlagMap[flag] = true
164
+ }
165
+ })
166
+
149
167
  return booleanFlagMap
150
168
  }
@@ -1,3 +1,5 @@
1
+ import type { Transaction } from '../transactions'
2
+
1
3
  const HEX_REGEX = /^[0-9A-Fa-f]+$/u
2
4
  export const INTEGER_SANITY_CHECK = /^[0-9]+$/u
3
5
 
@@ -27,6 +29,28 @@ export function isFlagEnabled(Flags: number, checkFlag: number): boolean {
27
29
  return (BigInt(checkFlag) & BigInt(Flags)) === BigInt(checkFlag)
28
30
  }
29
31
 
32
+ /**
33
+ * Determines whether a transaction has a certain flag enabled.
34
+ *
35
+ * @param tx The transaction to check for the flag.
36
+ * @param flag The flag to check.
37
+ * @param flagName The name of the flag to check, used for object flags.
38
+ * @returns Whether `flag` is enabled on `tx`.
39
+ */
40
+ export function hasFlag(
41
+ tx: Transaction | Record<string, unknown>,
42
+ flag: number,
43
+ flagName: string,
44
+ ): boolean {
45
+ if (tx.Flags == null) {
46
+ return false
47
+ }
48
+ if (typeof tx.Flags === 'number') {
49
+ return isFlagEnabled(tx.Flags, flag)
50
+ }
51
+ return tx.Flags[flagName] === true
52
+ }
53
+
30
54
  /**
31
55
  * Check if string is in hex format.
32
56
  *