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,204 @@
1
+ /**
2
+ * Functional CredentialCreate factory — frozen-object style.
3
+ *
4
+ * Provisionally issues a credential to a `Subject` account. The credential
5
+ * is not valid until the subject accepts it with a `CredentialAccept`.
6
+ * Validation happens at construction; there is no way to construct an
7
+ * invalid tx.
8
+ *
9
+ * import { credentialCreate } from 'xrplt/fp';
10
+ * const tx = credentialCreate({
11
+ * Account: issuerAddr,
12
+ * Subject: subjectAddr,
13
+ * CredentialType: '6D795F63726564656E7469616C',
14
+ * });
15
+ * const j = tx.toJSON();
16
+ * const tx2 = tx.with({ Expiration: 1735689600 });
17
+ *
18
+ * Required amendment: `Credentials`.
19
+ *
20
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/credentialcreate
21
+ * @see https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070-credentials
22
+ *
23
+ * ## Divergences
24
+ *
25
+ * The class-based API at `src/transactions/credential-create.ts` is
26
+ * missing several rules the canonical sources require AND exposes one
27
+ * field that is not in the spec at all. The factory corrects both:
28
+ *
29
+ * 1. `CredentialSequence` is NOT in the spec.
30
+ * The class exposes `CredentialSequence: number` as a required
31
+ * field. XLS-0070 §3.1 lists ONLY `TransactionType`, `Account`,
32
+ * `Subject`, `CredentialType`, `Expiration`, `URI`. xrpl.js
33
+ * 5.3.0 `models/transactions/CredentialCreate.ts` and xrpl-dev-portal
34
+ * `credentialcreate.md` agree: no `CredentialSequence`. The
35
+ * `Credential` ledger object's `CredentialSequence` is auto-assigned
36
+ * by the network (XLS-0070 §3.3), not by the issuer. The factory
37
+ * omits this field entirely.
38
+ * Source: XLS-0070 §3.1 (field table) and §3.3 (state changes);
39
+ * xrpl.js `models/transactions/CredentialCreate.ts`
40
+ * lines 22–39; xrpl-dev-portal
41
+ * `credentialcreate.md` (field table).
42
+ *
43
+ * 2. `CredentialType` must be a non-empty hex string ≤ 64 bytes.
44
+ * The class only checks `isString`. XLS-0070 §3.2 failure
45
+ * conditions: "The `CredentialType` field is empty or too long
46
+ * (limit 64 bytes)." XLS-0070 §2.1.3 also says: "It has a maximum
47
+ * length of 64 bytes, and cannot be an empty string." xrpl.js
48
+ * enforces the same with `MAX_CREDENTIAL_TYPE_LENGTH = 128`
49
+ * (hex chars for 64 bytes) and a hex regex.
50
+ * Source: XLS-0070 §3.2 + §2.1.3; xrpl.js
51
+ * `models/transactions/common.ts:29–30` (`MAX_CREDENTIAL_TYPE_LENGTH`),
52
+ * `models/transactions/common.ts:1061–1093`
53
+ * (`validateCredentialType`).
54
+ *
55
+ * 3. `URI` must be a non-empty hex string ≤ 256 bytes.
56
+ * The class only checks it is undefined-or-string. XLS-0070 §3.2
57
+ * failure: "The `URI` field is empty or too long (limit 256
58
+ * bytes)." The factory enforces ≤ 512 hex chars (256 bytes),
59
+ * matching the spec — NOT the more conservative 256-hex-char cap
60
+ * that xrpl.js 5.3.0 enforces at `CredentialCreate.ts:15`
61
+ * (`MAX_URI_LENGTH = 256` actually bounds the hex string to 256
62
+ * characters = 128 bytes; this is an xrpl.js under-spec limit that
63
+ * the factory intentionally does NOT mirror).
64
+ * Source: XLS-0070 §3.2 + §2.1.2 (`MaxCredentialUriBytes = 256`);
65
+ * xrpl-dev-portal `credentialcreate.md` (URI table row:
66
+ * "maximum is 256 bytes").
67
+ *
68
+ * 4. `Expiration` must be a positive integer in UInt32 range.
69
+ * The class only checks `isNumber`. XLS-0070 §3.1 lists
70
+ * `Expiration` as `UInt32`. The factory enforces `Expiration`
71
+ * to be a finite, non-negative integer ≤ 2^32 − 1. (Whether the
72
+ * time is in the future is a runtime check, not enforceable here.)
73
+ * Source: XLS-0070 §3.1 (Internal Type column = UInt32);
74
+ * XLS-0070 §3.2 failure "The time in Expiration is in the
75
+ * past".
76
+ *
77
+ * 5. `Subject` must not be ACCOUNT_ZERO (`rHb9CJAWyB4rj91VRWn96Dkukn4MRtfQ`).
78
+ * The class accepts any `isAccount`-shaped string. xrpl-dev-portal
79
+ * `credentialcreate.md` error cases lists `temINVALID_ACCOUNT_ID`
80
+ * fired "if it contains ACCOUNT_ZERO". The factory rejects the
81
+ * zero address explicitly.
82
+ * Source: xrpl-dev-portal `credentialcreate.md` (Error Cases
83
+ * table, row for `temINVALID_ACCOUNT_ID`).
84
+ *
85
+ * 6. `Account` must be a non-empty string.
86
+ * The class uses `isAccount` which allows empty strings to slip
87
+ * through the format regex's lower bound (24+ chars), so an empty
88
+ * Account would actually be caught — but only as a side effect of
89
+ * length. The factory makes the intent explicit.
90
+ * Source: XLS-0070 §3.1 (Account is required, type AccountID);
91
+ * xrpl.js `validateCredentialCreate` calls
92
+ * `validateRequiredField(tx, 'Account', isString)`.
93
+ */
94
+ import { isAccount, isHex, isNumber, isString } from '../../validation/helpers.js';
95
+ import { ValidationError } from '../../errors.js';
96
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
97
+ // ─── Spec constants ──────────────────────────────────────────────────
98
+ /** CredentialType max bytes (XLS-0070 §3.2). */
99
+ const MAX_CREDENTIAL_TYPE_BYTES = 64;
100
+ /** CredentialType max hex chars = 2 × bytes. */
101
+ const MAX_CREDENTIAL_TYPE_LENGTH = MAX_CREDENTIAL_TYPE_BYTES * 2;
102
+ /** URI max bytes (XLS-0070 §3.2). */
103
+ const MAX_URI_BYTES = 256;
104
+ /** URI max hex chars = 2 × bytes. */
105
+ const MAX_URI_LENGTH = MAX_URI_BYTES * 2;
106
+ /** UInt32 max. */
107
+ const UINT32_MAX = 0xffffffff;
108
+ /** The XRPL ACCOUNT_ZERO address; rippled rejects this as Subject. */
109
+ const ACCOUNT_ZERO = 'rHb9CJAWyB4rj91VRWn96Dkukn4MRtfQ';
110
+ // ─── Helpers ─────────────────────────────────────────────────────────
111
+ function validateCredentialType(value) {
112
+ if (!isString(value)) {
113
+ throw new ValidationError('CredentialCreate: CredentialType must be a hex string');
114
+ }
115
+ if (value.length === 0) {
116
+ throw new ValidationError('CredentialCreate: CredentialType cannot be an empty string');
117
+ }
118
+ if (!isHex(value)) {
119
+ throw new ValidationError('CredentialCreate: CredentialType must be encoded in hex');
120
+ }
121
+ if (value.length % 2 !== 0) {
122
+ throw new ValidationError('CredentialCreate: CredentialType must be a hex string with an even number of characters');
123
+ }
124
+ if (value.length > MAX_CREDENTIAL_TYPE_LENGTH) {
125
+ throw new ValidationError(`CredentialCreate: CredentialType length must be <= ${MAX_CREDENTIAL_TYPE_LENGTH} hex chars (${MAX_CREDENTIAL_TYPE_BYTES} bytes)`);
126
+ }
127
+ return value;
128
+ }
129
+ function validateURI(value) {
130
+ if (!isString(value)) {
131
+ throw new ValidationError('CredentialCreate: URI must be a hex string');
132
+ }
133
+ if (value.length === 0) {
134
+ throw new ValidationError('CredentialCreate: URI cannot be an empty string');
135
+ }
136
+ if (!isHex(value)) {
137
+ throw new ValidationError('CredentialCreate: URI must be encoded in hex');
138
+ }
139
+ if (value.length > MAX_URI_LENGTH) {
140
+ throw new ValidationError(`CredentialCreate: URI length must be <= ${MAX_URI_LENGTH} hex chars (${MAX_URI_BYTES} bytes)`);
141
+ }
142
+ return value;
143
+ }
144
+ function validateExpiration(value) {
145
+ if (!isNumber(value) || !Number.isFinite(value) || !Number.isInteger(value)) {
146
+ throw new ValidationError('CredentialCreate: Expiration must be an integer');
147
+ }
148
+ if (value < 0) {
149
+ throw new ValidationError('CredentialCreate: Expiration must be non-negative');
150
+ }
151
+ if (value > UINT32_MAX) {
152
+ throw new ValidationError(`CredentialCreate: Expiration must fit in UInt32 (max ${UINT32_MAX})`);
153
+ }
154
+ return value;
155
+ }
156
+ // ─── Factory ─────────────────────────────────────────────────────────
157
+ export function credentialCreate(props) {
158
+ // ── Account ── required, must be a non-empty string.
159
+ require(props.Account, 'CredentialCreate: Account is required', isString);
160
+ if (props.Account.length === 0) {
161
+ throw new ValidationError('CredentialCreate: Account is required');
162
+ }
163
+ // ── Subject ── required, must be a valid XRPL account AND not ACCOUNT_ZERO.
164
+ require(props.Subject, 'CredentialCreate: Subject is required', isString);
165
+ if (props.Subject.length === 0) {
166
+ throw new ValidationError('CredentialCreate: Subject is required');
167
+ }
168
+ if (!isAccount(props.Subject)) {
169
+ throw new ValidationError('CredentialCreate: Subject must be a valid XRPL address');
170
+ }
171
+ if (props.Subject === ACCOUNT_ZERO) {
172
+ throw new ValidationError('CredentialCreate: Subject must not be ACCOUNT_ZERO');
173
+ }
174
+ // ── CredentialType ── required, hex, 1–64 bytes.
175
+ validateCredentialType(props.CredentialType);
176
+ // ── URI ── optional, hex, 1–256 bytes when present.
177
+ if (props.URI !== undefined) {
178
+ validateURI(props.URI);
179
+ }
180
+ // ── Expiration ── optional, finite UInt32 integer.
181
+ if (props.Expiration !== undefined) {
182
+ validateExpiration(props.Expiration);
183
+ }
184
+ return buildFrozenTx('CredentialCreate', props, {
185
+ validate() {
186
+ // Validated at construction.
187
+ },
188
+ toJSON() {
189
+ const json = {};
190
+ for (const k of Object.keys(this)) {
191
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
192
+ continue;
193
+ const v = this[k];
194
+ if (v !== undefined)
195
+ json[k] = v;
196
+ }
197
+ return json;
198
+ },
199
+ with(overrides) {
200
+ return credentialCreate(mergeForWith(this, overrides));
201
+ },
202
+ });
203
+ }
204
+ //# sourceMappingURL=credential-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-create.js","sourceRoot":"","sources":["../../../src/fp/factories/credential-create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface CredentialDeleteProps {
2
+ /** The unique address of the transaction sender. */
3
+ Account: string;
4
+ /**
5
+ * The subject of the credential to delete.
6
+ * If omitted, `Account` is assumed to be the subject.
7
+ * At least one of `Subject` / `Issuer` must be provided (XLS-0070 §5.1).
8
+ */
9
+ Subject?: string | undefined;
10
+ /**
11
+ * The issuer of the credential to delete.
12
+ * If omitted, `Account` is assumed to be the issuer.
13
+ * At least one of `Subject` / `Issuer` must be provided (XLS-0070 §5.1).
14
+ */
15
+ Issuer?: string | undefined;
16
+ /**
17
+ * Hex-encoded credential type (Blob). 1–128 hex chars (1–64 bytes).
18
+ * Cannot be empty (XLS-0070 §2.1.3).
19
+ */
20
+ CredentialType: string;
21
+ /** Fee in XRP (drops), base-10 integer string. */
22
+ Fee?: string | undefined;
23
+ /** Account sequence number. */
24
+ Sequence?: number | undefined;
25
+ }
26
+ export interface CredentialDelete extends Readonly<CredentialDeleteProps> {
27
+ readonly TransactionType: 'CredentialDelete';
28
+ validate(): void;
29
+ toJSON(): Record<string, unknown>;
30
+ with(overrides: Partial<CredentialDeleteProps>): CredentialDelete;
31
+ }
32
+ export declare function credentialDelete(props: CredentialDeleteProps): CredentialDelete;
33
+ //# sourceMappingURL=credential-delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-delete.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/credential-delete.ts"],"names":[],"mappings":"AAsHA,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAAC,qBAAqB,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,gBAAgB,CAAC;CACnE;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CA2E/E"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Functional CredentialDelete factory — frozen-object style.
3
+ *
4
+ * Deletes a `Credential` ledger entry. The holder or the issuer may
5
+ * submit this transaction. Validation happens at construction; there is
6
+ * no way to construct an invalid tx.
7
+ *
8
+ * import { credentialDelete } from 'xrplt/fp';
9
+ * const tx = credentialDelete({ Account, Subject, CredentialType });
10
+ * const j = tx.toJSON();
11
+ *
12
+ * Affected amendments:
13
+ * - `Credentials` — base CredentialDelete (XLS-0070 §5).
14
+ *
15
+ * @see https://xrpl.org/docs/references/protocol/transactions/types/credentialdelete
16
+ * @see XLS-0070 §5 (Transaction: `CredentialDelete`) in
17
+ * `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/README.md`
18
+ *
19
+ * ## Divergences
20
+ *
21
+ * The class-based API at `src/transactions/credential-delete.ts` and
22
+ * xrpl.js's `validateCredentialDelete` both diverge from the XLS-0070
23
+ * spec on two rules. The factory fills both gaps.
24
+ *
25
+ * 1. `Subject` and `Issuer` are OPTIONAL — at least one is required.
26
+ *
27
+ * Per XLS-0070 §5.1, both `Subject` and `Issuer` are listed as
28
+ * not-required ("If omitted, `Account` is assumed to be the
29
+ * subject / issuer"). The note immediately below the field table
30
+ * states: "If an account is deleting a credential it issued to
31
+ * itself, then either `Subject` or `Issuer` can be specified, but
32
+ * at least one must be."
33
+ *
34
+ * xrpl.js implements this correctly
35
+ * (`validateCredentialDelete` in
36
+ * `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
37
+ * transactions/CredentialDelete.ts`, lines 39–55 — throws
38
+ * "either `Issuer` or `Subject` must be provided" when both are
39
+ * absent).
40
+ *
41
+ * The local class API is wrong on this point: it declares
42
+ * `Subject` and `Issuer` as `readonly Subject: string` /
43
+ * `readonly Issuer: string` (both required) and rejects any tx
44
+ * that omits one with "missing or invalid Subject/Issuer". A tx
45
+ * with `Account === Issuer === Subject` (deleting a self-issued
46
+ * credential) cannot be constructed via the class. The factory
47
+ * makes both optional and enforces "at least one of {Subject,
48
+ * Issuer}".
49
+ *
50
+ * Source citation:
51
+ * - XLS-0070 §5.1 + §5.2 in
52
+ * `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/
53
+ * README.md` (lines 199–212).
54
+ * - xrpl.js `validateCredentialDelete` at
55
+ * `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
56
+ * transactions/CredentialDelete.ts` (lines 39–55).
57
+ * - xrpl-dev-portal `credentialdelete.md`
58
+ * (`~/.mavis/docs.local/xrpl-dev-portal/repo/docs/references/
59
+ * protocol/transactions/types/credentialdelete.md`): "You
60
+ * must provide the `Subject` field, `Issuer` field, or both."
61
+ * - Local class at `src/transactions/credential-delete.ts`
62
+ * (lines 9–17 and 37–38 — both declared required and both
63
+ * validated as required).
64
+ *
65
+ * 2. `CredentialType` is a hex `Blob`, not just any string.
66
+ *
67
+ * Per XLS-0070 §2.1.3 (the field definition carried over into the
68
+ * CredentialDelete spec): "It has a maximum length of 64 bytes,
69
+ * and cannot be an empty string." In hex that is 1–128
70
+ * characters. xrpl.js's `validateCredentialType` enforces this
71
+ * (`~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
72
+ * transactions/common.ts`, lines 1061–1093 — checks
73
+ * `MAX_CREDENTIAL_BYTE_LENGTH = 64`, empty-string rejection, and
74
+ * `HEX_REGEX`).
75
+ *
76
+ * The local class API only checks `isString(this.CredentialType)`
77
+ * (line 39). That admits three classes of bad input that rippled
78
+ * will reject: empty string (too short), non-hex strings, and
79
+ * strings longer than 128 hex chars. The factory rejects all
80
+ * three at construction.
81
+ *
82
+ * Source citation:
83
+ * - XLS-0070 §2.1.3 in
84
+ * `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/
85
+ * README.md` (line 116: "It has a maximum length of 64
86
+ * bytes, and cannot be an empty string.").
87
+ * - xrpl.js `validateCredentialType` at
88
+ * `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
89
+ * transactions/common.ts` (lines 1061–1093 — empty-string,
90
+ * length ≤ 128 hex chars, `HEX_REGEX`).
91
+ * - xrpl-dev-portal `credentialdelete.md` (line 34): "The
92
+ * minimum length is 1 byte and the maximum length is 256
93
+ * bytes." (Note: the portal's "256 bytes" appears to be a
94
+ * copy-paste error from the `URI` field table; XLS-0070
95
+ * §2.1.3 and xrpl.js both cap at 64 bytes / 128 hex chars.
96
+ * The factory follows the standard + xrpl.js.)
97
+ * - Local class at `src/transactions/credential-delete.ts`
98
+ * (line 39 — only `isString`).
99
+ *
100
+ * The factory also validates `Account` as a well-formed XRPL
101
+ * classic/X-address. This matches the pattern in every other fp factory
102
+ * (`vaultDelete`, `permissionedDomainDelete`, `loanBrokerDelete`, …)
103
+ * and matches xrpl.js's `validateBaseTransaction` (which calls
104
+ * `validateRequiredField(common, 'Account', isString)` against the
105
+ * same regex). The class API here uses only `isString` via
106
+ * `validateBaseTransaction`.
107
+ */
108
+ import { isAccount, isHex, isString } from '../../validation/helpers.js';
109
+ import { ValidationError } from '../../errors.js';
110
+ import { buildFrozenTx, mergeForWith, require } from '../shape.js';
111
+ // ─── Spec constants ──────────────────────────────────────────────────
112
+ // XLS-0070 §2.1.3 + xrpl.js MAX_CREDENTIAL_BYTE_LENGTH (= 64) → 128 hex chars.
113
+ const MAX_CREDENTIAL_TYPE_HEX_LENGTH = 128;
114
+ // ─── Factory ─────────────────────────────────────────────────────────
115
+ export function credentialDelete(props) {
116
+ // ── Account ── required, must be a valid XRPL classic or X-address.
117
+ require(props.Account, 'CredentialDelete: Account is required', isAccount);
118
+ // ── Subject / Issuer ── both optional, but at least one must be set.
119
+ // Per XLS-0070 §5.1 + xrpl.js's `validateCredentialDelete`:
120
+ // "either `Issuer` or `Subject` must be provided"
121
+ // The class API makes both required — see "Divergences" #1 in the
122
+ // header for the full citation trail.
123
+ const hasSubject = props.Subject !== undefined;
124
+ const hasIssuer = props.Issuer !== undefined;
125
+ if (!hasSubject && !hasIssuer) {
126
+ throw new ValidationError('CredentialDelete: either Subject or Issuer must be provided');
127
+ }
128
+ if (hasSubject && !isAccount(props.Subject)) {
129
+ throw new ValidationError('CredentialDelete: Subject must be a valid XRPL address');
130
+ }
131
+ if (hasIssuer && !isAccount(props.Issuer)) {
132
+ throw new ValidationError('CredentialDelete: Issuer must be a valid XRPL address');
133
+ }
134
+ // ── CredentialType ── required, hex Blob, 1–128 hex chars (1–64 bytes).
135
+ // Per XLS-0070 §2.1.3 + xrpl.js `validateCredentialType`:
136
+ // non-empty, ≤ 64 decoded bytes, hex-encoded.
137
+ // The class API only does `isString` — see "Divergences" #2.
138
+ if (!isString(props.CredentialType) || props.CredentialType.length === 0) {
139
+ throw new ValidationError('CredentialDelete: CredentialType is required and must be a non-empty hex string');
140
+ }
141
+ if (props.CredentialType.length > MAX_CREDENTIAL_TYPE_HEX_LENGTH) {
142
+ throw new ValidationError(`CredentialDelete: CredentialType exceeds ${MAX_CREDENTIAL_TYPE_HEX_LENGTH} hex chars (${MAX_CREDENTIAL_TYPE_HEX_LENGTH / 2} bytes)`);
143
+ }
144
+ if (!isHex(props.CredentialType)) {
145
+ throw new ValidationError('CredentialDelete: CredentialType must be a hex string');
146
+ }
147
+ return buildFrozenTx('CredentialDelete', props, {
148
+ validate() {
149
+ // Validated at construction.
150
+ },
151
+ toJSON() {
152
+ const json = {};
153
+ for (const k of Object.keys(this)) {
154
+ if (k === 'validate' || k === 'toJSON' || k === 'with')
155
+ continue;
156
+ const v = this[k];
157
+ if (v !== undefined)
158
+ json[k] = v;
159
+ }
160
+ return json;
161
+ },
162
+ with(overrides) {
163
+ return credentialDelete(mergeForWith(this, overrides));
164
+ },
165
+ });
166
+ }
167
+ //# sourceMappingURL=credential-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-delete.js","sourceRoot":"","sources":["../../../src/fp/factories/credential-delete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AACH,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,+EAA+E;AAC/E,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAqC3C,wEAAwE;AAExE,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,qEAAqE;IACrE,OAAO,CACL,KAAK,CAAC,OAAO,EACb,uCAAuC,EACvC,SAAS,CACV,CAAC;IAEF,sEAAsE;IACtE,4DAA4D;IAC5D,oDAAoD;IACpD,kEAAkE;IAClE,sCAAsC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CACvB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CACvB,wDAAwD,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CACvB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,0DAA0D;IAC1D,gDAAgD;IAChD,6DAA6D;IAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,eAAe,CACvB,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,8BAA8B,EAAE,CAAC;QACjE,MAAM,IAAI,eAAe,CACvB,4CAA4C,8BAA8B,eAAe,8BAA8B,GAAG,CAAC,SAAS,CACrI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CACvB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAClB,kBAAkB,EAClB,KAAK,EACL;QACE,QAAQ;YACN,6BAA6B;QAC/B,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,52 @@
1
+ /**
2
+ * A single permission grant. Wraps a `PermissionValue` (the
3
+ * transaction-type string being delegated) in two layers of objects
4
+ * because that is the on-ledger shape; rippled's binary codec
5
+ * expects exactly this nesting.
6
+ */
7
+ export interface Permission {
8
+ Permission: {
9
+ PermissionValue: string;
10
+ };
11
+ }
12
+ export interface DelegateSetProps {
13
+ /** The unique address of the transaction sender. */
14
+ Account: string;
15
+ /**
16
+ * The account being authorized to act on the sender's behalf.
17
+ * Must be a valid XRPL classic or X-address AND must not equal
18
+ * `Account` (self-delegation is rejected).
19
+ */
20
+ Authorize: string;
21
+ /**
22
+ * The transaction permissions being granted. Each entry must be of
23
+ * shape `{ Permission: { PermissionValue: string } }`. At most
24
+ * `PERMISSIONS_MAX_LENGTH` entries; no duplicate `PermissionValue`s;
25
+ * `PermissionValue` must be a string AND must not name a
26
+ * non-delegatable transaction.
27
+ */
28
+ Permissions: Permission[];
29
+ /** Bit-flags for this transaction. The spec defines none — must be 0. */
30
+ Flags?: number | undefined;
31
+ /** Fee in XRP (drops), base-10 integer string. */
32
+ Fee?: string | undefined;
33
+ /** Account sequence number. */
34
+ Sequence?: number | undefined;
35
+ }
36
+ export interface DelegateSet extends Readonly<DelegateSetProps> {
37
+ readonly TransactionType: 'DelegateSet';
38
+ validate(): void;
39
+ toJSON(): Record<string, unknown>;
40
+ with(overrides: Partial<DelegateSetProps>): DelegateSet;
41
+ }
42
+ /**
43
+ * Build a frozen DelegateSet. Throws `ValidationError` on construction
44
+ * if any required field is missing or malformed.
45
+ *
46
+ * The class-based equivalent validates lazily (caller must invoke
47
+ * `.validate()`); this functional version validates at construction.
48
+ * There is no way to build an invalid tx — `with()` re-runs the
49
+ * factory, so overrides are re-validated too.
50
+ */
51
+ export declare function delegateSet(props: DelegateSetProps): DelegateSet;
52
+ //# sourceMappingURL=delegate-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate-set.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/delegate-set.ts"],"names":[],"mappings":"AA2HA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,+BAA+B;IAC/B,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;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CA+FhE"}