@transia/ripple-binary-codec 1.4.6-alpha.9 → 2.5.2-alpha.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 (363) hide show
  1. package/dist/binary.d.ts +30 -16
  2. package/dist/binary.js +36 -16
  3. package/dist/binary.js.map +1 -1
  4. package/dist/enums/bytes.d.ts +1 -2
  5. package/dist/enums/bytes.js +3 -2
  6. package/dist/enums/bytes.js.map +1 -1
  7. package/dist/enums/constants.d.ts +1 -0
  8. package/dist/enums/constants.js +6 -5
  9. package/dist/enums/constants.js.map +1 -1
  10. package/dist/enums/definitions.json +1604 -969
  11. package/dist/enums/field.d.ts +1 -2
  12. package/dist/enums/field.js +1 -2
  13. package/dist/enums/field.js.map +1 -1
  14. package/dist/enums/index.d.ts +1 -2
  15. package/dist/enums/index.js +5 -27
  16. package/dist/enums/index.js.map +1 -1
  17. package/dist/enums/src/enums/definitions.json +1606 -971
  18. package/dist/enums/xrpl-definitions-base.d.ts +5 -3
  19. package/dist/enums/xrpl-definitions-base.js +26 -6
  20. package/dist/enums/xrpl-definitions-base.js.map +1 -1
  21. package/dist/enums/xrpl-definitions.d.ts +2 -1
  22. package/dist/enums/xrpl-definitions.js +2 -1
  23. package/dist/enums/xrpl-definitions.js.map +1 -1
  24. package/dist/hash-prefixes.d.ts +1 -2
  25. package/dist/hash-prefixes.js +8 -6
  26. package/dist/hash-prefixes.js.map +1 -1
  27. package/dist/hashes.d.ts +6 -7
  28. package/dist/hashes.js +6 -7
  29. package/dist/hashes.js.map +1 -1
  30. package/dist/index.d.ts +16 -11
  31. package/dist/index.js +53 -58
  32. package/dist/index.js.map +1 -1
  33. package/dist/ledger-hashes.d.ts +1 -2
  34. package/dist/ledger-hashes.js +11 -30
  35. package/dist/ledger-hashes.js.map +1 -1
  36. package/dist/quality.d.ts +3 -4
  37. package/dist/quality.js +10 -8
  38. package/dist/quality.js.map +1 -1
  39. package/dist/serdes/binary-parser.d.ts +2 -3
  40. package/dist/serdes/binary-parser.js +16 -32
  41. package/dist/serdes/binary-parser.js.map +1 -1
  42. package/dist/serdes/binary-serializer.d.ts +7 -8
  43. package/dist/serdes/binary-serializer.js +14 -37
  44. package/dist/serdes/binary-serializer.js.map +1 -1
  45. package/dist/shamap.d.ts +4 -5
  46. package/dist/shamap.js +5 -5
  47. package/dist/shamap.js.map +1 -1
  48. package/dist/src/binary.d.ts +106 -0
  49. package/dist/src/binary.js +154 -0
  50. package/dist/src/binary.js.map +1 -0
  51. package/dist/src/coretypes.d.ts +9 -0
  52. package/dist/src/coretypes.js +48 -0
  53. package/dist/src/coretypes.js.map +1 -0
  54. package/dist/src/enums/bytes.d.ts +25 -0
  55. package/dist/src/enums/bytes.js +65 -0
  56. package/dist/src/enums/bytes.js.map +1 -0
  57. package/dist/src/enums/constants.d.ts +5 -0
  58. package/dist/src/enums/constants.js +9 -0
  59. package/dist/src/enums/constants.js.map +1 -0
  60. package/dist/src/enums/definitions.json +3404 -0
  61. package/dist/src/enums/field.d.ts +28 -0
  62. package/dist/src/enums/field.js +58 -0
  63. package/dist/src/enums/field.js.map +1 -0
  64. package/dist/src/enums/index.d.ts +12 -0
  65. package/dist/src/enums/index.js +31 -0
  66. package/dist/src/enums/index.js.map +1 -0
  67. package/dist/src/enums/utils-renumber.d.ts +101 -0
  68. package/dist/src/enums/utils-renumber.js +127 -0
  69. package/dist/src/enums/utils-renumber.js.map +1 -0
  70. package/dist/src/enums/xrpl-definitions-base.d.ts +47 -0
  71. package/dist/src/enums/xrpl-definitions-base.js +83 -0
  72. package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
  73. package/dist/src/enums/xrpl-definitions.d.ts +22 -0
  74. package/dist/src/enums/xrpl-definitions.js +30 -0
  75. package/dist/src/enums/xrpl-definitions.js.map +1 -0
  76. package/dist/src/hash-prefixes.d.ts +5 -0
  77. package/dist/src/hash-prefixes.js +43 -0
  78. package/dist/src/hash-prefixes.js.map +1 -0
  79. package/dist/src/hashes.d.ts +50 -0
  80. package/dist/src/hashes.js +76 -0
  81. package/dist/src/hashes.js.map +1 -0
  82. package/dist/src/index.d.ts +69 -0
  83. package/dist/src/index.js +134 -0
  84. package/dist/src/index.js.map +1 -0
  85. package/dist/src/ledger-hashes.d.ts +48 -0
  86. package/dist/src/ledger-hashes.js +141 -0
  87. package/dist/src/ledger-hashes.js.map +1 -0
  88. package/dist/src/quality.d.ts +21 -0
  89. package/dist/src/quality.js +42 -0
  90. package/dist/src/quality.js.map +1 -0
  91. package/dist/src/serdes/binary-parser.d.ts +100 -0
  92. package/dist/src/serdes/binary-parser.js +194 -0
  93. package/dist/src/serdes/binary-parser.js.map +1 -0
  94. package/dist/src/serdes/binary-serializer.d.ts +81 -0
  95. package/dist/src/serdes/binary-serializer.js +149 -0
  96. package/dist/src/serdes/binary-serializer.js.map +1 -0
  97. package/dist/src/shamap.d.ts +102 -0
  98. package/dist/src/shamap.js +172 -0
  99. package/dist/src/shamap.js.map +1 -0
  100. package/dist/src/types/account-id.d.ts +37 -0
  101. package/dist/src/types/account-id.js +73 -0
  102. package/dist/src/types/account-id.js.map +1 -0
  103. package/dist/src/types/amount.d.ts +92 -0
  104. package/dist/src/types/amount.js +292 -0
  105. package/dist/src/types/amount.js.map +1 -0
  106. package/dist/src/types/blob.d.ts +25 -0
  107. package/dist/src/types/blob.js +46 -0
  108. package/dist/src/types/blob.js.map +1 -0
  109. package/dist/src/types/currency.d.ts +30 -0
  110. package/dist/src/types/currency.js +131 -0
  111. package/dist/src/types/currency.js.map +1 -0
  112. package/dist/src/types/data.d.ts +104 -0
  113. package/dist/src/types/data.js +387 -0
  114. package/dist/src/types/data.js.map +1 -0
  115. package/dist/src/types/dataType.d.ts +94 -0
  116. package/dist/src/types/dataType.js +145 -0
  117. package/dist/src/types/dataType.js.map +1 -0
  118. package/dist/src/types/hash-128.d.ts +18 -0
  119. package/dist/src/types/hash-128.js +36 -0
  120. package/dist/src/types/hash-128.js.map +1 -0
  121. package/dist/src/types/hash-160.d.ts +12 -0
  122. package/dist/src/types/hash-160.js +23 -0
  123. package/dist/src/types/hash-160.js.map +1 -0
  124. package/dist/src/types/hash-192.d.ts +12 -0
  125. package/dist/src/types/hash-192.js +23 -0
  126. package/dist/src/types/hash-192.js.map +1 -0
  127. package/dist/src/types/hash-256.d.ts +12 -0
  128. package/dist/src/types/hash-256.js +20 -0
  129. package/dist/src/types/hash-256.js.map +1 -0
  130. package/dist/src/types/hash.d.ts +40 -0
  131. package/dist/src/types/hash.js +76 -0
  132. package/dist/src/types/hash.js.map +1 -0
  133. package/dist/src/types/index.d.ts +21 -0
  134. package/dist/src/types/index.js +72 -0
  135. package/dist/src/types/index.js.map +1 -0
  136. package/dist/src/types/issue.d.ts +49 -0
  137. package/dist/src/types/issue.js +107 -0
  138. package/dist/src/types/issue.js.map +1 -0
  139. package/dist/src/types/json.d.ts +169 -0
  140. package/dist/src/types/json.js +529 -0
  141. package/dist/src/types/json.js.map +1 -0
  142. package/dist/src/types/path-set.d.ts +37 -0
  143. package/dist/src/types/path-set.js +236 -0
  144. package/dist/src/types/path-set.js.map +1 -0
  145. package/dist/src/types/serialized-type.d.ts +117 -0
  146. package/dist/src/types/serialized-type.js +242 -0
  147. package/dist/src/types/serialized-type.js.map +1 -0
  148. package/dist/src/types/st-array.d.ts +32 -0
  149. package/dist/src/types/st-array.js +89 -0
  150. package/dist/src/types/st-array.js.map +1 -0
  151. package/dist/src/types/st-number.d.ts +55 -0
  152. package/dist/src/types/st-number.js +212 -0
  153. package/dist/src/types/st-number.js.map +1 -0
  154. package/dist/src/types/st-object.d.ts +33 -0
  155. package/dist/src/types/st-object.js +176 -0
  156. package/dist/src/types/st-object.js.map +1 -0
  157. package/dist/src/types/uint-16.d.ts +26 -0
  158. package/dist/src/types/uint-16.js +49 -0
  159. package/dist/src/types/uint-16.js.map +1 -0
  160. package/dist/src/types/uint-32.d.ts +26 -0
  161. package/dist/src/types/uint-32.js +54 -0
  162. package/dist/src/types/uint-32.js.map +1 -0
  163. package/dist/src/types/uint-64.d.ts +40 -0
  164. package/dist/src/types/uint-64.js +112 -0
  165. package/dist/src/types/uint-64.js.map +1 -0
  166. package/dist/src/types/uint-8.d.ts +26 -0
  167. package/dist/src/types/uint-8.js +50 -0
  168. package/dist/src/types/uint-8.js.map +1 -0
  169. package/dist/src/types/uint.d.ts +29 -0
  170. package/dist/src/types/uint.js +47 -0
  171. package/dist/src/types/uint.js.map +1 -0
  172. package/dist/src/types/vector-256.d.ts +31 -0
  173. package/dist/src/types/vector-256.js +76 -0
  174. package/dist/src/types/vector-256.js.map +1 -0
  175. package/dist/src/types/xchain-bridge.d.ts +45 -0
  176. package/dist/src/types/xchain-bridge.js +105 -0
  177. package/dist/src/types/xchain-bridge.js.map +1 -0
  178. package/dist/src/utils.d.ts +79 -0
  179. package/dist/src/utils.js +181 -0
  180. package/dist/src/utils.js.map +1 -0
  181. package/dist/tsconfig.tsbuildinfo +1 -0
  182. package/dist/types/account-id.d.ts +3 -2
  183. package/dist/types/account-id.js +8 -6
  184. package/dist/types/account-id.js.map +1 -1
  185. package/dist/types/amount.d.ts +33 -9
  186. package/dist/types/amount.js +128 -43
  187. package/dist/types/amount.js.map +1 -1
  188. package/dist/types/blob.d.ts +3 -3
  189. package/dist/types/blob.js +8 -2
  190. package/dist/types/blob.js.map +1 -1
  191. package/dist/types/currency.d.ts +3 -2
  192. package/dist/types/currency.js +17 -13
  193. package/dist/types/currency.js.map +1 -1
  194. package/dist/types/data.d.ts +104 -0
  195. package/dist/types/data.js +387 -0
  196. package/dist/types/data.js.map +1 -0
  197. package/dist/types/dataType.d.ts +94 -0
  198. package/dist/types/dataType.js +145 -0
  199. package/dist/types/dataType.js.map +1 -0
  200. package/dist/types/hash-128.d.ts +3 -2
  201. package/dist/types/hash-128.js +7 -3
  202. package/dist/types/hash-128.js.map +1 -1
  203. package/dist/types/hash-160.d.ts +3 -2
  204. package/dist/types/hash-160.js +5 -2
  205. package/dist/types/hash-160.js.map +1 -1
  206. package/dist/types/hash-192.d.ts +12 -0
  207. package/dist/types/hash-192.js +23 -0
  208. package/dist/types/hash-192.js.map +1 -0
  209. package/dist/types/hash-256.d.ts +3 -2
  210. package/dist/types/hash-256.js +5 -2
  211. package/dist/types/hash-256.js.map +1 -1
  212. package/dist/types/hash.d.ts +2 -3
  213. package/dist/types/hash.js +8 -4
  214. package/dist/types/hash.js.map +1 -1
  215. package/dist/types/index.d.ts +4 -1
  216. package/dist/types/index.js +17 -2
  217. package/dist/types/index.js.map +1 -1
  218. package/dist/types/issue.d.ts +49 -0
  219. package/dist/types/issue.js +107 -0
  220. package/dist/types/issue.js.map +1 -0
  221. package/dist/types/json.d.ts +169 -0
  222. package/dist/types/json.js +529 -0
  223. package/dist/types/json.js.map +1 -0
  224. package/dist/types/path-set.d.ts +2 -1
  225. package/dist/types/path-set.js +15 -12
  226. package/dist/types/path-set.js.map +1 -1
  227. package/dist/types/serialized-type.d.ts +70 -16
  228. package/dist/types/serialized-type.js +153 -8
  229. package/dist/types/serialized-type.js.map +1 -1
  230. package/dist/types/st-array.d.ts +7 -3
  231. package/dist/types/st-array.js +20 -11
  232. package/dist/types/st-array.js.map +1 -1
  233. package/dist/types/st-number.d.ts +55 -0
  234. package/dist/types/st-number.js +212 -0
  235. package/dist/types/st-number.js.map +1 -0
  236. package/dist/types/st-object.d.ts +2 -1
  237. package/dist/types/st-object.js +35 -8
  238. package/dist/types/st-object.js.map +1 -1
  239. package/dist/types/uint-16.d.ts +3 -2
  240. package/dist/types/uint-16.js +10 -5
  241. package/dist/types/uint-16.js.map +1 -1
  242. package/dist/types/uint-32.d.ts +3 -2
  243. package/dist/types/uint-32.js +11 -6
  244. package/dist/types/uint-32.js.map +1 -1
  245. package/dist/types/uint-64.d.ts +8 -7
  246. package/dist/types/uint-64.js +49 -24
  247. package/dist/types/uint-64.js.map +1 -1
  248. package/dist/types/uint-8.d.ts +3 -2
  249. package/dist/types/uint-8.js +11 -5
  250. package/dist/types/uint-8.js.map +1 -1
  251. package/dist/types/uint.d.ts +5 -6
  252. package/dist/types/uint.js +5 -0
  253. package/dist/types/uint.js.map +1 -1
  254. package/dist/types/vector-256.d.ts +3 -3
  255. package/dist/types/vector-256.js +5 -4
  256. package/dist/types/vector-256.js.map +1 -1
  257. package/dist/types/xchain-bridge.d.ts +45 -0
  258. package/dist/types/xchain-bridge.js +105 -0
  259. package/dist/types/xchain-bridge.js.map +1 -0
  260. package/dist/utils.d.ts +79 -0
  261. package/dist/utils.js +181 -0
  262. package/dist/utils.js.map +1 -0
  263. package/package.json +21 -17
  264. package/src/README.md +5 -0
  265. package/src/binary.ts +235 -0
  266. package/src/coretypes.ts +31 -0
  267. package/src/enums/README.md +144 -0
  268. package/src/enums/bytes.ts +80 -0
  269. package/src/enums/constants.ts +5 -0
  270. package/src/enums/definitions.json +3409 -0
  271. package/src/enums/field.ts +84 -0
  272. package/src/enums/index.ts +34 -0
  273. package/src/enums/utils-renumber.ts +134 -0
  274. package/src/enums/xrpl-definitions-base.ts +150 -0
  275. package/src/enums/xrpl-definitions.ts +33 -0
  276. package/src/hash-prefixes.ts +42 -0
  277. package/src/hashes.ts +75 -0
  278. package/src/index.ts +166 -0
  279. package/src/ledger-hashes.ts +191 -0
  280. package/src/quality.ts +38 -0
  281. package/src/serdes/binary-parser.ts +228 -0
  282. package/src/serdes/binary-serializer.ts +166 -0
  283. package/src/shamap.ts +189 -0
  284. package/src/types/account-id.ts +91 -0
  285. package/src/types/amount.ts +366 -0
  286. package/src/types/blob.ts +50 -0
  287. package/src/types/currency.ts +145 -0
  288. package/src/types/data.ts +496 -0
  289. package/src/types/dataType.ts +178 -0
  290. package/src/types/hash-128.ts +38 -0
  291. package/src/types/hash-160.ts +24 -0
  292. package/src/types/hash-192.ts +24 -0
  293. package/src/types/hash-256.ts +20 -0
  294. package/src/types/hash.ts +86 -0
  295. package/src/types/index.ts +74 -0
  296. package/src/types/issue.ts +140 -0
  297. package/src/types/json.ts +641 -0
  298. package/src/types/path-set.ts +294 -0
  299. package/src/types/serialized-type.ts +271 -0
  300. package/src/types/st-array.ts +117 -0
  301. package/src/types/st-number.ts +238 -0
  302. package/src/types/st-object.ts +219 -0
  303. package/src/types/uint-16.ts +58 -0
  304. package/src/types/uint-32.ts +64 -0
  305. package/src/types/uint-64.ts +141 -0
  306. package/src/types/uint-8.ts +57 -0
  307. package/src/types/uint.ts +60 -0
  308. package/src/types/vector-256.ts +83 -0
  309. package/src/types/xchain-bridge.ts +132 -0
  310. package/src/utils.ts +220 -0
  311. package/test/amount.test.js +0 -43
  312. package/test/binary-json.test.js +0 -45
  313. package/test/binary-parser.test.js +0 -396
  314. package/test/binary-serializer.test.js +0 -319
  315. package/test/definitions.test.js +0 -100
  316. package/test/fixtures/account-tx-transactions.db +0 -0
  317. package/test/fixtures/codec-fixtures.json +0 -4466
  318. package/test/fixtures/data-driven-tests.json +0 -2919
  319. package/test/fixtures/delivermin-tx-binary.json +0 -1
  320. package/test/fixtures/delivermin-tx.json +0 -98
  321. package/test/fixtures/deposit-preauth-tx-binary.json +0 -1
  322. package/test/fixtures/deposit-preauth-tx-meta-binary.json +0 -1
  323. package/test/fixtures/deposit-preauth-tx.json +0 -58
  324. package/test/fixtures/escrow-cancel-binary.json +0 -1
  325. package/test/fixtures/escrow-cancel-tx.json +0 -6
  326. package/test/fixtures/escrow-create-binary.json +0 -1
  327. package/test/fixtures/escrow-create-tx.json +0 -10
  328. package/test/fixtures/escrow-finish-binary.json +0 -1
  329. package/test/fixtures/escrow-finish-meta-binary.json +0 -1
  330. package/test/fixtures/escrow-finish-tx.json +0 -95
  331. package/test/fixtures/ledger-full-38129.json +0 -1
  332. package/test/fixtures/ledger-full-40000.json +0 -1
  333. package/test/fixtures/negative-unl.json +0 -12
  334. package/test/fixtures/nf-token.json +0 -547
  335. package/test/fixtures/payment-channel-claim-binary.json +0 -1
  336. package/test/fixtures/payment-channel-claim-tx.json +0 -8
  337. package/test/fixtures/payment-channel-create-binary.json +0 -1
  338. package/test/fixtures/payment-channel-create-tx.json +0 -11
  339. package/test/fixtures/payment-channel-fund-binary.json +0 -1
  340. package/test/fixtures/payment-channel-fund-tx.json +0 -7
  341. package/test/fixtures/remit-binary.json +0 -1
  342. package/test/fixtures/remit-tx.json +0 -39
  343. package/test/fixtures/signerlistset-tx-binary.json +0 -1
  344. package/test/fixtures/signerlistset-tx-meta-binary.json +0 -1
  345. package/test/fixtures/signerlistset-tx.json +0 -94
  346. package/test/fixtures/ticket-create-binary.json +0 -1
  347. package/test/fixtures/ticket-create-tx.json +0 -7
  348. package/test/fixtures/unl-report-binary.json +0 -1
  349. package/test/fixtures/unl-report-meta-binary.json +0 -1
  350. package/test/fixtures/unl-report.json +0 -89
  351. package/test/fixtures/x-codec-fixtures.json +0 -188
  352. package/test/hash.test.js +0 -135
  353. package/test/ledger.test.js +0 -29
  354. package/test/lower-case-hex.test.js +0 -46
  355. package/test/pseudo-transaction.test.js +0 -38
  356. package/test/quality.test.js +0 -15
  357. package/test/shamap.test.js +0 -89
  358. package/test/signing-data-encoding.test.js +0 -213
  359. package/test/tx-encode-decode.test.js +0 -119
  360. package/test/types.test.js +0 -34
  361. package/test/uint.test.js +0 -148
  362. package/test/utils.js +0 -30
  363. package/test/x-address.test.js +0 -181
