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,70 @@
1
+ /**
2
+ * Functional LoanPay factory — frozen-object style.
3
+ *
4
+ * The Borrower submits a `LoanPay` to make a payment on a Loan. Validation
5
+ * happens at construction; there is no way to construct an invalid tx.
6
+ *
7
+ * import { loanPay } from 'xrplt/fp';
8
+ * const tx = loanPay({ Account, LoanID, Amount: '1000000' });
9
+ * const j = tx.toJSON();
10
+ * const tx2 = tx.with({ Flags: 0x00010000 });
11
+ *
12
+ * Three mutually-exclusive payment-type flags (at most one per tx):
13
+ * - `tfLoanOverpayment` (0x00010000) — excess payment treated as overpayment
14
+ * - `tfLoanFullPayment` (0x00020000) — early full repayment
15
+ * - `tfLoanLatePayment` (0x00040000) — late loan payment
16
+ *
17
+ * Affected amendments:
18
+ * - `LendingProtocol` (base LoanPay)
19
+ * - `LendingProtocolV1_1` (LendingProtocolV1_1-specific changes;
20
+ * per XLS-66.2 §3.2, the late-payment boundary check uses an
21
+ * exclusive `currentTime > NextPaymentDueDate` comparison —
22
+ * not locally checkable here.)
23
+ *
24
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/loanpay
25
+ * @see https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0066-lending-protocol
26
+ *
27
+ * ## Divergences
28
+ * The factory enforces three preclaim checks that the class API
29
+ * (`src/transactions/loan-pay.ts`) skips:
30
+ *
31
+ * 1. `LoanID` must not be the all-zeros HASH256 value.
32
+ * Source: XLS-66 §3.11.4.1 check 1 — "`LoanID` is zero (`temINVALID`)".
33
+ * xrpl.js `validateLoanPay` only checks `isLedgerEntryId(tx.LoanID)`,
34
+ * which is satisfied by the all-zeros string.
35
+ *
36
+ * 2. `Amount` must be strictly positive (non-zero, non-negative) in
37
+ * all three forms (XRP drops string, `IssuedCurrencyAmount.value`,
38
+ * `MPTAmount.value`).
39
+ * Source: XLS-66 §3.11.4.1 check 2 — "`Amount <= 0` (`temBAD_AMOUNT`)".
40
+ * xrpl.js `isAmount` accepts any numeric string and does not check
41
+ * the sign of the `value` sub-field of object amounts.
42
+ *
43
+ * 3. Payment-type flag exclusivity is also enforced when `Flags` is
44
+ * provided as an object (`LoanPayFlagsInterface`).
45
+ * Source: xrpl.js `validateLoanPay` (object branch).
46
+ * The class API only checks numeric `Flags` and silently accepts
47
+ * `{ tfLoanOverpayment: true, tfLoanFullPayment: true }`.
48
+ */
49
+ import type { Amount, MPTAmount } from '../../types/amounts.js';
50
+ import type { LoanPayFlagsInterface } from '../../types/flags.js';
51
+ export interface LoanPayProps {
52
+ /** The unique address of the transaction sender (the Borrower). */
53
+ Account: string;
54
+ /** The ID of the `Loan` ledger entry to repay. 64-char hex. */
55
+ LoanID: string;
56
+ /** Amount of funds to pay (XRP / trust line / MPT). */
57
+ Amount: Amount | MPTAmount;
58
+ /** Bit-flags for this transaction. Numeric or boolean map. */
59
+ Flags?: number | LoanPayFlagsInterface | undefined;
60
+ Fee?: string | undefined;
61
+ Sequence?: number | undefined;
62
+ }
63
+ export interface LoanPay extends Readonly<LoanPayProps> {
64
+ readonly TransactionType: 'LoanPay';
65
+ validate(): void;
66
+ toJSON(): Record<string, unknown>;
67
+ with(overrides: Partial<LoanPayProps>): LoanPay;
68
+ }
69
+ export declare function loanPay(props: LoanPayProps): LoanPay;
70
+ //# sourceMappingURL=loan-pay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loan-pay.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/loan-pay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAyBlE,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACnD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ,CAAC,YAAY,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;CACjD;AAoCD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAsFpD"}
@@ -0,0 +1,115 @@
1
+ import { isAccount, isAmount, isFlagEnabled, isHex, isString, } from '../../validation/helpers.js';
2
+ import { ValidationError } from '../../errors.js';
3
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
4
+ // ─── Spec constants ──────────────────────────────────────────────────
5
+ const TF_LOAN_OVERPAYMENT = 0x00010000;
6
+ const TF_LOAN_FULL_PAYMENT = 0x00020000;
7
+ const TF_LOAN_LATE_PAYMENT = 0x00040000;
8
+ // LoanID is a HASH256 = 32 bytes = 64 hex chars.
9
+ const LOAN_ID_LENGTH = 64;
10
+ // All-zeros HASH256 is reserved / malformed per spec.
11
+ const LOAN_ID_ZERO = '0000000000000000000000000000000000000000000000000000000000000000';
12
+ // ─── Helpers ─────────────────────────────────────────────────────────
13
+ /**
14
+ * Per XLS-66 §3.11.4.1 check 2: "`Amount <= 0` (`temBAD_AMOUNT`)".
15
+ * Validates the sign of an Amount in all three accepted forms.
16
+ *
17
+ * - XRP form: a decimal-string of drops (e.g. "1000000").
18
+ * - IssuedCurrency form: object with a `value` sub-string.
19
+ * - MPT form: object with a `value` sub-string.
20
+ *
21
+ * Accepts the canonical scientific mantissa form (`1.5e3`) so this
22
+ * stays compatible with the XRPL serialization layer. Negative or
23
+ * zero mantissas are rejected.
24
+ */
25
+ function isPositiveAmount(amount) {
26
+ // XRP drops — a decimal or scientific-mantissa string.
27
+ if (typeof amount === 'string') {
28
+ if (!/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/u.test(amount)) {
29
+ return false;
30
+ }
31
+ return parseFloat(amount) > 0;
32
+ }
33
+ // Object form (IssuedCurrency or MPT).
34
+ if (typeof amount !== 'object' || amount === null)
35
+ return false;
36
+ const value = amount.value;
37
+ if (typeof value !== 'string')
38
+ return false;
39
+ if (!/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/u.test(value)) {
40
+ return false;
41
+ }
42
+ return parseFloat(value) > 0;
43
+ }
44
+ // ─── Factory ─────────────────────────────────────────────────────────
45
+ export function loanPay(props) {
46
+ // ── Account ── required, must be a valid XRPL classic address.
47
+ require(props.Account, 'LoanPay: Account is required', isAccount);
48
+ // ── LoanID ── required, 64-char hex AND non-zero.
49
+ if (!isString(props.LoanID) ||
50
+ !isHex(props.LoanID) ||
51
+ props.LoanID.length !== LOAN_ID_LENGTH) {
52
+ throw new ValidationError('LoanPay: LoanID must be a 64-character hex string');
53
+ }
54
+ if (props.LoanID === LOAN_ID_ZERO) {
55
+ throw new ValidationError('LoanPay: LoanID must not be the all-zeros HASH256 value');
56
+ }
57
+ // ── Amount ── required, must be a valid Amount AND strictly positive.
58
+ if (!isAmount(props.Amount)) {
59
+ throw new ValidationError('LoanPay: Amount must be a valid Amount (XRP / trust line / MPT form)');
60
+ }
61
+ if (!isPositiveAmount(props.Amount)) {
62
+ throw new ValidationError('LoanPay: Amount must be strictly positive (non-zero, non-negative)');
63
+ }
64
+ // ── Flags ── at most one of the 3 payment-type flags.
65
+ if (props.Flags !== undefined) {
66
+ if (typeof props.Flags === 'number') {
67
+ const set = [];
68
+ if (isFlagEnabled(props.Flags, TF_LOAN_OVERPAYMENT))
69
+ set.push('tfLoanOverpayment');
70
+ if (isFlagEnabled(props.Flags, TF_LOAN_FULL_PAYMENT))
71
+ set.push('tfLoanFullPayment');
72
+ if (isFlagEnabled(props.Flags, TF_LOAN_LATE_PAYMENT))
73
+ set.push('tfLoanLatePayment');
74
+ if (set.length > 1) {
75
+ throw new ValidationError(`LoanPay: Only one of tfLoanLatePayment, tfLoanFullPayment, or tfLoanOverpayment flags can be set (got: ${set.join(', ')})`);
76
+ }
77
+ }
78
+ else if (typeof props.Flags === 'object' && props.Flags !== null) {
79
+ const f = props.Flags;
80
+ const set = [];
81
+ if (f.tfLoanOverpayment === true)
82
+ set.push('tfLoanOverpayment');
83
+ if (f.tfLoanFullPayment === true)
84
+ set.push('tfLoanFullPayment');
85
+ if (f.tfLoanLatePayment === true)
86
+ set.push('tfLoanLatePayment');
87
+ if (set.length > 1) {
88
+ throw new ValidationError(`LoanPay: Only one of tfLoanLatePayment, tfLoanFullPayment, or tfLoanOverpayment flags can be set (got: ${set.join(', ')})`);
89
+ }
90
+ }
91
+ else {
92
+ throw new ValidationError('LoanPay: Flags must be a number or LoanPayFlagsInterface object');
93
+ }
94
+ }
95
+ return buildFrozenTx('LoanPay', props, {
96
+ validate() {
97
+ // Validated at construction.
98
+ },
99
+ toJSON() {
100
+ const json = {};
101
+ for (const k of Object.keys(this)) {
102
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
103
+ continue;
104
+ const v = this[k];
105
+ if (v !== undefined)
106
+ json[k] = v;
107
+ }
108
+ return json;
109
+ },
110
+ with(overrides) {
111
+ return loanPay(mergeForWith(this, overrides));
112
+ },
113
+ });
114
+ }
115
+ //# sourceMappingURL=loan-pay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loan-pay.js","sourceRoot":"","sources":["../../../src/fp/factories/loan-pay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Functional LoanSet factory — frozen-object style.
3
+ *
4
+ * Creates a new Loan ledger entry between a Loan Broker and a Borrower.
5
+ * The class-based equivalent requires a separate `.validate()` call
6
+ * after construction; this factory validates at construction so an
7
+ * invalid tx can never exist.
8
+ *
9
+ * import { loanSet } from 'xrplt/fp';
10
+ * const tx = loanSet({ Account, LoanBrokerID, PrincipalRequested });
11
+ * const j = tx.toJSON();
12
+ * const tx2 = tx.with({ InterestRate: 250 });
13
+ *
14
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/loanset
15
+ */
16
+ import type { CounterpartySignature } from '../../types/common.js';
17
+ import type { LoanSetFlagsInterface } from '../../types/flags.js';
18
+ export interface LoanSetProps {
19
+ /** The unique address of the transaction sender. */
20
+ Account: string;
21
+ /** The ID of the `LoanBroker` ledger entry. 64-char hex. */
22
+ LoanBrokerID: string;
23
+ /** Principal loan amount requested by the Borrower (XRPLNumber). */
24
+ PrincipalRequested: string;
25
+ /** Counterparty of the loan (the Borrower when sender is Loan Broker). */
26
+ Counterparty?: string | undefined;
27
+ /** Counterparty's signature (added by the second signer). */
28
+ CounterpartySignature?: CounterpartySignature | undefined;
29
+ /** Arbitrary metadata in hex format, 1–512 characters. */
30
+ Data?: string | undefined;
31
+ /** Nominal fee paid to LoanBroker.Owner at loan creation (XRPLNumber). */
32
+ LoanOriginationFee?: string | undefined;
33
+ /** Nominal fee paid with every loan payment (XRPLNumber). */
34
+ LoanServiceFee?: string | undefined;
35
+ /** Nominal fee for late payments (XRPLNumber). */
36
+ LatePaymentFee?: string | undefined;
37
+ /** Nominal fee for early full repayment (XRPLNumber). */
38
+ ClosePaymentFee?: string | undefined;
39
+ /** Overpayment fee in 1/10 bp units, 0–100000 (0%–100%). */
40
+ OverpaymentFee?: number | undefined;
41
+ /** Annualized interest rate in 1/10 bp units, 0–100000 (0%–100%). */
42
+ InterestRate?: number | undefined;
43
+ /** Premium for late payments, 1/10 bp units, 0–100000. */
44
+ LateInterestRate?: number | undefined;
45
+ /** Early-repayment fee rate, 1/10 bp units, 0–100000. */
46
+ CloseInterestRate?: number | undefined;
47
+ /** Interest rate on overpayments, 1/10 bp units, 0–100000. */
48
+ OverpaymentInterestRate?: number | undefined;
49
+ /** Total number of payments to be made against the loan. */
50
+ PaymentTotal?: number | undefined;
51
+ /** Number of seconds between loan payments (≥ 60). */
52
+ PaymentInterval?: number | undefined;
53
+ /** Seconds after payment due date when loan can be defaulted (≤ PaymentInterval). */
54
+ GracePeriod?: number | undefined;
55
+ /** Bit-flags for this transaction. */
56
+ Flags?: number | LoanSetFlagsInterface | undefined;
57
+ Fee?: string | undefined;
58
+ Sequence?: number | undefined;
59
+ }
60
+ export interface LoanSet extends Readonly<LoanSetProps> {
61
+ readonly TransactionType: 'LoanSet';
62
+ validate(): void;
63
+ toJSON(): Record<string, unknown>;
64
+ with(overrides: Partial<LoanSetProps>): LoanSet;
65
+ }
66
+ export declare function loanSet(props: LoanSetProps): LoanSet;
67
+ //# sourceMappingURL=loan-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loan-set.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/loan-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAuBlE,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC1D,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,8DAA8D;IAC9D,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACnD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ,CAAC,YAAY,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;CACjD;AAmBD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAsHpD"}
@@ -0,0 +1,102 @@
1
+ import { isAccount, 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
+ // All fees/rates are in units of 1/10 basis point (0–100000 = 0%–100%).
6
+ const MAX_RATE_1_10BP = 100_000;
7
+ // Minimum allowed PaymentInterval (seconds) — spec requires >= 60s.
8
+ const MIN_PAYMENT_INTERVAL_SECONDS = 60;
9
+ // Maximum Data field length in **characters** (hex-encoded).
10
+ const MAX_DATA_LENGTH_CHARS = 512;
11
+ // LoanBrokerID is a 64-char hex ledger entry ID.
12
+ const LOAN_BROKER_ID_LENGTH = 64;
13
+ // ─── Helpers ─────────────────────────────────────────────────────────
14
+ /**
15
+ * Rate/fee values must be integers within the 1/10 bp range.
16
+ * Shared by all 5 rate fields (OverpaymentFee, InterestRate, etc.).
17
+ */
18
+ function rateOutOfRange(value) {
19
+ return (!isNumber(value) ||
20
+ !Number.isInteger(value) ||
21
+ value < 0 ||
22
+ value > MAX_RATE_1_10BP);
23
+ }
24
+ // ─── Factory ─────────────────────────────────────────────────────────
25
+ export function loanSet(props) {
26
+ // ── Account ── required, must be a valid XRPL classic address.
27
+ require(props.Account, 'LoanSet: Account is required', isAccount);
28
+ // ── LoanBrokerID ── required, 64-char hex.
29
+ if (!isString(props.LoanBrokerID) ||
30
+ !isHex(props.LoanBrokerID) ||
31
+ props.LoanBrokerID.length !== LOAN_BROKER_ID_LENGTH) {
32
+ throw new ValidationError('LoanSet: LoanBrokerID must be a 64-character hex string');
33
+ }
34
+ // ── PrincipalRequested ── required, non-negative base-10 integer string.
35
+ if (!isString(props.PrincipalRequested) ||
36
+ !/^[0-9]+$/u.test(props.PrincipalRequested)) {
37
+ throw new ValidationError('LoanSet: PrincipalRequested must be a non-negative base-10 integer string');
38
+ }
39
+ // ── Counterparty ── valid XRPL account if present.
40
+ if (props.Counterparty !== undefined && !isAccount(props.Counterparty)) {
41
+ throw new ValidationError('LoanSet: Counterparty must be a valid XRPL account address');
42
+ }
43
+ // ── Data ── hex, 1–512 characters.
44
+ if (props.Data !== undefined) {
45
+ if (!isString(props.Data) || !isHex(props.Data)) {
46
+ throw new ValidationError('LoanSet: Data must be a valid non-empty hex string');
47
+ }
48
+ if (props.Data.length === 0 || props.Data.length > MAX_DATA_LENGTH_CHARS) {
49
+ throw new ValidationError(`LoanSet: Data must be 1 to ${MAX_DATA_LENGTH_CHARS} hex characters (actual: ${props.Data.length})`);
50
+ }
51
+ }
52
+ // ── Rate / fee ranges (all 1/10 bp units, 0–100000).
53
+ if (props.OverpaymentFee !== undefined && rateOutOfRange(props.OverpaymentFee)) {
54
+ throw new ValidationError(`LoanSet: OverpaymentFee must be between 0 and ${MAX_RATE_1_10BP} inclusive`);
55
+ }
56
+ if (props.InterestRate !== undefined && rateOutOfRange(props.InterestRate)) {
57
+ throw new ValidationError(`LoanSet: InterestRate must be between 0 and ${MAX_RATE_1_10BP} inclusive`);
58
+ }
59
+ if (props.LateInterestRate !== undefined && rateOutOfRange(props.LateInterestRate)) {
60
+ throw new ValidationError(`LoanSet: LateInterestRate must be between 0 and ${MAX_RATE_1_10BP} inclusive`);
61
+ }
62
+ if (props.CloseInterestRate !== undefined && rateOutOfRange(props.CloseInterestRate)) {
63
+ throw new ValidationError(`LoanSet: CloseInterestRate must be between 0 and ${MAX_RATE_1_10BP} inclusive`);
64
+ }
65
+ if (props.OverpaymentInterestRate !== undefined && rateOutOfRange(props.OverpaymentInterestRate)) {
66
+ throw new ValidationError(`LoanSet: OverpaymentInterestRate must be between 0 and ${MAX_RATE_1_10BP} inclusive`);
67
+ }
68
+ // ── PaymentInterval ── ≥ 60 seconds.
69
+ if (props.PaymentInterval !== undefined) {
70
+ if (!isNumber(props.PaymentInterval) ||
71
+ !Number.isInteger(props.PaymentInterval) ||
72
+ props.PaymentInterval < MIN_PAYMENT_INTERVAL_SECONDS) {
73
+ throw new ValidationError(`LoanSet: PaymentInterval must be an integer ≥ ${MIN_PAYMENT_INTERVAL_SECONDS} seconds`);
74
+ }
75
+ // GracePeriod ≤ PaymentInterval when both present.
76
+ if (props.GracePeriod !== undefined &&
77
+ isNumber(props.GracePeriod) &&
78
+ props.GracePeriod > props.PaymentInterval) {
79
+ throw new ValidationError('LoanSet: GracePeriod must not be greater than PaymentInterval');
80
+ }
81
+ }
82
+ return buildFrozenTx('LoanSet', props, {
83
+ validate() {
84
+ // Validated at construction.
85
+ },
86
+ toJSON() {
87
+ const json = {};
88
+ for (const k of Object.keys(this)) {
89
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
90
+ continue;
91
+ const v = this[k];
92
+ if (v !== undefined)
93
+ json[k] = v;
94
+ }
95
+ return json;
96
+ },
97
+ with(overrides) {
98
+ return loanSet(mergeForWith(this, overrides));
99
+ },
100
+ });
101
+ }
102
+ //# sourceMappingURL=loan-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loan-set.js","sourceRoot":"","sources":["../../../src/fp/factories/loan-set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Functional MPTokenAuthorize factory — frozen-object style.
3
+ *
4
+ * Authorize or deauthorize an account to hold a Multi-Purpose Token (MPT),
5
+ * or for an issuer running allow-listing, authorize/deauthorize a holder.
6
+ * Validation happens at construction; there is no way to construct an
7
+ * invalid tx.
8
+ *
9
+ * import { mptokenAuthorize } from 'xrplt/fp';
10
+ * const tx = mptokenAuthorize({
11
+ * Account: HOLDER,
12
+ * MPTokenIssuanceID: '000004C463C52827307480341125DA0577DEFC38405B0E3E',
13
+ * });
14
+ * const j = tx.toJSON();
15
+ * const tx2 = tx.with({ Flags: 0x00000001 }); // tfMPTUnauthorize
16
+ *
17
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/mptokenauthorize
18
+ *
19
+ * ## Divergences
20
+ *
21
+ * The class-based API at `src/transactions/mptoken-authorize.ts` (and
22
+ * xrpl.js's `validateMPTokenAuthorize`) is missing two rules that the
23
+ * canonical sources require. The factory fills them:
24
+ *
25
+ * 1. `MPTokenIssuanceID` must be a 48-character uppercase-or-lowercase
26
+ * hex string and must not be all-zero.
27
+ * The class only checks that the field is a string (`isString`), so
28
+ * a wrong-length string, a non-hex string, or all-zero (`'00…00'`,
29
+ * 48 chars) all pass. The spec declares the field a `UInt192` —
30
+ * exactly 24 bytes — and a value of zero is malformed.
31
+ * Source: XLS-0033 §3.5.1 (`UInt192` internal type);
32
+ * xrpl-dev-portal `mptokenauthorize.md` (Field table:
33
+ * `MPTokenIssuanceID | String | UInt192 | Yes`).
34
+ *
35
+ * 2. `Holder` must not equal `Account`.
36
+ * The class only checks that `Holder`, when present, is a valid XRPL
37
+ * address. The spec requires `Holder` to be omitted when the
38
+ * transaction is submitted by the holder — i.e. `Holder == Account`
39
+ * is malformed.
40
+ * Source: XLS-0033 §3.5.1 ("Specifies the holder's address that the
41
+ * issuer wants to authorize. Only used for authorization
42
+ * /allow-listing; should not be present if submitted by the
43
+ * holder.");
44
+ * xrpl-dev-portal `mptokenauthorize.md` (Field table, Holder
45
+ * description: "must be omitted if submitted by the holder").
46
+ */
47
+ import type { MPTokenAuthorizeFlagsInterface } from '../../types/flags.js';
48
+ export interface MptokenAuthorizeProps {
49
+ /** The transaction sender. May be a holder (opt-in) or an issuer (allow-listing). */
50
+ Account: string;
51
+ /** The ID of the MPT issuance, encoded as a 48-character hex `UInt192`. */
52
+ MPTokenIssuanceID: string;
53
+ /**
54
+ * Optional holder address. Only valid when the transaction is submitted
55
+ * by an issuer for allow-listing. Must be omitted when `Account` is
56
+ * itself the holder.
57
+ */
58
+ Holder?: string | undefined;
59
+ /** Bit-flags for this transaction. Currently only `tfMPTUnauthorize` (0x1) is defined. */
60
+ Flags?: number | MPTokenAuthorizeFlagsInterface | undefined;
61
+ Fee?: string | undefined;
62
+ Sequence?: number | undefined;
63
+ }
64
+ export interface MptokenAuthorize extends Readonly<MptokenAuthorizeProps> {
65
+ readonly TransactionType: 'MPTokenAuthorize';
66
+ /** No-op: validation already happened at construction. */
67
+ validate(): void;
68
+ /** Serialize to a plain object matching `xrpl.js` input shape. */
69
+ toJSON(): Record<string, unknown>;
70
+ /** Derive a new MptokenAuthorize with overrides applied; re-validates. */
71
+ with(overrides: Partial<MptokenAuthorizeProps>): MptokenAuthorize;
72
+ }
73
+ /**
74
+ * Build a frozen MPTokenAuthorize. Throws ValidationError on
75
+ * construction if fields are missing or malformed.
76
+ *
77
+ * The class-based version validates lazily (caller must invoke
78
+ * `.validate()`); this functional version validates at construction.
79
+ * There is no way to build an invalid tx — `with()` re-runs the factory,
80
+ * so overrides are re-validated too.
81
+ */
82
+ export declare function mptokenAuthorize(props: MptokenAuthorizeProps): MptokenAuthorize;
83
+ //# sourceMappingURL=mptoken-authorize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mptoken-authorize.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/mptoken-authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAY3E,MAAM,WAAW,qBAAqB;IACpC,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,GAAG,8BAA8B,GAAG,SAAS,CAAC;IAC5D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,gBACf,SAAQ,QAAQ,CAAC,qBAAqB,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,0DAA0D;IAC1D,QAAQ,IAAI,IAAI,CAAC;IACjB,kEAAkE;IAClE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,0EAA0E;IAC1E,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,gBAAgB,CAAC;CACnE;AAID;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,gBAAgB,CAiElB"}
@@ -0,0 +1,63 @@
1
+ import { isAccount, isHex, isString } from '../../validation/helpers.js';
2
+ import { ValidationError } from '../../errors.js';
3
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
4
+ // ─── Spec constants ──────────────────────────────────────────────────
5
+ // `UInt192` internal type: 24 bytes = 48 hex characters.
6
+ const MP_TOKEN_ISSUANCE_ID_LENGTH = 48;
7
+ // ─── Factory ─────────────────────────────────────────────────────────
8
+ /**
9
+ * Build a frozen MPTokenAuthorize. Throws ValidationError on
10
+ * construction if fields are missing or malformed.
11
+ *
12
+ * The class-based version validates lazily (caller must invoke
13
+ * `.validate()`); this functional version validates at construction.
14
+ * There is no way to build an invalid tx — `with()` re-runs the factory,
15
+ * so overrides are re-validated too.
16
+ */
17
+ export function mptokenAuthorize(props) {
18
+ // ─── Account ─── required, must be a valid XRPL classic address.
19
+ require(props.Account, 'MPTokenAuthorize: Account is required', isAccount);
20
+ // ─── MPTokenIssuanceID ─── required, 48-char hex, non-zero.
21
+ if (!isString(props.MPTokenIssuanceID) ||
22
+ !isHex(props.MPTokenIssuanceID) ||
23
+ props.MPTokenIssuanceID.length !== MP_TOKEN_ISSUANCE_ID_LENGTH) {
24
+ throw new ValidationError(`MPTokenAuthorize: MPTokenIssuanceID must be a ${MP_TOKEN_ISSUANCE_ID_LENGTH}-character hex string`);
25
+ }
26
+ // All-zero `UInt192` is malformed per the spec.
27
+ if (/^0+$/u.test(props.MPTokenIssuanceID)) {
28
+ throw new ValidationError('MPTokenAuthorize: MPTokenIssuanceID must not be zero');
29
+ }
30
+ // ─── Holder ─── optional, but if present must be a valid XRPL
31
+ // address AND must differ from `Account`. The latter rule is the
32
+ // spec mandate "must be omitted if submitted by the holder" — a
33
+ // holder submitting this transaction is opting in (or out) for
34
+ // themselves; specifying themselves as `Holder` is malformed.
35
+ if (props.Holder !== undefined) {
36
+ if (!isAccount(props.Holder)) {
37
+ throw new ValidationError('MPTokenAuthorize: invalid Holder');
38
+ }
39
+ if (props.Holder === props.Account) {
40
+ throw new ValidationError('MPTokenAuthorize: Holder must be omitted when Account is itself the holder');
41
+ }
42
+ }
43
+ return buildFrozenTx('MPTokenAuthorize', props, {
44
+ validate() {
45
+ // Construction-time validation is the contract.
46
+ },
47
+ toJSON() {
48
+ const json = {};
49
+ for (const k of Object.keys(this)) {
50
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
51
+ continue;
52
+ const v = this[k];
53
+ if (v !== undefined)
54
+ json[k] = v;
55
+ }
56
+ return json;
57
+ },
58
+ with(overrides) {
59
+ return mptokenAuthorize(mergeForWith(this, overrides));
60
+ },
61
+ });
62
+ }
63
+ //# sourceMappingURL=mptoken-authorize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mptoken-authorize.js","sourceRoot":"","sources":["../../../src/fp/factories/mptoken-authorize.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEnE,wEAAwE;AAExE,yDAAyD;AACzD,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAgCvC,wEAAwE;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA4B;IAE5B,kEAAkE;IAClE,OAAO,CACL,KAAK,CAAC,OAAO,EACb,uCAAuC,EACvC,SAAS,CACV,CAAC;IAEF,6DAA6D;IAC7D,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAClC,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC/B,KAAK,CAAC,iBAAiB,CAAC,MAAM,KAAK,2BAA2B,EAC9D,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,iDAAiD,2BAA2B,uBAAuB,CACpG,CAAC;IACJ,CAAC;IACD,gDAAgD;IAChD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CACvB,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,iEAAiE;IACjE,gEAAgE;IAChE,+DAA+D;IAC/D,8DAA8D;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,eAAe,CACvB,4EAA4E,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAClB,kBAAkB,EAClB,KAAK,EACL;QACE,QAAQ;YACN,gDAAgD;QAClD,CAAC;QACD,MAAM;YACJ,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;oBAAE,SAAS;gBACjE,MAAM,CAAC,GAAI,IAA2C,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAEF,SAAyC;YAEzC,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACzD,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Functional MPTokenIssuanceCreate factory — frozen-object style.
3
+ *
4
+ * Creates a new Multi-Purpose Token (MPT) issuance on the ledger.
5
+ * Validation happens at construction; there is no way to construct an
6
+ * invalid tx.
7
+ *
8
+ * import { mptokenIssuanceCreate } from 'xrplt/fp';
9
+ * const tx = mptokenIssuanceCreate({ Account, AssetScale: 2, MaximumAmount: '1000000' });
10
+ * const j = tx.toJSON();
11
+ * const tx2 = tx.with({ TransferFee: 100 });
12
+ *
13
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/mptokenissuancecreate
14
+ */
15
+ import type { MPTokenIssuanceCreateFlagsInterface } from '../../types/flags.js';
16
+ export interface MptokenIssuanceCreateProps {
17
+ /** The unique address of the transaction sender (the MPT issuer). */
18
+ Account: string;
19
+ /** Decimal precision for the MPT (0–15). Determines share conversion scale. */
20
+ AssetScale?: number | undefined;
21
+ /**
22
+ * Ledger entry ID of a permissioned domain restricting access. Requires
23
+ * `tfMPTRequireAuth` to be set. Requires both `PermissionedDomains`
24
+ * and `SingleAssetVault` amendments enabled on the ledger.
25
+ */
26
+ DomainID?: string | undefined;
27
+ /**
28
+ * Secondary-sale transfer fee in basis points (0–50,000). Non-zero
29
+ * values require the `tfMPTCanTransfer` flag.
30
+ */
31
+ TransferFee?: number | undefined;
32
+ /**
33
+ * Maximum amount of this MPT that can ever be issued, encoded as a
34
+ * base-10 number string. Current spec allows up to 2^63-1.
35
+ */
36
+ MaximumAmount?: string | undefined;
37
+ /**
38
+ * Arbitrary metadata about this issuance. Hex-encoded; 0 < length <= 1024
39
+ * bytes after decoding.
40
+ */
41
+ MPTokenMetadata?: string | undefined;
42
+ /**
43
+ * Bitmask of flags declaring which fields and capability flags are
44
+ * immutable from issuance onward. Requires the `DynamicMPT` amendment.
45
+ */
46
+ ImmutableFlags?: number | undefined;
47
+ /** Bit-flags for this transaction. */
48
+ Flags?: number | MPTokenIssuanceCreateFlagsInterface | undefined;
49
+ Fee?: string | undefined;
50
+ Sequence?: number | undefined;
51
+ }
52
+ export interface MptokenIssuanceCreate extends Readonly<MptokenIssuanceCreateProps> {
53
+ readonly TransactionType: 'MPTokenIssuanceCreate';
54
+ /** No-op: validation already happened at construction. */
55
+ validate(): void;
56
+ /** Serialize to a plain object matching `xrpl.js` input shape. */
57
+ toJSON(): Record<string, unknown>;
58
+ /** Derive a new MptokenIssuanceCreate with overrides applied; re-validates. */
59
+ with(overrides: Partial<MptokenIssuanceCreateProps>): MptokenIssuanceCreate;
60
+ }
61
+ /**
62
+ * Build a frozen MPTokenIssuanceCreate. Throws ValidationError on
63
+ * construction if fields are missing or malformed.
64
+ *
65
+ * The class-based version validates lazily (caller must invoke
66
+ * `.validate()`); this functional version validates at construction.
67
+ * There is no way to build an invalid tx — `with()` re-runs the factory,
68
+ * so overrides are re-validated too.
69
+ */
70
+ export declare function mptokenIssuanceCreate(props: MptokenIssuanceCreateProps): MptokenIssuanceCreate;
71
+ //# sourceMappingURL=mptoken-issuance-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mptoken-issuance-create.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/mptoken-issuance-create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AAkChF,MAAM,WAAW,0BAA0B;IACzC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,mCAAmC,GAAG,SAAS,CAAC;IACjE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,qBACf,SAAQ,QAAQ,CAAC,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAClD,0DAA0D;IAC1D,QAAQ,IAAI,IAAI,CAAC;IACjB,kEAAkE;IAClE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,+EAA+E;IAC/E,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,qBAAqB,CAAC;CAC7E;AAID;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,qBAAqB,CA6IvB"}