@transia/ripple-binary-codec 1.4.6-alpha.9 → 2.5.1-quantum.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 (340) 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 +1 -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 +1535 -919
  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 +1537 -921
  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 +6 -7
  43. package/dist/serdes/binary-serializer.js +12 -35
  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 +63 -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 +3385 -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 +35 -0
  101. package/dist/src/types/account-id.js +69 -0
  102. package/dist/src/types/account-id.js.map +1 -0
  103. package/dist/src/types/amount.d.ts +91 -0
  104. package/dist/src/types/amount.js +289 -0
  105. package/dist/src/types/amount.js.map +1 -0
  106. package/dist/src/types/blob.d.ts +24 -0
  107. package/dist/src/types/blob.js +43 -0
  108. package/dist/src/types/blob.js.map +1 -0
  109. package/dist/src/types/currency.d.ts +28 -0
  110. package/dist/src/types/currency.js +127 -0
  111. package/dist/src/types/currency.js.map +1 -0
  112. package/dist/src/types/hash-128.d.ts +16 -0
  113. package/dist/src/types/hash-128.js +32 -0
  114. package/dist/src/types/hash-128.js.map +1 -0
  115. package/dist/src/types/hash-160.d.ts +10 -0
  116. package/dist/src/types/hash-160.js +19 -0
  117. package/dist/src/types/hash-160.js.map +1 -0
  118. package/dist/src/types/hash-192.d.ts +10 -0
  119. package/dist/src/types/hash-192.js +19 -0
  120. package/dist/src/types/hash-192.js.map +1 -0
  121. package/dist/src/types/hash-256.d.ts +10 -0
  122. package/dist/src/types/hash-256.js +16 -0
  123. package/dist/src/types/hash-256.js.map +1 -0
  124. package/dist/src/types/hash.d.ts +40 -0
  125. package/dist/src/types/hash.js +76 -0
  126. package/dist/src/types/hash.js.map +1 -0
  127. package/dist/src/types/index.d.ts +19 -0
  128. package/dist/src/types/index.js +66 -0
  129. package/dist/src/types/index.js.map +1 -0
  130. package/dist/src/types/issue.d.ts +48 -0
  131. package/dist/src/types/issue.js +104 -0
  132. package/dist/src/types/issue.js.map +1 -0
  133. package/dist/src/types/path-set.d.ts +36 -0
  134. package/dist/src/types/path-set.js +233 -0
  135. package/dist/src/types/path-set.js.map +1 -0
  136. package/dist/src/types/serialized-type.d.ts +70 -0
  137. package/dist/src/types/serialized-type.js +105 -0
  138. package/dist/src/types/serialized-type.js.map +1 -0
  139. package/dist/src/types/st-array.d.ts +31 -0
  140. package/dist/src/types/st-array.js +86 -0
  141. package/dist/src/types/st-array.js.map +1 -0
  142. package/dist/src/types/st-number.d.ts +54 -0
  143. package/dist/src/types/st-number.js +208 -0
  144. package/dist/src/types/st-number.js.map +1 -0
  145. package/dist/src/types/st-object.d.ts +32 -0
  146. package/dist/src/types/st-object.js +173 -0
  147. package/dist/src/types/st-object.js.map +1 -0
  148. package/dist/src/types/uint-16.d.ts +24 -0
  149. package/dist/src/types/uint-16.js +45 -0
  150. package/dist/src/types/uint-16.js.map +1 -0
  151. package/dist/src/types/uint-32.d.ts +24 -0
  152. package/dist/src/types/uint-32.js +50 -0
  153. package/dist/src/types/uint-32.js.map +1 -0
  154. package/dist/src/types/uint-64.d.ts +38 -0
  155. package/dist/src/types/uint-64.js +107 -0
  156. package/dist/src/types/uint-64.js.map +1 -0
  157. package/dist/src/types/uint-8.d.ts +24 -0
  158. package/dist/src/types/uint-8.js +46 -0
  159. package/dist/src/types/uint-8.js.map +1 -0
  160. package/dist/src/types/uint.d.ts +29 -0
  161. package/dist/src/types/uint.js +47 -0
  162. package/dist/src/types/uint.js.map +1 -0
  163. package/dist/src/types/vector-256.d.ts +30 -0
  164. package/dist/src/types/vector-256.js +73 -0
  165. package/dist/src/types/vector-256.js.map +1 -0
  166. package/dist/src/types/xchain-bridge.d.ts +44 -0
  167. package/dist/src/types/xchain-bridge.js +102 -0
  168. package/dist/src/types/xchain-bridge.js.map +1 -0
  169. package/dist/src/utils.d.ts +79 -0
  170. package/dist/src/utils.js +181 -0
  171. package/dist/src/utils.js.map +1 -0
  172. package/dist/tsconfig.tsbuildinfo +1 -0
  173. package/dist/types/account-id.d.ts +1 -2
  174. package/dist/types/account-id.js +4 -6
  175. package/dist/types/account-id.js.map +1 -1
  176. package/dist/types/amount.d.ts +31 -8
  177. package/dist/types/amount.js +125 -43
  178. package/dist/types/amount.js.map +1 -1
  179. package/dist/types/blob.d.ts +1 -2
  180. package/dist/types/blob.js +5 -2
  181. package/dist/types/blob.js.map +1 -1
  182. package/dist/types/currency.d.ts +1 -2
  183. package/dist/types/currency.js +13 -13
  184. package/dist/types/currency.js.map +1 -1
  185. package/dist/types/hash-128.d.ts +1 -2
  186. package/dist/types/hash-128.js +3 -3
  187. package/dist/types/hash-128.js.map +1 -1
  188. package/dist/types/hash-160.d.ts +1 -2
  189. package/dist/types/hash-160.js +1 -2
  190. package/dist/types/hash-160.js.map +1 -1
  191. package/dist/types/hash-192.d.ts +10 -0
  192. package/dist/types/hash-192.js +19 -0
  193. package/dist/types/hash-192.js.map +1 -0
  194. package/dist/types/hash-256.d.ts +1 -2
  195. package/dist/types/hash-256.js +1 -2
  196. package/dist/types/hash-256.js.map +1 -1
  197. package/dist/types/hash.d.ts +2 -3
  198. package/dist/types/hash.js +8 -4
  199. package/dist/types/hash.js.map +1 -1
  200. package/dist/types/index.d.ts +2 -1
  201. package/dist/types/index.js +11 -2
  202. package/dist/types/index.js.map +1 -1
  203. package/dist/types/issue.d.ts +48 -0
  204. package/dist/types/issue.js +104 -0
  205. package/dist/types/issue.js.map +1 -0
  206. package/dist/types/path-set.js +12 -12
  207. package/dist/types/path-set.js.map +1 -1
  208. package/dist/types/serialized-type.d.ts +23 -16
  209. package/dist/types/serialized-type.js +15 -7
  210. package/dist/types/serialized-type.js.map +1 -1
  211. package/dist/types/st-array.d.ts +5 -2
  212. package/dist/types/st-array.js +17 -11
  213. package/dist/types/st-array.js.map +1 -1
  214. package/dist/types/st-number.d.ts +54 -0
  215. package/dist/types/st-number.js +208 -0
  216. package/dist/types/st-number.js.map +1 -0
  217. package/dist/types/st-object.js +32 -8
  218. package/dist/types/st-object.js.map +1 -1
  219. package/dist/types/uint-16.d.ts +1 -2
  220. package/dist/types/uint-16.js +6 -5
  221. package/dist/types/uint-16.js.map +1 -1
  222. package/dist/types/uint-32.d.ts +1 -2
  223. package/dist/types/uint-32.js +7 -6
  224. package/dist/types/uint-32.js.map +1 -1
  225. package/dist/types/uint-64.d.ts +6 -7
  226. package/dist/types/uint-64.js +44 -24
  227. package/dist/types/uint-64.js.map +1 -1
  228. package/dist/types/uint-8.d.ts +1 -2
  229. package/dist/types/uint-8.js +7 -5
  230. package/dist/types/uint-8.js.map +1 -1
  231. package/dist/types/uint.d.ts +5 -6
  232. package/dist/types/uint.js +5 -0
  233. package/dist/types/uint.js.map +1 -1
  234. package/dist/types/vector-256.d.ts +1 -2
  235. package/dist/types/vector-256.js +2 -4
  236. package/dist/types/vector-256.js.map +1 -1
  237. package/dist/types/xchain-bridge.d.ts +44 -0
  238. package/dist/types/xchain-bridge.js +102 -0
  239. package/dist/types/xchain-bridge.js.map +1 -0
  240. package/dist/utils.d.ts +79 -0
  241. package/dist/utils.js +181 -0
  242. package/dist/utils.js.map +1 -0
  243. package/package.json +21 -17
  244. package/src/README.md +5 -0
  245. package/src/binary.ts +235 -0
  246. package/src/coretypes.ts +31 -0
  247. package/src/enums/README.md +144 -0
  248. package/src/enums/bytes.ts +74 -0
  249. package/src/enums/constants.ts +5 -0
  250. package/src/enums/definitions.json +3390 -0
  251. package/src/enums/field.ts +84 -0
  252. package/src/enums/index.ts +34 -0
  253. package/src/enums/utils-renumber.ts +134 -0
  254. package/src/enums/xrpl-definitions-base.ts +150 -0
  255. package/src/enums/xrpl-definitions.ts +33 -0
  256. package/src/hash-prefixes.ts +42 -0
  257. package/src/hashes.ts +75 -0
  258. package/src/index.ts +166 -0
  259. package/src/ledger-hashes.ts +191 -0
  260. package/src/quality.ts +38 -0
  261. package/src/serdes/binary-parser.ts +228 -0
  262. package/src/serdes/binary-serializer.ts +166 -0
  263. package/src/shamap.ts +186 -0
  264. package/src/types/account-id.ts +86 -0
  265. package/src/types/amount.ts +362 -0
  266. package/src/types/blob.ts +46 -0
  267. package/src/types/currency.ts +140 -0
  268. package/src/types/hash-128.ts +33 -0
  269. package/src/types/hash-160.ts +19 -0
  270. package/src/types/hash-192.ts +19 -0
  271. package/src/types/hash-256.ts +15 -0
  272. package/src/types/hash.ts +86 -0
  273. package/src/types/index.ts +68 -0
  274. package/src/types/issue.ts +136 -0
  275. package/src/types/path-set.ts +290 -0
  276. package/src/types/serialized-type.ts +122 -0
  277. package/src/types/st-array.ts +113 -0
  278. package/src/types/st-number.ts +233 -0
  279. package/src/types/st-object.ts +215 -0
  280. package/src/types/uint-16.ts +53 -0
  281. package/src/types/uint-32.ts +59 -0
  282. package/src/types/uint-64.ts +135 -0
  283. package/src/types/uint-8.ts +52 -0
  284. package/src/types/uint.ts +60 -0
  285. package/src/types/vector-256.ts +79 -0
  286. package/src/types/xchain-bridge.ts +128 -0
  287. package/src/utils.ts +220 -0
  288. package/test/amount.test.js +0 -43
  289. package/test/binary-json.test.js +0 -45
  290. package/test/binary-parser.test.js +0 -396
  291. package/test/binary-serializer.test.js +0 -319
  292. package/test/definitions.test.js +0 -100
  293. package/test/fixtures/account-tx-transactions.db +0 -0
  294. package/test/fixtures/codec-fixtures.json +0 -4466
  295. package/test/fixtures/data-driven-tests.json +0 -2919
  296. package/test/fixtures/delivermin-tx-binary.json +0 -1
  297. package/test/fixtures/delivermin-tx.json +0 -98
  298. package/test/fixtures/deposit-preauth-tx-binary.json +0 -1
  299. package/test/fixtures/deposit-preauth-tx-meta-binary.json +0 -1
  300. package/test/fixtures/deposit-preauth-tx.json +0 -58
  301. package/test/fixtures/escrow-cancel-binary.json +0 -1
  302. package/test/fixtures/escrow-cancel-tx.json +0 -6
  303. package/test/fixtures/escrow-create-binary.json +0 -1
  304. package/test/fixtures/escrow-create-tx.json +0 -10
  305. package/test/fixtures/escrow-finish-binary.json +0 -1
  306. package/test/fixtures/escrow-finish-meta-binary.json +0 -1
  307. package/test/fixtures/escrow-finish-tx.json +0 -95
  308. package/test/fixtures/ledger-full-38129.json +0 -1
  309. package/test/fixtures/ledger-full-40000.json +0 -1
  310. package/test/fixtures/negative-unl.json +0 -12
  311. package/test/fixtures/nf-token.json +0 -547
  312. package/test/fixtures/payment-channel-claim-binary.json +0 -1
  313. package/test/fixtures/payment-channel-claim-tx.json +0 -8
  314. package/test/fixtures/payment-channel-create-binary.json +0 -1
  315. package/test/fixtures/payment-channel-create-tx.json +0 -11
  316. package/test/fixtures/payment-channel-fund-binary.json +0 -1
  317. package/test/fixtures/payment-channel-fund-tx.json +0 -7
  318. package/test/fixtures/remit-binary.json +0 -1
  319. package/test/fixtures/remit-tx.json +0 -39
  320. package/test/fixtures/signerlistset-tx-binary.json +0 -1
  321. package/test/fixtures/signerlistset-tx-meta-binary.json +0 -1
  322. package/test/fixtures/signerlistset-tx.json +0 -94
  323. package/test/fixtures/ticket-create-binary.json +0 -1
  324. package/test/fixtures/ticket-create-tx.json +0 -7
  325. package/test/fixtures/unl-report-binary.json +0 -1
  326. package/test/fixtures/unl-report-meta-binary.json +0 -1
  327. package/test/fixtures/unl-report.json +0 -89
  328. package/test/fixtures/x-codec-fixtures.json +0 -188
  329. package/test/hash.test.js +0 -135
  330. package/test/ledger.test.js +0 -29
  331. package/test/lower-case-hex.test.js +0 -46
  332. package/test/pseudo-transaction.test.js +0 -38
  333. package/test/quality.test.js +0 -15
  334. package/test/shamap.test.js +0 -89
  335. package/test/signing-data-encoding.test.js +0 -213
  336. package/test/tx-encode-decode.test.js +0 -119
  337. package/test/types.test.js +0 -34
  338. package/test/uint.test.js +0 -148
  339. package/test/utils.js +0 -30
  340. package/test/x-address.test.js +0 -181
