xrpjson 0.1.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 (367) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +183 -0
  3. package/dist/errors.d.ts +20 -0
  4. package/dist/errors.d.ts.map +1 -0
  5. package/dist/errors.js +27 -0
  6. package/dist/errors.js.map +1 -0
  7. package/dist/fp/factories/account-delete.d.ts +33 -0
  8. package/dist/fp/factories/account-delete.d.ts.map +1 -0
  9. package/dist/fp/factories/account-delete.js +138 -0
  10. package/dist/fp/factories/account-delete.js.map +1 -0
  11. package/dist/fp/factories/account-set.d.ts +31 -0
  12. package/dist/fp/factories/account-set.d.ts.map +1 -0
  13. package/dist/fp/factories/account-set.js +44 -0
  14. package/dist/fp/factories/account-set.js.map +1 -0
  15. package/dist/fp/factories/amm-bid.d.ts +134 -0
  16. package/dist/fp/factories/amm-bid.d.ts.map +1 -0
  17. package/dist/fp/factories/amm-bid.js +82 -0
  18. package/dist/fp/factories/amm-bid.js.map +1 -0
  19. package/dist/fp/factories/amm-clawback.d.ts +166 -0
  20. package/dist/fp/factories/amm-clawback.d.ts.map +1 -0
  21. package/dist/fp/factories/amm-clawback.js +143 -0
  22. package/dist/fp/factories/amm-clawback.js.map +1 -0
  23. package/dist/fp/factories/amm-create.d.ts +91 -0
  24. package/dist/fp/factories/amm-create.d.ts.map +1 -0
  25. package/dist/fp/factories/amm-create.js +140 -0
  26. package/dist/fp/factories/amm-create.js.map +1 -0
  27. package/dist/fp/factories/amm-delete.d.ts +84 -0
  28. package/dist/fp/factories/amm-delete.d.ts.map +1 -0
  29. package/dist/fp/factories/amm-delete.js +36 -0
  30. package/dist/fp/factories/amm-delete.js.map +1 -0
  31. package/dist/fp/factories/amm-deposit.d.ts +109 -0
  32. package/dist/fp/factories/amm-deposit.d.ts.map +1 -0
  33. package/dist/fp/factories/amm-deposit.js +68 -0
  34. package/dist/fp/factories/amm-deposit.js.map +1 -0
  35. package/dist/fp/factories/amm-vote.d.ts +87 -0
  36. package/dist/fp/factories/amm-vote.d.ts.map +1 -0
  37. package/dist/fp/factories/amm-vote.js +53 -0
  38. package/dist/fp/factories/amm-vote.js.map +1 -0
  39. package/dist/fp/factories/amm-withdraw.d.ts +131 -0
  40. package/dist/fp/factories/amm-withdraw.d.ts.map +1 -0
  41. package/dist/fp/factories/amm-withdraw.js +147 -0
  42. package/dist/fp/factories/amm-withdraw.js.map +1 -0
  43. package/dist/fp/factories/batch.d.ts +133 -0
  44. package/dist/fp/factories/batch.d.ts.map +1 -0
  45. package/dist/fp/factories/batch.js +264 -0
  46. package/dist/fp/factories/batch.js.map +1 -0
  47. package/dist/fp/factories/check-cancel.d.ts +22 -0
  48. package/dist/fp/factories/check-cancel.d.ts.map +1 -0
  49. package/dist/fp/factories/check-cancel.js +119 -0
  50. package/dist/fp/factories/check-cancel.js.map +1 -0
  51. package/dist/fp/factories/check-cash.d.ts +84 -0
  52. package/dist/fp/factories/check-cash.d.ts.map +1 -0
  53. package/dist/fp/factories/check-cash.js +95 -0
  54. package/dist/fp/factories/check-cash.js.map +1 -0
  55. package/dist/fp/factories/check-create.d.ts +82 -0
  56. package/dist/fp/factories/check-create.d.ts.map +1 -0
  57. package/dist/fp/factories/check-create.js +101 -0
  58. package/dist/fp/factories/check-create.js.map +1 -0
  59. package/dist/fp/factories/clawback.d.ts +160 -0
  60. package/dist/fp/factories/clawback.d.ts.map +1 -0
  61. package/dist/fp/factories/clawback.js +111 -0
  62. package/dist/fp/factories/clawback.js.map +1 -0
  63. package/dist/fp/factories/confidential-mpt-clawback.d.ts +24 -0
  64. package/dist/fp/factories/confidential-mpt-clawback.d.ts.map +1 -0
  65. package/dist/fp/factories/confidential-mpt-clawback.js +200 -0
  66. package/dist/fp/factories/confidential-mpt-clawback.js.map +1 -0
  67. package/dist/fp/factories/confidential-mpt-convert-back.d.ts +32 -0
  68. package/dist/fp/factories/confidential-mpt-convert-back.d.ts.map +1 -0
  69. package/dist/fp/factories/confidential-mpt-convert-back.js +203 -0
  70. package/dist/fp/factories/confidential-mpt-convert-back.js.map +1 -0
  71. package/dist/fp/factories/confidential-mpt-convert.d.ts +32 -0
  72. package/dist/fp/factories/confidential-mpt-convert.d.ts.map +1 -0
  73. package/dist/fp/factories/confidential-mpt-convert.js +209 -0
  74. package/dist/fp/factories/confidential-mpt-convert.js.map +1 -0
  75. package/dist/fp/factories/confidential-mpt-merge-inbox.d.ts +18 -0
  76. package/dist/fp/factories/confidential-mpt-merge-inbox.d.ts.map +1 -0
  77. package/dist/fp/factories/confidential-mpt-merge-inbox.js +130 -0
  78. package/dist/fp/factories/confidential-mpt-merge-inbox.js.map +1 -0
  79. package/dist/fp/factories/confidential-mpt-send.d.ts +38 -0
  80. package/dist/fp/factories/confidential-mpt-send.d.ts.map +1 -0
  81. package/dist/fp/factories/confidential-mpt-send.js +254 -0
  82. package/dist/fp/factories/confidential-mpt-send.js.map +1 -0
  83. package/dist/fp/factories/credential-accept.d.ts +23 -0
  84. package/dist/fp/factories/credential-accept.d.ts.map +1 -0
  85. package/dist/fp/factories/credential-accept.js +135 -0
  86. package/dist/fp/factories/credential-accept.js.map +1 -0
  87. package/dist/fp/factories/credential-create.d.ts +24 -0
  88. package/dist/fp/factories/credential-create.d.ts.map +1 -0
  89. package/dist/fp/factories/credential-create.js +204 -0
  90. package/dist/fp/factories/credential-create.js.map +1 -0
  91. package/dist/fp/factories/credential-delete.d.ts +33 -0
  92. package/dist/fp/factories/credential-delete.d.ts.map +1 -0
  93. package/dist/fp/factories/credential-delete.js +167 -0
  94. package/dist/fp/factories/credential-delete.js.map +1 -0
  95. package/dist/fp/factories/delegate-set.d.ts +52 -0
  96. package/dist/fp/factories/delegate-set.d.ts.map +1 -0
  97. package/dist/fp/factories/delegate-set.js +190 -0
  98. package/dist/fp/factories/delegate-set.js.map +1 -0
  99. package/dist/fp/factories/deposit-preauth.d.ts +183 -0
  100. package/dist/fp/factories/deposit-preauth.d.ts.map +1 -0
  101. package/dist/fp/factories/deposit-preauth.js +159 -0
  102. package/dist/fp/factories/deposit-preauth.js.map +1 -0
  103. package/dist/fp/factories/did-delete.d.ts +22 -0
  104. package/dist/fp/factories/did-delete.d.ts.map +1 -0
  105. package/dist/fp/factories/did-delete.js +126 -0
  106. package/dist/fp/factories/did-delete.js.map +1 -0
  107. package/dist/fp/factories/did-set.d.ts +68 -0
  108. package/dist/fp/factories/did-set.d.ts.map +1 -0
  109. package/dist/fp/factories/did-set.js +178 -0
  110. package/dist/fp/factories/did-set.js.map +1 -0
  111. package/dist/fp/factories/escrow-cancel.d.ts +28 -0
  112. package/dist/fp/factories/escrow-cancel.d.ts.map +1 -0
  113. package/dist/fp/factories/escrow-cancel.js +127 -0
  114. package/dist/fp/factories/escrow-cancel.js.map +1 -0
  115. package/dist/fp/factories/escrow-create.d.ts +103 -0
  116. package/dist/fp/factories/escrow-create.d.ts.map +1 -0
  117. package/dist/fp/factories/escrow-create.js +133 -0
  118. package/dist/fp/factories/escrow-create.js.map +1 -0
  119. package/dist/fp/factories/escrow-finish.d.ts +39 -0
  120. package/dist/fp/factories/escrow-finish.d.ts.map +1 -0
  121. package/dist/fp/factories/escrow-finish.js +173 -0
  122. package/dist/fp/factories/escrow-finish.js.map +1 -0
  123. package/dist/fp/factories/ledger-state-fix.d.ts +31 -0
  124. package/dist/fp/factories/ledger-state-fix.d.ts.map +1 -0
  125. package/dist/fp/factories/ledger-state-fix.js +163 -0
  126. package/dist/fp/factories/ledger-state-fix.js.map +1 -0
  127. package/dist/fp/factories/loan-broker-cover-clawback.d.ts +106 -0
  128. package/dist/fp/factories/loan-broker-cover-clawback.d.ts.map +1 -0
  129. package/dist/fp/factories/loan-broker-cover-clawback.js +122 -0
  130. package/dist/fp/factories/loan-broker-cover-clawback.js.map +1 -0
  131. package/dist/fp/factories/loan-broker-cover-deposit.d.ts +65 -0
  132. package/dist/fp/factories/loan-broker-cover-deposit.d.ts.map +1 -0
  133. package/dist/fp/factories/loan-broker-cover-deposit.js +81 -0
  134. package/dist/fp/factories/loan-broker-cover-deposit.js.map +1 -0
  135. package/dist/fp/factories/loan-broker-cover-withdraw.d.ts +96 -0
  136. package/dist/fp/factories/loan-broker-cover-withdraw.d.ts.map +1 -0
  137. package/dist/fp/factories/loan-broker-cover-withdraw.js +116 -0
  138. package/dist/fp/factories/loan-broker-cover-withdraw.js.map +1 -0
  139. package/dist/fp/factories/loan-broker-delete.d.ts +20 -0
  140. package/dist/fp/factories/loan-broker-delete.d.ts.map +1 -0
  141. package/dist/fp/factories/loan-broker-delete.js +94 -0
  142. package/dist/fp/factories/loan-broker-delete.js.map +1 -0
  143. package/dist/fp/factories/loan-broker-set.d.ts +108 -0
  144. package/dist/fp/factories/loan-broker-set.d.ts.map +1 -0
  145. package/dist/fp/factories/loan-broker-set.js +133 -0
  146. package/dist/fp/factories/loan-broker-set.js.map +1 -0
  147. package/dist/fp/factories/loan-delete.d.ts +18 -0
  148. package/dist/fp/factories/loan-delete.d.ts.map +1 -0
  149. package/dist/fp/factories/loan-delete.js +95 -0
  150. package/dist/fp/factories/loan-delete.js.map +1 -0
  151. package/dist/fp/factories/loan-manage.d.ts +72 -0
  152. package/dist/fp/factories/loan-manage.d.ts.map +1 -0
  153. package/dist/fp/factories/loan-manage.js +79 -0
  154. package/dist/fp/factories/loan-manage.js.map +1 -0
  155. package/dist/fp/factories/loan-pay.d.ts +70 -0
  156. package/dist/fp/factories/loan-pay.d.ts.map +1 -0
  157. package/dist/fp/factories/loan-pay.js +115 -0
  158. package/dist/fp/factories/loan-pay.js.map +1 -0
  159. package/dist/fp/factories/loan-set.d.ts +67 -0
  160. package/dist/fp/factories/loan-set.d.ts.map +1 -0
  161. package/dist/fp/factories/loan-set.js +102 -0
  162. package/dist/fp/factories/loan-set.js.map +1 -0
  163. package/dist/fp/factories/mptoken-authorize.d.ts +83 -0
  164. package/dist/fp/factories/mptoken-authorize.d.ts.map +1 -0
  165. package/dist/fp/factories/mptoken-authorize.js +63 -0
  166. package/dist/fp/factories/mptoken-authorize.js.map +1 -0
  167. package/dist/fp/factories/mptoken-issuance-create.d.ts +71 -0
  168. package/dist/fp/factories/mptoken-issuance-create.d.ts.map +1 -0
  169. package/dist/fp/factories/mptoken-issuance-create.js +135 -0
  170. package/dist/fp/factories/mptoken-issuance-create.js.map +1 -0
  171. package/dist/fp/factories/mptoken-issuance-destroy.d.ts +32 -0
  172. package/dist/fp/factories/mptoken-issuance-destroy.d.ts.map +1 -0
  173. package/dist/fp/factories/mptoken-issuance-destroy.js +105 -0
  174. package/dist/fp/factories/mptoken-issuance-destroy.js.map +1 -0
  175. package/dist/fp/factories/mptoken-issuance-set.d.ts +196 -0
  176. package/dist/fp/factories/mptoken-issuance-set.d.ts.map +1 -0
  177. package/dist/fp/factories/mptoken-issuance-set.js +333 -0
  178. package/dist/fp/factories/mptoken-issuance-set.js.map +1 -0
  179. package/dist/fp/factories/nftoken-accept-offer.d.ts +108 -0
  180. package/dist/fp/factories/nftoken-accept-offer.d.ts.map +1 -0
  181. package/dist/fp/factories/nftoken-accept-offer.js +105 -0
  182. package/dist/fp/factories/nftoken-accept-offer.js.map +1 -0
  183. package/dist/fp/factories/nftoken-burn.d.ts +27 -0
  184. package/dist/fp/factories/nftoken-burn.d.ts.map +1 -0
  185. package/dist/fp/factories/nftoken-burn.js +125 -0
  186. package/dist/fp/factories/nftoken-burn.js.map +1 -0
  187. package/dist/fp/factories/nftoken-cancel-offer.d.ts +19 -0
  188. package/dist/fp/factories/nftoken-cancel-offer.d.ts.map +1 -0
  189. package/dist/fp/factories/nftoken-cancel-offer.js +143 -0
  190. package/dist/fp/factories/nftoken-cancel-offer.js.map +1 -0
  191. package/dist/fp/factories/nftoken-create-offer.d.ts +159 -0
  192. package/dist/fp/factories/nftoken-create-offer.d.ts.map +1 -0
  193. package/dist/fp/factories/nftoken-create-offer.js +212 -0
  194. package/dist/fp/factories/nftoken-create-offer.js.map +1 -0
  195. package/dist/fp/factories/nftoken-mint.d.ts +155 -0
  196. package/dist/fp/factories/nftoken-mint.d.ts.map +1 -0
  197. package/dist/fp/factories/nftoken-mint.js +165 -0
  198. package/dist/fp/factories/nftoken-mint.js.map +1 -0
  199. package/dist/fp/factories/nftoken-modify.d.ts +28 -0
  200. package/dist/fp/factories/nftoken-modify.d.ts.map +1 -0
  201. package/dist/fp/factories/nftoken-modify.js +209 -0
  202. package/dist/fp/factories/nftoken-modify.js.map +1 -0
  203. package/dist/fp/factories/offer-cancel.d.ts +21 -0
  204. package/dist/fp/factories/offer-cancel.d.ts.map +1 -0
  205. package/dist/fp/factories/offer-cancel.js +99 -0
  206. package/dist/fp/factories/offer-cancel.js.map +1 -0
  207. package/dist/fp/factories/offer-create.d.ts +125 -0
  208. package/dist/fp/factories/offer-create.d.ts.map +1 -0
  209. package/dist/fp/factories/offer-create.js +230 -0
  210. package/dist/fp/factories/offer-create.js.map +1 -0
  211. package/dist/fp/factories/oracle-delete.d.ts +21 -0
  212. package/dist/fp/factories/oracle-delete.d.ts.map +1 -0
  213. package/dist/fp/factories/oracle-delete.js +101 -0
  214. package/dist/fp/factories/oracle-delete.js.map +1 -0
  215. package/dist/fp/factories/oracle-set.d.ts +40 -0
  216. package/dist/fp/factories/oracle-set.d.ts.map +1 -0
  217. package/dist/fp/factories/oracle-set.js +257 -0
  218. package/dist/fp/factories/oracle-set.js.map +1 -0
  219. package/dist/fp/factories/payment-channel-claim.d.ts +153 -0
  220. package/dist/fp/factories/payment-channel-claim.d.ts.map +1 -0
  221. package/dist/fp/factories/payment-channel-claim.js +118 -0
  222. package/dist/fp/factories/payment-channel-claim.js.map +1 -0
  223. package/dist/fp/factories/payment-channel-create.d.ts +30 -0
  224. package/dist/fp/factories/payment-channel-create.d.ts.map +1 -0
  225. package/dist/fp/factories/payment-channel-create.js +172 -0
  226. package/dist/fp/factories/payment-channel-create.js.map +1 -0
  227. package/dist/fp/factories/payment-channel-fund.d.ts +25 -0
  228. package/dist/fp/factories/payment-channel-fund.d.ts.map +1 -0
  229. package/dist/fp/factories/payment-channel-fund.js +142 -0
  230. package/dist/fp/factories/payment-channel-fund.js.map +1 -0
  231. package/dist/fp/factories/payment.d.ts +65 -0
  232. package/dist/fp/factories/payment.d.ts.map +1 -0
  233. package/dist/fp/factories/payment.js +48 -0
  234. package/dist/fp/factories/payment.js.map +1 -0
  235. package/dist/fp/factories/permissioned-domain-delete.d.ts +18 -0
  236. package/dist/fp/factories/permissioned-domain-delete.d.ts.map +1 -0
  237. package/dist/fp/factories/permissioned-domain-delete.js +88 -0
  238. package/dist/fp/factories/permissioned-domain-delete.js.map +1 -0
  239. package/dist/fp/factories/permissioned-domain-set.d.ts +118 -0
  240. package/dist/fp/factories/permissioned-domain-set.d.ts.map +1 -0
  241. package/dist/fp/factories/permissioned-domain-set.js +100 -0
  242. package/dist/fp/factories/permissioned-domain-set.js.map +1 -0
  243. package/dist/fp/factories/set-regular-key.d.ts +30 -0
  244. package/dist/fp/factories/set-regular-key.d.ts.map +1 -0
  245. package/dist/fp/factories/set-regular-key.js +81 -0
  246. package/dist/fp/factories/set-regular-key.js.map +1 -0
  247. package/dist/fp/factories/signer-list-set.d.ts +61 -0
  248. package/dist/fp/factories/signer-list-set.d.ts.map +1 -0
  249. package/dist/fp/factories/signer-list-set.js +250 -0
  250. package/dist/fp/factories/signer-list-set.js.map +1 -0
  251. package/dist/fp/factories/sponsorship-set.d.ts +148 -0
  252. package/dist/fp/factories/sponsorship-set.d.ts.map +1 -0
  253. package/dist/fp/factories/sponsorship-set.js +201 -0
  254. package/dist/fp/factories/sponsorship-set.js.map +1 -0
  255. package/dist/fp/factories/sponsorship-transfer.d.ts +173 -0
  256. package/dist/fp/factories/sponsorship-transfer.d.ts.map +1 -0
  257. package/dist/fp/factories/sponsorship-transfer.js +195 -0
  258. package/dist/fp/factories/sponsorship-transfer.js.map +1 -0
  259. package/dist/fp/factories/ticket-create.d.ts +20 -0
  260. package/dist/fp/factories/ticket-create.d.ts.map +1 -0
  261. package/dist/fp/factories/ticket-create.js +120 -0
  262. package/dist/fp/factories/ticket-create.js.map +1 -0
  263. package/dist/fp/factories/trust-set.d.ts +100 -0
  264. package/dist/fp/factories/trust-set.d.ts.map +1 -0
  265. package/dist/fp/factories/trust-set.js +111 -0
  266. package/dist/fp/factories/trust-set.js.map +1 -0
  267. package/dist/fp/factories/vault-clawback.d.ts +83 -0
  268. package/dist/fp/factories/vault-clawback.d.ts.map +1 -0
  269. package/dist/fp/factories/vault-clawback.js +91 -0
  270. package/dist/fp/factories/vault-clawback.js.map +1 -0
  271. package/dist/fp/factories/vault-create.d.ts +51 -0
  272. package/dist/fp/factories/vault-create.d.ts.map +1 -0
  273. package/dist/fp/factories/vault-create.js +141 -0
  274. package/dist/fp/factories/vault-create.js.map +1 -0
  275. package/dist/fp/factories/vault-delete.d.ts +20 -0
  276. package/dist/fp/factories/vault-delete.d.ts.map +1 -0
  277. package/dist/fp/factories/vault-delete.js +103 -0
  278. package/dist/fp/factories/vault-delete.js.map +1 -0
  279. package/dist/fp/factories/vault-deposit.d.ts +56 -0
  280. package/dist/fp/factories/vault-deposit.d.ts.map +1 -0
  281. package/dist/fp/factories/vault-deposit.js +85 -0
  282. package/dist/fp/factories/vault-deposit.js.map +1 -0
  283. package/dist/fp/factories/vault-set.d.ts +32 -0
  284. package/dist/fp/factories/vault-set.d.ts.map +1 -0
  285. package/dist/fp/factories/vault-set.js +135 -0
  286. package/dist/fp/factories/vault-set.js.map +1 -0
  287. package/dist/fp/factories/vault-withdraw.d.ts +82 -0
  288. package/dist/fp/factories/vault-withdraw.d.ts.map +1 -0
  289. package/dist/fp/factories/vault-withdraw.js +122 -0
  290. package/dist/fp/factories/vault-withdraw.js.map +1 -0
  291. package/dist/fp/factories/xchain-account-create-commit.d.ts +180 -0
  292. package/dist/fp/factories/xchain-account-create-commit.d.ts.map +1 -0
  293. package/dist/fp/factories/xchain-account-create-commit.js +99 -0
  294. package/dist/fp/factories/xchain-account-create-commit.js.map +1 -0
  295. package/dist/fp/factories/xchain-add-account-create-attestation.d.ts +213 -0
  296. package/dist/fp/factories/xchain-add-account-create-attestation.d.ts.map +1 -0
  297. package/dist/fp/factories/xchain-add-account-create-attestation.js +95 -0
  298. package/dist/fp/factories/xchain-add-account-create-attestation.js.map +1 -0
  299. package/dist/fp/factories/xchain-add-claim-attestation.d.ts +206 -0
  300. package/dist/fp/factories/xchain-add-claim-attestation.d.ts.map +1 -0
  301. package/dist/fp/factories/xchain-add-claim-attestation.js +97 -0
  302. package/dist/fp/factories/xchain-add-claim-attestation.js.map +1 -0
  303. package/dist/fp/factories/xchain-claim.d.ts +187 -0
  304. package/dist/fp/factories/xchain-claim.d.ts.map +1 -0
  305. package/dist/fp/factories/xchain-claim.js +140 -0
  306. package/dist/fp/factories/xchain-claim.js.map +1 -0
  307. package/dist/fp/factories/xchain-commit.d.ts +168 -0
  308. package/dist/fp/factories/xchain-commit.d.ts.map +1 -0
  309. package/dist/fp/factories/xchain-commit.js +137 -0
  310. package/dist/fp/factories/xchain-commit.js.map +1 -0
  311. package/dist/fp/factories/xchain-create-bridge.d.ts +206 -0
  312. package/dist/fp/factories/xchain-create-bridge.d.ts.map +1 -0
  313. package/dist/fp/factories/xchain-create-bridge.js +100 -0
  314. package/dist/fp/factories/xchain-create-bridge.js.map +1 -0
  315. package/dist/fp/factories/xchain-create-claim-id.d.ts +199 -0
  316. package/dist/fp/factories/xchain-create-claim-id.d.ts.map +1 -0
  317. package/dist/fp/factories/xchain-create-claim-id.js +78 -0
  318. package/dist/fp/factories/xchain-create-claim-id.js.map +1 -0
  319. package/dist/fp/factories/xchain-modify-bridge.d.ts +198 -0
  320. package/dist/fp/factories/xchain-modify-bridge.d.ts.map +1 -0
  321. package/dist/fp/factories/xchain-modify-bridge.js +102 -0
  322. package/dist/fp/factories/xchain-modify-bridge.js.map +1 -0
  323. package/dist/fp/index.d.ts +124 -0
  324. package/dist/fp/index.d.ts.map +1 -0
  325. package/dist/fp/index.js +152 -0
  326. package/dist/fp/index.js.map +1 -0
  327. package/dist/fp/shape.d.ts +34 -0
  328. package/dist/fp/shape.d.ts.map +1 -0
  329. package/dist/fp/shape.js +80 -0
  330. package/dist/fp/shape.js.map +1 -0
  331. package/dist/types/amounts.d.ts +49 -0
  332. package/dist/types/amounts.d.ts.map +1 -0
  333. package/dist/types/amounts.js +8 -0
  334. package/dist/types/amounts.js.map +1 -0
  335. package/dist/types/base.d.ts +103 -0
  336. package/dist/types/base.d.ts.map +1 -0
  337. package/dist/types/base.js +2 -0
  338. package/dist/types/base.js.map +1 -0
  339. package/dist/types/common.d.ts +163 -0
  340. package/dist/types/common.d.ts.map +1 -0
  341. package/dist/types/common.js +5 -0
  342. package/dist/types/common.js.map +1 -0
  343. package/dist/types/flags.d.ts +317 -0
  344. package/dist/types/flags.d.ts.map +1 -0
  345. package/dist/types/flags.js +253 -0
  346. package/dist/types/flags.js.map +1 -0
  347. package/dist/types/index.d.ts +10 -0
  348. package/dist/types/index.d.ts.map +1 -0
  349. package/dist/types/index.js +2 -0
  350. package/dist/types/index.js.map +1 -0
  351. package/dist/types/transaction-types.d.ts +7 -0
  352. package/dist/types/transaction-types.d.ts.map +1 -0
  353. package/dist/types/transaction-types.js +2 -0
  354. package/dist/types/transaction-types.js.map +1 -0
  355. package/dist/validation/base.d.ts +8 -0
  356. package/dist/validation/base.d.ts.map +1 -0
  357. package/dist/validation/base.js +79 -0
  358. package/dist/validation/base.js.map +1 -0
  359. package/dist/validation/helpers.d.ts +42 -0
  360. package/dist/validation/helpers.d.ts.map +1 -0
  361. package/dist/validation/helpers.js +154 -0
  362. package/dist/validation/helpers.js.map +1 -0
  363. package/dist/validation/index.d.ts +3 -0
  364. package/dist/validation/index.d.ts.map +1 -0
  365. package/dist/validation/index.js +3 -0
  366. package/dist/validation/index.js.map +1 -0
  367. package/package.json +67 -0