@@ -0,0 +1,104 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType, SerializedTypeID } from './serialized-type';
3
+ import { Hash128 } from './hash-128';
4
+ import { Hash160 } from './hash-160';
5
+ import { Hash192 } from './hash-192';
6
+ import { Hash256 } from './hash-256';
7
+ import { AccountID } from './account-id';
8
+ import { Amount } from './amount';
9
+ import { Blob } from './blob';
10
+ import { Currency } from './currency';
11
+ import { STNumber } from './st-number';
12
+ import { Issue } from './issue';
13
+ import { UInt8 } from './uint-8';
14
+ import { UInt16 } from './uint-16';
15
+ import { UInt32 } from './uint-32';
16
+ import { UInt64 } from './uint-64';
17
+ /**
18
+ * Interface for Data JSON representation
19
+ */
20
+ interface DataJSON extends JsonObject {
21
+ type: string;
22
+ value: string | number | JsonObject;
23
+ }
24
+ /**
25
+ * Type union for all possible data values
26
+ */
27
+ type DataValue = number | string | bigint | Uint8Array | UInt8 | UInt16 | UInt32 | UInt64 | Hash128 | Hash160 | Hash192 | Hash256 | AccountID | Amount | Blob | Currency | STNumber | Issue;
28
+ /**
29
+ * STData: Encodes XRPL's "Data" type.
30
+ *
31
+ * This type wraps both a SerializedTypeID and the actual data value.
32
+ * It's encoded as a 2-byte type ID followed by the serialized data.
33
+ *
34
+ * Usage:
35
+ * Data.from({ type: "AMOUNT", value: "1000000" })
36
+ * Data.from({ type: "UINT64", value: "123456789" })
37
+ * Data.fromParser(parser)
38
+ */
39
+ declare class Data extends SerializedType {
40
+ static readonly ZERO_DATA: Data;
41
+ /**
42
+ * Construct Data from bytes
43
+ * @param bytes - Uint8Array containing type ID and data
44
+ */
45
+ constructor(bytes: Uint8Array);
46
+ /**
47
+ * Create Data from various input types
48
+ *
49
+ * @param value - Can be:
50
+ * - Data instance (returns as-is)
51
+ * - DataJSON object with 'type' and 'value' fields
52
+ * @returns Data instance
53
+ * @throws Error if value type is not supported
54
+ */
55
+ static from(value: unknown): Data;
56
+ /**
57
+ * Create Data from JSON representation
58
+ *
59
+ * @param json - Object with 'type' and 'value' fields
60
+ * @returns Data instance
61
+ * @throws Error if type is not supported
62
+ */
63
+ static fromJSON(json: DataJSON): Data;
64
+ /**
65
+ * Read Data from a BinaryParser stream
66
+ *
67
+ * @param parser - BinaryParser positioned at the start of Data
68
+ * @returns Data instance
69
+ */
70
+ static fromParser(parser: BinaryParser): Data;
71
+ /**
72
+ * Get the inner SerializedTypeID
73
+ *
74
+ * @returns The inner type ID
75
+ */
76
+ getInnerType(): SerializedTypeID;
77
+ /**
78
+ * Get the string representation of the inner type
79
+ *
80
+ * @returns String name of the type
81
+ */
82
+ getInnerTypeString(): string;
83
+ /**
84
+ * Get the data value
85
+ *
86
+ * @returns The stored data value
87
+ */
88
+ getValue(): DataValue;
89
+ /**
90
+ * Convert to JSON representation
91
+ *
92
+ * @returns JSON object with 'type' and 'value' fields
93
+ */
94
+ toJSON(): DataJSON;
95
+ /**
96
+ * Compare with another Data for equality
97
+ *
98
+ * @param other - Another Data to compare with
99
+ * @returns true if both have the same inner type and data
100
+ */
101
+ equals(other: Data): boolean;
102
+ getSType(): SerializedTypeID;
103
+ }
104
+ export { Data };
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Data = void 0;
4
+ /* eslint-disable max-lines */
5
+ /* eslint-disable complexity */
6
+ const binary_parser_1 = require("../serdes/binary-parser");
7
+ const serialized_type_1 = require("./serialized-type");
8
+ const utils_1 = require("../utils");
9
+ const utils_2 = require("@transia/isomorphic/utils");
10
+ const hash_128_1 = require("./hash-128");
11
+ const hash_160_1 = require("./hash-160");
12
+ const hash_192_1 = require("./hash-192");
13
+ const hash_256_1 = require("./hash-256");
14
+ const account_id_1 = require("./account-id");
15
+ const amount_1 = require("./amount");
16
+ const blob_1 = require("./blob");
17
+ const currency_1 = require("./currency");
18
+ const st_number_1 = require("./st-number");
19
+ const issue_1 = require("./issue");
20
+ const uint_8_1 = require("./uint-8");
21
+ const uint_16_1 = require("./uint-16");
22
+ const uint_32_1 = require("./uint-32");
23
+ const uint_64_1 = require("./uint-64");
24
+ const binary_1 = require("../binary");
25
+ /**
26
+ * STData: Encodes XRPL's "Data" type.
27
+ *
28
+ * This type wraps both a SerializedTypeID and the actual data value.
29
+ * It's encoded as a 2-byte type ID followed by the serialized data.
30
+ *
31
+ * Usage:
32
+ * Data.from({ type: "AMOUNT", value: "1000000" })
33
+ * Data.from({ type: "UINT64", value: "123456789" })
34
+ * Data.fromParser(parser)
35
+ */
36
+ class Data extends serialized_type_1.SerializedType {
37
+ /**
38
+ * Construct Data from bytes
39
+ * @param bytes - Uint8Array containing type ID and data
40
+ */
41
+ constructor(bytes) {
42
+ super(bytes !== null && bytes !== void 0 ? bytes : Data.ZERO_DATA.bytes);
43
+ }
44
+ /**
45
+ * Create Data from various input types
46
+ *
47
+ * @param value - Can be:
48
+ * - Data instance (returns as-is)
49
+ * - DataJSON object with 'type' and 'value' fields
50
+ * @returns Data instance
51
+ * @throws Error if value type is not supported
52
+ */
53
+ static from(value) {
54
+ if (value instanceof Data) {
55
+ return value;
56
+ }
57
+ if (typeof value === 'object' &&
58
+ value !== null &&
59
+ 'type' in value &&
60
+ 'value' in value) {
61
+ const json = value;
62
+ return Data.fromJSON(json);
63
+ }
64
+ throw new Error('Data.from: value must be Data instance or DataJSON object');
65
+ }
66
+ /**
67
+ * Create Data from JSON representation
68
+ *
69
+ * @param json - Object with 'type' and 'value' fields
70
+ * @returns Data instance
71
+ * @throws Error if type is not supported
72
+ */
73
+ static fromJSON(json) {
74
+ const typeId = serialized_type_1.TYPE_STRING_TO_ID[json.type];
75
+ if (typeId === undefined) {
76
+ throw new Error(`Data: unsupported type string: ${json.type}`);
77
+ }
78
+ let dataValue;
79
+ let dataBytes;
80
+ switch (typeId) {
81
+ case serialized_type_1.SerializedTypeID.STI_UINT8: {
82
+ const val = typeof json.value === 'string'
83
+ ? parseInt(json.value, 10)
84
+ : typeof json.value === 'number'
85
+ ? json.value
86
+ : Number(json.value);
87
+ if (typeof val !== 'number' ||
88
+ Number.isNaN(val) ||
89
+ val < 0 ||
90
+ val > 255) {
91
+ throw new Error('UINT8 value out of range');
92
+ }
93
+ dataValue = uint_8_1.UInt8.from(val);
94
+ dataBytes = dataValue.toBytes();
95
+ break;
96
+ }
97
+ case serialized_type_1.SerializedTypeID.STI_UINT16: {
98
+ const val = typeof json.value === 'string'
99
+ ? parseInt(json.value, 10)
100
+ : typeof json.value === 'number'
101
+ ? json.value
102
+ : Number(json.value);
103
+ if (typeof val !== 'number' ||
104
+ Number.isNaN(val) ||
105
+ val < 0 ||
106
+ val > 65535) {
107
+ throw new Error('UINT16 value out of range');
108
+ }
109
+ dataValue = uint_16_1.UInt16.from(val);
110
+ dataBytes = dataValue.toBytes();
111
+ break;
112
+ }
113
+ case serialized_type_1.SerializedTypeID.STI_UINT32: {
114
+ const val = typeof json.value === 'string'
115
+ ? parseInt(json.value, 10)
116
+ : typeof json.value === 'number'
117
+ ? json.value
118
+ : Number(json.value);
119
+ dataValue = uint_32_1.UInt32.from(val);
120
+ dataBytes = dataValue.toBytes();
121
+ break;
122
+ }
123
+ case serialized_type_1.SerializedTypeID.STI_UINT64: {
124
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
125
+ dataValue = uint_64_1.UInt64.from(val);
126
+ dataBytes = dataValue.toBytes();
127
+ break;
128
+ }
129
+ case serialized_type_1.SerializedTypeID.STI_UINT128: {
130
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
131
+ dataValue = hash_128_1.Hash128.from(val);
132
+ dataBytes = dataValue.toBytes();
133
+ break;
134
+ }
135
+ case serialized_type_1.SerializedTypeID.STI_UINT160: {
136
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
137
+ dataValue = hash_160_1.Hash160.from(val);
138
+ dataBytes = dataValue.toBytes();
139
+ break;
140
+ }
141
+ case serialized_type_1.SerializedTypeID.STI_UINT192: {
142
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
143
+ dataValue = hash_192_1.Hash192.from(val);
144
+ dataBytes = dataValue.toBytes();
145
+ break;
146
+ }
147
+ case serialized_type_1.SerializedTypeID.STI_UINT256: {
148
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
149
+ dataValue = hash_256_1.Hash256.from(val);
150
+ dataBytes = dataValue.toBytes();
151
+ break;
152
+ }
153
+ case serialized_type_1.SerializedTypeID.STI_VL: {
154
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
155
+ dataValue = blob_1.Blob.from(val);
156
+ dataBytes = dataValue.toBytes();
157
+ const lengthBytes = binary_1.BinarySerializer.encodeVariableLength(dataBytes.length);
158
+ dataBytes = (0, utils_2.concat)([lengthBytes, dataBytes]);
159
+ break;
160
+ }
161
+ case serialized_type_1.SerializedTypeID.STI_ACCOUNT: {
162
+ dataValue = account_id_1.AccountID.from(typeof json.value === 'string' ? json.value : json.value.toString());
163
+ dataBytes = dataValue.toBytes();
164
+ dataBytes = (0, utils_2.concat)([new Uint8Array([0x14]), dataBytes]);
165
+ break;
166
+ }
167
+ case serialized_type_1.SerializedTypeID.STI_AMOUNT: {
168
+ dataValue = amount_1.Amount.from(json.value);
169
+ dataBytes = dataValue.toBytes();
170
+ break;
171
+ }
172
+ case serialized_type_1.SerializedTypeID.STI_ISSUE: {
173
+ dataValue = issue_1.Issue.from(json.value);
174
+ dataBytes = dataValue.toBytes();
175
+ break;
176
+ }
177
+ case serialized_type_1.SerializedTypeID.STI_CURRENCY: {
178
+ const val = typeof json.value === 'string' ? json.value : json.value.toString();
179
+ dataValue = currency_1.Currency.from(val);
180
+ dataBytes = dataValue.toBytes();
181
+ break;
182
+ }
183
+ case serialized_type_1.SerializedTypeID.STI_NUMBER: {
184
+ dataValue = st_number_1.STNumber.from(json.value);
185
+ dataBytes = dataValue.toBytes();
186
+ break;
187
+ }
188
+ default:
189
+ throw new Error(`Data.fromJSON(): unsupported type ID: ${typeId}`);
190
+ }
191
+ // Combine type header with data bytes
192
+ const typeBytes = new Uint8Array(2);
193
+ (0, utils_1.writeUInt16BE)(typeBytes, typeId, 0);
194
+ const fullBytes = (0, utils_2.concat)([typeBytes, dataBytes]);
195
+ return new Data(fullBytes);
196
+ }
197
+ /**
198
+ * Read Data from a BinaryParser stream
199
+ *
200
+ * @param parser - BinaryParser positioned at the start of Data
201
+ * @returns Data instance
202
+ */
203
+ static fromParser(parser) {
204
+ // Read the 2-byte type ID
205
+ const typeBytes = parser.read(2);
206
+ const typeId = serialized_type_1.TYPE_NUMBER_TO_ID[(0, utils_1.readUInt16BE)(typeBytes, 0)];
207
+ let dataValue;
208
+ let dataBytes;
209
+ switch (typeId) {
210
+ case serialized_type_1.SerializedTypeID.STI_UINT8:
211
+ dataValue = uint_8_1.UInt8.fromParser(parser);
212
+ dataBytes = dataValue.toBytes();
213
+ break;
214
+ case serialized_type_1.SerializedTypeID.STI_UINT16:
215
+ dataValue = uint_16_1.UInt16.fromParser(parser);
216
+ dataBytes = dataValue.toBytes();
217
+ break;
218
+ case serialized_type_1.SerializedTypeID.STI_UINT32:
219
+ dataValue = uint_32_1.UInt32.fromParser(parser);
220
+ dataBytes = dataValue.toBytes();
221
+ break;
222
+ case serialized_type_1.SerializedTypeID.STI_UINT64:
223
+ dataValue = uint_64_1.UInt64.fromParser(parser);
224
+ dataBytes = dataValue.toBytes();
225
+ break;
226
+ case serialized_type_1.SerializedTypeID.STI_UINT128:
227
+ dataValue = hash_128_1.Hash128.fromParser(parser);
228
+ dataBytes = dataValue.toBytes();
229
+ break;
230
+ case serialized_type_1.SerializedTypeID.STI_UINT160:
231
+ dataValue = hash_160_1.Hash160.fromParser(parser);
232
+ dataBytes = dataValue.toBytes();
233
+ break;
234
+ case serialized_type_1.SerializedTypeID.STI_UINT192:
235
+ dataValue = hash_192_1.Hash192.fromParser(parser);
236
+ dataBytes = dataValue.toBytes();
237
+ break;
238
+ case serialized_type_1.SerializedTypeID.STI_UINT256:
239
+ dataValue = hash_256_1.Hash256.fromParser(parser);
240
+ dataBytes = dataValue.toBytes();
241
+ break;
242
+ case serialized_type_1.SerializedTypeID.STI_VL:
243
+ dataValue = blob_1.Blob.fromParser(parser, parser.readVariableLengthLength());
244
+ dataBytes = dataValue.toBytes();
245
+ break;
246
+ case serialized_type_1.SerializedTypeID.STI_ACCOUNT:
247
+ parser.skip(1);
248
+ dataValue = account_id_1.AccountID.fromParser(parser);
249
+ dataBytes = dataValue.toBytes();
250
+ break;
251
+ case serialized_type_1.SerializedTypeID.STI_AMOUNT:
252
+ dataValue = amount_1.Amount.fromParser(parser);
253
+ dataBytes = dataValue.toBytes();
254
+ break;
255
+ case serialized_type_1.SerializedTypeID.STI_ISSUE:
256
+ dataValue = issue_1.Issue.fromParser(parser);
257
+ dataBytes = dataValue.toBytes();
258
+ break;
259
+ case serialized_type_1.SerializedTypeID.STI_CURRENCY:
260
+ dataValue = currency_1.Currency.fromParser(parser);
261
+ dataBytes = dataValue.toBytes();
262
+ break;
263
+ case serialized_type_1.SerializedTypeID.STI_NUMBER:
264
+ dataValue = st_number_1.STNumber.fromParser(parser);
265
+ dataBytes = dataValue.toBytes();
266
+ break;
267
+ default:
268
+ throw new Error(`Data: unsupported type ID when parsing: ${typeId}`);
269
+ }
270
+ const fullBytes = (0, utils_2.concat)([typeBytes, dataBytes]);
271
+ return new Data(fullBytes);
272
+ }
273
+ /**
274
+ * Get the inner SerializedTypeID
275
+ *
276
+ * @returns The inner type ID
277
+ */
278
+ getInnerType() {
279
+ return serialized_type_1.TYPE_NUMBER_TO_ID[(0, utils_1.readUInt16BE)(this.bytes, 0)];
280
+ }
281
+ /**
282
+ * Get the string representation of the inner type
283
+ *
284
+ * @returns String name of the type
285
+ */
286
+ getInnerTypeString() {
287
+ const innerType = this.getInnerType();
288
+ return serialized_type_1.TYPE_ID_TO_STRING[innerType] || innerType.toString();
289
+ }
290
+ /**
291
+ * Get the data value
292
+ *
293
+ * @returns The stored data value
294
+ */
295
+ getValue() {
296
+ const innerType = this.getInnerType();
297
+ const parser = new binary_parser_1.BinaryParser((0, utils_2.bytesToHex)(this.bytes.slice(2)));
298
+ switch (innerType) {
299
+ case serialized_type_1.SerializedTypeID.STI_UINT8:
300
+ return uint_8_1.UInt8.fromParser(parser);
301
+ case serialized_type_1.SerializedTypeID.STI_UINT16:
302
+ return uint_16_1.UInt16.fromParser(parser);
303
+ case serialized_type_1.SerializedTypeID.STI_UINT32:
304
+ return uint_32_1.UInt32.fromParser(parser);
305
+ case serialized_type_1.SerializedTypeID.STI_UINT64:
306
+ return uint_64_1.UInt64.fromParser(parser);
307
+ case serialized_type_1.SerializedTypeID.STI_UINT128:
308
+ return hash_128_1.Hash128.fromParser(parser);
309
+ case serialized_type_1.SerializedTypeID.STI_UINT160:
310
+ return hash_160_1.Hash160.fromParser(parser);
311
+ case serialized_type_1.SerializedTypeID.STI_UINT192:
312
+ return hash_192_1.Hash192.fromParser(parser);
313
+ case serialized_type_1.SerializedTypeID.STI_UINT256:
314
+ return hash_256_1.Hash256.fromParser(parser);
315
+ case serialized_type_1.SerializedTypeID.STI_VL:
316
+ return blob_1.Blob.fromParser(parser, parser.size());
317
+ case serialized_type_1.SerializedTypeID.STI_ACCOUNT:
318
+ return account_id_1.AccountID.fromParser(parser);
319
+ case serialized_type_1.SerializedTypeID.STI_AMOUNT:
320
+ return amount_1.Amount.fromParser(parser);
321
+ case serialized_type_1.SerializedTypeID.STI_ISSUE:
322
+ return issue_1.Issue.fromParser(parser);
323
+ case serialized_type_1.SerializedTypeID.STI_CURRENCY:
324
+ return currency_1.Currency.fromParser(parser);
325
+ case serialized_type_1.SerializedTypeID.STI_NUMBER:
326
+ return st_number_1.STNumber.fromParser(parser);
327
+ default:
328
+ throw new Error(`Data.getValue(): unsupported type ID: ${typeof innerType}`);
329
+ }
330
+ }
331
+ /**
332
+ * Convert to JSON representation
333
+ *
334
+ * @returns JSON object with 'type' and 'value' fields
335
+ */
336
+ toJSON() {
337
+ const data = this.getValue();
338
+ let jsonValue;
339
+ // Convert the data value to its JSON representation
340
+ if (data instanceof serialized_type_1.SerializedType) {
341
+ jsonValue = data.toJSON();
342
+ }
343
+ else if (data instanceof Uint8Array) {
344
+ jsonValue = (0, utils_2.bytesToHex)(data);
345
+ }
346
+ else if (typeof data === 'bigint') {
347
+ jsonValue = data.toString();
348
+ }
349
+ else {
350
+ jsonValue = data;
351
+ }
352
+ return {
353
+ type: this.getInnerTypeString(),
354
+ value: jsonValue,
355
+ };
356
+ }
357
+ /**
358
+ * Compare with another Data for equality
359
+ *
360
+ * @param other - Another Data to compare with
361
+ * @returns true if both have the same inner type and data
362
+ */
363
+ equals(other) {
364
+ if (!(other instanceof Data)) {
365
+ return false;
366
+ }
367
+ // Compare bytes directly
368
+ if (this.bytes.length !== other.bytes.length) {
369
+ return false;
370
+ }
371
+ for (let i = 0; i < this.bytes.length; i++) {
372
+ if (this.bytes[i] !== other.bytes[i]) {
373
+ return false;
374
+ }
375
+ }
376
+ return true;
377
+ }
378
+ getSType() {
379
+ return serialized_type_1.SerializedTypeID.STI_DATA;
380
+ }
381
+ }
382
+ exports.Data = Data;
383
+ Data.ZERO_DATA = new Data((0, utils_2.concat)([
384
+ new Uint8Array([0x00, 0x01]),
385
+ new Uint8Array([0x00, 0x00]), // Value: two zero bytes for UINT16
386
+ ]));
387
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/types/data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType, SerializedTypeID } from './serialized-type';
3
+ /**
4
+ * Interface for DataType JSON representation
5
+ */
6
+ interface DataTypeJSON extends JsonObject {
7
+ type: string;
8
+ }
9
+ /**
10
+ * STDataType: Encodes XRPL's "DataType" type.
11
+ *
12
+ * This type wraps an inner SerializedTypeID to indicate what type of data
13
+ * a field contains. It's encoded as a 2-byte unsigned integer representing
14
+ * the inner type.
15
+ *
16
+ * Usage:
17
+ * DataType.from({ type: "AMOUNT" })
18
+ * DataType.from("UINT64")
19
+ * DataType.fromParser(parser)
20
+ */
21
+ declare class DataType extends SerializedType {
22
+ private innerType;
23
+ /**
24
+ * Default bytes for DataType (STI_NOTPRESENT)
25
+ */
26
+ static readonly defaultBytes: Uint8Array;
27
+ /**
28
+ * Construct a DataType from bytes
29
+ * @param bytes - 2-byte Uint8Array containing the inner type ID
30
+ * @param innerType - Optional explicit inner type (used when constructing from value)
31
+ * @throws Error if bytes is not a 2-byte Uint8Array
32
+ */
33
+ constructor(bytes?: Uint8Array, innerType?: SerializedTypeID);
34
+ /**
35
+ * Construct from various input types
36
+ *
37
+ * @param value - Can be:
38
+ * - DataType instance (returns as-is)
39
+ * - DataTypeJSON object with 'type' field
40
+ * - String type name (e.g., "AMOUNT", "UINT64")
41
+ * - SerializedTypeID enum value
42
+ * @returns DataType instance
43
+ * @throws Error if value type is not supported or type string is unknown
44
+ */
45
+ static from(value: unknown): DataType;
46
+ /**
47
+ * Construct from a type string
48
+ *
49
+ * @param typeStr - Type string like "AMOUNT", "UINT64", etc.
50
+ * @returns DataType instance
51
+ * @throws Error if type string is not recognized
52
+ */
53
+ static fromTypeString(typeStr: string): DataType;
54
+ /**
55
+ * Construct from a SerializedTypeID
56
+ *
57
+ * @param typeId - The SerializedTypeID enum value
58
+ * @returns DataType instance
59
+ */
60
+ static fromTypeId(typeId: SerializedTypeID): DataType;
61
+ /**
62
+ * Read a DataType from a BinaryParser stream (2 bytes)
63
+ *
64
+ * @param parser - BinaryParser positioned at the start of a DataType
65
+ * @returns DataType instance
66
+ */
67
+ static fromParser(parser: BinaryParser): DataType;
68
+ /**
69
+ * Get the inner SerializedTypeID
70
+ *
71
+ * @returns The inner type ID
72
+ */
73
+ getInnerType(): SerializedTypeID;
74
+ /**
75
+ * Set the inner SerializedTypeID
76
+ *
77
+ * @param typeId - The new inner type ID
78
+ */
79
+ setInnerType(typeId: SerializedTypeID): void;
80
+ /**
81
+ * Get the string representation of the inner type
82
+ *
83
+ * @returns String name of the type, or numeric string if unknown
84
+ */
85
+ getInnerTypeString(): string;
86
+ /**
87
+ * Convert to JSON representation
88
+ *
89
+ * @returns JSON object with 'type' field
90
+ */
91
+ toJSON(): DataTypeJSON;
92
+ getSType(): SerializedTypeID;
93
+ }
94
+ export { DataType };