@@ -0,0 +1,24 @@
1
+ import { UInt } from './uint';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ /**
4
+ * Derived UInt class for serializing/deserializing 32 bit UInt
5
+ */
6
+ declare class UInt32 extends UInt {
7
+ protected static readonly width: number;
8
+ static readonly defaultUInt32: UInt32;
9
+ constructor(bytes: Uint8Array);
10
+ static fromParser(parser: BinaryParser): UInt;
11
+ /**
12
+ * Construct a UInt32 object from a number
13
+ *
14
+ * @param val UInt32 object or number
15
+ */
16
+ static from<T extends UInt32 | number | string>(val: T): UInt32;
17
+ /**
18
+ * get the value of a UInt32 object
19
+ *
20
+ * @returns the number represented by this.bytes
21
+ */
22
+ valueOf(): number;
23
+ }
24
+ export { UInt32 };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UInt32 = void 0;
4
+ const uint_1 = require("./uint");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Derived UInt class for serializing/deserializing 32 bit UInt
8
+ */
9
+ class UInt32 extends uint_1.UInt {
10
+ constructor(bytes) {
11
+ super(bytes !== null && bytes !== void 0 ? bytes : UInt32.defaultUInt32.bytes);
12
+ }
13
+ static fromParser(parser) {
14
+ return new UInt32(parser.read(UInt32.width));
15
+ }
16
+ /**
17
+ * Construct a UInt32 object from a number
18
+ *
19
+ * @param val UInt32 object or number
20
+ */
21
+ static from(val) {
22
+ if (val instanceof UInt32) {
23
+ return val;
24
+ }
25
+ const buf = new Uint8Array(UInt32.width);
26
+ if (typeof val === 'string') {
27
+ const num = Number.parseInt(val);
28
+ (0, utils_1.writeUInt32BE)(buf, num, 0);
29
+ return new UInt32(buf);
30
+ }
31
+ if (typeof val === 'number') {
32
+ UInt32.checkUintRange(val, 0, 0xffffffff);
33
+ (0, utils_1.writeUInt32BE)(buf, val, 0);
34
+ return new UInt32(buf);
35
+ }
36
+ throw new Error('Cannot construct UInt32 from given value');
37
+ }
38
+ /**
39
+ * get the value of a UInt32 object
40
+ *
41
+ * @returns the number represented by this.bytes
42
+ */
43
+ valueOf() {
44
+ return parseInt((0, utils_1.readUInt32BE)(this.bytes, 0), 10);
45
+ }
46
+ }
47
+ exports.UInt32 = UInt32;
48
+ UInt32.width = 32 / 8; // 4
49
+ UInt32.defaultUInt32 = new UInt32(new Uint8Array(UInt32.width));
50
+ //# sourceMappingURL=uint-32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint-32.js","sourceRoot":"","sources":["../../../src/types/uint-32.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAE7B,oCAAsD;AAEtD;;GAEG;AACH,MAAM,MAAO,SAAQ,WAAI;IAMvB,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAoB;QACpC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAqC,GAAM;QACpD,IAAI,GAAG,YAAY,MAAM,EAAE;YACzB,OAAO,GAAG,CAAA;SACX;QAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAExC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YAChC,IAAA,qBAAa,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAC1B,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;SACvB;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;YACzC,IAAA,qBAAa,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAC1B,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;SACvB;QAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO,QAAQ,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;;AAGM,wBAAM;AAlDa,YAAK,GAAW,EAAE,GAAG,CAAC,CAAA,CAAC,IAAI;AACrC,oBAAa,GAAW,IAAI,MAAM,CAChD,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { UInt } from './uint';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ import { XrplDefinitionsBase } from '../enums';
4
+ /**
5
+ * Derived UInt class for serializing/deserializing 64 bit UInt
6
+ */
7
+ declare class UInt64 extends UInt {
8
+ protected static readonly width: number;
9
+ static readonly defaultUInt64: UInt64;
10
+ constructor(bytes: Uint8Array);
11
+ static fromParser(parser: BinaryParser): UInt;
12
+ /**
13
+ * Construct a UInt64 object
14
+ *
15
+ * @param val A UInt64, hex-string, bigInt, or number
16
+ * @returns A UInt64 object
17
+ */
18
+ static from<T extends UInt64 | string | bigint | number>(val: T, fieldName?: string): UInt64;
19
+ /**
20
+ * The JSON representation of a UInt64 object
21
+ *
22
+ * @returns a hex-string
23
+ */
24
+ toJSON(_definitions?: XrplDefinitionsBase, fieldName?: string): string;
25
+ /**
26
+ * Get the value of the UInt64
27
+ *
28
+ * @returns the number represented buy this.bytes
29
+ */
30
+ valueOf(): bigint;
31
+ /**
32
+ * Get the bytes representation of the UInt64 object
33
+ *
34
+ * @returns 8 bytes representing the UInt64
35
+ */
36
+ toBytes(): Uint8Array;
37
+ }
38
+ export { UInt64 };
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UInt64 = void 0;
4
+ const uint_1 = require("./uint");
5
+ const utils_1 = require("@transia/isomorphic/utils");
6
+ const utils_2 = require("../utils");
7
+ const enums_1 = require("../enums");
8
+ const HEX_REGEX = /^[a-fA-F0-9]{1,16}$/;
9
+ const BASE10_REGEX = /^[0-9]{1,20}$/;
10
+ const mask = BigInt(0x00000000ffffffff);
11
+ const BASE10_AMOUNT_FIELDS = new Set([
12
+ 'MaximumAmount',
13
+ 'OutstandingAmount',
14
+ 'MPTAmount',
15
+ 'LockedAmount',
16
+ ]);
17
+ function isBase10(fieldName) {
18
+ return BASE10_AMOUNT_FIELDS.has(fieldName);
19
+ }
20
+ /**
21
+ * Derived UInt class for serializing/deserializing 64 bit UInt
22
+ */
23
+ class UInt64 extends uint_1.UInt {
24
+ constructor(bytes) {
25
+ super(bytes !== null && bytes !== void 0 ? bytes : UInt64.defaultUInt64.bytes);
26
+ }
27
+ static fromParser(parser) {
28
+ return new UInt64(parser.read(UInt64.width));
29
+ }
30
+ /**
31
+ * Construct a UInt64 object
32
+ *
33
+ * @param val A UInt64, hex-string, bigInt, or number
34
+ * @returns A UInt64 object
35
+ */
36
+ static from(val, fieldName = '') {
37
+ if (val instanceof UInt64) {
38
+ return val;
39
+ }
40
+ let buf = new Uint8Array(UInt64.width);
41
+ if (typeof val === 'number') {
42
+ if (val < 0) {
43
+ throw new Error('value must be an unsigned integer');
44
+ }
45
+ const number = BigInt(val);
46
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
47
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(number >> BigInt(32)), 0);
48
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(number & BigInt(mask)), 0);
49
+ return new UInt64((0, utils_1.concat)(intBuf));
50
+ }
51
+ if (typeof val === 'string') {
52
+ if (isBase10(fieldName)) {
53
+ if (!BASE10_REGEX.test(val)) {
54
+ throw new Error(`${fieldName} ${val} is not a valid base 10 string`);
55
+ }
56
+ val = BigInt(val).toString(16);
57
+ }
58
+ if (typeof val === 'string' && !HEX_REGEX.test(val)) {
59
+ throw new Error(`${val} is not a valid hex-string`);
60
+ }
61
+ const strBuf = val.padStart(16, '0');
62
+ buf = (0, utils_1.hexToBytes)(strBuf);
63
+ return new UInt64(buf);
64
+ }
65
+ if (typeof val === 'bigint') {
66
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
67
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(Number(val >> BigInt(32))), 0);
68
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(val & BigInt(mask)), 0);
69
+ return new UInt64((0, utils_1.concat)(intBuf));
70
+ }
71
+ throw new Error('Cannot construct UInt64 from given value');
72
+ }
73
+ /**
74
+ * The JSON representation of a UInt64 object
75
+ *
76
+ * @returns a hex-string
77
+ */
78
+ toJSON(_definitions = enums_1.DEFAULT_DEFINITIONS, fieldName = '') {
79
+ const hexString = (0, utils_1.bytesToHex)(this.bytes);
80
+ if (isBase10(fieldName)) {
81
+ return BigInt('0x' + hexString).toString(10);
82
+ }
83
+ return hexString;
84
+ }
85
+ /**
86
+ * Get the value of the UInt64
87
+ *
88
+ * @returns the number represented buy this.bytes
89
+ */
90
+ valueOf() {
91
+ const msb = BigInt((0, utils_2.readUInt32BE)(this.bytes.slice(0, 4), 0));
92
+ const lsb = BigInt((0, utils_2.readUInt32BE)(this.bytes.slice(4), 0));
93
+ return (msb << BigInt(32)) | lsb;
94
+ }
95
+ /**
96
+ * Get the bytes representation of the UInt64 object
97
+ *
98
+ * @returns 8 bytes representing the UInt64
99
+ */
100
+ toBytes() {
101
+ return this.bytes;
102
+ }
103
+ }
104
+ exports.UInt64 = UInt64;
105
+ UInt64.width = 64 / 8; // 8
106
+ UInt64.defaultUInt64 = new UInt64(new Uint8Array(UInt64.width));
107
+ //# sourceMappingURL=uint-64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint-64.js","sourceRoot":"","sources":["../../../src/types/uint-64.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { UInt } from './uint';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ /**
4
+ * Derived UInt class for serializing/deserializing 8 bit UInt
5
+ */
6
+ declare class UInt8 extends UInt {
7
+ protected static readonly width: number;
8
+ static readonly defaultUInt8: UInt8;
9
+ constructor(bytes: Uint8Array);
10
+ static fromParser(parser: BinaryParser): UInt;
11
+ /**
12
+ * Construct a UInt8 object from a number
13
+ *
14
+ * @param val UInt8 object or number
15
+ */
16
+ static from<T extends UInt8 | number>(val: T): UInt8;
17
+ /**
18
+ * get the value of a UInt8 object
19
+ *
20
+ * @returns the number represented by this.bytes
21
+ */
22
+ valueOf(): number;
23
+ }
24
+ export { UInt8 };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UInt8 = void 0;
4
+ const uint_1 = require("./uint");
5
+ const utils_1 = require("@transia/isomorphic/utils");
6
+ const utils_2 = require("../utils");
7
+ /**
8
+ * Derived UInt class for serializing/deserializing 8 bit UInt
9
+ */
10
+ class UInt8 extends uint_1.UInt {
11
+ constructor(bytes) {
12
+ super(bytes !== null && bytes !== void 0 ? bytes : UInt8.defaultUInt8.bytes);
13
+ }
14
+ static fromParser(parser) {
15
+ return new UInt8(parser.read(UInt8.width));
16
+ }
17
+ /**
18
+ * Construct a UInt8 object from a number
19
+ *
20
+ * @param val UInt8 object or number
21
+ */
22
+ static from(val) {
23
+ if (val instanceof UInt8) {
24
+ return val;
25
+ }
26
+ if (typeof val === 'number') {
27
+ UInt8.checkUintRange(val, 0, 0xff);
28
+ const buf = new Uint8Array(UInt8.width);
29
+ (0, utils_2.writeUInt8)(buf, val, 0);
30
+ return new UInt8(buf);
31
+ }
32
+ throw new Error('Cannot construct UInt8 from given value');
33
+ }
34
+ /**
35
+ * get the value of a UInt8 object
36
+ *
37
+ * @returns the number represented by this.bytes
38
+ */
39
+ valueOf() {
40
+ return parseInt((0, utils_1.bytesToHex)(this.bytes), 16);
41
+ }
42
+ }
43
+ exports.UInt8 = UInt8;
44
+ UInt8.width = 8 / 8; // 1
45
+ UInt8.defaultUInt8 = new UInt8(new Uint8Array(UInt8.width));
46
+ //# sourceMappingURL=uint-8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint-8.js","sourceRoot":"","sources":["../../../src/types/uint-8.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAE7B,qDAAsD;AACtD,oCAAqC;AAErC;;GAEG;AACH,MAAM,KAAM,SAAQ,WAAI;IAItB,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAoB;QACpC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAA2B,GAAM;QAC1C,IAAI,GAAG,YAAY,KAAK,EAAE;YACxB,OAAO,GAAG,CAAA;SACX;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YAElC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACvC,IAAA,kBAAU,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;SACtB;QAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO,QAAQ,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;;AAGM,sBAAK;AA1Cc,WAAK,GAAW,CAAC,GAAG,CAAC,CAAA,CAAC,IAAI;AACpC,kBAAY,GAAU,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { Comparable } from './serialized-type';
2
+ /**
3
+ * Base class for serializing and deserializing unsigned integers.
4
+ */
5
+ declare abstract class UInt extends Comparable<UInt | number> {
6
+ protected static width: number;
7
+ constructor(bytes: Uint8Array);
8
+ /**
9
+ * Overload of compareTo for Comparable
10
+ *
11
+ * @param other other UInt to compare this to
12
+ * @returns -1, 0, or 1 depending on how the objects relate to each other
13
+ */
14
+ compareTo(other: UInt | number): number;
15
+ /**
16
+ * Convert a UInt object to JSON
17
+ *
18
+ * @returns number or string represented by this.bytes
19
+ */
20
+ toJSON(): number | string;
21
+ /**
22
+ * Get the value of the UInt represented by this.bytes
23
+ *
24
+ * @returns the value
25
+ */
26
+ abstract valueOf(): number | bigint;
27
+ static checkUintRange(val: number, min: number, max: number): void;
28
+ }
29
+ export { UInt };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UInt = void 0;
4
+ const serialized_type_1 = require("./serialized-type");
5
+ /**
6
+ * Compare numbers and bigInts n1 and n2
7
+ *
8
+ * @param n1 First object to compare
9
+ * @param n2 Second object to compare
10
+ * @returns -1, 0, or 1, depending on how the two objects compare
11
+ */
12
+ function compare(n1, n2) {
13
+ return n1 < n2 ? -1 : n1 == n2 ? 0 : 1;
14
+ }
15
+ /**
16
+ * Base class for serializing and deserializing unsigned integers.
17
+ */
18
+ class UInt extends serialized_type_1.Comparable {
19
+ constructor(bytes) {
20
+ super(bytes);
21
+ }
22
+ /**
23
+ * Overload of compareTo for Comparable
24
+ *
25
+ * @param other other UInt to compare this to
26
+ * @returns -1, 0, or 1 depending on how the objects relate to each other
27
+ */
28
+ compareTo(other) {
29
+ return compare(this.valueOf(), other.valueOf());
30
+ }
31
+ /**
32
+ * Convert a UInt object to JSON
33
+ *
34
+ * @returns number or string represented by this.bytes
35
+ */
36
+ toJSON() {
37
+ const val = this.valueOf();
38
+ return typeof val === 'number' ? val : val.toString();
39
+ }
40
+ static checkUintRange(val, min, max) {
41
+ if (val < min || val > max) {
42
+ throw new Error(`Invalid ${this.constructor.name}: ${val} must be >= ${min} and <= ${max}`);
43
+ }
44
+ }
45
+ }
46
+ exports.UInt = UInt;
47
+ //# sourceMappingURL=uint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint.js","sourceRoot":"","sources":["../../../src/types/uint.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAE9C;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,EAAmB,EAAE,EAAmB;IACvD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC;AAED;;GAEG;AACH,MAAe,IAAK,SAAQ,4BAAyB;IAGnD,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAoB;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACjD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC1B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;IACvD,CAAC;IASD,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;QACzD,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,eAAe,GAAG,WAAW,GAAG,EAAE,CAC3E,CAAA;SACF;IACH,CAAC;CACF;AAEQ,oBAAI"}
@@ -0,0 +1,30 @@
1
+ import { SerializedType } from './serialized-type';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ /**
4
+ * Class for serializing and deserializing vectors of Hash256
5
+ */
6
+ declare class Vector256 extends SerializedType {
7
+ constructor(bytes: Uint8Array);
8
+ /**
9
+ * Construct a Vector256 from a BinaryParser
10
+ *
11
+ * @param parser BinaryParser to
12
+ * @param hint length of the vector, in bytes, optional
13
+ * @returns a Vector256 object
14
+ */
15
+ static fromParser(parser: BinaryParser, hint?: number): Vector256;
16
+ /**
17
+ * Construct a Vector256 object from an array of hashes
18
+ *
19
+ * @param value A Vector256 object or array of hex-strings representing Hash256's
20
+ * @returns a Vector256 object
21
+ */
22
+ static from<T extends Vector256 | Array<string>>(value: T): Vector256;
23
+ /**
24
+ * Return an Array of hex-strings represented by this.bytes
25
+ *
26
+ * @returns An Array of strings representing the Hash256 objects
27
+ */
28
+ toJSON(): Array<string>;
29
+ }
30
+ export { Vector256 };
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vector256 = void 0;
4
+ const serialized_type_1 = require("./serialized-type");
5
+ const hash_256_1 = require("./hash-256");
6
+ const binary_serializer_1 = require("../serdes/binary-serializer");
7
+ const utils_1 = require("@transia/isomorphic/utils");
8
+ /**
9
+ * TypeGuard for Array<string>
10
+ */
11
+ function isStrings(arg) {
12
+ return Array.isArray(arg) && (arg.length === 0 || typeof arg[0] === 'string');
13
+ }
14
+ /**
15
+ * Class for serializing and deserializing vectors of Hash256
16
+ */
17
+ class Vector256 extends serialized_type_1.SerializedType {
18
+ constructor(bytes) {
19
+ super(bytes);
20
+ }
21
+ /**
22
+ * Construct a Vector256 from a BinaryParser
23
+ *
24
+ * @param parser BinaryParser to
25
+ * @param hint length of the vector, in bytes, optional
26
+ * @returns a Vector256 object
27
+ */
28
+ static fromParser(parser, hint) {
29
+ const bytesList = new binary_serializer_1.BytesList();
30
+ const bytes = hint !== null && hint !== void 0 ? hint : parser.size();
31
+ const hashes = bytes / 32;
32
+ for (let i = 0; i < hashes; i++) {
33
+ hash_256_1.Hash256.fromParser(parser).toBytesSink(bytesList);
34
+ }
35
+ return new Vector256(bytesList.toBytes());
36
+ }
37
+ /**
38
+ * Construct a Vector256 object from an array of hashes
39
+ *
40
+ * @param value A Vector256 object or array of hex-strings representing Hash256's
41
+ * @returns a Vector256 object
42
+ */
43
+ static from(value) {
44
+ if (value instanceof Vector256) {
45
+ return value;
46
+ }
47
+ if (isStrings(value)) {
48
+ const bytesList = new binary_serializer_1.BytesList();
49
+ value.forEach((hash) => {
50
+ hash_256_1.Hash256.from(hash).toBytesSink(bytesList);
51
+ });
52
+ return new Vector256(bytesList.toBytes());
53
+ }
54
+ throw new Error('Cannot construct Vector256 from given value');
55
+ }
56
+ /**
57
+ * Return an Array of hex-strings represented by this.bytes
58
+ *
59
+ * @returns An Array of strings representing the Hash256 objects
60
+ */
61
+ toJSON() {
62
+ if (this.bytes.byteLength % 32 !== 0) {
63
+ throw new Error('Invalid bytes for Vector256');
64
+ }
65
+ const result = [];
66
+ for (let i = 0; i < this.bytes.byteLength; i += 32) {
67
+ result.push((0, utils_1.bytesToHex)(this.bytes.slice(i, i + 32)));
68
+ }
69
+ return result;
70
+ }
71
+ }
72
+ exports.Vector256 = Vector256;
73
+ //# sourceMappingURL=vector-256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-256.js","sourceRoot":"","sources":["../../../src/types/vector-256.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAElD,yCAAoC;AACpC,mEAAuD;AACvD,qDAAsD;AAEtD;;GAEG;AACH,SAAS,SAAS,CAAC,GAAG;IACpB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,SAAU,SAAQ,gCAAc;IACpC,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAA;IACd,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB,EAAE,IAAa;QACnD,MAAM,SAAS,GAAG,IAAI,6BAAS,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,kBAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;SAClD;QACD,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAsC,KAAQ;QACvD,IAAI,KAAK,YAAY,SAAS,EAAE;YAC9B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,6BAAS,EAAE,CAAA;YACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,kBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC3C,CAAC,CAAC,CAAA;YACF,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;SAC1C;QAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,MAAM,MAAM,GAAkB,EAAE,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;SACrD;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAEQ,8BAAS"}
@@ -0,0 +1,44 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType } from './serialized-type';
3
+ import { IssueObject } from './issue';
4
+ /**
5
+ * Interface for JSON objects that represent cross-chain bridges
6
+ */
7
+ interface XChainBridgeObject extends JsonObject {
8
+ LockingChainDoor: string;
9
+ LockingChainIssue: IssueObject | string;
10
+ IssuingChainDoor: string;
11
+ IssuingChainIssue: IssueObject | string;
12
+ }
13
+ /**
14
+ * Class for serializing/deserializing XChainBridges
15
+ */
16
+ declare class XChainBridge extends SerializedType {
17
+ static readonly ZERO_XCHAIN_BRIDGE: XChainBridge;
18
+ static readonly TYPE_ORDER: {
19
+ name: string;
20
+ type: typeof SerializedType;
21
+ }[];
22
+ constructor(bytes: Uint8Array);
23
+ /**
24
+ * Construct a cross-chain bridge from a JSON
25
+ *
26
+ * @param value XChainBridge or JSON to parse into an XChainBridge
27
+ * @returns An XChainBridge object
28
+ */
29
+ static from<T extends XChainBridge | XChainBridgeObject>(value: T): XChainBridge;
30
+ /**
31
+ * Read an XChainBridge from a BinaryParser
32
+ *
33
+ * @param parser BinaryParser to read the XChainBridge from
34
+ * @returns An XChainBridge object
35
+ */
36
+ static fromParser(parser: BinaryParser): XChainBridge;
37
+ /**
38
+ * Get the JSON representation of this XChainBridge
39
+ *
40
+ * @returns the JSON interpretation of this.bytes
41
+ */
42
+ toJSON(): XChainBridgeObject;
43
+ }
44
+ export { XChainBridge, XChainBridgeObject };
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XChainBridge = void 0;
4
+ const binary_parser_1 = require("../serdes/binary-parser");
5
+ const account_id_1 = require("./account-id");
6
+ const serialized_type_1 = require("./serialized-type");
7
+ const issue_1 = require("./issue");
8
+ const utils_1 = require("@transia/isomorphic/utils");
9
+ /**
10
+ * Type guard for XChainBridgeObject
11
+ */
12
+ function isXChainBridgeObject(arg) {
13
+ const keys = Object.keys(arg).sort();
14
+ return (keys.length === 4 &&
15
+ keys[0] === 'IssuingChainDoor' &&
16
+ keys[1] === 'IssuingChainIssue' &&
17
+ keys[2] === 'LockingChainDoor' &&
18
+ keys[3] === 'LockingChainIssue');
19
+ }
20
+ /**
21
+ * Class for serializing/deserializing XChainBridges
22
+ */
23
+ class XChainBridge extends serialized_type_1.SerializedType {
24
+ constructor(bytes) {
25
+ super(bytes !== null && bytes !== void 0 ? bytes : XChainBridge.ZERO_XCHAIN_BRIDGE.bytes);
26
+ }
27
+ /**
28
+ * Construct a cross-chain bridge from a JSON
29
+ *
30
+ * @param value XChainBridge or JSON to parse into an XChainBridge
31
+ * @returns An XChainBridge object
32
+ */
33
+ static from(value) {
34
+ if (value instanceof XChainBridge) {
35
+ return value;
36
+ }
37
+ if (!isXChainBridgeObject(value)) {
38
+ throw new Error('Invalid type to construct an XChainBridge');
39
+ }
40
+ const bytes = [];
41
+ this.TYPE_ORDER.forEach((item) => {
42
+ const { name, type } = item;
43
+ if (type === account_id_1.AccountID) {
44
+ bytes.push(Uint8Array.from([0x14]));
45
+ }
46
+ const object = type.from(value[name]);
47
+ bytes.push(object.toBytes());
48
+ });
49
+ return new XChainBridge((0, utils_1.concat)(bytes));
50
+ }
51
+ /**
52
+ * Read an XChainBridge from a BinaryParser
53
+ *
54
+ * @param parser BinaryParser to read the XChainBridge from
55
+ * @returns An XChainBridge object
56
+ */
57
+ static fromParser(parser) {
58
+ const bytes = [];
59
+ this.TYPE_ORDER.forEach((item) => {
60
+ const { type } = item;
61
+ if (type === account_id_1.AccountID) {
62
+ parser.skip(1);
63
+ bytes.push(Uint8Array.from([0x14]));
64
+ }
65
+ const object = type.fromParser(parser);
66
+ bytes.push(object.toBytes());
67
+ });
68
+ return new XChainBridge((0, utils_1.concat)(bytes));
69
+ }
70
+ /**
71
+ * Get the JSON representation of this XChainBridge
72
+ *
73
+ * @returns the JSON interpretation of this.bytes
74
+ */
75
+ toJSON() {
76
+ const parser = new binary_parser_1.BinaryParser(this.toString());
77
+ const json = {};
78
+ XChainBridge.TYPE_ORDER.forEach((item) => {
79
+ const { name, type } = item;
80
+ if (type === account_id_1.AccountID) {
81
+ parser.skip(1);
82
+ }
83
+ const object = type.fromParser(parser).toJSON();
84
+ json[name] = object;
85
+ });
86
+ return json;
87
+ }
88
+ }
89
+ exports.XChainBridge = XChainBridge;
90
+ XChainBridge.ZERO_XCHAIN_BRIDGE = new XChainBridge((0, utils_1.concat)([
91
+ Uint8Array.from([0x14]),
92
+ new Uint8Array(40),
93
+ Uint8Array.from([0x14]),
94
+ new Uint8Array(40),
95
+ ]));
96
+ XChainBridge.TYPE_ORDER = [
97
+ { name: 'LockingChainDoor', type: account_id_1.AccountID },
98
+ { name: 'LockingChainIssue', type: issue_1.Issue },
99
+ { name: 'IssuingChainDoor', type: account_id_1.AccountID },
100
+ { name: 'IssuingChainIssue', type: issue_1.Issue },
101
+ ];
102
+ //# sourceMappingURL=xchain-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xchain-bridge.js","sourceRoot":"","sources":["../../../src/types/xchain-bridge.ts"],"names":[],"mappings":"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"}