@@ -0,0 +1,111 @@
1
+ import { isAccount, isNumber } from '../../validation/helpers.js';
2
+ import { ValidationError } from '../../errors.js';
3
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
4
+ // ─── Spec constants ──────────────────────────────────────────────────
5
+ // UInt32 bounds — per xrpl-dev-portal `trustset.md` field table.
6
+ const UINT32_MIN = 0;
7
+ const UINT32_MAX = 0xffffffff;
8
+ // ISO 4217 standard currency codes are 3 ASCII chars; non-standard codes
9
+ // are 160-bit hex = 40 chars (per xrpl-dev-portal `currency-formats.md`).
10
+ const CURRENCY_CODE_STD_LENGTH = 3;
11
+ const CURRENCY_CODE_NONSTD_LENGTH = 40;
12
+ // ─── Helpers ─────────────────────────────────────────────────────────
13
+ /**
14
+ * Per xrpl-dev-portal `currency-formats.md` "String Numbers" section,
15
+ * a valid XRPL string-number is decimal (`123`, `1.5`, `0.5`) or
16
+ * scientific (`1.23e11`, `1.5E-3`), and may not contain leading `+` or
17
+ * whitespace. Negative values are disallowed in TrustSet contexts.
18
+ */
19
+ const STRING_NUMBER_REGEX = /^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/u;
20
+ /**
21
+ * Validate the structural shape of an `IssuedCurrencyAmount` and the
22
+ * contents of each field against the TrustSet spec:
23
+ * - `currency` is either a 3-char ISO 4217 code or a 40-char hex code.
24
+ * The literal `"XRP"` is explicitly forbidden.
25
+ * - `issuer` is a valid XRPL account address.
26
+ * - `value` is a non-negative XRPL string-number.
27
+ *
28
+ * Returns null on success, or a human-readable error message describing
29
+ * the first failure encountered.
30
+ */
31
+ function checkTrustLimit(amount) {
32
+ if (amount === undefined || amount === null) {
33
+ return 'missing field LimitAmount';
34
+ }
35
+ if (typeof amount !== 'object' || Array.isArray(amount)) {
36
+ return 'LimitAmount must be an IssuedCurrencyAmount object';
37
+ }
38
+ const a = amount;
39
+ if (a.mpt_issuance_id !== undefined) {
40
+ return 'LimitAmount must be an IssuedCurrencyAmount, not an MPTAmount';
41
+ }
42
+ if (typeof a.currency !== 'string') {
43
+ return 'LimitAmount.currency must be a string';
44
+ }
45
+ if (a.currency === 'XRP') {
46
+ return 'LimitAmount.currency must not be "XRP"';
47
+ }
48
+ if (a.currency.length !== CURRENCY_CODE_STD_LENGTH &&
49
+ a.currency.length !== CURRENCY_CODE_NONSTD_LENGTH) {
50
+ return `LimitAmount.currency must be a ${CURRENCY_CODE_STD_LENGTH}-character ISO 4217 code or ${CURRENCY_CODE_NONSTD_LENGTH}-character hex string`;
51
+ }
52
+ if (typeof a.issuer !== 'string' || !isAccount(a.issuer)) {
53
+ return 'LimitAmount.issuer must be a valid XRPL account address';
54
+ }
55
+ if (typeof a.value !== 'string') {
56
+ return 'LimitAmount.value must be a string';
57
+ }
58
+ if (!STRING_NUMBER_REGEX.test(a.value)) {
59
+ return 'LimitAmount.value must be a non-negative XRPL string-number (decimal or scientific)';
60
+ }
61
+ return null;
62
+ }
63
+ // ─── Factory ─────────────────────────────────────────────────────────
64
+ export function trustSet(props) {
65
+ // ── Account ── required, must be a valid XRPL classic/X-address.
66
+ require(props.Account, 'TrustSet: missing or invalid Account', isAccount);
67
+ // ── LimitAmount ── required, must be a spec-conformant
68
+ // IssuedCurrencyAmount (no XRP, no MPT, non-negative value).
69
+ const limitError = checkTrustLimit(props.LimitAmount);
70
+ if (limitError !== null) {
71
+ throw new ValidationError(`TrustSet: ${limitError}`);
72
+ }
73
+ // ── QualityIn ── optional UInt32.
74
+ if (props.QualityIn !== undefined) {
75
+ if (!isNumber(props.QualityIn) ||
76
+ !Number.isInteger(props.QualityIn) ||
77
+ props.QualityIn < UINT32_MIN ||
78
+ props.QualityIn > UINT32_MAX) {
79
+ throw new ValidationError(`TrustSet: QualityIn must be a UInt32 in [${UINT32_MIN}, ${UINT32_MAX}]`);
80
+ }
81
+ }
82
+ // ── QualityOut ── optional UInt32.
83
+ if (props.QualityOut !== undefined) {
84
+ if (!isNumber(props.QualityOut) ||
85
+ !Number.isInteger(props.QualityOut) ||
86
+ props.QualityOut < UINT32_MIN ||
87
+ props.QualityOut > UINT32_MAX) {
88
+ throw new ValidationError(`TrustSet: QualityOut must be a UInt32 in [${UINT32_MIN}, ${UINT32_MAX}]`);
89
+ }
90
+ }
91
+ return buildFrozenTx('TrustSet', props, {
92
+ validate() {
93
+ // Validated at construction.
94
+ },
95
+ toJSON() {
96
+ const json = {};
97
+ for (const k of Object.keys(this)) {
98
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
99
+ continue;
100
+ const v = this[k];
101
+ if (v !== undefined)
102
+ json[k] = v;
103
+ }
104
+ return json;
105
+ },
106
+ with(overrides) {
107
+ return trustSet(mergeForWith(this, overrides));
108
+ },
109
+ });
110
+ }
111
+ //# sourceMappingURL=trust-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-set.js","sourceRoot":"","sources":["../../../src/fp/factories/trust-set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Functional VaultClawback factory — frozen-object style.
3
+ *
4
+ * Performs a clawback from a Single-asset vault on behalf of a Holder,
5
+ * exchanging the Holder's vault shares for the underlying asset and
6
+ * sending the funds to the asset's Issuer. If `Amount` is omitted (or
7
+ * zero in serialized form) the tx claws back all funds up to the total
8
+ * shares the Holder owns.
9
+ *
10
+ * Validation happens at construction; there is no way to construct an
11
+ * invalid tx. Compare to the class-based equivalent, which exposes a
12
+ * separate `.validate()` method you must remember to call.
13
+ *
14
+ * import { vaultClawback } from 'xrplt/fp';
15
+ * const tx = vaultClawback({ Account, VaultID, Holder, Amount: IOU_AMT });
16
+ * const j = tx.toJSON();
17
+ * const tx2 = tx.with({ Holder: 'r…' });
18
+ *
19
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/vaultclawback
20
+ * @see https://github.com/XRPLF/xrpl.js/blob/main/packages/xrpl/src/models/transactions/vaultClawback.ts
21
+ * @see XLS-0065 §3.7 (https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0065-single-asset-vault)
22
+ *
23
+ * ## Divergences
24
+ *
25
+ * Compared with `src/transactions/vault-clawback.ts`, this factory adds
26
+ * guards the class skips:
27
+ *
28
+ * - **VaultID must be a 64-character hex string** (XLS-0065 §3.7.1 declares
29
+ * `VaultID` as `HASH256`; the class only checks `isString(VaultID)`).
30
+ * - Source: XLS-0065 §3.7.1 Fields table, Internal Type = `HASH256`.
31
+ * - Source: xrpl-dev-portal vaultclawback.md, Fields table row for `VaultID`.
32
+ *
33
+ * - **Amount `value` must be a non-negative base-10 integer string**
34
+ * (the canonical XRPL Number representation; matches the policy used
35
+ * by `loanSet`, `vaultCreate`, etc.). The class only checks shape via
36
+ * `isClawbackAmount`, which does not check numeric well-formedness.
37
+ * - Source: xrpl.org generic Amount spec
38
+ * (https://xrpl.org/docs/references/protocol/data-types/basic-data-types#specifying-currency-amounts).
39
+ *
40
+ * - **IssuedCurrencyAmount `currency` and `issuer` shape are validated**
41
+ * (3-char ASCII or 40-char hex `currency`; `issuer` must be a valid
42
+ * XRPL account). The class only delegates to `isClawbackAmount`, which
43
+ * does not enforce those sub-fields.
44
+ * - Source: xrpl-dev-portal basic-data-types#specifying-currency-amounts.
45
+ *
46
+ * - **MPTAmount `mpt_issuance_id` must be a non-empty hex string** with
47
+ * reasonable length (24-48). The class only checks key presence.
48
+ * - Source: XLS-0033 Multi-Purpose Tokens (mpt_issuance_id is 96-bit
49
+ * uint, hex-encoded to ≤ 24 hex chars; we accept a slightly wider
50
+ * range to avoid breaking on future widenings).
51
+ *
52
+ * - **No `Flags` validation**: per XLS-0065 §3.7 and xrpl.org, VaultClawback
53
+ * defines no transaction flags; the factory does not require `Flags`,
54
+ * but does accept it as `0` if supplied (BaseTransactionFields
55
+ * compatibility). The class inherits `Flags` from its parent and never
56
+ * checks it either.
57
+ * - Source: xrpl-dev-portal vaultclawback.md "VaultClawback Flags" section.
58
+ */
59
+ import type { ClawbackAmount } from '../../types/amounts.js';
60
+ export interface VaultClawbackProps {
61
+ Account: string;
62
+ /** The ID of the vault from which assets are withdrawn. 64-char hex (HASH256). */
63
+ VaultID: string;
64
+ /** The account ID from which to clawback assets. */
65
+ Holder: string;
66
+ /**
67
+ * Optional clawback amount. When omitted, the asset is inferred from the
68
+ * vault. **NOT** an XRP amount string — only IssuedCurrency or MPT form.
69
+ */
70
+ Amount?: ClawbackAmount | undefined;
71
+ /** No flags defined for VaultClawback; permitted for base-tx parity. */
72
+ Flags?: number | undefined;
73
+ Fee?: string | undefined;
74
+ Sequence?: number | undefined;
75
+ }
76
+ export interface VaultClawback extends Readonly<VaultClawbackProps> {
77
+ readonly TransactionType: 'VaultClawback';
78
+ validate(): void;
79
+ toJSON(): Record<string, unknown>;
80
+ with(overrides: Partial<VaultClawbackProps>): VaultClawback;
81
+ }
82
+ export declare function vaultClawback(props: VaultClawbackProps): VaultClawback;
83
+ //# sourceMappingURL=vault-clawback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-clawback.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/vault-clawback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA6B7D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,aACf,SAAQ,QAAQ,CAAC,kBAAkB,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;CAC7D;AAcD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA8FtE"}
@@ -0,0 +1,91 @@
1
+ import { isAccount, isClawbackAmount, isHex, isIssuedCurrencyAmount, isMPTAmount, isString, } from '../../validation/helpers.js';
2
+ import { ValidationError } from '../../errors.js';
3
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
4
+ // ─── Spec constants ──────────────────────────────────────────────────
5
+ // HASH256 in hex is 64 characters. (XLS-0065 §3.7.1: VaultID is HASH256.)
6
+ const HASH256_HEX_LENGTH = 64;
7
+ // Currency codes are either 3 ASCII characters or 40 hex characters.
8
+ const CURRENCY_ASCII_LENGTH = 3;
9
+ const CURRENCY_HEX_LENGTH = 40;
10
+ // MPT issuance IDs are 192-bit, hex-encoded (≤ 48 chars).
11
+ // We accept 24..48 to leave slack for future widenings / leading-zero
12
+ // encoders. Empty strings are rejected.
13
+ const MPT_ISSUANCE_ID_MIN = 24;
14
+ const MPT_ISSUANCE_ID_MAX = 48;
15
+ // ─── Helpers ─────────────────────────────────────────────────────────
16
+ /**
17
+ * XRPLNumber: a non-negative base-10 integer string. Matches the policy
18
+ * used across other factories (loanSet, vaultCreate).
19
+ */
20
+ function isXrplNumber(value) {
21
+ return isString(value) && /^[0-9]+$/u.test(value);
22
+ }
23
+ // ─── Factory ─────────────────────────────────────────────────────────
24
+ export function vaultClawback(props) {
25
+ // ── Account ── required, must be a valid XRPL classic address.
26
+ require(props.Account, 'VaultClawback: Account is required', isAccount);
27
+ // ── VaultID ── required, 64-char hex (HASH256).
28
+ if (!isString(props.VaultID) ||
29
+ !isHex(props.VaultID) ||
30
+ props.VaultID.length !== HASH256_HEX_LENGTH) {
31
+ throw new ValidationError('VaultClawback: VaultID must be a 64-character hex string (HASH256)');
32
+ }
33
+ // ── Holder ── required, valid XRPL account address.
34
+ require(props.Holder, 'VaultClawback: Holder is required', isAccount);
35
+ // ── Amount ── optional, must be a valid ClawbackAmount (IOU/MPT, NOT XRP).
36
+ if (props.Amount !== undefined) {
37
+ if (!isClawbackAmount(props.Amount)) {
38
+ throw new ValidationError('VaultClawback: Amount must be a valid ClawbackAmount (trust line / MPT form, NOT XRP)');
39
+ }
40
+ if (isIssuedCurrencyAmount(props.Amount)) {
41
+ // Currency: 3 ASCII or 40 hex characters.
42
+ const ccy = props.Amount.currency;
43
+ if (ccy.length !== CURRENCY_ASCII_LENGTH &&
44
+ ccy.length !== CURRENCY_HEX_LENGTH) {
45
+ throw new ValidationError(`VaultClawback: Amount.currency must be ${CURRENCY_ASCII_LENGTH} ASCII characters or ${CURRENCY_HEX_LENGTH} hex characters (actual: ${ccy.length})`);
46
+ }
47
+ if (ccy.length === CURRENCY_HEX_LENGTH && !isHex(ccy)) {
48
+ throw new ValidationError('VaultClawback: Amount.currency (40-char form) must be hex');
49
+ }
50
+ // Issuer must be a valid XRPL account.
51
+ if (!isAccount(props.Amount.issuer)) {
52
+ throw new ValidationError('VaultClawback: Amount.issuer must be a valid XRPL account address');
53
+ }
54
+ // Value: non-negative base-10 integer string.
55
+ if (!isXrplNumber(props.Amount.value)) {
56
+ throw new ValidationError('VaultClawback: Amount.value must be a non-negative base-10 integer string');
57
+ }
58
+ }
59
+ else if (isMPTAmount(props.Amount)) {
60
+ const mptid = props.Amount.mpt_issuance_id;
61
+ if (mptid.length < MPT_ISSUANCE_ID_MIN ||
62
+ mptid.length > MPT_ISSUANCE_ID_MAX ||
63
+ !isHex(mptid)) {
64
+ throw new ValidationError(`VaultClawback: Amount.mpt_issuance_id must be a ${MPT_ISSUANCE_ID_MIN}-${MPT_ISSUANCE_ID_MAX} character hex string`);
65
+ }
66
+ if (!isXrplNumber(props.Amount.value)) {
67
+ throw new ValidationError('VaultClawback: Amount.value must be a non-negative base-10 integer string');
68
+ }
69
+ }
70
+ }
71
+ return buildFrozenTx('VaultClawback', props, {
72
+ validate() {
73
+ // Validated at construction.
74
+ },
75
+ toJSON() {
76
+ const json = {};
77
+ for (const k of Object.keys(this)) {
78
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
79
+ continue;
80
+ const v = this[k];
81
+ if (v !== undefined)
82
+ json[k] = v;
83
+ }
84
+ return json;
85
+ },
86
+ with(overrides) {
87
+ return vaultClawback(mergeForWith(this, overrides));
88
+ },
89
+ });
90
+ }
91
+ //# sourceMappingURL=vault-clawback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-clawback.js","sourceRoot":"","sources":["../../../src/fp/factories/vault-clawback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Functional VaultCreate factory — frozen-object style.
3
+ *
4
+ * Creates a single-asset vault on the ledger. The asset can be XRP,
5
+ * a trust line token, or an MPT. Validation happens at construction;
6
+ * there is no way to construct an invalid tx.
7
+ *
8
+ * import { vaultCreate } from 'xrplt/fp';
9
+ * const tx = vaultCreate({ Account, Asset: IOU_ASSET });
10
+ * const j = tx.toJSON();
11
+ * const tx2 = tx.with({ WithdrawalPolicy: 0x0001 });
12
+ *
13
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/vaultcreate
14
+ */
15
+ import type { Currency } from '../../types/amounts.js';
16
+ import type { VaultCreateFlagsInterface } from '../../types/flags.js';
17
+ export interface VaultCreateProps {
18
+ Account: string;
19
+ /** The asset held in the vault: XRP, a trust line token, or an MPT. */
20
+ Asset: Currency;
21
+ /** Optional cap on total assets the vault can hold (base-10 number string). */
22
+ AssetsMaximum?: string | undefined;
23
+ /** Optional vault metadata, hex-encoded, 0 < length ≤ 256 bytes. */
24
+ Data?: string | undefined;
25
+ /** Optional Permissioned Domain ID (64-char hex). Requires tfVaultPrivate. */
26
+ DomainID?: string | undefined;
27
+ /** Optional share-metadata, hex-encoded, 0 < length ≤ 1024 bytes. */
28
+ MPTokenMetadata?: string | undefined;
29
+ /** Required when VaultKind = 1 (closed-ended). */
30
+ RedemptionDate?: number | undefined;
31
+ /** Decimal precision for share conversion. Fixed at 0 for XRP/MPT. */
32
+ Scale?: number | undefined;
33
+ /** Required when VaultKind = 1 (closed-ended). */
34
+ SubscriptionDate?: number | undefined;
35
+ /** 0 = open-ended (default); 1 = closed-ended. */
36
+ VaultKind?: number | undefined;
37
+ /** Withdrawal strategy. Currently only 0x0001 (FCFS) is supported. */
38
+ WithdrawalPolicy?: number | undefined;
39
+ /** Bit-flags for this transaction. */
40
+ Flags?: number | VaultCreateFlagsInterface | undefined;
41
+ Fee?: string | undefined;
42
+ Sequence?: number | undefined;
43
+ }
44
+ export interface VaultCreate extends Readonly<VaultCreateProps> {
45
+ readonly TransactionType: 'VaultCreate';
46
+ validate(): void;
47
+ toJSON(): Record<string, unknown>;
48
+ with(overrides: Partial<VaultCreateProps>): VaultCreate;
49
+ }
50
+ export declare function vaultCreate(props: VaultCreateProps): VaultCreate;
51
+ //# sourceMappingURL=vault-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-create.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/vault-create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AA0BtE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,KAAK,EAAE,QAAQ,CAAC;IAChB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAAC;IACvD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,WACf,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;IACxC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC;CACzD;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAuLhE"}
@@ -0,0 +1,141 @@
1
+ import { isCurrency, isDomainID, isHex, isNumber, isString, } from '../../validation/helpers.js';
2
+ import { ValidationError } from '../../errors.js';
3
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
4
+ // ─── Spec constants ──────────────────────────────────────────────────
5
+ const MAX_DATA_BYTES = 256;
6
+ const MAX_METADATA_BYTES = 1024;
7
+ const MIN_SCALE = 0;
8
+ const MAX_SCALE = 18;
9
+ const VAULT_KIND_OPEN_ENDED = 0;
10
+ const VAULT_KIND_CLOSED_ENDED = 1;
11
+ const WITHDRAWAL_POLICY_FCFS = 0x0001;
12
+ const MIN_CLOSED_ENDED_GAP_SECONDS = 180;
13
+ const MAX_CLOSED_ENDED_GAP_SECONDS = 946708560; // 30 years
14
+ const TF_VAULT_PRIVATE = 0x00010000;
15
+ // ─── Factory ─────────────────────────────────────────────────────────
16
+ export function vaultCreate(props) {
17
+ // ── Account ── required, must be a valid XRPL classic address.
18
+ require(props.Account, 'VaultCreate: Account is required', isString);
19
+ // ── Asset ── required, must be a valid Currency.
20
+ if (!isCurrency(props.Asset)) {
21
+ throw new ValidationError('VaultCreate: Asset must be a valid Currency (XRP, trust line, or MPT form)');
22
+ }
23
+ // ── Data ── hex, even length, ≤ 256 bytes.
24
+ if (props.Data !== undefined) {
25
+ if (!isString(props.Data) || !isHex(props.Data)) {
26
+ throw new ValidationError('VaultCreate: Data must be a hex string');
27
+ }
28
+ if (props.Data.length % 2 !== 0) {
29
+ throw new ValidationError('VaultCreate: Data must be a hex string with an even number of characters');
30
+ }
31
+ const bytes = props.Data.length / 2;
32
+ if (bytes > MAX_DATA_BYTES) {
33
+ throw new ValidationError(`VaultCreate: Data exceeds ${MAX_DATA_BYTES} bytes (actual: ${bytes})`);
34
+ }
35
+ }
36
+ // ── MPTokenMetadata ── hex, non-empty, ≤ 1024 bytes.
37
+ if (props.MPTokenMetadata !== undefined) {
38
+ if (!isString(props.MPTokenMetadata) || !isHex(props.MPTokenMetadata)) {
39
+ throw new ValidationError('VaultCreate: MPTokenMetadata must be a valid non-empty hex string');
40
+ }
41
+ const bytes = props.MPTokenMetadata.length / 2;
42
+ if (bytes > MAX_METADATA_BYTES) {
43
+ throw new ValidationError(`VaultCreate: MPTokenMetadata exceeds ${MAX_METADATA_BYTES} bytes (actual: ${bytes})`);
44
+ }
45
+ }
46
+ // ── WithdrawalPolicy ── currently only 0x0001 supported.
47
+ if (props.WithdrawalPolicy !== undefined) {
48
+ if (!isNumber(props.WithdrawalPolicy) ||
49
+ props.WithdrawalPolicy !== WITHDRAWAL_POLICY_FCFS) {
50
+ throw new ValidationError(`VaultCreate: WithdrawalPolicy must be 0x${WITHDRAWAL_POLICY_FCFS.toString(16).padStart(4, '0')} (vaultStrategyFirstComeFirstServe)`);
51
+ }
52
+ }
53
+ // ── AssetsMaximum ── non-negative base-10 integer string.
54
+ if (props.AssetsMaximum !== undefined) {
55
+ if (!isString(props.AssetsMaximum) ||
56
+ !/^[0-9]+$/u.test(props.AssetsMaximum)) {
57
+ throw new ValidationError('VaultCreate: AssetsMaximum must be a non-negative base-10 integer string');
58
+ }
59
+ }
60
+ // ── VaultKind ── 0 or 1 only.
61
+ if (props.VaultKind !== undefined) {
62
+ if (!isNumber(props.VaultKind) ||
63
+ (props.VaultKind !== VAULT_KIND_OPEN_ENDED &&
64
+ props.VaultKind !== VAULT_KIND_CLOSED_ENDED)) {
65
+ throw new ValidationError(`VaultCreate: VaultKind must be ${VAULT_KIND_OPEN_ENDED} (open-ended) or ${VAULT_KIND_CLOSED_ENDED} (closed-ended)`);
66
+ }
67
+ }
68
+ // ── Scale ── conditional on Asset type + range.
69
+ if (props.Scale !== undefined) {
70
+ if (!isNumber(props.Scale) ||
71
+ props.Scale < MIN_SCALE ||
72
+ props.Scale > MAX_SCALE ||
73
+ !Number.isInteger(props.Scale)) {
74
+ throw new ValidationError(`VaultCreate: Scale must be an integer in [${MIN_SCALE}, ${MAX_SCALE}]`);
75
+ }
76
+ if ('currency' in props.Asset && props.Asset.currency === 'XRP') {
77
+ throw new ValidationError('VaultCreate: Scale parameter must not be provided for XRP or MPT assets');
78
+ }
79
+ else if ('mpt_issuance_id' in props.Asset) {
80
+ throw new ValidationError('VaultCreate: Scale parameter must not be provided for XRP or MPT assets');
81
+ }
82
+ }
83
+ // ── Closed-ended vault date invariants ──
84
+ const hasSub = props.SubscriptionDate !== undefined;
85
+ const hasRed = props.RedemptionDate !== undefined;
86
+ const isClosedEnded = props.VaultKind === VAULT_KIND_CLOSED_ENDED ||
87
+ (props.VaultKind === undefined && (hasSub || hasRed));
88
+ if (props.VaultKind === VAULT_KIND_CLOSED_ENDED) {
89
+ if (!hasSub || !hasRed) {
90
+ throw new ValidationError('VaultCreate: VaultKind=1 (closed-ended) requires both SubscriptionDate and RedemptionDate');
91
+ }
92
+ }
93
+ else if (props.VaultKind === VAULT_KIND_OPEN_ENDED) {
94
+ if (hasSub || hasRed) {
95
+ throw new ValidationError('VaultCreate: VaultKind=0 (open-ended) must not include SubscriptionDate or RedemptionDate');
96
+ }
97
+ }
98
+ if (isClosedEnded && hasSub && hasRed) {
99
+ if (!isNumber(props.SubscriptionDate) ||
100
+ !isNumber(props.RedemptionDate) ||
101
+ props.SubscriptionDate <= 0 ||
102
+ props.RedemptionDate <= 0) {
103
+ throw new ValidationError('VaultCreate: SubscriptionDate and RedemptionDate must be positive integers (seconds since Ripple Epoch)');
104
+ }
105
+ const gap = props.RedemptionDate - props.SubscriptionDate;
106
+ if (gap < MIN_CLOSED_ENDED_GAP_SECONDS ||
107
+ gap >= MAX_CLOSED_ENDED_GAP_SECONDS) {
108
+ throw new ValidationError(`VaultCreate: RedemptionDate - SubscriptionDate must be in [${MIN_CLOSED_ENDED_GAP_SECONDS}, ${MAX_CLOSED_ENDED_GAP_SECONDS}) seconds`);
109
+ }
110
+ }
111
+ // ── DomainID ── 64-char hex AND requires tfVaultPrivate flag.
112
+ if (props.DomainID !== undefined) {
113
+ if (!isDomainID(props.DomainID)) {
114
+ throw new ValidationError('VaultCreate: DomainID must be a 64-character hex string');
115
+ }
116
+ const flags = props.Flags;
117
+ if (!flags || (flags & TF_VAULT_PRIVATE) !== TF_VAULT_PRIVATE) {
118
+ throw new ValidationError('VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set');
119
+ }
120
+ }
121
+ return buildFrozenTx('VaultCreate', props, {
122
+ validate() {
123
+ // Validated at construction.
124
+ },
125
+ toJSON() {
126
+ const json = {};
127
+ for (const k of Object.keys(this)) {
128
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
129
+ continue;
130
+ const v = this[k];
131
+ if (v !== undefined)
132
+ json[k] = v;
133
+ }
134
+ return json;
135
+ },
136
+ with(overrides) {
137
+ return vaultCreate(mergeForWith(this, overrides));
138
+ },
139
+ });
140
+ }
141
+ //# sourceMappingURL=vault-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-create.js","sourceRoot":"","sources":["../../../src/fp/factories/vault-create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface VaultDeleteProps {
2
+ Account: string;
3
+ /** The ID of the vault to delete. 64-char hex; must not be all-zero. */
4
+ VaultID: string;
5
+ /**
6
+ * (LendingProtocolV1_1) Optional hex-encoded reason for the deletion.
7
+ * If present, the decoded value must be 1–256 bytes.
8
+ */
9
+ MemoData?: string | undefined;
10
+ Fee?: string | undefined;
11
+ Sequence?: number | undefined;
12
+ }
13
+ export interface VaultDelete extends Readonly<VaultDeleteProps> {
14
+ readonly TransactionType: 'VaultDelete';
15
+ validate(): void;
16
+ toJSON(): Record<string, unknown>;
17
+ with(overrides: Partial<VaultDeleteProps>): VaultDelete;
18
+ }
19
+ export declare function vaultDelete(props: VaultDeleteProps): VaultDelete;
20
+ //# sourceMappingURL=vault-delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-delete.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/vault-delete.ts"],"names":[],"mappings":"AAmDA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,WACf,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;IACxC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC;CACzD;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAyEhE"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Functional VaultDelete factory — frozen-object style.
3
+ *
4
+ * Deletes an existing vault ledger entry. Validation happens at
5
+ * construction; there is no way to construct an invalid tx.
6
+ *
7
+ * import { vaultDelete } from 'xrplt/fp';
8
+ * const tx = vaultDelete({ Account, VaultID });
9
+ * const j = tx.toJSON();
10
+ *
11
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/vaultdelete
12
+ * @see https://xrpl.org/docs/concepts/tokens/single-asset-vaults
13
+ *
14
+ * Affected amendments:
15
+ * - `SingleAssetVault` — base VaultDelete.
16
+ * - `LendingProtocolV1_1` — introduces the optional `MemoData`
17
+ * field for documenting the deletion reason.
18
+ *
19
+ * ## Divergences
20
+ *
21
+ * The class-based API at `src/transactions/vault-delete.ts` is missing
22
+ * two rules that the canonical sources require. The factory fills them:
23
+ *
24
+ * 1. Empty `MemoData` is rejected.
25
+ * The class treats `""` as a valid `MemoData` because `"" !== undefined`
26
+ * and `""` is a valid (empty) hex string. The spec mandates that when
27
+ * present the decoded value must be 1–256 bytes.
28
+ * Source: XLS-0065 §3.4.2.1 #3 (LendingProtocolV1_1, `temMALFORMED`);
29
+ * xrpl-dev-portal `vaultdelete.md` (Error Cases table).
30
+ *
31
+ * 2. All-zero `VaultID` is rejected.
32
+ * The class only checks that `VaultID` is a 64-char hex string, so a
33
+ * 64-char string of zeros (`'00…00'`) passes. The spec mandates that
34
+ * `VaultID == 0` is malformed.
35
+ * Source: XLS-0065 §3.4.2.1 #1 (`temMALFORMED`);
36
+ * xrpl-dev-portal `vaultdelete.md` (Error Cases table);
37
+ * XLS-0065 §3.4.1 (`HASH256` internal type).
38
+ */
39
+ import { isHex, isString } from '../../validation/helpers.js';
40
+ import { ValidationError } from '../../errors.js';
41
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
42
+ // ─── Spec constants ──────────────────────────────────────────────────
43
+ // Maximum decoded MemoData length in bytes (hex is 2 chars per byte).
44
+ const MAX_MEMO_DATA_BYTES = 256;
45
+ // HASH256 serialized length in hex characters.
46
+ const VAULT_ID_LENGTH = 64;
47
+ // ─── Factory ─────────────────────────────────────────────────────────
48
+ export function vaultDelete(props) {
49
+ // ── Account ── required, must be a valid XRPL classic or X-address.
50
+ require(props.Account, 'VaultDelete: Account is required', isString);
51
+ // ── VaultID ── required, 64-char hex, and not all-zero.
52
+ if (!isString(props.VaultID) ||
53
+ !isHex(props.VaultID) ||
54
+ props.VaultID.length !== VAULT_ID_LENGTH) {
55
+ throw new ValidationError('VaultDelete: VaultID must be a 64-character hex string');
56
+ }
57
+ // All-zero VaultID is a separate malformation per XLS-0065 §3.4.2.1 #1.
58
+ if (/^0+$/u.test(props.VaultID)) {
59
+ throw new ValidationError('VaultDelete: VaultID must not be zero');
60
+ }
61
+ // ── MemoData ── hex, non-empty (≥ 1 byte), even-length, ≤ 256 bytes.
62
+ if (props.MemoData !== undefined) {
63
+ if (!isString(props.MemoData)) {
64
+ throw new ValidationError('VaultDelete: MemoData must be a hex string');
65
+ }
66
+ // Empty MemoData is rejected per spec — the decoded value must be
67
+ // 1–256 bytes when present. Check this before the hex regex so the
68
+ // error message is specific to the empty case.
69
+ if (props.MemoData.length === 0) {
70
+ throw new ValidationError('VaultDelete: MemoData must not be empty (decoded value must be 1–256 bytes)');
71
+ }
72
+ if (!isHex(props.MemoData)) {
73
+ throw new ValidationError('VaultDelete: MemoData must be a hex string');
74
+ }
75
+ if (props.MemoData.length % 2 !== 0) {
76
+ throw new ValidationError('VaultDelete: MemoData must be a hex string with an even number of characters');
77
+ }
78
+ const bytes = props.MemoData.length / 2;
79
+ if (bytes > MAX_MEMO_DATA_BYTES) {
80
+ throw new ValidationError(`VaultDelete: MemoData exceeds ${MAX_MEMO_DATA_BYTES} bytes (actual: ${bytes})`);
81
+ }
82
+ }
83
+ return buildFrozenTx('VaultDelete', props, {
84
+ validate() {
85
+ // Validated at construction.
86
+ },
87
+ toJSON() {
88
+ const json = {};
89
+ for (const k of Object.keys(this)) {
90
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
91
+ continue;
92
+ const v = this[k];
93
+ if (v !== undefined)
94
+ json[k] = v;
95
+ }
96
+ return json;
97
+ },
98
+ with(overrides) {
99
+ return vaultDelete(mergeForWith(this, overrides));
100
+ },
101
+ });
102
+ }
103
+ //# sourceMappingURL=vault-delete.js.map