xrpl 2.14.0 → 3.0.0-beta.1

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 (407) hide show
  1. package/README.md +2 -2
  2. package/build/xrpl-latest-min.js +1 -1
  3. package/build/xrpl-latest-min.js.map +1 -1
  4. package/build/xrpl-latest.js +15451 -74357
  5. package/build/xrpl-latest.js.map +1 -1
  6. package/dist/npm/Wallet/authorizeChannel.d.ts +3 -0
  7. package/dist/npm/Wallet/authorizeChannel.d.ts.map +1 -0
  8. package/dist/npm/Wallet/authorizeChannel.js +14 -0
  9. package/dist/npm/Wallet/authorizeChannel.js.map +1 -0
  10. package/dist/npm/Wallet/defaultFaucets.js +1 -1
  11. package/dist/npm/Wallet/defaultFaucets.js.map +1 -1
  12. package/dist/npm/Wallet/fundWallet.d.ts +17 -3
  13. package/dist/npm/Wallet/fundWallet.d.ts.map +1 -1
  14. package/dist/npm/Wallet/fundWallet.js +53 -78
  15. package/dist/npm/Wallet/fundWallet.js.map +1 -1
  16. package/dist/npm/Wallet/index.d.ts.map +1 -1
  17. package/dist/npm/Wallet/index.js +24 -23
  18. package/dist/npm/Wallet/index.js.map +1 -1
  19. package/dist/npm/Wallet/rfc1751.d.ts +1 -2
  20. package/dist/npm/Wallet/rfc1751.d.ts.map +1 -1
  21. package/dist/npm/Wallet/rfc1751.js +21 -5
  22. package/dist/npm/Wallet/rfc1751.js.map +1 -1
  23. package/dist/npm/Wallet/signer.d.ts +2 -4
  24. package/dist/npm/Wallet/signer.d.ts.map +1 -1
  25. package/dist/npm/Wallet/signer.js +19 -14
  26. package/dist/npm/Wallet/signer.js.map +1 -1
  27. package/dist/npm/Wallet/walletFromSecretNumbers.js +2 -2
  28. package/dist/npm/Wallet/walletFromSecretNumbers.js.map +1 -1
  29. package/dist/npm/client/RequestManager.d.ts +3 -2
  30. package/dist/npm/client/RequestManager.d.ts.map +1 -1
  31. package/dist/npm/client/RequestManager.js +25 -1
  32. package/dist/npm/client/RequestManager.js.map +1 -1
  33. package/dist/npm/client/connection.d.ts +8 -11
  34. package/dist/npm/client/connection.d.ts.map +1 -1
  35. package/dist/npm/client/connection.js +11 -57
  36. package/dist/npm/client/connection.js.map +1 -1
  37. package/dist/npm/client/index.d.ts +56 -79
  38. package/dist/npm/client/index.d.ts.map +1 -1
  39. package/dist/npm/client/index.js +155 -42
  40. package/dist/npm/client/index.js.map +1 -1
  41. package/dist/npm/client/partialPayment.d.ts +4 -2
  42. package/dist/npm/client/partialPayment.d.ts.map +1 -1
  43. package/dist/npm/client/partialPayment.js.map +1 -1
  44. package/dist/npm/errors.d.ts.map +1 -1
  45. package/dist/npm/errors.js +1 -2
  46. package/dist/npm/errors.js.map +1 -1
  47. package/dist/npm/index.d.ts +1 -1
  48. package/dist/npm/index.d.ts.map +1 -1
  49. package/dist/npm/index.js +1 -3
  50. package/dist/npm/index.js.map +1 -1
  51. package/dist/npm/models/ledger/AccountRoot.js +1 -1
  52. package/dist/npm/models/ledger/AccountRoot.js.map +1 -1
  53. package/dist/npm/models/ledger/Ledger.d.ts +2 -2
  54. package/dist/npm/models/ledger/Ledger.d.ts.map +1 -1
  55. package/dist/npm/models/ledger/Offer.js +1 -1
  56. package/dist/npm/models/ledger/Offer.js.map +1 -1
  57. package/dist/npm/models/ledger/RippleState.js +1 -1
  58. package/dist/npm/models/ledger/RippleState.js.map +1 -1
  59. package/dist/npm/models/ledger/SignerList.js +1 -1
  60. package/dist/npm/models/ledger/SignerList.js.map +1 -1
  61. package/dist/npm/models/methods/index.d.ts +12 -1
  62. package/dist/npm/models/methods/index.d.ts.map +1 -1
  63. package/dist/npm/models/methods/ledger.d.ts +35 -7
  64. package/dist/npm/models/methods/ledger.d.ts.map +1 -1
  65. package/dist/npm/models/methods/submit.d.ts +2 -2
  66. package/dist/npm/models/methods/submit.d.ts.map +1 -1
  67. package/dist/npm/models/methods/subscribe.d.ts +3 -0
  68. package/dist/npm/models/methods/subscribe.d.ts.map +1 -1
  69. package/dist/npm/models/methods/tx.d.ts +2 -3
  70. package/dist/npm/models/methods/tx.d.ts.map +1 -1
  71. package/dist/npm/models/transactions/AMMDeposit.js +1 -1
  72. package/dist/npm/models/transactions/AMMDeposit.js.map +1 -1
  73. package/dist/npm/models/transactions/AMMWithdraw.js +1 -1
  74. package/dist/npm/models/transactions/AMMWithdraw.js.map +1 -1
  75. package/dist/npm/models/transactions/NFTokenAcceptOffer.d.ts +4 -0
  76. package/dist/npm/models/transactions/NFTokenAcceptOffer.d.ts.map +1 -1
  77. package/dist/npm/models/transactions/NFTokenAcceptOffer.js.map +1 -1
  78. package/dist/npm/models/transactions/NFTokenCancelOffer.d.ts +4 -0
  79. package/dist/npm/models/transactions/NFTokenCancelOffer.d.ts.map +1 -1
  80. package/dist/npm/models/transactions/NFTokenCancelOffer.js.map +1 -1
  81. package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts +4 -0
  82. package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  83. package/dist/npm/models/transactions/NFTokenCreateOffer.js +1 -1
  84. package/dist/npm/models/transactions/NFTokenCreateOffer.js.map +1 -1
  85. package/dist/npm/models/transactions/NFTokenMint.d.ts +4 -0
  86. package/dist/npm/models/transactions/NFTokenMint.d.ts.map +1 -1
  87. package/dist/npm/models/transactions/NFTokenMint.js +1 -1
  88. package/dist/npm/models/transactions/NFTokenMint.js.map +1 -1
  89. package/dist/npm/models/transactions/XChainModifyBridge.js +1 -1
  90. package/dist/npm/models/transactions/XChainModifyBridge.js.map +1 -1
  91. package/dist/npm/models/transactions/accountSet.js +2 -2
  92. package/dist/npm/models/transactions/accountSet.js.map +1 -1
  93. package/dist/npm/models/transactions/enableAmendment.js +1 -1
  94. package/dist/npm/models/transactions/enableAmendment.js.map +1 -1
  95. package/dist/npm/models/transactions/index.d.ts +1 -1
  96. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  97. package/dist/npm/models/transactions/index.js.map +1 -1
  98. package/dist/npm/models/transactions/metadata.d.ts +9 -1
  99. package/dist/npm/models/transactions/metadata.d.ts.map +1 -1
  100. package/dist/npm/models/transactions/metadata.js.map +1 -1
  101. package/dist/npm/models/transactions/offerCreate.js +1 -1
  102. package/dist/npm/models/transactions/offerCreate.js.map +1 -1
  103. package/dist/npm/models/transactions/payment.d.ts +5 -0
  104. package/dist/npm/models/transactions/payment.d.ts.map +1 -1
  105. package/dist/npm/models/transactions/payment.js +1 -1
  106. package/dist/npm/models/transactions/payment.js.map +1 -1
  107. package/dist/npm/models/transactions/paymentChannelClaim.js +1 -1
  108. package/dist/npm/models/transactions/paymentChannelClaim.js.map +1 -1
  109. package/dist/npm/models/transactions/transaction.d.ts +6 -4
  110. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  111. package/dist/npm/models/transactions/transaction.js.map +1 -1
  112. package/dist/npm/models/transactions/trustSet.js +1 -1
  113. package/dist/npm/models/transactions/trustSet.js.map +1 -1
  114. package/dist/npm/snippets/src/bridgeTransfer.js +2 -2
  115. package/dist/npm/snippets/src/bridgeTransfer.js.map +1 -1
  116. package/dist/npm/snippets/src/getTransaction.js +1 -1
  117. package/dist/npm/snippets/src/getTransaction.js.map +1 -1
  118. package/dist/npm/snippets/src/paths.js +2 -3
  119. package/dist/npm/snippets/src/paths.js.map +1 -1
  120. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  121. package/dist/npm/src/Wallet/authorizeChannel.d.ts +3 -0
  122. package/dist/npm/src/Wallet/authorizeChannel.d.ts.map +1 -0
  123. package/dist/npm/src/Wallet/authorizeChannel.js +14 -0
  124. package/dist/npm/src/Wallet/authorizeChannel.js.map +1 -0
  125. package/dist/npm/src/Wallet/defaultFaucets.js +1 -1
  126. package/dist/npm/src/Wallet/defaultFaucets.js.map +1 -1
  127. package/dist/npm/src/Wallet/fundWallet.d.ts +17 -3
  128. package/dist/npm/src/Wallet/fundWallet.d.ts.map +1 -1
  129. package/dist/npm/src/Wallet/fundWallet.js +53 -78
  130. package/dist/npm/src/Wallet/fundWallet.js.map +1 -1
  131. package/dist/npm/src/Wallet/index.d.ts.map +1 -1
  132. package/dist/npm/src/Wallet/index.js +24 -23
  133. package/dist/npm/src/Wallet/index.js.map +1 -1
  134. package/dist/npm/src/Wallet/rfc1751.d.ts +1 -2
  135. package/dist/npm/src/Wallet/rfc1751.d.ts.map +1 -1
  136. package/dist/npm/src/Wallet/rfc1751.js +21 -5
  137. package/dist/npm/src/Wallet/rfc1751.js.map +1 -1
  138. package/dist/npm/src/Wallet/signer.d.ts +2 -4
  139. package/dist/npm/src/Wallet/signer.d.ts.map +1 -1
  140. package/dist/npm/src/Wallet/signer.js +19 -14
  141. package/dist/npm/src/Wallet/signer.js.map +1 -1
  142. package/dist/npm/src/Wallet/walletFromSecretNumbers.js +2 -2
  143. package/dist/npm/src/Wallet/walletFromSecretNumbers.js.map +1 -1
  144. package/dist/npm/src/client/RequestManager.d.ts +3 -2
  145. package/dist/npm/src/client/RequestManager.d.ts.map +1 -1
  146. package/dist/npm/src/client/RequestManager.js +25 -1
  147. package/dist/npm/src/client/RequestManager.js.map +1 -1
  148. package/dist/npm/src/client/connection.d.ts +8 -11
  149. package/dist/npm/src/client/connection.d.ts.map +1 -1
  150. package/dist/npm/src/client/connection.js +11 -57
  151. package/dist/npm/src/client/connection.js.map +1 -1
  152. package/dist/npm/src/client/index.d.ts +56 -79
  153. package/dist/npm/src/client/index.d.ts.map +1 -1
  154. package/dist/npm/src/client/index.js +155 -42
  155. package/dist/npm/src/client/index.js.map +1 -1
  156. package/dist/npm/src/client/partialPayment.d.ts +4 -2
  157. package/dist/npm/src/client/partialPayment.d.ts.map +1 -1
  158. package/dist/npm/src/client/partialPayment.js.map +1 -1
  159. package/dist/npm/src/errors.d.ts.map +1 -1
  160. package/dist/npm/src/errors.js +1 -2
  161. package/dist/npm/src/errors.js.map +1 -1
  162. package/dist/npm/src/index.d.ts +1 -1
  163. package/dist/npm/src/index.d.ts.map +1 -1
  164. package/dist/npm/src/index.js +1 -3
  165. package/dist/npm/src/index.js.map +1 -1
  166. package/dist/npm/src/models/ledger/AccountRoot.js +1 -1
  167. package/dist/npm/src/models/ledger/AccountRoot.js.map +1 -1
  168. package/dist/npm/src/models/ledger/Ledger.d.ts +2 -2
  169. package/dist/npm/src/models/ledger/Ledger.d.ts.map +1 -1
  170. package/dist/npm/src/models/ledger/Offer.js +1 -1
  171. package/dist/npm/src/models/ledger/Offer.js.map +1 -1
  172. package/dist/npm/src/models/ledger/RippleState.js +1 -1
  173. package/dist/npm/src/models/ledger/RippleState.js.map +1 -1
  174. package/dist/npm/src/models/ledger/SignerList.js +1 -1
  175. package/dist/npm/src/models/ledger/SignerList.js.map +1 -1
  176. package/dist/npm/src/models/methods/index.d.ts +12 -1
  177. package/dist/npm/src/models/methods/index.d.ts.map +1 -1
  178. package/dist/npm/src/models/methods/ledger.d.ts +35 -7
  179. package/dist/npm/src/models/methods/ledger.d.ts.map +1 -1
  180. package/dist/npm/src/models/methods/submit.d.ts +2 -2
  181. package/dist/npm/src/models/methods/submit.d.ts.map +1 -1
  182. package/dist/npm/src/models/methods/subscribe.d.ts +3 -0
  183. package/dist/npm/src/models/methods/subscribe.d.ts.map +1 -1
  184. package/dist/npm/src/models/methods/tx.d.ts +2 -3
  185. package/dist/npm/src/models/methods/tx.d.ts.map +1 -1
  186. package/dist/npm/src/models/transactions/AMMDeposit.js +1 -1
  187. package/dist/npm/src/models/transactions/AMMDeposit.js.map +1 -1
  188. package/dist/npm/src/models/transactions/AMMWithdraw.js +1 -1
  189. package/dist/npm/src/models/transactions/AMMWithdraw.js.map +1 -1
  190. package/dist/npm/src/models/transactions/NFTokenAcceptOffer.d.ts +4 -0
  191. package/dist/npm/src/models/transactions/NFTokenAcceptOffer.d.ts.map +1 -1
  192. package/dist/npm/src/models/transactions/NFTokenAcceptOffer.js.map +1 -1
  193. package/dist/npm/src/models/transactions/NFTokenCancelOffer.d.ts +4 -0
  194. package/dist/npm/src/models/transactions/NFTokenCancelOffer.d.ts.map +1 -1
  195. package/dist/npm/src/models/transactions/NFTokenCancelOffer.js.map +1 -1
  196. package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts +4 -0
  197. package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
  198. package/dist/npm/src/models/transactions/NFTokenCreateOffer.js +1 -1
  199. package/dist/npm/src/models/transactions/NFTokenCreateOffer.js.map +1 -1
  200. package/dist/npm/src/models/transactions/NFTokenMint.d.ts +4 -0
  201. package/dist/npm/src/models/transactions/NFTokenMint.d.ts.map +1 -1
  202. package/dist/npm/src/models/transactions/NFTokenMint.js +1 -1
  203. package/dist/npm/src/models/transactions/NFTokenMint.js.map +1 -1
  204. package/dist/npm/src/models/transactions/XChainModifyBridge.js +1 -1
  205. package/dist/npm/src/models/transactions/XChainModifyBridge.js.map +1 -1
  206. package/dist/npm/src/models/transactions/accountSet.js +2 -2
  207. package/dist/npm/src/models/transactions/accountSet.js.map +1 -1
  208. package/dist/npm/src/models/transactions/enableAmendment.js +1 -1
  209. package/dist/npm/src/models/transactions/enableAmendment.js.map +1 -1
  210. package/dist/npm/src/models/transactions/index.d.ts +1 -1
  211. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  212. package/dist/npm/src/models/transactions/index.js.map +1 -1
  213. package/dist/npm/src/models/transactions/metadata.d.ts +9 -1
  214. package/dist/npm/src/models/transactions/metadata.d.ts.map +1 -1
  215. package/dist/npm/src/models/transactions/metadata.js.map +1 -1
  216. package/dist/npm/src/models/transactions/offerCreate.js +1 -1
  217. package/dist/npm/src/models/transactions/offerCreate.js.map +1 -1
  218. package/dist/npm/src/models/transactions/payment.d.ts +5 -0
  219. package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
  220. package/dist/npm/src/models/transactions/payment.js +1 -1
  221. package/dist/npm/src/models/transactions/payment.js.map +1 -1
  222. package/dist/npm/src/models/transactions/paymentChannelClaim.js +1 -1
  223. package/dist/npm/src/models/transactions/paymentChannelClaim.js.map +1 -1
  224. package/dist/npm/src/models/transactions/transaction.d.ts +6 -4
  225. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  226. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  227. package/dist/npm/src/models/transactions/trustSet.js +1 -1
  228. package/dist/npm/src/models/transactions/trustSet.js.map +1 -1
  229. package/dist/npm/src/sugar/autofill.d.ts +6 -2
  230. package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
  231. package/dist/npm/src/sugar/autofill.js +9 -28
  232. package/dist/npm/src/sugar/autofill.js.map +1 -1
  233. package/dist/npm/src/sugar/balances.d.ts +2 -17
  234. package/dist/npm/src/sugar/balances.d.ts.map +1 -1
  235. package/dist/npm/src/sugar/balances.js +2 -60
  236. package/dist/npm/src/sugar/balances.js.map +1 -1
  237. package/dist/npm/src/sugar/getOrderbook.d.ts +19 -5
  238. package/dist/npm/src/sugar/getOrderbook.d.ts.map +1 -1
  239. package/dist/npm/src/sugar/getOrderbook.js +72 -53
  240. package/dist/npm/src/sugar/getOrderbook.js.map +1 -1
  241. package/dist/npm/src/sugar/index.d.ts +0 -4
  242. package/dist/npm/src/sugar/index.d.ts.map +1 -1
  243. package/dist/npm/src/sugar/index.js +0 -13
  244. package/dist/npm/src/sugar/index.js.map +1 -1
  245. package/dist/npm/src/sugar/submit.d.ts +7 -11
  246. package/dist/npm/src/sugar/submit.d.ts.map +1 -1
  247. package/dist/npm/src/sugar/submit.js +5 -22
  248. package/dist/npm/src/sugar/submit.js.map +1 -1
  249. package/dist/npm/src/utils/collections.d.ts +5 -0
  250. package/dist/npm/src/utils/collections.d.ts.map +1 -0
  251. package/dist/npm/src/utils/collections.js +24 -0
  252. package/dist/npm/src/utils/collections.js.map +1 -0
  253. package/dist/npm/src/utils/getBalanceChanges.d.ts.map +1 -1
  254. package/dist/npm/src/utils/getBalanceChanges.js +3 -4
  255. package/dist/npm/src/utils/getBalanceChanges.js.map +1 -1
  256. package/dist/npm/src/utils/getNFTokenID.d.ts.map +1 -1
  257. package/dist/npm/src/utils/getNFTokenID.js +8 -8
  258. package/dist/npm/src/utils/getNFTokenID.js.map +1 -1
  259. package/dist/npm/src/utils/hashes/SHAMap/node.js +1 -1
  260. package/dist/npm/src/utils/hashes/SHAMap/node.js.map +1 -1
  261. package/dist/npm/src/utils/hashes/hashLedger.d.ts +1 -2
  262. package/dist/npm/src/utils/hashes/hashLedger.d.ts.map +1 -1
  263. package/dist/npm/src/utils/hashes/hashLedger.js +7 -7
  264. package/dist/npm/src/utils/hashes/hashLedger.js.map +1 -1
  265. package/dist/npm/src/utils/hashes/index.d.ts.map +1 -1
  266. package/dist/npm/src/utils/hashes/index.js +3 -2
  267. package/dist/npm/src/utils/hashes/index.js.map +1 -1
  268. package/dist/npm/src/utils/hashes/sha512Half.d.ts.map +1 -1
  269. package/dist/npm/src/utils/hashes/sha512Half.js +4 -7
  270. package/dist/npm/src/utils/hashes/sha512Half.js.map +1 -1
  271. package/dist/npm/src/utils/index.d.ts.map +1 -1
  272. package/dist/npm/src/utils/index.js +6 -29
  273. package/dist/npm/src/utils/index.js.map +1 -1
  274. package/dist/npm/src/utils/parseNFTokenID.d.ts.map +1 -1
  275. package/dist/npm/src/utils/parseNFTokenID.js +2 -1
  276. package/dist/npm/src/utils/parseNFTokenID.js.map +1 -1
  277. package/dist/npm/src/utils/stringConversion.d.ts +1 -2
  278. package/dist/npm/src/utils/stringConversion.d.ts.map +1 -1
  279. package/dist/npm/src/utils/stringConversion.js +3 -2
  280. package/dist/npm/src/utils/stringConversion.js.map +1 -1
  281. package/dist/npm/src/utils/xrpConversion.d.ts +1 -1
  282. package/dist/npm/src/utils/xrpConversion.js +1 -1
  283. package/dist/npm/src/utils/xrpConversion.js.map +1 -1
  284. package/dist/npm/sugar/autofill.d.ts +6 -2
  285. package/dist/npm/sugar/autofill.d.ts.map +1 -1
  286. package/dist/npm/sugar/autofill.js +9 -28
  287. package/dist/npm/sugar/autofill.js.map +1 -1
  288. package/dist/npm/sugar/balances.d.ts +2 -17
  289. package/dist/npm/sugar/balances.d.ts.map +1 -1
  290. package/dist/npm/sugar/balances.js +2 -60
  291. package/dist/npm/sugar/balances.js.map +1 -1
  292. package/dist/npm/sugar/getOrderbook.d.ts +19 -5
  293. package/dist/npm/sugar/getOrderbook.d.ts.map +1 -1
  294. package/dist/npm/sugar/getOrderbook.js +72 -53
  295. package/dist/npm/sugar/getOrderbook.js.map +1 -1
  296. package/dist/npm/sugar/index.d.ts +0 -4
  297. package/dist/npm/sugar/index.d.ts.map +1 -1
  298. package/dist/npm/sugar/index.js +0 -13
  299. package/dist/npm/sugar/index.js.map +1 -1
  300. package/dist/npm/sugar/submit.d.ts +7 -11
  301. package/dist/npm/sugar/submit.d.ts.map +1 -1
  302. package/dist/npm/sugar/submit.js +5 -22
  303. package/dist/npm/sugar/submit.js.map +1 -1
  304. package/dist/npm/utils/collections.d.ts +5 -0
  305. package/dist/npm/utils/collections.d.ts.map +1 -0
  306. package/dist/npm/utils/collections.js +24 -0
  307. package/dist/npm/utils/collections.js.map +1 -0
  308. package/dist/npm/utils/getBalanceChanges.d.ts.map +1 -1
  309. package/dist/npm/utils/getBalanceChanges.js +3 -4
  310. package/dist/npm/utils/getBalanceChanges.js.map +1 -1
  311. package/dist/npm/utils/getNFTokenID.d.ts.map +1 -1
  312. package/dist/npm/utils/getNFTokenID.js +8 -8
  313. package/dist/npm/utils/getNFTokenID.js.map +1 -1
  314. package/dist/npm/utils/hashes/SHAMap/node.js +1 -1
  315. package/dist/npm/utils/hashes/SHAMap/node.js.map +1 -1
  316. package/dist/npm/utils/hashes/hashLedger.d.ts +1 -2
  317. package/dist/npm/utils/hashes/hashLedger.d.ts.map +1 -1
  318. package/dist/npm/utils/hashes/hashLedger.js +7 -7
  319. package/dist/npm/utils/hashes/hashLedger.js.map +1 -1
  320. package/dist/npm/utils/hashes/index.d.ts.map +1 -1
  321. package/dist/npm/utils/hashes/index.js +3 -2
  322. package/dist/npm/utils/hashes/index.js.map +1 -1
  323. package/dist/npm/utils/hashes/sha512Half.d.ts.map +1 -1
  324. package/dist/npm/utils/hashes/sha512Half.js +4 -7
  325. package/dist/npm/utils/hashes/sha512Half.js.map +1 -1
  326. package/dist/npm/utils/index.d.ts.map +1 -1
  327. package/dist/npm/utils/index.js +6 -29
  328. package/dist/npm/utils/index.js.map +1 -1
  329. package/dist/npm/utils/parseNFTokenID.d.ts.map +1 -1
  330. package/dist/npm/utils/parseNFTokenID.js +2 -1
  331. package/dist/npm/utils/parseNFTokenID.js.map +1 -1
  332. package/dist/npm/utils/stringConversion.d.ts +1 -2
  333. package/dist/npm/utils/stringConversion.d.ts.map +1 -1
  334. package/dist/npm/utils/stringConversion.js +3 -2
  335. package/dist/npm/utils/stringConversion.js.map +1 -1
  336. package/dist/npm/utils/xrpConversion.d.ts +1 -1
  337. package/dist/npm/utils/xrpConversion.js +1 -1
  338. package/dist/npm/utils/xrpConversion.js.map +1 -1
  339. package/package.json +23 -25
  340. package/src/Wallet/authorizeChannel.ts +26 -0
  341. package/src/Wallet/fundWallet.ts +153 -214
  342. package/src/Wallet/index.ts +28 -25
  343. package/src/Wallet/rfc1751.ts +45 -16
  344. package/src/Wallet/signer.ts +34 -44
  345. package/src/Wallet/walletFromSecretNumbers.ts +1 -1
  346. package/src/client/RequestManager.ts +40 -14
  347. package/src/client/connection.ts +26 -93
  348. package/src/client/index.ts +706 -274
  349. package/src/client/partialPayment.ts +16 -14
  350. package/src/errors.ts +1 -3
  351. package/src/index.ts +1 -3
  352. package/src/models/ledger/Ledger.ts +3 -9
  353. package/src/models/methods/index.ts +177 -0
  354. package/src/models/methods/ledger.ts +149 -20
  355. package/src/models/methods/submit.ts +2 -2
  356. package/src/models/methods/subscribe.ts +36 -0
  357. package/src/models/methods/tx.ts +3 -5
  358. package/src/models/transactions/NFTokenAcceptOffer.ts +6 -0
  359. package/src/models/transactions/NFTokenCancelOffer.ts +6 -0
  360. package/src/models/transactions/NFTokenCreateOffer.ts +6 -0
  361. package/src/models/transactions/NFTokenMint.ts +6 -0
  362. package/src/models/transactions/index.ts +1 -0
  363. package/src/models/transactions/metadata.ts +31 -1
  364. package/src/models/transactions/payment.ts +6 -0
  365. package/src/models/transactions/transaction.ts +21 -5
  366. package/src/sugar/autofill.ts +84 -88
  367. package/src/sugar/balances.ts +8 -116
  368. package/src/sugar/getOrderbook.ts +138 -61
  369. package/src/sugar/index.ts +0 -8
  370. package/src/sugar/submit.ts +128 -140
  371. package/src/utils/collections.ts +57 -0
  372. package/src/utils/getBalanceChanges.ts +2 -3
  373. package/src/utils/getNFTokenID.ts +18 -16
  374. package/src/utils/hashes/hashLedger.ts +7 -9
  375. package/src/utils/hashes/index.ts +3 -2
  376. package/src/utils/hashes/sha512Half.ts +4 -7
  377. package/src/utils/index.ts +12 -6
  378. package/src/utils/parseNFTokenID.ts +2 -1
  379. package/src/utils/stringConversion.ts +11 -6
  380. package/src/utils/xrpConversion.ts +2 -2
  381. package/dist/npm/client/BroadcastClient.d.ts +0 -7
  382. package/dist/npm/client/BroadcastClient.d.ts.map +0 -1
  383. package/dist/npm/client/BroadcastClient.js +0 -49
  384. package/dist/npm/client/BroadcastClient.js.map +0 -1
  385. package/dist/npm/client/WSWrapper.d.ts +0 -25
  386. package/dist/npm/client/WSWrapper.d.ts.map +0 -1
  387. package/dist/npm/client/WSWrapper.js +0 -44
  388. package/dist/npm/client/WSWrapper.js.map +0 -1
  389. package/dist/npm/src/client/BroadcastClient.d.ts +0 -7
  390. package/dist/npm/src/client/BroadcastClient.d.ts.map +0 -1
  391. package/dist/npm/src/client/BroadcastClient.js +0 -49
  392. package/dist/npm/src/client/BroadcastClient.js.map +0 -1
  393. package/dist/npm/src/client/WSWrapper.d.ts +0 -25
  394. package/dist/npm/src/client/WSWrapper.d.ts.map +0 -1
  395. package/dist/npm/src/client/WSWrapper.js +0 -44
  396. package/dist/npm/src/client/WSWrapper.js.map +0 -1
  397. package/dist/npm/src/sugar/getLedgerIndex.d.ts +0 -3
  398. package/dist/npm/src/sugar/getLedgerIndex.d.ts.map +0 -1
  399. package/dist/npm/src/sugar/getLedgerIndex.js +0 -22
  400. package/dist/npm/src/sugar/getLedgerIndex.js.map +0 -1
  401. package/dist/npm/sugar/getLedgerIndex.d.ts +0 -3
  402. package/dist/npm/sugar/getLedgerIndex.d.ts.map +0 -1
  403. package/dist/npm/sugar/getLedgerIndex.js +0 -22
  404. package/dist/npm/sugar/getLedgerIndex.js.map +0 -1
  405. package/src/client/BroadcastClient.ts +0 -84
  406. package/src/client/WSWrapper.ts +0 -106
  407. package/src/sugar/getLedgerIndex.ts +0 -15
