xrpl 2.10.0 → 2.12.0-beta.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 (414) hide show
  1. package/build/xrpl-latest-min.js +1 -1
  2. package/build/xrpl-latest-min.js.map +1 -1
  3. package/build/xrpl-latest.js +1308 -33
  4. package/build/xrpl-latest.js.map +1 -1
  5. package/dist/npm/Wallet/walletFromSecretNumbers.d.ts +7 -0
  6. package/dist/npm/Wallet/walletFromSecretNumbers.d.ts.map +1 -0
  7. package/dist/npm/Wallet/walletFromSecretNumbers.js +27 -0
  8. package/dist/npm/Wallet/walletFromSecretNumbers.js.map +1 -0
  9. package/dist/npm/client/index.d.ts +2 -1
  10. package/dist/npm/client/index.d.ts.map +1 -1
  11. package/dist/npm/client/index.js.map +1 -1
  12. package/dist/npm/index.d.ts +1 -0
  13. package/dist/npm/index.d.ts.map +1 -1
  14. package/dist/npm/index.js +3 -1
  15. package/dist/npm/index.js.map +1 -1
  16. package/dist/npm/models/common/index.d.ts +11 -0
  17. package/dist/npm/models/common/index.d.ts.map +1 -1
  18. package/dist/npm/models/ledger/AMM.d.ts +27 -0
  19. package/dist/npm/models/ledger/AMM.d.ts.map +1 -0
  20. package/dist/npm/models/ledger/AMM.js +3 -0
  21. package/dist/npm/models/ledger/AMM.js.map +1 -0
  22. package/dist/npm/models/ledger/AccountRoot.d.ts +2 -0
  23. package/dist/npm/models/ledger/AccountRoot.d.ts.map +1 -1
  24. package/dist/npm/models/ledger/AccountRoot.js +1 -0
  25. package/dist/npm/models/ledger/AccountRoot.js.map +1 -1
  26. package/dist/npm/models/ledger/Bridge.d.ts +17 -0
  27. package/dist/npm/models/ledger/Bridge.d.ts.map +1 -0
  28. package/dist/npm/models/ledger/Bridge.js +3 -0
  29. package/dist/npm/models/ledger/Bridge.js.map +1 -0
  30. package/dist/npm/models/ledger/LedgerEntry.d.ts +5 -1
  31. package/dist/npm/models/ledger/LedgerEntry.d.ts.map +1 -1
  32. package/dist/npm/models/ledger/XChainOwnedClaimID.d.ts +16 -0
  33. package/dist/npm/models/ledger/XChainOwnedClaimID.d.ts.map +1 -0
  34. package/dist/npm/models/ledger/XChainOwnedClaimID.js +3 -0
  35. package/dist/npm/models/ledger/XChainOwnedClaimID.js.map +1 -0
  36. package/dist/npm/models/ledger/XChainOwnedCreateAccountClaimID.d.ts +14 -0
  37. package/dist/npm/models/ledger/XChainOwnedCreateAccountClaimID.d.ts.map +1 -0
  38. package/dist/npm/models/ledger/XChainOwnedCreateAccountClaimID.js +3 -0
  39. package/dist/npm/models/ledger/XChainOwnedCreateAccountClaimID.js.map +1 -0
  40. package/dist/npm/models/ledger/index.d.ts +4 -1
  41. package/dist/npm/models/ledger/index.d.ts.map +1 -1
  42. package/dist/npm/models/ledger/index.js.map +1 -1
  43. package/dist/npm/models/methods/accountObjects.d.ts +3 -3
  44. package/dist/npm/models/methods/accountObjects.d.ts.map +1 -1
  45. package/dist/npm/models/methods/ammInfo.d.ts +39 -0
  46. package/dist/npm/models/methods/ammInfo.d.ts.map +1 -0
  47. package/dist/npm/models/methods/ammInfo.js +3 -0
  48. package/dist/npm/models/methods/ammInfo.js.map +1 -0
  49. package/dist/npm/models/methods/index.d.ts +4 -3
  50. package/dist/npm/models/methods/index.d.ts.map +1 -1
  51. package/dist/npm/models/methods/ledgerEntry.d.ts +27 -0
  52. package/dist/npm/models/methods/ledgerEntry.d.ts.map +1 -1
  53. package/dist/npm/models/transactions/AMMBid.d.ts +12 -0
  54. package/dist/npm/models/transactions/AMMBid.d.ts.map +1 -0
  55. package/dist/npm/models/transactions/AMMBid.js +56 -0
  56. package/dist/npm/models/transactions/AMMBid.js.map +1 -0
  57. package/dist/npm/models/transactions/AMMCreate.d.ts +11 -0
  58. package/dist/npm/models/transactions/AMMCreate.d.ts.map +1 -0
  59. package/dist/npm/models/transactions/AMMCreate.js +32 -0
  60. package/dist/npm/models/transactions/AMMCreate.js.map +1 -0
  61. package/dist/npm/models/transactions/AMMDelete.d.ts +9 -0
  62. package/dist/npm/models/transactions/AMMDelete.d.ts.map +1 -0
  63. package/dist/npm/models/transactions/AMMDelete.js +22 -0
  64. package/dist/npm/models/transactions/AMMDelete.js.map +1 -0
  65. package/dist/npm/models/transactions/AMMDeposit.d.ts +27 -0
  66. package/dist/npm/models/transactions/AMMDeposit.d.ts.map +1 -0
  67. package/dist/npm/models/transactions/AMMDeposit.js +51 -0
  68. package/dist/npm/models/transactions/AMMDeposit.js.map +1 -0
  69. package/dist/npm/models/transactions/AMMVote.d.ts +10 -0
  70. package/dist/npm/models/transactions/AMMVote.d.ts.map +1 -0
  71. package/dist/npm/models/transactions/AMMVote.js +32 -0
  72. package/dist/npm/models/transactions/AMMVote.js.map +1 -0
  73. package/dist/npm/models/transactions/AMMWithdraw.d.ts +31 -0
  74. package/dist/npm/models/transactions/AMMWithdraw.d.ts.map +1 -0
  75. package/dist/npm/models/transactions/AMMWithdraw.js +50 -0
  76. package/dist/npm/models/transactions/AMMWithdraw.js.map +1 -0
  77. package/dist/npm/models/transactions/XChainAccountCreateCommit.d.ts +11 -0
  78. package/dist/npm/models/transactions/XChainAccountCreateCommit.d.ts.map +1 -0
  79. package/dist/npm/models/transactions/XChainAccountCreateCommit.js +35 -0
  80. package/dist/npm/models/transactions/XChainAccountCreateCommit.js.map +1 -0
  81. package/dist/npm/models/transactions/XChainAddAccountCreateAttestation.d.ts +18 -0
  82. package/dist/npm/models/transactions/XChainAddAccountCreateAttestation.d.ts.map +1 -0
  83. package/dist/npm/models/transactions/XChainAddAccountCreateAttestation.js +77 -0
  84. package/dist/npm/models/transactions/XChainAddAccountCreateAttestation.js.map +1 -0
  85. package/dist/npm/models/transactions/XChainAddClaimAttestation.d.ts +17 -0
  86. package/dist/npm/models/transactions/XChainAddClaimAttestation.d.ts.map +1 -0
  87. package/dist/npm/models/transactions/XChainAddClaimAttestation.js +68 -0
  88. package/dist/npm/models/transactions/XChainAddClaimAttestation.js.map +1 -0
  89. package/dist/npm/models/transactions/XChainClaim.d.ts +12 -0
  90. package/dist/npm/models/transactions/XChainClaim.d.ts.map +1 -0
  91. package/dist/npm/models/transactions/XChainClaim.js +39 -0
  92. package/dist/npm/models/transactions/XChainClaim.js.map +1 -0
  93. package/dist/npm/models/transactions/XChainCommit.d.ts +11 -0
  94. package/dist/npm/models/transactions/XChainCommit.d.ts.map +1 -0
  95. package/dist/npm/models/transactions/XChainCommit.js +33 -0
  96. package/dist/npm/models/transactions/XChainCommit.js.map +1 -0
  97. package/dist/npm/models/transactions/XChainCreateBridge.d.ts +10 -0
  98. package/dist/npm/models/transactions/XChainCreateBridge.d.ts.map +1 -0
  99. package/dist/npm/models/transactions/XChainCreateBridge.js +26 -0
  100. package/dist/npm/models/transactions/XChainCreateBridge.js.map +1 -0
  101. package/dist/npm/models/transactions/XChainCreateClaimID.d.ts +10 -0
  102. package/dist/npm/models/transactions/XChainCreateClaimID.d.ts.map +1 -0
  103. package/dist/npm/models/transactions/XChainCreateClaimID.js +28 -0
  104. package/dist/npm/models/transactions/XChainCreateClaimID.js.map +1 -0
  105. package/dist/npm/models/transactions/XChainModifyBridge.d.ts +17 -0
  106. package/dist/npm/models/transactions/XChainModifyBridge.d.ts.map +1 -0
  107. package/dist/npm/models/transactions/XChainModifyBridge.js +27 -0
  108. package/dist/npm/models/transactions/XChainModifyBridge.js.map +1 -0
  109. package/dist/npm/models/transactions/common.d.ts +3 -1
  110. package/dist/npm/models/transactions/common.d.ts.map +1 -1
  111. package/dist/npm/models/transactions/common.js +22 -1
  112. package/dist/npm/models/transactions/common.js.map +1 -1
  113. package/dist/npm/models/transactions/index.d.ts +15 -1
  114. package/dist/npm/models/transactions/index.d.ts.map +1 -1
  115. package/dist/npm/models/transactions/index.js +7 -1
  116. package/dist/npm/models/transactions/index.js.map +1 -1
  117. package/dist/npm/models/transactions/transaction.d.ts +15 -1
  118. package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
  119. package/dist/npm/models/transactions/transaction.js +56 -0
  120. package/dist/npm/models/transactions/transaction.js.map +1 -1
  121. package/dist/npm/models/utils/flags.d.ts.map +1 -1
  122. package/dist/npm/models/utils/flags.js +18 -21
  123. package/dist/npm/models/utils/flags.js.map +1 -1
  124. package/dist/npm/snippets/src/bridgeTransfer.d.ts +2 -0
  125. package/dist/npm/snippets/src/bridgeTransfer.d.ts.map +1 -0
  126. package/dist/npm/snippets/src/bridgeTransfer.js +124 -0
  127. package/dist/npm/snippets/src/bridgeTransfer.js.map +1 -0
  128. package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
  129. package/dist/npm/src/Wallet/walletFromSecretNumbers.d.ts +7 -0
  130. package/dist/npm/src/Wallet/walletFromSecretNumbers.d.ts.map +1 -0
  131. package/dist/npm/src/Wallet/walletFromSecretNumbers.js +27 -0
  132. package/dist/npm/src/Wallet/walletFromSecretNumbers.js.map +1 -0
  133. package/dist/npm/src/client/index.d.ts +2 -1
  134. package/dist/npm/src/client/index.d.ts.map +1 -1
  135. package/dist/npm/src/client/index.js.map +1 -1
  136. package/dist/npm/src/index.d.ts +1 -0
  137. package/dist/npm/src/index.d.ts.map +1 -1
  138. package/dist/npm/src/index.js +3 -1
  139. package/dist/npm/src/index.js.map +1 -1
  140. package/dist/npm/src/models/common/index.d.ts +11 -0
  141. package/dist/npm/src/models/common/index.d.ts.map +1 -1
  142. package/dist/npm/src/models/ledger/AMM.d.ts +27 -0
  143. package/dist/npm/src/models/ledger/AMM.d.ts.map +1 -0
  144. package/dist/npm/src/models/ledger/AMM.js +3 -0
  145. package/dist/npm/src/models/ledger/AMM.js.map +1 -0
  146. package/dist/npm/src/models/ledger/AccountRoot.d.ts +2 -0
  147. package/dist/npm/src/models/ledger/AccountRoot.d.ts.map +1 -1
  148. package/dist/npm/src/models/ledger/AccountRoot.js +1 -0
  149. package/dist/npm/src/models/ledger/AccountRoot.js.map +1 -1
  150. package/dist/npm/src/models/ledger/Bridge.d.ts +17 -0
  151. package/dist/npm/src/models/ledger/Bridge.d.ts.map +1 -0
  152. package/dist/npm/src/models/ledger/Bridge.js +3 -0
  153. package/dist/npm/src/models/ledger/Bridge.js.map +1 -0
  154. package/dist/npm/src/models/ledger/LedgerEntry.d.ts +5 -1
  155. package/dist/npm/src/models/ledger/LedgerEntry.d.ts.map +1 -1
  156. package/dist/npm/src/models/ledger/XChainOwnedClaimID.d.ts +16 -0
  157. package/dist/npm/src/models/ledger/XChainOwnedClaimID.d.ts.map +1 -0
  158. package/dist/npm/src/models/ledger/XChainOwnedClaimID.js +3 -0
  159. package/dist/npm/src/models/ledger/XChainOwnedClaimID.js.map +1 -0
  160. package/dist/npm/src/models/ledger/XChainOwnedCreateAccountClaimID.d.ts +14 -0
  161. package/dist/npm/src/models/ledger/XChainOwnedCreateAccountClaimID.d.ts.map +1 -0
  162. package/dist/npm/src/models/ledger/XChainOwnedCreateAccountClaimID.js +3 -0
  163. package/dist/npm/src/models/ledger/XChainOwnedCreateAccountClaimID.js.map +1 -0
  164. package/dist/npm/src/models/ledger/index.d.ts +4 -1
  165. package/dist/npm/src/models/ledger/index.d.ts.map +1 -1
  166. package/dist/npm/src/models/ledger/index.js.map +1 -1
  167. package/dist/npm/src/models/methods/accountObjects.d.ts +3 -3
  168. package/dist/npm/src/models/methods/accountObjects.d.ts.map +1 -1
  169. package/dist/npm/src/models/methods/ammInfo.d.ts +39 -0
  170. package/dist/npm/src/models/methods/ammInfo.d.ts.map +1 -0
  171. package/dist/npm/src/models/methods/ammInfo.js +3 -0
  172. package/dist/npm/src/models/methods/ammInfo.js.map +1 -0
  173. package/dist/npm/src/models/methods/index.d.ts +4 -3
  174. package/dist/npm/src/models/methods/index.d.ts.map +1 -1
  175. package/dist/npm/src/models/methods/ledgerEntry.d.ts +27 -0
  176. package/dist/npm/src/models/methods/ledgerEntry.d.ts.map +1 -1
  177. package/dist/npm/src/models/transactions/AMMBid.d.ts +12 -0
  178. package/dist/npm/src/models/transactions/AMMBid.d.ts.map +1 -0
  179. package/dist/npm/src/models/transactions/AMMBid.js +56 -0
  180. package/dist/npm/src/models/transactions/AMMBid.js.map +1 -0
  181. package/dist/npm/src/models/transactions/AMMCreate.d.ts +11 -0
  182. package/dist/npm/src/models/transactions/AMMCreate.d.ts.map +1 -0
  183. package/dist/npm/src/models/transactions/AMMCreate.js +32 -0
  184. package/dist/npm/src/models/transactions/AMMCreate.js.map +1 -0
  185. package/dist/npm/src/models/transactions/AMMDelete.d.ts +9 -0
  186. package/dist/npm/src/models/transactions/AMMDelete.d.ts.map +1 -0
  187. package/dist/npm/src/models/transactions/AMMDelete.js +22 -0
  188. package/dist/npm/src/models/transactions/AMMDelete.js.map +1 -0
  189. package/dist/npm/src/models/transactions/AMMDeposit.d.ts +27 -0
  190. package/dist/npm/src/models/transactions/AMMDeposit.d.ts.map +1 -0
  191. package/dist/npm/src/models/transactions/AMMDeposit.js +51 -0
  192. package/dist/npm/src/models/transactions/AMMDeposit.js.map +1 -0
  193. package/dist/npm/src/models/transactions/AMMVote.d.ts +10 -0
  194. package/dist/npm/src/models/transactions/AMMVote.d.ts.map +1 -0
  195. package/dist/npm/src/models/transactions/AMMVote.js +32 -0
  196. package/dist/npm/src/models/transactions/AMMVote.js.map +1 -0
  197. package/dist/npm/src/models/transactions/AMMWithdraw.d.ts +31 -0
  198. package/dist/npm/src/models/transactions/AMMWithdraw.d.ts.map +1 -0
  199. package/dist/npm/src/models/transactions/AMMWithdraw.js +50 -0
  200. package/dist/npm/src/models/transactions/AMMWithdraw.js.map +1 -0
  201. package/dist/npm/src/models/transactions/XChainAccountCreateCommit.d.ts +11 -0
  202. package/dist/npm/src/models/transactions/XChainAccountCreateCommit.d.ts.map +1 -0
  203. package/dist/npm/src/models/transactions/XChainAccountCreateCommit.js +35 -0
  204. package/dist/npm/src/models/transactions/XChainAccountCreateCommit.js.map +1 -0
  205. package/dist/npm/src/models/transactions/XChainAddAccountCreateAttestation.d.ts +18 -0
  206. package/dist/npm/src/models/transactions/XChainAddAccountCreateAttestation.d.ts.map +1 -0
  207. package/dist/npm/src/models/transactions/XChainAddAccountCreateAttestation.js +77 -0
  208. package/dist/npm/src/models/transactions/XChainAddAccountCreateAttestation.js.map +1 -0
  209. package/dist/npm/src/models/transactions/XChainAddClaimAttestation.d.ts +17 -0
  210. package/dist/npm/src/models/transactions/XChainAddClaimAttestation.d.ts.map +1 -0
  211. package/dist/npm/src/models/transactions/XChainAddClaimAttestation.js +68 -0
  212. package/dist/npm/src/models/transactions/XChainAddClaimAttestation.js.map +1 -0
  213. package/dist/npm/src/models/transactions/XChainClaim.d.ts +12 -0
  214. package/dist/npm/src/models/transactions/XChainClaim.d.ts.map +1 -0
  215. package/dist/npm/src/models/transactions/XChainClaim.js +39 -0
  216. package/dist/npm/src/models/transactions/XChainClaim.js.map +1 -0
  217. package/dist/npm/src/models/transactions/XChainCommit.d.ts +11 -0
  218. package/dist/npm/src/models/transactions/XChainCommit.d.ts.map +1 -0
  219. package/dist/npm/src/models/transactions/XChainCommit.js +33 -0
  220. package/dist/npm/src/models/transactions/XChainCommit.js.map +1 -0
  221. package/dist/npm/src/models/transactions/XChainCreateBridge.d.ts +10 -0
  222. package/dist/npm/src/models/transactions/XChainCreateBridge.d.ts.map +1 -0
  223. package/dist/npm/src/models/transactions/XChainCreateBridge.js +26 -0
  224. package/dist/npm/src/models/transactions/XChainCreateBridge.js.map +1 -0
  225. package/dist/npm/src/models/transactions/XChainCreateClaimID.d.ts +10 -0
  226. package/dist/npm/src/models/transactions/XChainCreateClaimID.d.ts.map +1 -0
  227. package/dist/npm/src/models/transactions/XChainCreateClaimID.js +28 -0
  228. package/dist/npm/src/models/transactions/XChainCreateClaimID.js.map +1 -0
  229. package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts +17 -0
  230. package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts.map +1 -0
  231. package/dist/npm/src/models/transactions/XChainModifyBridge.js +27 -0
  232. package/dist/npm/src/models/transactions/XChainModifyBridge.js.map +1 -0
  233. package/dist/npm/src/models/transactions/common.d.ts +3 -1
  234. package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
  235. package/dist/npm/src/models/transactions/common.js +22 -1
  236. package/dist/npm/src/models/transactions/common.js.map +1 -1
  237. package/dist/npm/src/models/transactions/index.d.ts +15 -1
  238. package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
  239. package/dist/npm/src/models/transactions/index.js +7 -1
  240. package/dist/npm/src/models/transactions/index.js.map +1 -1
  241. package/dist/npm/src/models/transactions/transaction.d.ts +15 -1
  242. package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
  243. package/dist/npm/src/models/transactions/transaction.js +56 -0
  244. package/dist/npm/src/models/transactions/transaction.js.map +1 -1
  245. package/dist/npm/src/models/utils/flags.d.ts.map +1 -1
  246. package/dist/npm/src/models/utils/flags.js +18 -21
  247. package/dist/npm/src/models/utils/flags.js.map +1 -1
  248. package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
  249. package/dist/npm/src/sugar/autofill.js +4 -3
  250. package/dist/npm/src/sugar/autofill.js.map +1 -1
  251. package/dist/npm/sugar/autofill.d.ts.map +1 -1
  252. package/dist/npm/sugar/autofill.js +4 -3
  253. package/dist/npm/sugar/autofill.js.map +1 -1
  254. package/package.json +8 -6
  255. package/src/ECDSA.ts +6 -0
  256. package/src/Wallet/defaultFaucets.ts +82 -0
  257. package/src/Wallet/fundWallet.ts +344 -0
  258. package/src/Wallet/index.ts +504 -0
  259. package/src/Wallet/rfc1751.ts +190 -0
  260. package/src/Wallet/rfc1751Words.json +243 -0
  261. package/src/Wallet/signer.ts +173 -0
  262. package/src/Wallet/walletFromSecretNumbers.ts +37 -0
  263. package/src/client/BroadcastClient.ts +84 -0
  264. package/src/client/ConnectionManager.ts +40 -0
  265. package/src/client/ExponentialBackoff.ts +71 -0
  266. package/src/client/RequestManager.ts +194 -0
  267. package/src/client/WSWrapper.ts +106 -0
  268. package/src/client/connection.ts +593 -0
  269. package/src/client/index.ts +712 -0
  270. package/src/client/partialPayment.ts +153 -0
  271. package/src/errors.ts +161 -0
  272. package/src/index.ts +20 -0
  273. package/src/models/common/index.ts +156 -0
  274. package/src/models/index.ts +16 -0
  275. package/src/models/ledger/AMM.ts +78 -0
  276. package/src/models/ledger/AccountRoot.ts +217 -0
  277. package/src/models/ledger/Amendments.ts +45 -0
  278. package/src/models/ledger/BaseLedgerEntry.ts +3 -0
  279. package/src/models/ledger/Bridge.ts +84 -0
  280. package/src/models/ledger/Check.ts +70 -0
  281. package/src/models/ledger/DepositPreauth.ts +35 -0
  282. package/src/models/ledger/DirectoryNode.ts +46 -0
  283. package/src/models/ledger/Escrow.ts +74 -0
  284. package/src/models/ledger/FeeSettings.ts +52 -0
  285. package/src/models/ledger/Ledger.ts +65 -0
  286. package/src/models/ledger/LedgerEntry.ts +40 -0
  287. package/src/models/ledger/LedgerHashes.ts +24 -0
  288. package/src/models/ledger/NFTokenOffer.ts +16 -0
  289. package/src/models/ledger/NFTokenPage.ts +20 -0
  290. package/src/models/ledger/NegativeUNL.ts +34 -0
  291. package/src/models/ledger/Offer.ts +52 -0
  292. package/src/models/ledger/PayChannel.ts +107 -0
  293. package/src/models/ledger/RippleState.ts +88 -0
  294. package/src/models/ledger/SignerList.ts +56 -0
  295. package/src/models/ledger/Ticket.ts +36 -0
  296. package/src/models/ledger/XChainOwnedClaimID.ts +73 -0
  297. package/src/models/ledger/XChainOwnedCreateAccountClaimID.ts +60 -0
  298. package/src/models/ledger/index.ts +64 -0
  299. package/src/models/methods/accountChannels.ts +93 -0
  300. package/src/models/methods/accountCurrencies.ts +45 -0
  301. package/src/models/methods/accountInfo.ts +182 -0
  302. package/src/models/methods/accountLines.ts +137 -0
  303. package/src/models/methods/accountNFTs.ts +72 -0
  304. package/src/models/methods/accountObjects.ts +129 -0
  305. package/src/models/methods/accountOffers.ts +100 -0
  306. package/src/models/methods/accountTx.ts +109 -0
  307. package/src/models/methods/ammInfo.ts +145 -0
  308. package/src/models/methods/baseMethod.ts +58 -0
  309. package/src/models/methods/bookOffers.ts +96 -0
  310. package/src/models/methods/channelVerify.ts +41 -0
  311. package/src/models/methods/depositAuthorized.ts +56 -0
  312. package/src/models/methods/fee.ts +91 -0
  313. package/src/models/methods/gatewayBalances.ts +85 -0
  314. package/src/models/methods/index.ts +391 -0
  315. package/src/models/methods/ledger.ts +125 -0
  316. package/src/models/methods/ledgerClosed.ts +32 -0
  317. package/src/models/methods/ledgerCurrent.ts +31 -0
  318. package/src/models/methods/ledgerData.ts +78 -0
  319. package/src/models/methods/ledgerEntry.ts +202 -0
  320. package/src/models/methods/manifest.ts +54 -0
  321. package/src/models/methods/nftBuyOffers.ts +37 -0
  322. package/src/models/methods/nftHistory.ts +113 -0
  323. package/src/models/methods/nftInfo.ts +25 -0
  324. package/src/models/methods/nftSellOffers.ts +37 -0
  325. package/src/models/methods/norippleCheck.ts +82 -0
  326. package/src/models/methods/pathFind.ts +116 -0
  327. package/src/models/methods/ping.ts +21 -0
  328. package/src/models/methods/random.ts +23 -0
  329. package/src/models/methods/ripplePathFind.ts +81 -0
  330. package/src/models/methods/serverInfo.ts +257 -0
  331. package/src/models/methods/serverState.ts +77 -0
  332. package/src/models/methods/submit.ts +94 -0
  333. package/src/models/methods/submitMultisigned.ts +51 -0
  334. package/src/models/methods/subscribe.ts +435 -0
  335. package/src/models/methods/transactionEntry.ts +47 -0
  336. package/src/models/methods/tx.ts +69 -0
  337. package/src/models/methods/unsubscribe.ts +49 -0
  338. package/src/models/transactions/AMMBid.ts +140 -0
  339. package/src/models/transactions/AMMCreate.ts +80 -0
  340. package/src/models/transactions/AMMDelete.ts +55 -0
  341. package/src/models/transactions/AMMDeposit.ts +130 -0
  342. package/src/models/transactions/AMMVote.ts +71 -0
  343. package/src/models/transactions/AMMWithdraw.ts +126 -0
  344. package/src/models/transactions/NFTokenAcceptOffer.ts +104 -0
  345. package/src/models/transactions/NFTokenBurn.ts +48 -0
  346. package/src/models/transactions/NFTokenCancelOffer.ts +45 -0
  347. package/src/models/transactions/NFTokenCreateOffer.ts +145 -0
  348. package/src/models/transactions/NFTokenMint.ts +123 -0
  349. package/src/models/transactions/UNLModify.ts +20 -0
  350. package/src/models/transactions/XChainAccountCreateCommit.ts +107 -0
  351. package/src/models/transactions/XChainAddAccountCreateAttestation.ts +225 -0
  352. package/src/models/transactions/XChainAddClaimAttestation.ts +198 -0
  353. package/src/models/transactions/XChainClaim.ts +103 -0
  354. package/src/models/transactions/XChainCommit.ts +95 -0
  355. package/src/models/transactions/XChainCreateBridge.ts +78 -0
  356. package/src/models/transactions/XChainCreateClaimID.ts +78 -0
  357. package/src/models/transactions/XChainModifyBridge.ts +93 -0
  358. package/src/models/transactions/accountDelete.ts +50 -0
  359. package/src/models/transactions/accountSet.ts +228 -0
  360. package/src/models/transactions/checkCancel.ts +34 -0
  361. package/src/models/transactions/checkCash.ts +73 -0
  362. package/src/models/transactions/checkCreate.ts +90 -0
  363. package/src/models/transactions/clawback.ts +49 -0
  364. package/src/models/transactions/common.ts +320 -0
  365. package/src/models/transactions/depositPreauth.ts +68 -0
  366. package/src/models/transactions/enableAmendment.ts +26 -0
  367. package/src/models/transactions/escrowCancel.ts +45 -0
  368. package/src/models/transactions/escrowCreate.ts +100 -0
  369. package/src/models/transactions/escrowFinish.ts +63 -0
  370. package/src/models/transactions/index.ts +78 -0
  371. package/src/models/transactions/metadata.ts +69 -0
  372. package/src/models/transactions/offerCancel.ts +37 -0
  373. package/src/models/transactions/offerCreate.ts +144 -0
  374. package/src/models/transactions/payment.ts +278 -0
  375. package/src/models/transactions/paymentChannelClaim.ts +165 -0
  376. package/src/models/transactions/paymentChannelCreate.ts +116 -0
  377. package/src/models/transactions/paymentChannelFund.ts +65 -0
  378. package/src/models/transactions/setFee.ts +48 -0
  379. package/src/models/transactions/setRegularKey.ts +33 -0
  380. package/src/models/transactions/signerListSet.ts +89 -0
  381. package/src/models/transactions/ticketCreate.ts +50 -0
  382. package/src/models/transactions/transaction.ts +370 -0
  383. package/src/models/transactions/trustSet.ts +146 -0
  384. package/src/models/utils/flags.ts +103 -0
  385. package/src/models/utils/index.ts +37 -0
  386. package/src/sugar/autofill.ts +373 -0
  387. package/src/sugar/balances.ts +123 -0
  388. package/src/sugar/getFeeXrp.ts +45 -0
  389. package/src/sugar/getLedgerIndex.ts +15 -0
  390. package/src/sugar/getOrderbook.ts +152 -0
  391. package/src/sugar/index.ts +11 -0
  392. package/src/sugar/submit.ts +305 -0
  393. package/src/sugar/utils.ts +29 -0
  394. package/src/utils/derive.ts +23 -0
  395. package/src/utils/getBalanceChanges.ts +186 -0
  396. package/src/utils/getNFTokenID.ts +97 -0
  397. package/src/utils/hashes/HashPrefix.ts +40 -0
  398. package/src/utils/hashes/README.md +65 -0
  399. package/src/utils/hashes/SHAMap/InnerNode.ts +124 -0
  400. package/src/utils/hashes/SHAMap/LeafNode.ts +69 -0
  401. package/src/utils/hashes/SHAMap/index.ts +41 -0
  402. package/src/utils/hashes/SHAMap/node.ts +14 -0
  403. package/src/utils/hashes/hashLedger.ts +236 -0
  404. package/src/utils/hashes/index.ts +187 -0
  405. package/src/utils/hashes/ledgerSpaces.ts +34 -0
  406. package/src/utils/hashes/sha512Half.ts +19 -0
  407. package/src/utils/index.ts +223 -0
  408. package/src/utils/parseNFTokenID.ts +84 -0
  409. package/src/utils/quality.ts +169 -0
  410. package/src/utils/signPaymentChannelClaim.ts +27 -0
  411. package/src/utils/stringConversion.ts +27 -0
  412. package/src/utils/timeConversion.ts +53 -0
  413. package/src/utils/verifyPaymentChannelClaim.ts +30 -0
  414. package/src/utils/xrpConversion.ts +104 -0
