xrpl 4.3.0 → 4.4.0-smartescrow.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 (310) hide show
  1. package/build/xrpl-latest-min.js +1 -1
  2. package/build/xrpl-latest-min.js.map +1 -1
  3. package/build/xrpl-latest.js +1293 -1596
  4. package/build/xrpl-latest.js.map +1 -1
  5. package/dist/npm/Wallet/defaultFaucets.d.ts +2 -1
  6. package/dist/npm/Wallet/defaultFaucets.d.ts.map +1 -1
  7. package/dist/npm/Wallet/defaultFaucets.js +3 -0
  8. package/dist/npm/Wallet/defaultFaucets.js.map +1 -1
  9. package/dist/npm/client/index.d.ts +3 -3
  10. package/dist/npm/client/index.d.ts.map +1 -1
  11. package/dist/npm/client/index.js +10 -7
  12. package/dist/npm/client/index.js.map +1 -1
  13. package/dist/npm/client/partialPayment.d.ts.map +1 -1
  14. package/dist/npm/client/partialPayment.js +2 -2
  15. package/dist/npm/client/partialPayment.js.map +1 -1
  16. package/dist/npm/models/common/index.d.ts +1 -0
  17. package/dist/npm/models/common/index.d.ts.map +1 -1
  18. package/dist/npm/models/ledger/AccountRoot.d.ts +1 -1
  19. package/dist/npm/models/ledger/AccountRoot.d.ts.map +1 -1
  20. package/dist/npm/models/ledger/Escrow.d.ts +2 -0
  21. package/dist/npm/models/ledger/Escrow.d.ts.map +1 -1
  22. package/dist/npm/models/ledger/FeeSettings.d.ts +2 -0
  23. package/dist/npm/models/ledger/FeeSettings.d.ts.map +1 -1
  24. package/dist/npm/models/ledger/LedgerEntry.d.ts +3 -2
  25. package/dist/npm/models/ledger/LedgerEntry.d.ts.map +1 -1
  26. package/dist/npm/models/ledger/Vault.d.ts +21 -0
  27. package/dist/npm/models/ledger/Vault.d.ts.map +1 -0
  28. package/dist/npm/models/ledger/Vault.js +3 -0
  29. package/dist/npm/models/ledger/Vault.js.map +1 -0
  30. package/dist/npm/models/ledger/index.d.ts +2 -1
  31. package/dist/npm/models/ledger/index.d.ts.map +1 -1
  32. package/dist/npm/models/ledger/index.js.map +1 -1
  33. package/dist/npm/models/methods/index.d.ts +5 -4
  34. package/dist/npm/models/methods/index.d.ts.map +1 -1
  35. package/dist/npm/models/methods/serverInfo.d.ts +6 -0
  36. package/dist/npm/models/methods/serverInfo.d.ts.map +1 -1
  37. package/dist/npm/models/methods/serverState.d.ts +6 -0
  38. package/dist/npm/models/methods/serverState.d.ts.map +1 -1
  39. package/dist/npm/models/methods/vaultInfo.d.ts +46 -0
  40. package/dist/npm/models/methods/vaultInfo.d.ts.map +1 -0
  41. package/dist/npm/models/methods/vaultInfo.js +3 -0
  42. package/dist/npm/models/methods/vaultInfo.js.map +1 -0
  43. package/dist/npm/models/transactions/AMMBid.d.ts.map +1 -1
  44. package/dist/npm/models/transactions/AMMBid.js +7 -5
  45. package/dist/npm/models/transactions/AMMBid.js.map +1 -1
  46. package/dist/npm/models/transactions/AMMClawback.d.ts.map +1 -1
  47. package/dist/npm/models/transactions/AMMClawback.js +5 -6
  48. package/dist/npm/models/transactions/AMMClawback.js.map +1 -1
  49. package/dist/npm/models/transactions/AMMDelete.d.ts.map +1 -1
  50. package/dist/npm/models/transactions/AMMDelete.js +2 -2
  51. package/dist/npm/models/transactions/AMMDelete.js.map +1 -1
  52. package/dist/npm/models/transactions/AMMDeposit.js +3 -3
  53. package/dist/npm/models/transactions/AMMDeposit.js.map +1 -1
  54. package/dist/npm/models/transactions/AMMVote.d.ts.map +1 -1
  55. package/dist/npm/models/transactions/AMMVote.js +2 -2
  56. package/dist/npm/models/transactions/AMMVote.js.map +1 -1
  57. package/dist/npm/models/transactions/AMMWithdraw.js +3 -3
  58. package/dist/npm/models/transactions/AMMWithdraw.js.map +1 -1
  59. package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
  60. package/dist/npm/models/transactions/MPTokenIssuanceCreate.js +3 -3
  61. package/dist/npm/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
  62. package/dist/npm/models/transactions/MPTokenIssuanceSet.js +4 -4
  63. package/dist/npm/models/transactions/MPTokenIssuanceSet.js.map +1 -1
  64. package/dist/npm/models/transactions/NFTokenCancelOffer.d.ts.map +1 -1
  65. package/dist/npm/models/transactions/NFTokenCancelOffer.js +1 -1
  66. package/dist/npm/models/transactions/NFTokenCancelOffer.js.map +1 -1
  67. package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  68. package/dist/npm/models/transactions/NFTokenCreateOffer.js +6 -2
  69. package/dist/npm/models/transactions/NFTokenCreateOffer.js.map +1 -1
  70. package/dist/npm/models/transactions/checkCreate.d.ts.map +1 -1
  71. package/dist/npm/models/transactions/checkCreate.js +1 -2
  72. package/dist/npm/models/transactions/checkCreate.js.map +1 -1
  73. package/dist/npm/models/transactions/clawback.d.ts +2 -2
  74. package/dist/npm/models/transactions/clawback.d.ts.map +1 -1
  75. package/dist/npm/models/transactions/clawback.js +4 -6
  76. package/dist/npm/models/transactions/clawback.js.map +1 -1
  77. package/dist/npm/models/transactions/common.d.ts +9 -4
  78. package/dist/npm/models/transactions/common.d.ts.map +1 -1
  79. package/dist/npm/models/transactions/common.js +51 -28
  80. package/dist/npm/models/transactions/common.js.map +1 -1
  81. package/dist/npm/models/transactions/escrowCreate.d.ts +2 -0
  82. package/dist/npm/models/transactions/escrowCreate.d.ts.map +1 -1
  83. package/dist/npm/models/transactions/escrowCreate.js +4 -2
  84. package/dist/npm/models/transactions/escrowCreate.js.map +1 -1
  85. package/dist/npm/models/transactions/escrowFinish.d.ts +1 -0
  86. package/dist/npm/models/transactions/escrowFinish.d.ts.map +1 -1
  87. package/dist/npm/models/transactions/escrowFinish.js.map +1 -1
  88. package/dist/npm/models/transactions/index.d.ts +8 -2
  89. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  90. package/dist/npm/models/transactions/index.js +4 -1
  91. package/dist/npm/models/transactions/index.js.map +1 -1
  92. package/dist/npm/models/transactions/oracleSet.d.ts.map +1 -1
  93. package/dist/npm/models/transactions/oracleSet.js +22 -21
  94. package/dist/npm/models/transactions/oracleSet.js.map +1 -1
  95. package/dist/npm/models/transactions/payment.d.ts +1 -0
  96. package/dist/npm/models/transactions/payment.d.ts.map +1 -1
  97. package/dist/npm/models/transactions/payment.js +6 -4
  98. package/dist/npm/models/transactions/payment.js.map +1 -1
  99. package/dist/npm/models/transactions/signerListSet.d.ts.map +1 -1
  100. package/dist/npm/models/transactions/signerListSet.js +10 -16
  101. package/dist/npm/models/transactions/signerListSet.js.map +1 -1
  102. package/dist/npm/models/transactions/transaction.d.ts +7 -1
  103. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  104. package/dist/npm/models/transactions/transaction.js +28 -35
  105. package/dist/npm/models/transactions/transaction.js.map +1 -1
  106. package/dist/npm/models/transactions/vaultClawback.d.ts +10 -0
  107. package/dist/npm/models/transactions/vaultClawback.d.ts.map +1 -0
  108. package/dist/npm/models/transactions/vaultClawback.js +12 -0
  109. package/dist/npm/models/transactions/vaultClawback.js.map +1 -0
  110. package/dist/npm/models/transactions/vaultCreate.d.ts +24 -0
  111. package/dist/npm/models/transactions/vaultCreate.d.ts.map +1 -0
  112. package/dist/npm/models/transactions/vaultCreate.js +51 -0
  113. package/dist/npm/models/transactions/vaultCreate.js.map +1 -0
  114. package/dist/npm/models/transactions/vaultDelete.d.ts +7 -0
  115. package/dist/npm/models/transactions/vaultDelete.d.ts.map +1 -0
  116. package/dist/npm/models/transactions/vaultDelete.js +10 -0
  117. package/dist/npm/models/transactions/vaultDelete.js.map +1 -0
  118. package/dist/npm/models/transactions/vaultDeposit.d.ts +9 -0
  119. package/dist/npm/models/transactions/vaultDeposit.d.ts.map +1 -0
  120. package/dist/npm/models/transactions/vaultDeposit.js +11 -0
  121. package/dist/npm/models/transactions/vaultDeposit.js.map +1 -0
  122. package/dist/npm/models/transactions/vaultSet.d.ts +10 -0
  123. package/dist/npm/models/transactions/vaultSet.d.ts.map +1 -0
  124. package/dist/npm/models/transactions/vaultSet.js +25 -0
  125. package/dist/npm/models/transactions/vaultSet.js.map +1 -0
  126. package/dist/npm/models/transactions/vaultWithdraw.d.ts +10 -0
  127. package/dist/npm/models/transactions/vaultWithdraw.d.ts.map +1 -0
  128. package/dist/npm/models/transactions/vaultWithdraw.js +12 -0
  129. package/dist/npm/models/transactions/vaultWithdraw.js.map +1 -0
  130. package/dist/npm/models/utils/flags.d.ts.map +1 -1
  131. package/dist/npm/models/utils/flags.js +2 -0
  132. package/dist/npm/models/utils/flags.js.map +1 -1
  133. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  134. package/dist/npm/src/Wallet/defaultFaucets.d.ts +2 -1
  135. package/dist/npm/src/Wallet/defaultFaucets.d.ts.map +1 -1
  136. package/dist/npm/src/Wallet/defaultFaucets.js +3 -0
  137. package/dist/npm/src/Wallet/defaultFaucets.js.map +1 -1
  138. package/dist/npm/src/client/index.d.ts +3 -3
  139. package/dist/npm/src/client/index.d.ts.map +1 -1
  140. package/dist/npm/src/client/index.js +10 -7
  141. package/dist/npm/src/client/index.js.map +1 -1
  142. package/dist/npm/src/client/partialPayment.d.ts.map +1 -1
  143. package/dist/npm/src/client/partialPayment.js +2 -2
  144. package/dist/npm/src/client/partialPayment.js.map +1 -1
  145. package/dist/npm/src/models/common/index.d.ts +1 -0
  146. package/dist/npm/src/models/common/index.d.ts.map +1 -1
  147. package/dist/npm/src/models/ledger/AccountRoot.d.ts +1 -1
  148. package/dist/npm/src/models/ledger/AccountRoot.d.ts.map +1 -1
  149. package/dist/npm/src/models/ledger/Escrow.d.ts +2 -0
  150. package/dist/npm/src/models/ledger/Escrow.d.ts.map +1 -1
  151. package/dist/npm/src/models/ledger/FeeSettings.d.ts +2 -0
  152. package/dist/npm/src/models/ledger/FeeSettings.d.ts.map +1 -1
  153. package/dist/npm/src/models/ledger/LedgerEntry.d.ts +3 -2
  154. package/dist/npm/src/models/ledger/LedgerEntry.d.ts.map +1 -1
  155. package/dist/npm/src/models/ledger/Vault.d.ts +21 -0
  156. package/dist/npm/src/models/ledger/Vault.d.ts.map +1 -0
  157. package/dist/npm/src/models/ledger/Vault.js +3 -0
  158. package/dist/npm/src/models/ledger/Vault.js.map +1 -0
  159. package/dist/npm/src/models/ledger/index.d.ts +2 -1
  160. package/dist/npm/src/models/ledger/index.d.ts.map +1 -1
  161. package/dist/npm/src/models/ledger/index.js.map +1 -1
  162. package/dist/npm/src/models/methods/index.d.ts +5 -4
  163. package/dist/npm/src/models/methods/index.d.ts.map +1 -1
  164. package/dist/npm/src/models/methods/serverInfo.d.ts +6 -0
  165. package/dist/npm/src/models/methods/serverInfo.d.ts.map +1 -1
  166. package/dist/npm/src/models/methods/serverState.d.ts +6 -0
  167. package/dist/npm/src/models/methods/serverState.d.ts.map +1 -1
  168. package/dist/npm/src/models/methods/vaultInfo.d.ts +46 -0
  169. package/dist/npm/src/models/methods/vaultInfo.d.ts.map +1 -0
  170. package/dist/npm/src/models/methods/vaultInfo.js +3 -0
  171. package/dist/npm/src/models/methods/vaultInfo.js.map +1 -0
  172. package/dist/npm/src/models/transactions/AMMBid.d.ts.map +1 -1
  173. package/dist/npm/src/models/transactions/AMMBid.js +7 -5
  174. package/dist/npm/src/models/transactions/AMMBid.js.map +1 -1
  175. package/dist/npm/src/models/transactions/AMMClawback.d.ts.map +1 -1
  176. package/dist/npm/src/models/transactions/AMMClawback.js +5 -6
  177. package/dist/npm/src/models/transactions/AMMClawback.js.map +1 -1
  178. package/dist/npm/src/models/transactions/AMMDelete.d.ts.map +1 -1
  179. package/dist/npm/src/models/transactions/AMMDelete.js +2 -2
  180. package/dist/npm/src/models/transactions/AMMDelete.js.map +1 -1
  181. package/dist/npm/src/models/transactions/AMMDeposit.js +3 -3
  182. package/dist/npm/src/models/transactions/AMMDeposit.js.map +1 -1
  183. package/dist/npm/src/models/transactions/AMMVote.d.ts.map +1 -1
  184. package/dist/npm/src/models/transactions/AMMVote.js +2 -2
  185. package/dist/npm/src/models/transactions/AMMVote.js.map +1 -1
  186. package/dist/npm/src/models/transactions/AMMWithdraw.js +3 -3
  187. package/dist/npm/src/models/transactions/AMMWithdraw.js.map +1 -1
  188. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
  189. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js +3 -3
  190. package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
  191. package/dist/npm/src/models/transactions/MPTokenIssuanceSet.js +4 -4
  192. package/dist/npm/src/models/transactions/MPTokenIssuanceSet.js.map +1 -1
  193. package/dist/npm/src/models/transactions/NFTokenCancelOffer.d.ts.map +1 -1
  194. package/dist/npm/src/models/transactions/NFTokenCancelOffer.js +1 -1
  195. package/dist/npm/src/models/transactions/NFTokenCancelOffer.js.map +1 -1
  196. package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  197. package/dist/npm/src/models/transactions/NFTokenCreateOffer.js +6 -2
  198. package/dist/npm/src/models/transactions/NFTokenCreateOffer.js.map +1 -1
  199. package/dist/npm/src/models/transactions/checkCreate.d.ts.map +1 -1
  200. package/dist/npm/src/models/transactions/checkCreate.js +1 -2
  201. package/dist/npm/src/models/transactions/checkCreate.js.map +1 -1
  202. package/dist/npm/src/models/transactions/clawback.d.ts +2 -2
  203. package/dist/npm/src/models/transactions/clawback.d.ts.map +1 -1
  204. package/dist/npm/src/models/transactions/clawback.js +4 -6
  205. package/dist/npm/src/models/transactions/clawback.js.map +1 -1
  206. package/dist/npm/src/models/transactions/common.d.ts +9 -4
  207. package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
  208. package/dist/npm/src/models/transactions/common.js +51 -28
  209. package/dist/npm/src/models/transactions/common.js.map +1 -1
  210. package/dist/npm/src/models/transactions/escrowCreate.d.ts +2 -0
  211. package/dist/npm/src/models/transactions/escrowCreate.d.ts.map +1 -1
  212. package/dist/npm/src/models/transactions/escrowCreate.js +4 -2
  213. package/dist/npm/src/models/transactions/escrowCreate.js.map +1 -1
  214. package/dist/npm/src/models/transactions/escrowFinish.d.ts +1 -0
  215. package/dist/npm/src/models/transactions/escrowFinish.d.ts.map +1 -1
  216. package/dist/npm/src/models/transactions/escrowFinish.js.map +1 -1
  217. package/dist/npm/src/models/transactions/index.d.ts +8 -2
  218. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  219. package/dist/npm/src/models/transactions/index.js +4 -1
  220. package/dist/npm/src/models/transactions/index.js.map +1 -1
  221. package/dist/npm/src/models/transactions/oracleSet.d.ts.map +1 -1
  222. package/dist/npm/src/models/transactions/oracleSet.js +22 -21
  223. package/dist/npm/src/models/transactions/oracleSet.js.map +1 -1
  224. package/dist/npm/src/models/transactions/payment.d.ts +1 -0
  225. package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
  226. package/dist/npm/src/models/transactions/payment.js +6 -4
  227. package/dist/npm/src/models/transactions/payment.js.map +1 -1
  228. package/dist/npm/src/models/transactions/signerListSet.d.ts.map +1 -1
  229. package/dist/npm/src/models/transactions/signerListSet.js +10 -16
  230. package/dist/npm/src/models/transactions/signerListSet.js.map +1 -1
  231. package/dist/npm/src/models/transactions/transaction.d.ts +7 -1
  232. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  233. package/dist/npm/src/models/transactions/transaction.js +28 -35
  234. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  235. package/dist/npm/src/models/transactions/vaultClawback.d.ts +10 -0
  236. package/dist/npm/src/models/transactions/vaultClawback.d.ts.map +1 -0
  237. package/dist/npm/src/models/transactions/vaultClawback.js +12 -0
  238. package/dist/npm/src/models/transactions/vaultClawback.js.map +1 -0
  239. package/dist/npm/src/models/transactions/vaultCreate.d.ts +24 -0
  240. package/dist/npm/src/models/transactions/vaultCreate.d.ts.map +1 -0
  241. package/dist/npm/src/models/transactions/vaultCreate.js +51 -0
  242. package/dist/npm/src/models/transactions/vaultCreate.js.map +1 -0
  243. package/dist/npm/src/models/transactions/vaultDelete.d.ts +7 -0
  244. package/dist/npm/src/models/transactions/vaultDelete.d.ts.map +1 -0
  245. package/dist/npm/src/models/transactions/vaultDelete.js +10 -0
  246. package/dist/npm/src/models/transactions/vaultDelete.js.map +1 -0
  247. package/dist/npm/src/models/transactions/vaultDeposit.d.ts +9 -0
  248. package/dist/npm/src/models/transactions/vaultDeposit.d.ts.map +1 -0
  249. package/dist/npm/src/models/transactions/vaultDeposit.js +11 -0
  250. package/dist/npm/src/models/transactions/vaultDeposit.js.map +1 -0
  251. package/dist/npm/src/models/transactions/vaultSet.d.ts +10 -0
  252. package/dist/npm/src/models/transactions/vaultSet.d.ts.map +1 -0
  253. package/dist/npm/src/models/transactions/vaultSet.js +25 -0
  254. package/dist/npm/src/models/transactions/vaultSet.js.map +1 -0
  255. package/dist/npm/src/models/transactions/vaultWithdraw.d.ts +10 -0
  256. package/dist/npm/src/models/transactions/vaultWithdraw.d.ts.map +1 -0
  257. package/dist/npm/src/models/transactions/vaultWithdraw.js +12 -0
  258. package/dist/npm/src/models/transactions/vaultWithdraw.js.map +1 -0
  259. package/dist/npm/src/models/utils/flags.d.ts.map +1 -1
  260. package/dist/npm/src/models/utils/flags.js +2 -0
  261. package/dist/npm/src/models/utils/flags.js.map +1 -1
  262. package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
  263. package/dist/npm/src/sugar/autofill.js +32 -11
  264. package/dist/npm/src/sugar/autofill.js.map +1 -1
  265. package/dist/npm/sugar/autofill.d.ts.map +1 -1
  266. package/dist/npm/sugar/autofill.js +32 -11
  267. package/dist/npm/sugar/autofill.js.map +1 -1
  268. package/package.json +5 -4
  269. package/src/Wallet/defaultFaucets.ts +5 -0
  270. package/src/client/index.ts +43 -38
  271. package/src/client/partialPayment.ts +1 -2
  272. package/src/models/common/index.ts +2 -0
  273. package/src/models/ledger/AccountRoot.ts +1 -1
  274. package/src/models/ledger/Escrow.ts +4 -0
  275. package/src/models/ledger/FeeSettings.ts +4 -0
  276. package/src/models/ledger/LedgerEntry.ts +3 -0
  277. package/src/models/ledger/Vault.ts +83 -0
  278. package/src/models/ledger/index.ts +3 -1
  279. package/src/models/methods/index.ts +10 -0
  280. package/src/models/methods/serverInfo.ts +9 -0
  281. package/src/models/methods/serverState.ts +10 -0
  282. package/src/models/methods/vaultInfo.ts +193 -0
  283. package/src/models/transactions/AMMBid.ts +12 -20
  284. package/src/models/transactions/AMMClawback.ts +8 -11
  285. package/src/models/transactions/AMMDelete.ts +7 -3
  286. package/src/models/transactions/AMMDeposit.ts +4 -4
  287. package/src/models/transactions/AMMVote.ts +7 -3
  288. package/src/models/transactions/AMMWithdraw.ts +4 -4
  289. package/src/models/transactions/MPTokenIssuanceCreate.ts +3 -1
  290. package/src/models/transactions/MPTokenIssuanceSet.ts +1 -1
  291. package/src/models/transactions/NFTokenCancelOffer.ts +2 -2
  292. package/src/models/transactions/NFTokenCreateOffer.ts +8 -4
  293. package/src/models/transactions/checkCreate.ts +2 -6
  294. package/src/models/transactions/clawback.ts +9 -10
  295. package/src/models/transactions/common.ts +114 -41
  296. package/src/models/transactions/escrowCreate.ts +10 -2
  297. package/src/models/transactions/escrowFinish.ts +2 -0
  298. package/src/models/transactions/index.ts +13 -2
  299. package/src/models/transactions/oracleSet.ts +32 -39
  300. package/src/models/transactions/payment.ts +13 -7
  301. package/src/models/transactions/signerListSet.ts +21 -21
  302. package/src/models/transactions/transaction.ts +46 -43
  303. package/src/models/transactions/vaultClawback.ts +55 -0
  304. package/src/models/transactions/vaultCreate.ts +142 -0
  305. package/src/models/transactions/vaultDelete.ts +32 -0
  306. package/src/models/transactions/vaultDeposit.ts +41 -0
  307. package/src/models/transactions/vaultSet.ts +71 -0
  308. package/src/models/transactions/vaultWithdraw.ts +50 -0
  309. package/src/models/utils/flags.ts +2 -0
  310. package/src/sugar/autofill.ts +44 -31