@@ -23,7 +23,7 @@ function dropsToXrp(dropsToConvert) {
23
23
  ` value '${drops}',` +
24
24
  ` does not match (^-?[0-9]+$).`);
25
25
  }
26
- return new bignumber_js_1.default(drops).dividedBy(DROPS_PER_XRP).toString(BASE_TEN);
26
+ return new bignumber_js_1.default(drops).dividedBy(DROPS_PER_XRP).toNumber();
27
27
  }
28
28
  exports.dropsToXrp = dropsToXrp;
29
29
  function xrpToDrops(xrpToConvert) {
@@ -1 +1 @@
1
- {"version":3,"file":"xrpConversion.js","sourceRoot":"","sources":["../../../src/utils/xrpConversion.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAoC;AAEpC,sCAA2C;AAE3C,MAAM,aAAa,GAAG,SAAS,CAAA;AAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAC7B,MAAM,QAAQ,GAAG,EAAE,CAAA;AACnB,MAAM,YAAY,GAAG,cAAc,CAAA;AAUnC,SAAgB,UAAU,CAAC,cAA+B;IAMxD,MAAM,KAAK,GAAG,IAAI,sBAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAG9D,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;QACzD,MAAM,IAAI,wBAAe,CACvB,8BAA8B,cAAc,oDAAoD,CACjG,CAAA;KACF;IAGD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,IAAI,wBAAe,CACvB,sBAAsB,KAAK,gCAAgC,CAC5D,CAAA;KACF;IAOD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI,wBAAe,CACvB,mCAAmC;YACjC,WAAW,KAAK,IAAI;YACpB,+BAA+B,CAClC,CAAA;KACF;IAED,OAAO,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACzE,CAAC;AApCD,gCAoCC;AAUD,SAAgB,UAAU,CAAC,YAA6B;IAEtD,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAG1D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,EAAE;QACrD,MAAM,IAAI,wBAAe,CACvB,8BAA8B,YAAY,oDAAoD,CAC/F,CAAA;KACF;IAOD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,wBAAe,CACvB,4CAA4C,GAAG,kCAAkC,CAClF,CAAA;KACF;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,wBAAe,CACvB,4CAA4C,GAAG,gCAAgC,CAChF,CAAA;KACF;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE;QACzC,MAAM,IAAI,wBAAe,CACvB,sBAAsB,GAAG,gCAAgC,CAC1D,CAAA;KACF;IAED,OAAO,IAAI,sBAAS,CAAC,GAAG,CAAC;SACtB,KAAK,CAAC,aAAa,CAAC;SACpB,YAAY,CAAC,sBAAS,CAAC,WAAW,CAAC;SACnC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC;AAxCD,gCAwCC"}
1
+ {"version":3,"file":"xrpConversion.js","sourceRoot":"","sources":["../../../src/utils/xrpConversion.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAoC;AAEpC,sCAA2C;AAE3C,MAAM,aAAa,GAAG,SAAS,CAAA;AAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAC7B,MAAM,QAAQ,GAAG,EAAE,CAAA;AACnB,MAAM,YAAY,GAAG,cAAc,CAAA;AAUnC,SAAgB,UAAU,CAAC,cAA+B;IAMxD,MAAM,KAAK,GAAG,IAAI,sBAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAG9D,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;QACzD,MAAM,IAAI,wBAAe,CACvB,8BAA8B,cAAc,oDAAoD,CACjG,CAAA;KACF;IAGD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,IAAI,wBAAe,CACvB,sBAAsB,KAAK,gCAAgC,CAC5D,CAAA;KACF;IAOD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI,wBAAe,CACvB,mCAAmC;YACjC,WAAW,KAAK,IAAI;YACpB,+BAA+B,CAClC,CAAA;KACF;IAED,OAAO,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAA;AACjE,CAAC;AApCD,gCAoCC;AAUD,SAAgB,UAAU,CAAC,YAA6B;IAEtD,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAG1D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,EAAE;QACrD,MAAM,IAAI,wBAAe,CACvB,8BAA8B,YAAY,oDAAoD,CAC/F,CAAA;KACF;IAOD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,wBAAe,CACvB,4CAA4C,GAAG,kCAAkC,CAClF,CAAA;KACF;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,wBAAe,CACvB,4CAA4C,GAAG,gCAAgC,CAChF,CAAA;KACF;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE;QACzC,MAAM,IAAI,wBAAe,CACvB,sBAAsB,GAAG,gCAAgC,CAC1D,CAAA;KACF;IAED,OAAO,IAAI,sBAAS,CAAC,GAAG,CAAC;SACtB,KAAK,CAAC,aAAa,CAAC;SACpB,YAAY,CAAC,sBAAS,CAAC,WAAW,CAAC;SACnC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC;AAxCD,gCAwCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xrpl",
3
- "version": "2.14.0",
3
+ "version": "3.0.0-beta.1",
4
4
  "license": "ISC",
5
5
  "description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
6
6
  "files": [
@@ -19,35 +19,33 @@
19
19
  "test": "test"
20
20
  },
21
21
  "browser": {
22
- "ws": "./dist/npm/client/WSWrapper.js",
23
- "https-proxy-agent": false
22
+ "ws": "./dist/npm/client/WSWrapper.js"
24
23
  },
25
24
  "dependencies": {
25
+ "@scure/bip32": "^1.3.1",
26
+ "@scure/bip39": "^1.2.1",
27
+ "@xrplf/isomorphic": "^1.0.0-beta.1",
28
+ "@xrplf/secret-numbers": "^1.0.0-beta.1",
26
29
  "bignumber.js": "^9.0.0",
27
- "bip32": "^2.0.6",
28
- "bip39": "^3.0.4",
29
- "https-proxy-agent": "^5.0.0",
30
- "lodash": "^4.17.4",
31
- "ripple-address-codec": "^4.3.1",
32
- "ripple-binary-codec": "^1.11.0",
33
- "ripple-keypairs": "^1.3.1",
34
- "ws": "^8.2.2",
35
- "xrpl-secret-numbers": "^0.3.3"
30
+ "cross-fetch": "^4.0.0",
31
+ "eventemitter3": "^5.0.1",
32
+ "ripple-address-codec": "^5.0.0-beta.1",
33
+ "ripple-binary-codec": "^2.0.0-beta.1",
34
+ "ripple-keypairs": "^2.0.0-beta.1"
36
35
  },
37
36
  "devDependencies": {
38
- "@geut/browser-node-core": "^2.0.13",
39
- "@types/node": "^14.18.36",
40
- "assert-browserify": "^2.0.0",
41
- "browserify-fs": "^1.0.0",
42
- "constants-browserify": "^1.0.0",
43
- "https-browserify": "^1.0.0",
37
+ "@types/node": "^16.18.38",
38
+ "eventemitter3": "^5.0.1",
39
+ "https-proxy-agent": "^7.0.1",
44
40
  "karma": "^6.4.1",
45
41
  "karma-chrome-launcher": "^3.1.1",
46
42
  "karma-jasmine": "^5.1.0",
47
43
  "karma-webpack": "^5.0.0",
48
- "node-polyfill-webpack-plugin": "^2.0.1",
44
+ "lodash": "^4.17.4",
49
45
  "react": "^18.2.0",
50
- "typedoc": "0.25.0"
46
+ "run-s": "^0.0.0",
47
+ "typedoc": "0.25.0",
48
+ "ws": "^8.14.2"
51
49
  },
52
50
  "resolutions": {
53
51
  "elliptic": "^6.5.4"
@@ -58,15 +56,15 @@
58
56
  "build:lib": "tsc --build tsconfig.build.json",
59
57
  "build:web": "webpack",
60
58
  "build:browserTests": "webpack --config ./test/webpack.config.js",
61
- "analyze": "run-s build:web --analyze",
59
+ "analyze": "webpack --analyze",
62
60
  "watch": "run-s build:lib --watch",
63
- "clean": "rm -rf dist build coverage",
61
+ "clean": "rm -rf ./dist ./coverage ./test/testCompiledForWeb tsconfig.build.tsbuildinfo",
64
62
  "docgen": "tsc --build tsconfig.docs.json && typedoc && echo js.xrpl.org >> ../../docs/CNAME",
65
63
  "prepare": "copyfiles ../../README.md xrpl/README.md",
66
64
  "prepublish": "run-s clean build",
67
65
  "test": "jest --config=jest.config.unit.js --verbose false --silent=false",
68
66
  "test:integration": "TS_NODE_PROJECT=tsconfig.build.json jest --config=jest.config.integration.js --verbose false --silent=false --runInBand",
69
- "test:browser": "npm run build && npm run build:browserTests && karma start ./karma.config.js --single-run",
67
+ "test:browser": "npm run build && npm run build:browserTests && karma start ./karma.config.js",
70
68
  "test:watch": "jest --watch --verbose false --silent=false --runInBand ./test/**/*.test.ts --testPathIgnorePatterns=./test/integration --testPathIgnorePatterns=./test/fixtures",
71
69
  "format": "prettier --write '{src,test}/**/*.ts'",
72
70
  "lint": "eslint . --ext .ts --max-warnings 0",
@@ -89,7 +87,7 @@
89
87
  "xrpl"
90
88
  ],
91
89
  "engines": {
92
- "node": ">=10.13.0"
90
+ "node": ">=16.0.0"
93
91
  },
94
- "gitHead": "99dd0eb44c00b6a4e934467a68036f15320ae69b"
92
+ "gitHead": "279bc1d15c522cfad0bffddcae24053fa609f7fe"
95
93
  }
@@ -0,0 +1,26 @@
1
+ import { encodeForSigningClaim } from 'ripple-binary-codec'
2
+ import { sign } from 'ripple-keypairs'
3
+
4
+ import { Wallet } from './index'
5
+
6
+ /**
7
+ * Creates a signature that can be used to redeem a specific amount of XRP from a payment channel.
8
+ *
9
+ * @param wallet - The account that will sign for this payment channel.
10
+ * @param channelId - An id for the payment channel to redeem XRP from.
11
+ * @param amount - The amount in drops to redeem.
12
+ * @returns A signature that can be used to redeem a specific amount of XRP from a payment channel.
13
+ * @category Utilities
14
+ */
15
+ export function authorizeChannel(
16
+ wallet: Wallet,
17
+ channelId: string,
18
+ amount: string,
19
+ ): string {
20
+ const signingData = encodeForSigningClaim({
21
+ channel: channelId,
22
+ amount,
23
+ })
24
+
25
+ return sign(signingData, wallet.privateKey)
26
+ }
@@ -1,10 +1,8 @@
1
- import { IncomingMessage } from 'http'
2
- import { request as httpsRequest, RequestOptions } from 'https'
3
-
1
+ import fetch from 'cross-fetch'
4
2
  import { isValidClassicAddress } from 'ripple-address-codec'
5
3
 
6
4
  import type { Client } from '../client'
7
- import { RippledError, XRPLFaucetError } from '../errors'
5
+ import { XRPLFaucetError } from '../errors'
8
6
 
9
7
  import {
10
8
  FaucetWallet,
@@ -19,55 +17,105 @@ const INTERVAL_SECONDS = 1
19
17
  // Maximum attempts to retrieve a balance
20
18
  const MAX_ATTEMPTS = 20
21
19
 
20
+ export interface FundingOptions {
21
+ /**
22
+ * A custom amount to fund, if undefined or null, the default amount will be 1000.
23
+ */
24
+ amount?: string
25
+ /**
26
+ * A custom host for a faucet server. On devnet, testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will
27
+ * attempt to determine the correct server automatically. In other environments, or if you would like to customize
28
+ * the faucet host in devnet or testnet, you should provide the host using this option.
29
+ */
30
+ faucetHost?: string
31
+ /**
32
+ * A custom path for a faucet server. On devnet,
33
+ * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will
34
+ * attempt to determine the correct path automatically. In other environments,
35
+ * or if you would like to customize the faucet path in devnet or testnet,
36
+ * you should provide the path using this option.
37
+ * Ex: client.fundWallet(null,{'faucet.altnet.rippletest.net', '/accounts'})
38
+ * specifies a request to 'faucet.altnet.rippletest.net/accounts' to fund a new wallet.
39
+ */
40
+ faucetPath?: string
41
+ /**
42
+ * An optional field to indicate the use case context of the faucet transaction
43
+ * Ex: integration test, code snippets.
44
+ */
45
+ usageContext?: string
46
+ }
47
+
22
48
  /**
23
- * The fundWallet() method is used to send an amount of XRP (usually 1000) to a new (randomly generated)
24
- * or existing XRP Ledger wallet.
25
- *
26
- * @example
27
- *
28
- * Example 1: Fund a randomly generated wallet
29
- * const { Client, Wallet } = require('xrpl')
30
- *
31
- * const client = new Client('wss://s.altnet.rippletest.net:51233')
32
- * await client.connect()
33
- * const { balance, wallet } = await client.fundWallet()
34
- *
35
- * Under the hood, this will use `Wallet.generate()` to create a new random wallet, then ask a testnet faucet
36
- * To send it XRP on ledger to make it a real account. If successful, this will return the new account balance in XRP
37
- * Along with the Wallet object to track the keys for that account. If you'd like, you can also re-fill an existing
38
- * Account by passing in a Wallet you already have.
39
- * ```ts
40
- * const api = new xrpl.Client("wss://s.altnet.rippletest.net:51233")
41
- * await api.connect()
42
- * const { wallet, balance } = await api.fundWallet()
43
- * ```
49
+ * Parameters to pass into a faucet request to fund an XRP account.
50
+ */
51
+ export interface FaucetRequestBody {
52
+ /**
53
+ * The address to fund. If no address is provided the faucet will fund a random account.
54
+ */
55
+ destination?: string
56
+ /**
57
+ * The total amount of XRP to fund the account with.
58
+ */
59
+ xrpAmount?: string
60
+ /**
61
+ * An optional field to indicate the use case context of the faucet transaction
62
+ * Ex: integration test, code snippets.
63
+ */
64
+ usageContext?: string
65
+ /**
66
+ * Information about the context of where the faucet is being called from.
67
+ * Ex: xrpl.js or xrpl-py
68
+ */
69
+ userAgent: string
70
+ }
71
+
72
+ /**
73
+ * Generate a new wallet to fund if no existing wallet is provided or its address is invalid.
44
74
  *
45
- * Example 2: Fund wallet using a custom faucet host and known wallet address
75
+ * @param wallet - Optional existing wallet.
76
+ * @returns The wallet to fund.
77
+ */
78
+ export function generateWalletToFund(wallet?: Wallet | null): Wallet {
79
+ if (wallet && isValidClassicAddress(wallet.classicAddress)) {
80
+ return wallet
81
+ }
82
+ return Wallet.generate()
83
+ }
84
+
85
+ /**
86
+ * Get the starting balance of the wallet.
46
87
  *
47
- * `fundWallet` will try to infer the url of a faucet API from the network your client is connected to.
48
- * There are hardcoded default faucets for popular test networks like testnet and devnet.
49
- * However, if you're working with a newer or more obscure network, you may have to specify the faucetHost
50
- * And faucetPath so `fundWallet` can ask that faucet to fund your wallet.
88
+ * @param client - The client object.
89
+ * @param classicAddress - The classic address of the wallet.
90
+ * @returns The starting balance.
91
+ */
92
+ export async function getStartingBalance(
93
+ client: Client,
94
+ classicAddress: string,
95
+ ): Promise<number> {
96
+ let startingBalance = 0
97
+ try {
98
+ startingBalance = Number(await client.getXrpBalance(classicAddress))
99
+ } catch {
100
+ // startingBalance remains '0'
101
+ }
102
+ return startingBalance
103
+ }
104
+
105
+ export interface FundWalletOptions {
106
+ faucetHost?: string
107
+ faucetPath?: string
108
+ amount?: string
109
+ usageContext?: string
110
+ }
111
+
112
+ /**
51
113
  *
52
- * ```ts
53
- * const newWallet = Wallet.generate()
54
- * const { balance, wallet } = await client.fundWallet(newWallet, {
55
- * amount: '10',
56
- * faucetHost: 'https://custom-faucet.example.com',
57
- * faucetPath: '/accounts'
58
- * })
59
- * console.log(`Sent 10 XRP to wallet: ${address} from the given faucet. Resulting balance: ${balance} XRP`)
60
- * } catch (error) {
61
- * console.error(`Failed to fund wallet: ${error}`)
62
- * }
63
- * }
64
- * ```
114
+ * Helper function to request funding from a faucet. Should not be called directly from outside the xrpl.js library.
65
115
  *
66
- * @param this - Client.
67
- * @param wallet - An existing XRPL Wallet to fund. If undefined or null, a new Wallet will be created.
68
- * @param options - See below.
116
+ * @param options - See below
69
117
  * @param options.faucetHost - A custom host for a faucet server. On devnet,
70
- * testnet, devnet, and HooksV3 testnet, `fundWallet` will
118
+ * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will
71
119
  * attempt to determine the correct server automatically. In other environments,
72
120
  * or if you would like to customize the faucet host in devnet or testnet,
73
121
  * you should provide the host using this option.
@@ -79,182 +127,69 @@ const MAX_ATTEMPTS = 20
79
127
  * Ex: client.fundWallet(null,{'faucet.altnet.rippletest.net', '/accounts'})
80
128
  * specifies a request to 'faucet.altnet.rippletest.net/accounts' to fund a new wallet.
81
129
  * @param options.amount - A custom amount to fund, if undefined or null, the default amount will be 1000.
82
- * @param options.usageContext - An optional field to indicate the use case context of the faucet transaction
83
- * Ex: integration test, code snippets.
84
- * @returns A Wallet on the Testnet or Devnet that contains some amount of XRP,
85
- * and that wallet's balance in XRP.
86
- * @throws When either Client isn't connected or unable to fund wallet address.
130
+ * @param client - A connection to the XRPL to send requests and transactions.
131
+ * @param startingBalance - The amount of XRP in the given walletToFund on ledger already.
132
+ * @param walletToFund - An existing XRPL Wallet to fund.
133
+ * @param postBody - The content to send the faucet to indicate which address to fund, how much to fund it, and
134
+ * where the request is coming from.
135
+ * @returns A promise that resolves to a funded wallet and the balance within it.
87
136
  */
88
- // eslint-disable-next-line max-lines-per-function -- All lines necessary
89
- async function fundWallet(
90
- this: Client,
91
- wallet?: Wallet | null,
92
- options?: {
93
- faucetHost?: string
94
- faucetPath?: string
95
- amount?: string
96
- usageContext?: string
97
- },
98
- ): Promise<{
99
- wallet: Wallet
100
- balance: number
101
- }> {
102
- if (!this.isConnected()) {
103
- throw new RippledError('Client not connected, cannot call faucet')
104
- }
105
-
106
- // Generate a new Wallet if no existing Wallet is provided or its address is invalid to fund
107
- const walletToFund =
108
- wallet && isValidClassicAddress(wallet.classicAddress)
109
- ? wallet
110
- : Wallet.generate()
111
-
112
- // Create the POST request body
113
- const postBody = Buffer.from(
114
- new TextEncoder().encode(
115
- JSON.stringify({
116
- destination: walletToFund.classicAddress,
117
- xrpAmount: options?.amount,
118
- userAgent: 'xrpl.js',
119
- usageContext: options?.usageContext,
120
- }),
121
- ),
122
- )
123
-
124
- let startingBalance = 0
125
- try {
126
- startingBalance = Number(
127
- await this.getXrpBalance(walletToFund.classicAddress),
128
- )
129
- } catch {
130
- /* startingBalance remains '0' */
131
- }
132
- // Options to pass to https.request
133
- const httpOptions = getHTTPOptions(this, postBody, {
134
- hostname: options?.faucetHost,
135
- pathname: options?.faucetPath,
136
- })
137
-
138
- return returnPromise(
139
- httpOptions,
140
- this,
141
- startingBalance,
142
- walletToFund,
143
- postBody,
144
- )
145
- }
146
-
147
137
  // eslint-disable-next-line max-params -- Helper function created for organizational purposes
148
- async function returnPromise(
149
- options: RequestOptions,
138
+ export async function requestFunding(
139
+ options: FundingOptions,
150
140
  client: Client,
151
141
  startingBalance: number,
152
142
  walletToFund: Wallet,
153
- postBody: Buffer,
143
+ postBody: FaucetRequestBody,
154
144
  ): Promise<{
155
145
  wallet: Wallet
156
146
  balance: number
157
147
  }> {
158
- return new Promise((resolve, reject) => {
159
- const request = httpsRequest(options, (response) => {
160
- const chunks: Uint8Array[] = []
161
- response.on('data', (data) => chunks.push(data))
162
- // eslint-disable-next-line @typescript-eslint/no-misused-promises -- not actually misused, different resolve/reject
163
- response.on('end', async () =>
164
- onEnd(
165
- response,
166
- chunks,
167
- client,
168
- startingBalance,
169
- walletToFund,
170
- resolve,
171
- reject,
172
- ),
173
- )
174
- })
175
- // POST the body
176
- request.write(postBody)
177
-
178
- request.on('error', (error) => {
179
- reject(error)
180
- })
181
-
182
- request.end()
183
- })
184
- }
185
-
186
- function getHTTPOptions(
187
- client: Client,
188
- postBody: Uint8Array,
189
- options?: {
190
- hostname?: string
191
- pathname?: string
192
- },
193
- ): RequestOptions {
194
- const finalHostname = options?.hostname ?? getFaucetHost(client)
195
- const finalPathname = options?.pathname ?? getDefaultFaucetPath(finalHostname)
196
- return {
197
- hostname: finalHostname,
198
- port: 443,
199
- path: finalPathname,
148
+ const hostname = options.faucetHost ?? getFaucetHost(client)
149
+ if (!hostname) {
150
+ throw new XRPLFaucetError('No faucet hostname could be derived')
151
+ }
152
+ const pathname = options.faucetPath ?? getDefaultFaucetPath(hostname)
153
+ const response = await fetch(`https://${hostname}${pathname}`, {
200
154
  method: 'POST',
201
155
  headers: {
202
156
  'Content-Type': 'application/json',
203
- 'Content-Length': postBody.length,
204
157
  },
205
- }
206
- }
207
-
208
- // eslint-disable-next-line max-params -- Helper function created for organizational purposes
209
- async function onEnd(
210
- response: IncomingMessage,
211
- chunks: Uint8Array[],
212
- client: Client,
213
- startingBalance: number,
214
- walletToFund: Wallet,
215
- resolve: (response: { wallet: Wallet; balance: number }) => void,
216
- reject: (err: ErrorConstructor | Error | unknown) => void,
217
- ): Promise<void> {
218
- const body = Buffer.concat(chunks).toString()
158
+ body: JSON.stringify(postBody),
159
+ })
219
160
 
220
- // "application/json; charset=utf-8"
221
- if (response.headers['content-type']?.startsWith('application/json')) {
222
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We know this is safe and correct
223
- const faucetWallet: FaucetWallet = JSON.parse(body)
224
- const classicAddress = faucetWallet.account.classicAddress
225
- await processSuccessfulResponse(
161
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- it can be anything
162
+ const body = await response.json()
163
+ if (
164
+ response.ok &&
165
+ response.headers.get('Content-Type')?.startsWith('application/json')
166
+ ) {
167
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- It's a FaucetWallet
168
+ const classicAddress = (body as FaucetWallet).account.classicAddress
169
+ return processSuccessfulResponse(
226
170
  client,
227
171
  classicAddress,
228
172
  walletToFund,
229
173
  startingBalance,
230
- resolve,
231
- reject,
232
- )
233
- } else {
234
- reject(
235
- new XRPLFaucetError(
236
- `Content type is not \`application/json\`: ${JSON.stringify({
237
- statusCode: response.statusCode,
238
- contentType: response.headers['content-type'],
239
- body,
240
- })}`,
241
- ),
242
174
  )
243
175
  }
176
+ return processError(response, body)
244
177
  }
245
178
 
246
- // eslint-disable-next-line max-params, max-lines-per-function -- Only used as a helper function, lines inc due to added balance.
179
+ // eslint-disable-next-line max-params -- Only used as a helper function, lines inc due to added balance.
247
180
  async function processSuccessfulResponse(
248
181
  client: Client,
249
182
  classicAddress: string | undefined,
250
183
  walletToFund: Wallet,
251
184
  startingBalance: number,
252
- resolve: (response: { wallet: Wallet; balance: number }) => void,
253
- reject: (err: ErrorConstructor | Error | unknown) => void,
254
- ): Promise<void> {
185
+ ): Promise<{
186
+ wallet: Wallet
187
+ balance: number
188
+ }> {
255
189
  if (!classicAddress) {
256
- reject(new XRPLFaucetError(`The faucet account is undefined`))
257
- return
190
+ return Promise.reject(
191
+ new XRPLFaucetError(`The faucet account is undefined`),
192
+ )
258
193
  }
259
194
  try {
260
195
  // Check at regular interval if the address is enabled on the XRPL and funded
@@ -265,31 +200,37 @@ async function processSuccessfulResponse(
265
200
  )
266
201
 
267
202
  if (updatedBalance > startingBalance) {
268
- resolve({
203
+ return {
269
204
  wallet: walletToFund,
270
- balance: await getUpdatedBalance(
271
- client,
272
- walletToFund.classicAddress,
273
- startingBalance,
274
- ),
275
- })
276
- } else {
277
- reject(
278
- new XRPLFaucetError(
279
- `Unable to fund address with faucet after waiting ${
280
- INTERVAL_SECONDS * MAX_ATTEMPTS
281
- } seconds`,
282
- ),
283
- )
205
+ balance: updatedBalance,
206
+ }
284
207
  }
208
+ throw new XRPLFaucetError(
209
+ `Unable to fund address with faucet after waiting ${
210
+ INTERVAL_SECONDS * MAX_ATTEMPTS
211
+ } seconds`,
212
+ )
285
213
  } catch (err) {
286
214
  if (err instanceof Error) {
287
- reject(new XRPLFaucetError(err.message))
215
+ throw new XRPLFaucetError(err.message)
288
216
  }
289
- reject(err)
217
+ throw err
290
218
  }
291
219
  }
292
220
 
221
+ async function processError(response: Response, body): Promise<never> {
222
+ return Promise.reject(
223
+ new XRPLFaucetError(
224
+ `Request failed: ${JSON.stringify({
225
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- json response could be anything
226
+ body: body || {},
227
+ contentType: response.headers.get('Content-Type'),
228
+ statusCode: response.status,
229
+ })}`,
230
+ ),
231
+ )
232
+ }
233
+
293
234
  /**
294
235
  * Check at regular interval if the address is enabled on the XRPL and funded.
295
236
  *
@@ -340,5 +281,3 @@ async function getUpdatedBalance(
340
281
  }, INTERVAL_SECONDS * 1000)
341
282
  })
342
283
  }
343
-
344
- export default fundWallet