@@ -0,0 +1,320 @@
1
+ /* eslint-disable max-lines-per-function -- Necessary for validateBaseTransaction */
2
+ /* eslint-disable complexity -- Necessary for validateBaseTransaction */
3
+ /* eslint-disable max-statements -- Necessary for validateBaseTransaction */
4
+ import { TRANSACTION_TYPES } from 'ripple-binary-codec'
5
+
6
+ import { ValidationError } from '../../errors'
7
+ import {
8
+ Amount,
9
+ Currency,
10
+ IssuedCurrencyAmount,
11
+ Memo,
12
+ Signer,
13
+ XChainBridge,
14
+ } from '../common'
15
+ import { onlyHasFields } from '../utils'
16
+
17
+ const MEMO_SIZE = 3
18
+
19
+ function isMemo(obj: { Memo?: unknown }): boolean {
20
+ if (obj.Memo == null) {
21
+ return false
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS
24
+ const memo = obj.Memo as Record<string, unknown>
25
+ const size = Object.keys(memo).length
26
+ const validData = memo.MemoData == null || typeof memo.MemoData === 'string'
27
+ const validFormat =
28
+ memo.MemoFormat == null || typeof memo.MemoFormat === 'string'
29
+ const validType = memo.MemoType == null || typeof memo.MemoType === 'string'
30
+
31
+ return (
32
+ size >= 1 &&
33
+ size <= MEMO_SIZE &&
34
+ validData &&
35
+ validFormat &&
36
+ validType &&
37
+ onlyHasFields(memo, ['MemoFormat', 'MemoData', 'MemoType'])
38
+ )
39
+ }
40
+
41
+ const SIGNER_SIZE = 3
42
+
43
+ function isSigner(obj: unknown): boolean {
44
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS
45
+ const signerWrapper = obj as Record<string, unknown>
46
+
47
+ if (signerWrapper.Signer == null) {
48
+ return false
49
+ }
50
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS and Signer is previously unknown
51
+ const signer = signerWrapper.Signer as Record<string, unknown>
52
+ return (
53
+ Object.keys(signer).length === SIGNER_SIZE &&
54
+ typeof signer.Account === 'string' &&
55
+ typeof signer.TxnSignature === 'string' &&
56
+ typeof signer.SigningPubKey === 'string'
57
+ )
58
+ }
59
+
60
+ const XRP_CURRENCY_SIZE = 1
61
+ const ISSUE_SIZE = 2
62
+ const ISSUED_CURRENCY_SIZE = 3
63
+ const XCHAIN_BRIDGE_SIZE = 4
64
+
65
+ function isRecord(value: unknown): value is Record<string, unknown> {
66
+ return value !== null && typeof value === 'object'
67
+ }
68
+
69
+ /**
70
+ * Verify the form and type of an IssuedCurrency at runtime.
71
+ *
72
+ * @param input - The input to check the form and type of.
73
+ * @returns Whether the IssuedCurrency is properly formed.
74
+ */
75
+ export function isCurrency(input: unknown): input is Currency {
76
+ return (
77
+ isRecord(input) &&
78
+ ((Object.keys(input).length === ISSUE_SIZE &&
79
+ typeof input.issuer === 'string' &&
80
+ typeof input.currency === 'string') ||
81
+ (Object.keys(input).length === XRP_CURRENCY_SIZE &&
82
+ input.currency === 'XRP'))
83
+ )
84
+ }
85
+
86
+ /**
87
+ * Verify the form and type of an IssuedCurrencyAmount at runtime.
88
+ *
89
+ * @param input - The input to check the form and type of.
90
+ * @returns Whether the IssuedCurrencyAmount is properly formed.
91
+ */
92
+ export function isIssuedCurrency(
93
+ input: unknown,
94
+ ): input is IssuedCurrencyAmount {
95
+ return (
96
+ isRecord(input) &&
97
+ Object.keys(input).length === ISSUED_CURRENCY_SIZE &&
98
+ typeof input.value === 'string' &&
99
+ typeof input.issuer === 'string' &&
100
+ typeof input.currency === 'string'
101
+ )
102
+ }
103
+
104
+ /**
105
+ * Verify the form and type of an Amount at runtime.
106
+ *
107
+ * @param amount - The object to check the form and type of.
108
+ * @returns Whether the Amount is properly formed.
109
+ */
110
+ export function isAmount(amount: unknown): amount is Amount {
111
+ return typeof amount === 'string' || isIssuedCurrency(amount)
112
+ }
113
+
114
+ /**
115
+ * Verify the form and type of an XChainBridge at runtime.
116
+ *
117
+ * @param input - The input to check the form and type of.
118
+ * @returns Whether the XChainBridge is properly formed.
119
+ */
120
+ export function isXChainBridge(input: unknown): input is XChainBridge {
121
+ return (
122
+ isRecord(input) &&
123
+ Object.keys(input).length === XCHAIN_BRIDGE_SIZE &&
124
+ typeof input.LockingChainDoor === 'string' &&
125
+ isCurrency(input.LockingChainIssue) &&
126
+ typeof input.IssuingChainDoor === 'string' &&
127
+ isCurrency(input.IssuingChainIssue)
128
+ )
129
+ }
130
+
131
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface -- no global flags right now, so this is fine
132
+ export interface GlobalFlags {}
133
+
134
+ /**
135
+ * Every transaction has the same set of common fields.
136
+ */
137
+ export interface BaseTransaction {
138
+ /** The unique address of the transaction sender. */
139
+ Account: string
140
+ /**
141
+ * The type of transaction. Valid types include: `Payment`, `OfferCreate`,
142
+ * `TrustSet`, and many others.
143
+ */
144
+ TransactionType: string
145
+ /**
146
+ * Integer amount of XRP, in drops, to be destroyed as a cost for
147
+ * distributing this transaction to the network. Some transaction types have
148
+ * different minimum requirements.
149
+ */
150
+ Fee?: string
151
+ /**
152
+ * The sequence number of the account sending the transaction. A transaction
153
+ * is only valid if the Sequence number is exactly 1 greater than the previous
154
+ * transaction from the same account. The special case 0 means the transaction
155
+ * is using a Ticket instead.
156
+ */
157
+ Sequence?: number
158
+ /**
159
+ * Hash value identifying another transaction. If provided, this transaction
160
+ * is only valid if the sending account's previously-sent transaction matches
161
+ * the provided hash.
162
+ */
163
+ AccountTxnID?: string
164
+ /** Set of bit-flags for this transaction. */
165
+ Flags?: number | GlobalFlags
166
+ /**
167
+ * Highest ledger index this transaction can appear in. Specifying this field
168
+ * places a strict upper limit on how long the transaction can wait to be
169
+ * validated or rejected.
170
+ */
171
+ LastLedgerSequence?: number
172
+ /**
173
+ * Additional arbitrary information used to identify this transaction.
174
+ */
175
+ Memos?: Memo[]
176
+ /**
177
+ * Array of objects that represent a multi-signature which authorizes this
178
+ * transaction.
179
+ */
180
+ Signers?: Signer[]
181
+ /**
182
+ * Arbitrary integer used to identify the reason for this payment, or a sender
183
+ * on whose behalf this transaction is made. Conventionally, a refund should
184
+ * specify the initial payment's SourceTag as the refund payment's
185
+ * DestinationTag.
186
+ */
187
+ SourceTag?: number
188
+ /**
189
+ * Hex representation of the public key that corresponds to the private key
190
+ * used to sign this transaction. If an empty string, indicates a
191
+ * multi-signature is present in the Signers field instead.
192
+ */
193
+ SigningPubKey?: string
194
+ /**
195
+ * The sequence number of the ticket to use in place of a Sequence number. If
196
+ * this is provided, Sequence must be 0. Cannot be used with AccountTxnID.
197
+ */
198
+ TicketSequence?: number
199
+ /**
200
+ * The signature that verifies this transaction as originating from the
201
+ * account it says it is from.
202
+ */
203
+ TxnSignature?: string
204
+ /**
205
+ * The network id of the transaction.
206
+ */
207
+ NetworkID?: number
208
+ }
209
+
210
+ /**
211
+ * Verify the common fields of a transaction. The validate functionality will be
212
+ * optional, and will check transaction form at runtime. This should be called
213
+ * any time a transaction will be verified.
214
+ *
215
+ * @param common - An interface w/ common transaction fields.
216
+ * @throws When the common param is malformed.
217
+ */
218
+ export function validateBaseTransaction(common: Record<string, unknown>): void {
219
+ if (common.Account === undefined) {
220
+ throw new ValidationError('BaseTransaction: missing field Account')
221
+ }
222
+
223
+ if (typeof common.Account !== 'string') {
224
+ throw new ValidationError('BaseTransaction: Account not string')
225
+ }
226
+
227
+ if (common.TransactionType === undefined) {
228
+ throw new ValidationError('BaseTransaction: missing field TransactionType')
229
+ }
230
+
231
+ if (typeof common.TransactionType !== 'string') {
232
+ throw new ValidationError('BaseTransaction: TransactionType not string')
233
+ }
234
+
235
+ if (!TRANSACTION_TYPES.includes(common.TransactionType)) {
236
+ throw new ValidationError('BaseTransaction: Unknown TransactionType')
237
+ }
238
+
239
+ if (common.Fee !== undefined && typeof common.Fee !== 'string') {
240
+ throw new ValidationError('BaseTransaction: invalid Fee')
241
+ }
242
+
243
+ if (common.Sequence !== undefined && typeof common.Sequence !== 'number') {
244
+ throw new ValidationError('BaseTransaction: invalid Sequence')
245
+ }
246
+
247
+ if (
248
+ common.AccountTxnID !== undefined &&
249
+ typeof common.AccountTxnID !== 'string'
250
+ ) {
251
+ throw new ValidationError('BaseTransaction: invalid AccountTxnID')
252
+ }
253
+
254
+ if (
255
+ common.LastLedgerSequence !== undefined &&
256
+ typeof common.LastLedgerSequence !== 'number'
257
+ ) {
258
+ throw new ValidationError('BaseTransaction: invalid LastLedgerSequence')
259
+ }
260
+
261
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS
262
+ const memos = common.Memos as Array<{ Memo?: unknown }> | undefined
263
+ if (memos !== undefined && !memos.every(isMemo)) {
264
+ throw new ValidationError('BaseTransaction: invalid Memos')
265
+ }
266
+
267
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS
268
+ const signers = common.Signers as Array<Record<string, unknown>> | undefined
269
+
270
+ if (
271
+ signers !== undefined &&
272
+ (signers.length === 0 || !signers.every(isSigner))
273
+ ) {
274
+ throw new ValidationError('BaseTransaction: invalid Signers')
275
+ }
276
+
277
+ if (common.SourceTag !== undefined && typeof common.SourceTag !== 'number') {
278
+ throw new ValidationError('BaseTransaction: invalid SourceTag')
279
+ }
280
+
281
+ if (
282
+ common.SigningPubKey !== undefined &&
283
+ typeof common.SigningPubKey !== 'string'
284
+ ) {
285
+ throw new ValidationError('BaseTransaction: invalid SigningPubKey')
286
+ }
287
+
288
+ if (
289
+ common.TicketSequence !== undefined &&
290
+ typeof common.TicketSequence !== 'number'
291
+ ) {
292
+ throw new ValidationError('BaseTransaction: invalid TicketSequence')
293
+ }
294
+
295
+ if (
296
+ common.TxnSignature !== undefined &&
297
+ typeof common.TxnSignature !== 'string'
298
+ ) {
299
+ throw new ValidationError('BaseTransaction: invalid TxnSignature')
300
+ }
301
+ if (common.NetworkID !== undefined && typeof common.NetworkID !== 'number') {
302
+ throw new ValidationError('BaseTransaction: invalid NetworkID')
303
+ }
304
+ }
305
+
306
+ /**
307
+ * Parse the value of an amount, expressed either in XRP or as an Issued Currency, into a number.
308
+ *
309
+ * @param amount - An Amount to parse for its value.
310
+ * @returns The parsed amount value, or NaN if the amount count not be parsed.
311
+ */
312
+ export function parseAmountValue(amount: unknown): number {
313
+ if (!isAmount(amount)) {
314
+ return NaN
315
+ }
316
+ if (typeof amount === 'string') {
317
+ return parseFloat(amount)
318
+ }
319
+ return parseFloat(amount.value)
320
+ }
@@ -0,0 +1,68 @@
1
+ /* eslint-disable complexity -- Necessary for validateDepositPreauth */
2
+ import { ValidationError } from '../../errors'
3
+
4
+ import { BaseTransaction, validateBaseTransaction } from './common'
5
+
6
+ /**
7
+ * A DepositPreauth transaction gives another account pre-approval to deliver
8
+ * payments to the sender of this transaction. This is only useful if the sender
9
+ * of this transaction is using (or plans to use) Deposit Authorization.
10
+ *
11
+ * @category Transaction Models
12
+ */
13
+ export interface DepositPreauth extends BaseTransaction {
14
+ TransactionType: 'DepositPreauth'
15
+ /** The XRP Ledger address of the sender to preauthorize. */
16
+ Authorize?: string
17
+ /**
18
+ * The XRP Ledger address of a sender whose preauthorization should be.
19
+ * revoked.
20
+ */
21
+ Unauthorize?: string
22
+ }
23
+
24
+ /**
25
+ * Verify the form and type of a DepositPreauth at runtime.
26
+ *
27
+ * @param tx - A DepositPreauth Transaction.
28
+ * @throws When the DepositPreauth is malformed.
29
+ */
30
+ export function validateDepositPreauth(tx: Record<string, unknown>): void {
31
+ validateBaseTransaction(tx)
32
+
33
+ if (tx.Authorize !== undefined && tx.Unauthorize !== undefined) {
34
+ throw new ValidationError(
35
+ "DepositPreauth: can't provide both Authorize and Unauthorize fields",
36
+ )
37
+ }
38
+
39
+ if (tx.Authorize === undefined && tx.Unauthorize === undefined) {
40
+ throw new ValidationError(
41
+ 'DepositPreauth: must provide either Authorize or Unauthorize field',
42
+ )
43
+ }
44
+
45
+ if (tx.Authorize !== undefined) {
46
+ if (typeof tx.Authorize !== 'string') {
47
+ throw new ValidationError('DepositPreauth: Authorize must be a string')
48
+ }
49
+
50
+ if (tx.Account === tx.Authorize) {
51
+ throw new ValidationError(
52
+ "DepositPreauth: Account can't preauthorize its own address",
53
+ )
54
+ }
55
+ }
56
+
57
+ if (tx.Unauthorize !== undefined) {
58
+ if (typeof tx.Unauthorize !== 'string') {
59
+ throw new ValidationError('DepositPreauth: Unauthorize must be a string')
60
+ }
61
+
62
+ if (tx.Account === tx.Unauthorize) {
63
+ throw new ValidationError(
64
+ "DepositPreauth: Account can't unauthorize its own address",
65
+ )
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,26 @@
1
+ import { BaseTransaction } from './common'
2
+
3
+ /**
4
+ * Transaction Flags for an EnableAmendment Transaction.
5
+ *
6
+ * @category Transaction Flags
7
+ */
8
+ export enum EnableAmendmentFlags {
9
+ /** Support for this amendment increased to at least 80% of trusted validators starting with this ledger version. */
10
+ tfGotMajority = 0x00010000,
11
+ /** Support for this amendment decreased to less than 80% of trusted validators starting with this ledger version. */
12
+ tfLostMajority = 0x00020000,
13
+ }
14
+
15
+ /**
16
+ * Mark a change in the status of a proposed amendment when it gains majority, looses majority, or is enabled.
17
+ *
18
+ * @category Pseudo Transaction Models
19
+ */
20
+ export interface EnableAmendment extends BaseTransaction {
21
+ TransactionType: 'EnableAmendment'
22
+ /** A unique identifier for the amendment. */
23
+ Amendment: string
24
+ /** The ledger index where this pseudo-transaction appears. */
25
+ LedgerSequence: number
26
+ }
@@ -0,0 +1,45 @@
1
+ import { ValidationError } from '../../errors'
2
+
3
+ import { BaseTransaction, validateBaseTransaction } from './common'
4
+
5
+ /**
6
+ * Return escrowed XRP to the sender.
7
+ *
8
+ * @category Transaction Models
9
+ */
10
+ export interface EscrowCancel extends BaseTransaction {
11
+ TransactionType: 'EscrowCancel'
12
+ /** Address of the source account that funded the escrow payment. */
13
+ Owner: string
14
+ /**
15
+ * Transaction sequence (or Ticket number) of EscrowCreate transaction that.
16
+ * created the escrow to cancel.
17
+ */
18
+ OfferSequence: number
19
+ }
20
+
21
+ /**
22
+ * Verify the form and type of an EscrowCancel at runtime.
23
+ *
24
+ * @param tx - An EscrowCancel Transaction.
25
+ * @throws When the EscrowCancel is Malformed.
26
+ */
27
+ export function validateEscrowCancel(tx: Record<string, unknown>): void {
28
+ validateBaseTransaction(tx)
29
+
30
+ if (tx.Owner === undefined) {
31
+ throw new ValidationError('EscrowCancel: missing Owner')
32
+ }
33
+
34
+ if (typeof tx.Owner !== 'string') {
35
+ throw new ValidationError('EscrowCancel: Owner must be a string')
36
+ }
37
+
38
+ if (tx.OfferSequence === undefined) {
39
+ throw new ValidationError('EscrowCancel: missing OfferSequence')
40
+ }
41
+
42
+ if (typeof tx.OfferSequence !== 'number') {
43
+ throw new ValidationError('EscrowCancel: OfferSequence must be a number')
44
+ }
45
+ }
@@ -0,0 +1,100 @@
1
+ /* eslint-disable complexity -- Necessary for validateEscrowCreate */
2
+ import { ValidationError } from '../../errors'
3
+
4
+ import { BaseTransaction, validateBaseTransaction } from './common'
5
+
6
+ /**
7
+ * Sequester XRP until the escrow process either finishes or is canceled.
8
+ *
9
+ * @category Transaction Models
10
+ */
11
+ export interface EscrowCreate extends BaseTransaction {
12
+ TransactionType: 'EscrowCreate'
13
+ /**
14
+ * Amount of XRP, in drops, to deduct from the sender's balance and escrow.
15
+ * Once escrowed, the XRP can either go to the Destination address (after the.
16
+ * FinishAfter time) or returned to the sender (after the CancelAfter time).
17
+ */
18
+ Amount: string
19
+ /** Address to receive escrowed XRP. */
20
+ Destination: string
21
+ /**
22
+ * The time, in seconds since the Ripple Epoch, when this escrow expires.
23
+ * This value is immutable; the funds can only be returned the sender after.
24
+ * this time.
25
+ */
26
+ CancelAfter?: number
27
+ /**
28
+ * The time, in seconds since the Ripple Epoch, when the escrowed XRP can be
29
+ * released to the recipient. This value is immutable; the funds cannot move.
30
+ * until this time is reached.
31
+ */
32
+ FinishAfter?: number
33
+ /**
34
+ * Hex value representing a PREIMAGE-SHA-256 crypto-condition . The funds can.
35
+ * only be delivered to the recipient if this condition is fulfilled.
36
+ */
37
+ Condition?: string
38
+ /**
39
+ * Arbitrary tag to further specify the destination for this escrowed.
40
+ * payment, such as a hosted recipient at the destination address.
41
+ */
42
+ DestinationTag?: number
43
+ }
44
+
45
+ /**
46
+ * Verify the form and type of an EscrowCreate at runtime.
47
+ *
48
+ * @param tx - An EscrowCreate Transaction.
49
+ * @throws When the EscrowCreate is Malformed.
50
+ */
51
+ export function validateEscrowCreate(tx: Record<string, unknown>): void {
52
+ validateBaseTransaction(tx)
53
+
54
+ if (tx.Amount === undefined) {
55
+ throw new ValidationError('EscrowCreate: missing field Amount')
56
+ }
57
+
58
+ if (typeof tx.Amount !== 'string') {
59
+ throw new ValidationError('EscrowCreate: Amount must be a string')
60
+ }
61
+
62
+ if (tx.Destination === undefined) {
63
+ throw new ValidationError('EscrowCreate: missing field Destination')
64
+ }
65
+
66
+ if (typeof tx.Destination !== 'string') {
67
+ throw new ValidationError('EscrowCreate: Destination must be a string')
68
+ }
69
+
70
+ if (tx.CancelAfter === undefined && tx.FinishAfter === undefined) {
71
+ throw new ValidationError(
72
+ 'EscrowCreate: Either CancelAfter or FinishAfter must be specified',
73
+ )
74
+ }
75
+
76
+ if (tx.FinishAfter === undefined && tx.Condition === undefined) {
77
+ throw new ValidationError(
78
+ 'EscrowCreate: Either Condition or FinishAfter must be specified',
79
+ )
80
+ }
81
+
82
+ if (tx.CancelAfter !== undefined && typeof tx.CancelAfter !== 'number') {
83
+ throw new ValidationError('EscrowCreate: CancelAfter must be a number')
84
+ }
85
+
86
+ if (tx.FinishAfter !== undefined && typeof tx.FinishAfter !== 'number') {
87
+ throw new ValidationError('EscrowCreate: FinishAfter must be a number')
88
+ }
89
+
90
+ if (tx.Condition !== undefined && typeof tx.Condition !== 'string') {
91
+ throw new ValidationError('EscrowCreate: Condition must be a string')
92
+ }
93
+
94
+ if (
95
+ tx.DestinationTag !== undefined &&
96
+ typeof tx.DestinationTag !== 'number'
97
+ ) {
98
+ throw new ValidationError('EscrowCreate: DestinationTag must be a number')
99
+ }
100
+ }
@@ -0,0 +1,63 @@
1
+ import { ValidationError } from '../../errors'
2
+
3
+ import { BaseTransaction, validateBaseTransaction } from './common'
4
+
5
+ /**
6
+ * Deliver XRP from a held payment to the recipient.
7
+ *
8
+ * @category Transaction Models
9
+ */
10
+ export interface EscrowFinish extends BaseTransaction {
11
+ TransactionType: 'EscrowFinish'
12
+ /** Address of the source account that funded the held payment. */
13
+ Owner: string
14
+ /**
15
+ * Transaction sequence of EscrowCreate transaction that created the held.
16
+ * payment to finish.
17
+ */
18
+ OfferSequence: number
19
+ /**
20
+ * Hex value matching the previously-supplied PREIMAGE-SHA-256.
21
+ * crypto-condition of the held payment.
22
+ */
23
+ Condition?: string
24
+ /**
25
+ * Hex value of the PREIMAGE-SHA-256 crypto-condition fulfillment matching.
26
+ * the held payment's Condition.
27
+ */
28
+ Fulfillment?: string
29
+ }
30
+
31
+ /**
32
+ * Verify the form and type of an EscrowFinish at runtime.
33
+ *
34
+ * @param tx - An EscrowFinish Transaction.
35
+ * @throws When the EscrowFinish is Malformed.
36
+ */
37
+ export function validateEscrowFinish(tx: Record<string, unknown>): void {
38
+ validateBaseTransaction(tx)
39
+
40
+ if (tx.Owner === undefined) {
41
+ throw new ValidationError('EscrowFinish: missing field Owner')
42
+ }
43
+
44
+ if (typeof tx.Owner !== 'string') {
45
+ throw new ValidationError('EscrowFinish: Owner must be a string')
46
+ }
47
+
48
+ if (tx.OfferSequence === undefined) {
49
+ throw new ValidationError('EscrowFinish: missing field OfferSequence')
50
+ }
51
+
52
+ if (typeof tx.OfferSequence !== 'number') {
53
+ throw new ValidationError('EscrowFinish: OfferSequence must be a number')
54
+ }
55
+
56
+ if (tx.Condition !== undefined && typeof tx.Condition !== 'string') {
57
+ throw new ValidationError('EscrowFinish: Condition must be a string')
58
+ }
59
+
60
+ if (tx.Fulfillment !== undefined && typeof tx.Fulfillment !== 'string') {
61
+ throw new ValidationError('EscrowFinish: Fulfillment must be a string')
62
+ }
63
+ }