@@ -2,8 +2,6 @@
2
2
  /* eslint-disable max-lines-per-function -- need to work with a lot of Tx verifications */
3
3
 
4
4
  import { ValidationError } from '../../errors'
5
- import { IssuedCurrencyAmount, Memo } from '../common'
6
- import { isHex } from '../utils'
7
5
  import { convertTxFlagsToNumber } from '../utils/flags'
8
6
 
9
7
  import { AccountDelete, validateAccountDelete } from './accountDelete'
@@ -20,7 +18,11 @@ import { CheckCancel, validateCheckCancel } from './checkCancel'
20
18
  import { CheckCash, validateCheckCash } from './checkCash'
21
19
  import { CheckCreate, validateCheckCreate } from './checkCreate'
22
20
  import { Clawback, validateClawback } from './clawback'
23
- import { BaseTransaction, isIssuedCurrency } from './common'
21
+ import {
22
+ BaseTransaction,
23
+ isIssuedCurrencyAmount,
24
+ validateBaseTransaction,
25
+ } from './common'
24
26
  import { CredentialAccept, validateCredentialAccept } from './CredentialAccept'
25
27
  import { CredentialCreate, validateCredentialCreate } from './CredentialCreate'
26
28
  import { CredentialDelete, validateCredentialDelete } from './CredentialDelete'
@@ -92,6 +94,12 @@ import { SignerListSet, validateSignerListSet } from './signerListSet'
92
94
  import { TicketCreate, validateTicketCreate } from './ticketCreate'
93
95
  import { TrustSet, validateTrustSet } from './trustSet'
94
96
  import { UNLModify } from './UNLModify'
97
+ import { VaultClawback, validateVaultClawback } from './vaultClawback'
98
+ import { VaultCreate, validateVaultCreate } from './vaultCreate'
99
+ import { VaultDelete, validateVaultDelete } from './vaultDelete'
100
+ import { VaultDeposit, validateVaultDeposit } from './vaultDeposit'
101
+ import { VaultSet, validateVaultSet } from './vaultSet'
102
+ import { VaultWithdraw, validateVaultWithdraw } from './vaultWithdraw'
95
103
  import {
96
104
  XChainAccountCreateCommit,
97
105
  validateXChainAccountCreateCommit,
@@ -173,6 +181,12 @@ export type SubmittableTransaction =
173
181
  | SignerListSet
174
182
  | TicketCreate
175
183
  | TrustSet
184
+ | VaultClawback
185
+ | VaultCreate
186
+ | VaultDelete
187
+ | VaultDeposit
188
+ | VaultSet
189
+ | VaultWithdraw
176
190
  | XChainAccountCreateCommit
177
191
  | XChainAddAccountCreateAttestation
178
192
  | XChainAddClaimAttestation
@@ -216,50 +230,15 @@ export interface TransactionAndMetadata<
216
230
  */
217
231
  export function validate(transaction: Record<string, unknown>): void {
218
232
  const tx = { ...transaction }
219
- if (tx.TransactionType == null) {
220
- throw new ValidationError('Object does not have a `TransactionType`')
221
- }
222
- if (typeof tx.TransactionType !== 'string') {
223
- throw new ValidationError("Object's `TransactionType` is not a string")
224
- }
225
-
226
- /*
227
- * - Memos have exclusively hex data.
228
- */
229
- if (tx.Memos != null && typeof tx.Memos !== 'object') {
230
- throw new ValidationError('Memo must be array')
231
- }
232
- if (tx.Memos != null) {
233
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- needed here
234
- ;(tx.Memos as Array<Memo | null>).forEach((memo) => {
235
- if (memo?.Memo == null) {
236
- throw new ValidationError('Memo data must be in a `Memo` field')
237
- }
238
- if (memo.Memo.MemoData) {
239
- if (!isHex(memo.Memo.MemoData)) {
240
- throw new ValidationError('MemoData field must be a hex value')
241
- }
242
- }
243
-
244
- if (memo.Memo.MemoType) {
245
- if (!isHex(memo.Memo.MemoType)) {
246
- throw new ValidationError('MemoType field must be a hex value')
247
- }
248
- }
249
233
 
250
- if (memo.Memo.MemoFormat) {
251
- if (!isHex(memo.Memo.MemoFormat)) {
252
- throw new ValidationError('MemoFormat field must be a hex value')
253
- }
254
- }
255
- })
256
- }
234
+ // should already be done in the tx-specific validation, but doesn't hurt to check again
235
+ validateBaseTransaction(tx)
257
236
 
258
237
  Object.keys(tx).forEach((key) => {
259
238
  const standard_currency_code_len = 3
260
- if (tx[key] && isIssuedCurrency(tx[key])) {
261
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- needed
262
- const txCurrency = (tx[key] as IssuedCurrencyAmount).currency
239
+ const value = tx[key]
240
+ if (value && isIssuedCurrencyAmount(value)) {
241
+ const txCurrency = value.currency
263
242
 
264
243
  if (
265
244
  txCurrency.length === standard_currency_code_len &&
@@ -476,6 +455,30 @@ export function validate(transaction: Record<string, unknown>): void {
476
455
  validateTrustSet(tx)
477
456
  break
478
457
 
458
+ case 'VaultClawback':
459
+ validateVaultClawback(tx)
460
+ break
461
+
462
+ case 'VaultCreate':
463
+ validateVaultCreate(tx)
464
+ break
465
+
466
+ case 'VaultDelete':
467
+ validateVaultDelete(tx)
468
+ break
469
+
470
+ case 'VaultDeposit':
471
+ validateVaultDeposit(tx)
472
+ break
473
+
474
+ case 'VaultSet':
475
+ validateVaultSet(tx)
476
+ break
477
+
478
+ case 'VaultWithdraw':
479
+ validateVaultWithdraw(tx)
480
+ break
481
+
479
482
  case 'XChainAccountCreateCommit':
480
483
  validateXChainAccountCreateCommit(tx)
481
484
  break
@@ -0,0 +1,55 @@
1
+ import { ClawbackAmount } from '../common'
2
+
3
+ import {
4
+ BaseTransaction,
5
+ validateBaseTransaction,
6
+ validateRequiredField,
7
+ isString,
8
+ Account,
9
+ isAccount,
10
+ validateOptionalField,
11
+ isClawbackAmount,
12
+ } from './common'
13
+
14
+ /**
15
+ * The VaultClawback transaction performs a Clawback from the Vault, exchanging the shares of an account.
16
+ *
17
+ * Conceptually, the transaction performs VaultWithdraw on behalf of the Holder, sending the funds to the
18
+ * Issuer account of the asset. In case there are insufficient funds for the entire Amount the transaction
19
+ * will perform a partial Clawback, up to the Vault.AssetsAvailable. The Clawback transaction must respect
20
+ * any future fees or penalties.
21
+ *
22
+ * @category Transaction Models
23
+ */
24
+ export interface VaultClawback extends BaseTransaction {
25
+ TransactionType: 'VaultClawback'
26
+
27
+ /**
28
+ * The ID of the vault from which assets are withdrawn.
29
+ */
30
+ VaultID: string
31
+
32
+ /**
33
+ * The account ID from which to clawback the assets.
34
+ */
35
+ Holder: Account
36
+
37
+ /**
38
+ * The asset amount to clawback. When Amount is 0 clawback all funds, up to the total shares the Holder owns.
39
+ */
40
+ Amount?: ClawbackAmount
41
+ }
42
+
43
+ /**
44
+ * Verify the form and type of a {@link VaultClawback} at runtime.
45
+ *
46
+ * @param tx - A {@link VaultClawback} Transaction.
47
+ * @throws When the {@link VaultClawback} is malformed.
48
+ */
49
+ export function validateVaultClawback(tx: Record<string, unknown>): void {
50
+ validateBaseTransaction(tx)
51
+
52
+ validateRequiredField(tx, 'VaultID', isString)
53
+ validateRequiredField(tx, 'Holder', isAccount)
54
+ validateOptionalField(tx, 'Amount', isClawbackAmount)
55
+ }
@@ -0,0 +1,142 @@
1
+ import { ValidationError } from '../../errors'
2
+ import { Currency } from '../common'
3
+ import { hasFlag, isHex } from '../utils'
4
+
5
+ import {
6
+ BaseTransaction,
7
+ validateBaseTransaction,
8
+ GlobalFlagsInterface,
9
+ validateOptionalField,
10
+ isNumber,
11
+ isCurrency,
12
+ validateRequiredField,
13
+ isString,
14
+ VAULT_DATA_MAX_BYTE_LENGTH,
15
+ XRPLNumber,
16
+ isXRPLNumber,
17
+ } from './common'
18
+
19
+ const META_MAX_BYTE_LENGTH = 1024
20
+
21
+ /**
22
+ * Enum representing withdrawal strategies for a Vault.
23
+ */
24
+ export enum VaultWithdrawalPolicy {
25
+ vaultStrategyFirstComeFirstServe = 0x0001,
26
+ }
27
+
28
+ /**
29
+ * Enum representing values of {@link VaultCreate} transaction flags.
30
+ *
31
+ * @category Transaction Flags
32
+ */
33
+ export enum VaultCreateFlags {
34
+ tfVaultPrivate = 0x00010000,
35
+ tfVaultShareNonTransferable = 0x00020000,
36
+ }
37
+
38
+ /**
39
+ * Map of flags to boolean values representing {@link VaultCreate} transaction
40
+ * flags.
41
+ *
42
+ * @category Transaction Flags
43
+ */
44
+ export interface VaultCreateFlagsInterface extends GlobalFlagsInterface {
45
+ tfVaultPrivate?: boolean
46
+ tfVaultShareNonTransferable?: boolean
47
+ }
48
+
49
+ /**
50
+ * The VaultCreate transaction creates a new Vault object.
51
+ *
52
+ * @category Transaction Models
53
+ */
54
+ export interface VaultCreate extends BaseTransaction {
55
+ TransactionType: 'VaultCreate'
56
+
57
+ /**
58
+ * The asset (XRP, IOU or MPT) of the Vault.
59
+ */
60
+ Asset: Currency
61
+
62
+ /**
63
+ * Arbitrary Vault metadata, limited to 256 bytes.
64
+ */
65
+ Data?: string
66
+
67
+ /**
68
+ * The maximum asset amount that can be held in a vault.
69
+ */
70
+ AssetsMaximum?: XRPLNumber
71
+
72
+ /**
73
+ * Arbitrary metadata about the share MPT, in hex format, limited to 1024 bytes.
74
+ */
75
+ MPTokenMetadata?: string
76
+
77
+ /**
78
+ * Indicates the withdrawal strategy used by the Vault.
79
+ */
80
+ WithdrawalPolicy?: number
81
+
82
+ /**
83
+ * The PermissionedDomain object ID associated with the shares of this Vault.
84
+ */
85
+ DomainID?: string
86
+ }
87
+
88
+ /**
89
+ * Verify the form and type of an {@link VaultCreate} at runtime.
90
+ *
91
+ * @param tx - A {@link VaultCreate} Transaction.
92
+ * @throws When the {@link VaultCreate} is malformed.
93
+ */
94
+ // eslint-disable-next-line max-lines-per-function -- required to do all field validations
95
+ export function validateVaultCreate(tx: Record<string, unknown>): void {
96
+ validateBaseTransaction(tx)
97
+
98
+ validateRequiredField(tx, 'Asset', isCurrency)
99
+ validateOptionalField(tx, 'Data', isString)
100
+ validateOptionalField(tx, 'AssetsMaximum', isXRPLNumber)
101
+ validateOptionalField(tx, 'MPTokenMetadata', isString)
102
+ validateOptionalField(tx, 'WithdrawalPolicy', isNumber)
103
+ validateOptionalField(tx, 'DomainID', isString)
104
+
105
+ if (tx.Data !== undefined) {
106
+ const dataHex = tx.Data
107
+ if (!isHex(dataHex)) {
108
+ throw new ValidationError('VaultCreate: Data must be a valid hex string')
109
+ }
110
+ const dataByteLength = dataHex.length / 2
111
+ if (dataByteLength > VAULT_DATA_MAX_BYTE_LENGTH) {
112
+ throw new ValidationError(
113
+ `VaultCreate: Data exceeds ${VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`,
114
+ )
115
+ }
116
+ }
117
+
118
+ if (tx.MPTokenMetadata !== undefined) {
119
+ const metaHex = tx.MPTokenMetadata
120
+ if (!isHex(metaHex)) {
121
+ throw new ValidationError(
122
+ 'VaultCreate: MPTokenMetadata must be a valid hex string',
123
+ )
124
+ }
125
+ const metaByteLength = metaHex.length / 2
126
+ if (metaByteLength > META_MAX_BYTE_LENGTH) {
127
+ throw new ValidationError(
128
+ `VaultCreate: MPTokenMetadata exceeds ${META_MAX_BYTE_LENGTH} bytes (actual: ${metaByteLength})`,
129
+ )
130
+ }
131
+ }
132
+
133
+ // If DomainID present, tfVaultPrivate must be set
134
+ if (
135
+ tx.DomainID !== undefined &&
136
+ !hasFlag(tx, VaultCreateFlags.tfVaultPrivate, 'tfVaultPrivate')
137
+ ) {
138
+ throw new ValidationError(
139
+ 'VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set.',
140
+ )
141
+ }
142
+ }
@@ -0,0 +1,32 @@
1
+ import {
2
+ BaseTransaction,
3
+ validateBaseTransaction,
4
+ validateRequiredField,
5
+ isString,
6
+ } from './common'
7
+
8
+ /**
9
+ * The VaultDelete transaction deletes an existing vault object.
10
+ *
11
+ * @category Transaction Models
12
+ */
13
+ export interface VaultDelete extends BaseTransaction {
14
+ TransactionType: 'VaultDelete'
15
+
16
+ /**
17
+ * The ID of the vault to be deleted.
18
+ */
19
+ VaultID: string
20
+ }
21
+
22
+ /**
23
+ * Verify the form and type of a {@link VaultDelete} at runtime.
24
+ *
25
+ * @param tx - A {@link VaultDelete} Transaction.
26
+ * @throws When the {@link VaultDelete} is malformed.
27
+ */
28
+ export function validateVaultDelete(tx: Record<string, unknown>): void {
29
+ validateBaseTransaction(tx)
30
+
31
+ validateRequiredField(tx, 'VaultID', isString)
32
+ }
@@ -0,0 +1,41 @@
1
+ import { Amount } from '../common'
2
+
3
+ import {
4
+ BaseTransaction,
5
+ validateBaseTransaction,
6
+ validateRequiredField,
7
+ isString,
8
+ isAmount,
9
+ } from './common'
10
+
11
+ /**
12
+ * The VaultDeposit transaction adds liqudity in exchange for vault shares.
13
+ *
14
+ * @category Transaction Models
15
+ */
16
+ export interface VaultDeposit extends BaseTransaction {
17
+ TransactionType: 'VaultDeposit'
18
+
19
+ /**
20
+ * The ID of the vault to which the assets are deposited.
21
+ */
22
+ VaultID: string
23
+
24
+ /**
25
+ * Asset amount to deposit.
26
+ */
27
+ Amount: Amount
28
+ }
29
+
30
+ /**
31
+ * Verify the form and type of a {@link VaultDeposit} at runtime.
32
+ *
33
+ * @param tx - A {@link VaultDeposit} Transaction.
34
+ * @throws When the {@link VaultDeposit} is malformed.
35
+ */
36
+ export function validateVaultDeposit(tx: Record<string, unknown>): void {
37
+ validateBaseTransaction(tx)
38
+
39
+ validateRequiredField(tx, 'VaultID', isString)
40
+ validateRequiredField(tx, 'Amount', isAmount)
41
+ }
@@ -0,0 +1,71 @@
1
+ import { ValidationError } from '../../errors'
2
+ import { isHex } from '../utils'
3
+
4
+ import {
5
+ BaseTransaction,
6
+ validateBaseTransaction,
7
+ validateOptionalField,
8
+ validateRequiredField,
9
+ isString,
10
+ VAULT_DATA_MAX_BYTE_LENGTH,
11
+ XRPLNumber,
12
+ isXRPLNumber,
13
+ } from './common'
14
+
15
+ /**
16
+ * The VaultSet transaction modifies mutable fields on an existing Vault object.
17
+ *
18
+ * @category Transaction Models
19
+ */
20
+ export interface VaultSet extends BaseTransaction {
21
+ TransactionType: 'VaultSet'
22
+
23
+ /**
24
+ * The ID of the Vault to be modified. Must be included when updating the Vault.
25
+ */
26
+ VaultID: string
27
+
28
+ /**
29
+ * Arbitrary Vault metadata, limited to 256 bytes.
30
+ */
31
+ Data?: string
32
+
33
+ /**
34
+ * The maximum asset amount that can be held in a vault. The value cannot be lower than the
35
+ * current AssetsTotal unless the value is 0.
36
+ */
37
+ AssetsMaximum?: XRPLNumber
38
+
39
+ /**
40
+ * The PermissionedDomain object ID associated with the shares of this Vault.
41
+ */
42
+ DomainID?: string
43
+ }
44
+
45
+ /**
46
+ * Verify the form and type of a {@link VaultSet} at runtime.
47
+ *
48
+ * @param tx - A {@link VaultSet} Transaction.
49
+ * @throws When the {@link VaultSet} is malformed.
50
+ */
51
+ export function validateVaultSet(tx: Record<string, unknown>): void {
52
+ validateBaseTransaction(tx)
53
+
54
+ validateRequiredField(tx, 'VaultID', isString)
55
+ validateOptionalField(tx, 'Data', isString)
56
+ validateOptionalField(tx, 'AssetsMaximum', isXRPLNumber)
57
+ validateOptionalField(tx, 'DomainID', isString)
58
+
59
+ if (tx.Data !== undefined) {
60
+ const dataHex = tx.Data
61
+ if (!isHex(dataHex)) {
62
+ throw new ValidationError('VaultSet: Data must be a valid hex string')
63
+ }
64
+ const dataByteLength = dataHex.length / 2
65
+ if (dataByteLength > VAULT_DATA_MAX_BYTE_LENGTH) {
66
+ throw new ValidationError(
67
+ `VaultSet: Data exceeds ${VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`,
68
+ )
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,50 @@
1
+ import { Amount } from '../common'
2
+
3
+ import {
4
+ BaseTransaction,
5
+ validateBaseTransaction,
6
+ validateRequiredField,
7
+ isString,
8
+ isAmount,
9
+ Account,
10
+ validateOptionalField,
11
+ isAccount,
12
+ } from './common'
13
+
14
+ /**
15
+ * The VaultWithdraw transaction withdraws assets in exchange for the vault's shares.
16
+ *
17
+ * @category Transaction Models
18
+ */
19
+ export interface VaultWithdraw extends BaseTransaction {
20
+ TransactionType: 'VaultWithdraw'
21
+
22
+ /**
23
+ * The ID of the vault from which assets are withdrawn.
24
+ */
25
+ VaultID: string
26
+
27
+ /**
28
+ * The exact amount of Vault asset to withdraw.
29
+ */
30
+ Amount: Amount
31
+
32
+ /**
33
+ * An account to receive the assets. It must be able to receive the asset.
34
+ */
35
+ Destination?: Account
36
+ }
37
+
38
+ /**
39
+ * Verify the form and type of a {@link VaultWithdraw} at runtime.
40
+ *
41
+ * @param tx - A {@link VaultWithdraw} Transaction.
42
+ * @throws When the {@link VaultWithdraw} is malformed.
43
+ */
44
+ export function validateVaultWithdraw(tx: Record<string, unknown>): void {
45
+ validateBaseTransaction(tx)
46
+
47
+ validateRequiredField(tx, 'VaultID', isString)
48
+ validateRequiredField(tx, 'Amount', isAmount)
49
+ validateOptionalField(tx, 'Destination', isAccount)
50
+ }
@@ -20,6 +20,7 @@ import { PaymentFlags } from '../transactions/payment'
20
20
  import { PaymentChannelClaimFlags } from '../transactions/paymentChannelClaim'
21
21
  import type { Transaction } from '../transactions/transaction'
22
22
  import { TrustSetFlags } from '../transactions/trustSet'
23
+ import { VaultCreateFlags } from '../transactions/vaultCreate'
23
24
  import { XChainModifyBridgeFlags } from '../transactions/XChainModifyBridge'
24
25
 
25
26
  import { isFlagEnabled } from '.'
@@ -63,6 +64,7 @@ const txToFlag = {
63
64
  PaymentChannelClaim: PaymentChannelClaimFlags,
64
65
  Payment: PaymentFlags,
65
66
  TrustSet: TrustSetFlags,
67
+ VaultCreate: VaultCreateFlags,
66
68
  XChainModifyBridge: XChainModifyBridgeFlags,
67
69
  }
68
70