ripple-binary-codec 2.0.0-beta.0 → 2.0.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 (247) hide show
  1. package/dist/binary.d.ts +12 -13
  2. package/dist/binary.js +6 -5
  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/definitions.json +36 -11
  8. package/dist/enums/field.d.ts +1 -2
  9. package/dist/enums/field.js +1 -2
  10. package/dist/enums/field.js.map +1 -1
  11. package/dist/enums/index.js +4 -24
  12. package/dist/enums/index.js.map +1 -1
  13. package/dist/enums/src/enums/definitions.json +36 -11
  14. package/dist/hash-prefixes.d.ts +1 -2
  15. package/dist/hash-prefixes.js +6 -6
  16. package/dist/hash-prefixes.js.map +1 -1
  17. package/dist/hashes.d.ts +5 -6
  18. package/dist/hashes.js +1 -2
  19. package/dist/hashes.js.map +1 -1
  20. package/dist/index.js +7 -14
  21. package/dist/index.js.map +1 -1
  22. package/dist/quality.d.ts +1 -2
  23. package/dist/quality.js +3 -3
  24. package/dist/quality.js.map +1 -1
  25. package/dist/serdes/binary-parser.d.ts +2 -3
  26. package/dist/serdes/binary-parser.js +2 -2
  27. package/dist/serdes/binary-parser.js.map +1 -1
  28. package/dist/serdes/binary-serializer.d.ts +6 -7
  29. package/dist/serdes/binary-serializer.js +9 -9
  30. package/dist/serdes/binary-serializer.js.map +1 -1
  31. package/dist/shamap.d.ts +4 -5
  32. package/dist/shamap.js +2 -3
  33. package/dist/shamap.js.map +1 -1
  34. package/dist/src/binary.d.ts +90 -0
  35. package/dist/src/binary.js +128 -0
  36. package/dist/src/binary.js.map +1 -0
  37. package/dist/src/coretypes.d.ts +9 -0
  38. package/dist/src/coretypes.js +48 -0
  39. package/dist/src/coretypes.js.map +1 -0
  40. package/dist/src/enums/bytes.d.ts +25 -0
  41. package/dist/src/enums/bytes.js +63 -0
  42. package/dist/src/enums/bytes.js.map +1 -0
  43. package/dist/src/enums/constants.d.ts +4 -0
  44. package/dist/src/enums/constants.js +8 -0
  45. package/dist/src/enums/constants.js.map +1 -0
  46. package/dist/src/enums/definitions.json +2866 -0
  47. package/dist/src/enums/field.d.ts +28 -0
  48. package/dist/src/enums/field.js +58 -0
  49. package/dist/src/enums/field.js.map +1 -0
  50. package/dist/src/enums/index.d.ts +12 -0
  51. package/dist/src/enums/index.js +31 -0
  52. package/dist/src/enums/index.js.map +1 -0
  53. package/dist/src/enums/utils-renumber.d.ts +101 -0
  54. package/dist/src/enums/utils-renumber.js +127 -0
  55. package/dist/src/enums/utils-renumber.js.map +1 -0
  56. package/dist/src/enums/xrpl-definitions-base.d.ts +44 -0
  57. package/dist/src/enums/xrpl-definitions-base.js +59 -0
  58. package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
  59. package/dist/src/enums/xrpl-definitions.d.ts +21 -0
  60. package/dist/src/enums/xrpl-definitions.js +29 -0
  61. package/dist/src/enums/xrpl-definitions.js.map +1 -0
  62. package/dist/src/hash-prefixes.d.ts +5 -0
  63. package/dist/src/hash-prefixes.js +41 -0
  64. package/dist/src/hash-prefixes.js.map +1 -0
  65. package/dist/src/hashes.d.ts +50 -0
  66. package/dist/src/hashes.js +76 -0
  67. package/dist/src/hashes.js.map +1 -0
  68. package/dist/src/index.d.ts +64 -0
  69. package/dist/src/index.js +123 -0
  70. package/dist/src/index.js.map +1 -0
  71. package/dist/src/ledger-hashes.d.ts +48 -0
  72. package/dist/src/ledger-hashes.js +141 -0
  73. package/dist/src/ledger-hashes.js.map +1 -0
  74. package/dist/src/quality.d.ts +21 -0
  75. package/dist/src/quality.js +42 -0
  76. package/dist/src/quality.js.map +1 -0
  77. package/dist/src/serdes/binary-parser.d.ts +100 -0
  78. package/dist/src/serdes/binary-parser.js +194 -0
  79. package/dist/src/serdes/binary-parser.js.map +1 -0
  80. package/dist/src/serdes/binary-serializer.d.ts +81 -0
  81. package/dist/src/serdes/binary-serializer.js +149 -0
  82. package/dist/src/serdes/binary-serializer.js.map +1 -0
  83. package/dist/src/shamap.d.ts +102 -0
  84. package/dist/src/shamap.js +172 -0
  85. package/dist/src/shamap.js.map +1 -0
  86. package/dist/src/types/account-id.d.ts +35 -0
  87. package/dist/src/types/account-id.js +69 -0
  88. package/dist/src/types/account-id.js.map +1 -0
  89. package/dist/src/types/amount.d.ts +67 -0
  90. package/dist/src/types/amount.js +212 -0
  91. package/dist/src/types/amount.js.map +1 -0
  92. package/dist/src/types/blob.d.ts +24 -0
  93. package/dist/src/types/blob.js +40 -0
  94. package/dist/src/types/blob.js.map +1 -0
  95. package/dist/src/types/currency.d.ts +28 -0
  96. package/dist/src/types/currency.js +127 -0
  97. package/dist/src/types/currency.js.map +1 -0
  98. package/dist/src/types/hash-128.d.ts +16 -0
  99. package/dist/src/types/hash-128.js +32 -0
  100. package/dist/src/types/hash-128.js.map +1 -0
  101. package/dist/src/types/hash-160.d.ts +10 -0
  102. package/dist/src/types/hash-160.js +19 -0
  103. package/dist/src/types/hash-160.js.map +1 -0
  104. package/dist/src/types/hash-256.d.ts +10 -0
  105. package/dist/src/types/hash-256.js +16 -0
  106. package/dist/src/types/hash-256.js.map +1 -0
  107. package/dist/src/types/hash.d.ts +40 -0
  108. package/dist/src/types/hash.js +73 -0
  109. package/dist/src/types/hash.js.map +1 -0
  110. package/dist/src/types/index.d.ts +18 -0
  111. package/dist/src/types/index.js +61 -0
  112. package/dist/src/types/index.js.map +1 -0
  113. package/dist/src/types/issue.d.ts +38 -0
  114. package/dist/src/types/issue.js +81 -0
  115. package/dist/src/types/issue.js.map +1 -0
  116. package/dist/src/types/path-set.d.ts +36 -0
  117. package/dist/src/types/path-set.js +233 -0
  118. package/dist/src/types/path-set.js.map +1 -0
  119. package/dist/src/types/serialized-type.d.ts +70 -0
  120. package/dist/src/types/serialized-type.js +105 -0
  121. package/dist/src/types/serialized-type.js.map +1 -0
  122. package/dist/src/types/st-array.d.ts +31 -0
  123. package/dist/src/types/st-array.js +83 -0
  124. package/dist/src/types/st-array.js.map +1 -0
  125. package/dist/src/types/st-object.d.ts +32 -0
  126. package/dist/src/types/st-object.js +155 -0
  127. package/dist/src/types/st-object.js.map +1 -0
  128. package/dist/src/types/uint-16.d.ts +24 -0
  129. package/dist/src/types/uint-16.js +45 -0
  130. package/dist/src/types/uint-16.js.map +1 -0
  131. package/dist/src/types/uint-32.d.ts +24 -0
  132. package/dist/src/types/uint-32.js +50 -0
  133. package/dist/src/types/uint-32.js.map +1 -0
  134. package/dist/src/types/uint-64.d.ts +37 -0
  135. package/dist/src/types/uint-64.js +86 -0
  136. package/dist/src/types/uint-64.js.map +1 -0
  137. package/dist/src/types/uint-8.d.ts +24 -0
  138. package/dist/src/types/uint-8.js +46 -0
  139. package/dist/src/types/uint-8.js.map +1 -0
  140. package/dist/src/types/uint.d.ts +29 -0
  141. package/dist/src/types/uint.js +47 -0
  142. package/dist/src/types/uint.js.map +1 -0
  143. package/dist/src/types/vector-256.d.ts +30 -0
  144. package/dist/src/types/vector-256.js +73 -0
  145. package/dist/src/types/vector-256.js.map +1 -0
  146. package/dist/src/types/xchain-bridge.d.ts +44 -0
  147. package/dist/src/types/xchain-bridge.js +102 -0
  148. package/dist/src/types/xchain-bridge.js.map +1 -0
  149. package/dist/src/utils.d.ts +47 -0
  150. package/dist/src/utils.js +137 -0
  151. package/dist/src/utils.js.map +1 -0
  152. package/dist/tsconfig.tsbuildinfo +1 -0
  153. package/dist/types/account-id.d.ts +1 -2
  154. package/dist/types/account-id.js +4 -6
  155. package/dist/types/account-id.js.map +1 -1
  156. package/dist/types/amount.d.ts +1 -2
  157. package/dist/types/amount.js +16 -15
  158. package/dist/types/amount.js.map +1 -1
  159. package/dist/types/blob.d.ts +1 -2
  160. package/dist/types/blob.js +2 -2
  161. package/dist/types/blob.js.map +1 -1
  162. package/dist/types/currency.d.ts +1 -2
  163. package/dist/types/currency.js +10 -10
  164. package/dist/types/currency.js.map +1 -1
  165. package/dist/types/hash-128.d.ts +1 -2
  166. package/dist/types/hash-128.js +3 -3
  167. package/dist/types/hash-128.js.map +1 -1
  168. package/dist/types/hash-160.d.ts +1 -2
  169. package/dist/types/hash-160.js +1 -2
  170. package/dist/types/hash-160.js.map +1 -1
  171. package/dist/types/hash-256.d.ts +1 -2
  172. package/dist/types/hash-256.js +1 -2
  173. package/dist/types/hash-256.js.map +1 -1
  174. package/dist/types/hash.d.ts +2 -3
  175. package/dist/types/hash.js +5 -4
  176. package/dist/types/hash.js.map +1 -1
  177. package/dist/types/issue.d.ts +1 -2
  178. package/dist/types/issue.js +4 -4
  179. package/dist/types/issue.js.map +1 -1
  180. package/dist/types/path-set.js +12 -12
  181. package/dist/types/path-set.js.map +1 -1
  182. package/dist/types/serialized-type.d.ts +17 -13
  183. package/dist/types/serialized-type.js +11 -6
  184. package/dist/types/serialized-type.js.map +1 -1
  185. package/dist/types/st-array.js +5 -5
  186. package/dist/types/st-array.js.map +1 -1
  187. package/dist/types/st-object.js +1 -2
  188. package/dist/types/st-object.js.map +1 -1
  189. package/dist/types/uint-16.d.ts +1 -2
  190. package/dist/types/uint-16.js +6 -5
  191. package/dist/types/uint-16.js.map +1 -1
  192. package/dist/types/uint-32.d.ts +1 -2
  193. package/dist/types/uint-32.js +7 -6
  194. package/dist/types/uint-32.js.map +1 -1
  195. package/dist/types/uint-64.d.ts +2 -3
  196. package/dist/types/uint-64.js +16 -15
  197. package/dist/types/uint-64.js.map +1 -1
  198. package/dist/types/uint-8.d.ts +1 -2
  199. package/dist/types/uint-8.js +7 -5
  200. package/dist/types/uint-8.js.map +1 -1
  201. package/dist/types/uint.d.ts +4 -4
  202. package/dist/types/uint.js +5 -0
  203. package/dist/types/uint.js.map +1 -1
  204. package/dist/types/vector-256.d.ts +1 -2
  205. package/dist/types/vector-256.js +2 -4
  206. package/dist/types/vector-256.js.map +1 -1
  207. package/dist/types/xchain-bridge.d.ts +1 -2
  208. package/dist/types/xchain-bridge.js +20 -20
  209. package/dist/types/xchain-bridge.js.map +1 -1
  210. package/dist/utils.d.ts +47 -0
  211. package/dist/utils.js +137 -0
  212. package/dist/utils.js.map +1 -0
  213. package/package.json +8 -11
  214. package/src/README.md +3 -1
  215. package/src/binary.ts +21 -14
  216. package/src/enums/bytes.ts +2 -3
  217. package/src/enums/definitions.json +36 -11
  218. package/src/enums/field.ts +3 -4
  219. package/src/enums/index.ts +1 -1
  220. package/src/hash-prefixes.ts +8 -8
  221. package/src/hashes.ts +6 -7
  222. package/src/index.ts +12 -15
  223. package/src/quality.ts +4 -4
  224. package/src/serdes/binary-parser.ts +5 -5
  225. package/src/serdes/binary-serializer.ts +14 -14
  226. package/src/shamap.ts +5 -6
  227. package/src/types/account-id.ts +8 -8
  228. package/src/types/amount.ts +17 -18
  229. package/src/types/blob.ts +3 -3
  230. package/src/types/currency.ts +16 -16
  231. package/src/types/hash-128.ts +4 -4
  232. package/src/types/hash-160.ts +2 -3
  233. package/src/types/hash-256.ts +2 -3
  234. package/src/types/hash.ts +8 -6
  235. package/src/types/issue.ts +5 -5
  236. package/src/types/path-set.ts +16 -16
  237. package/src/types/serialized-type.ts +20 -15
  238. package/src/types/st-array.ts +7 -7
  239. package/src/types/st-object.ts +2 -2
  240. package/src/types/uint-16.ts +10 -6
  241. package/src/types/uint-32.ts +10 -7
  242. package/src/types/uint-64.ts +20 -17
  243. package/src/types/uint-8.ts +9 -6
  244. package/src/types/uint.ts +11 -4
  245. package/src/types/vector-256.ts +3 -8
  246. package/src/types/xchain-bridge.ts +22 -22
  247. package/src/utils.ts +152 -0
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShaMapLeaf = exports.ShaMapNode = exports.ShaMap = void 0;
4
+ const types_1 = require("./types");
5
+ const hash_prefixes_1 = require("./hash-prefixes");
6
+ const hashes_1 = require("./hashes");
7
+ /**
8
+ * Abstract class describing a SHAMapNode
9
+ */
10
+ class ShaMapNode {
11
+ }
12
+ exports.ShaMapNode = ShaMapNode;
13
+ /**
14
+ * Class describing a Leaf of SHAMap
15
+ */
16
+ class ShaMapLeaf extends ShaMapNode {
17
+ constructor(index, item) {
18
+ super();
19
+ this.index = index;
20
+ this.item = item;
21
+ }
22
+ /**
23
+ * @returns true as ShaMapLeaf is a leaf node
24
+ */
25
+ isLeaf() {
26
+ return true;
27
+ }
28
+ /**
29
+ * @returns false as ShaMapLeaf is not an inner node
30
+ */
31
+ isInner() {
32
+ return false;
33
+ }
34
+ /**
35
+ * Get the prefix of the this.item
36
+ *
37
+ * @returns The hash prefix, unless this.item is undefined, then it returns an empty Uint8Array
38
+ */
39
+ hashPrefix() {
40
+ return this.item === undefined ? new Uint8Array(0) : this.item.hashPrefix();
41
+ }
42
+ /**
43
+ * Hash the bytes representation of this
44
+ *
45
+ * @returns hash of this.item concatenated with this.index
46
+ */
47
+ hash() {
48
+ const hash = hashes_1.Sha512Half.put(this.hashPrefix());
49
+ this.toBytesSink(hash);
50
+ return hash.finish();
51
+ }
52
+ /**
53
+ * Write the bytes representation of this to a BytesList
54
+ * @param list BytesList to write bytes to
55
+ */
56
+ toBytesSink(list) {
57
+ if (this.item !== undefined) {
58
+ this.item.toBytesSink(list);
59
+ }
60
+ this.index.toBytesSink(list);
61
+ }
62
+ }
63
+ exports.ShaMapLeaf = ShaMapLeaf;
64
+ /**
65
+ * Class defining an Inner Node of a SHAMap
66
+ */
67
+ class ShaMapInner extends ShaMapNode {
68
+ constructor(depth = 0) {
69
+ super();
70
+ this.depth = depth;
71
+ this.slotBits = 0;
72
+ this.branches = Array(16);
73
+ }
74
+ /**
75
+ * @returns true as ShaMapInner is an inner node
76
+ */
77
+ isInner() {
78
+ return true;
79
+ }
80
+ /**
81
+ * @returns false as ShaMapInner is not a leaf node
82
+ */
83
+ isLeaf() {
84
+ return false;
85
+ }
86
+ /**
87
+ * Get the hash prefix for this node
88
+ *
89
+ * @returns hash prefix describing an inner node
90
+ */
91
+ hashPrefix() {
92
+ return hash_prefixes_1.HashPrefix.innerNode;
93
+ }
94
+ /**
95
+ * Set a branch of this node to be another node
96
+ *
97
+ * @param slot Slot to add branch to this.branches
98
+ * @param branch Branch to add
99
+ */
100
+ setBranch(slot, branch) {
101
+ this.slotBits = this.slotBits | (1 << slot);
102
+ this.branches[slot] = branch;
103
+ }
104
+ /**
105
+ * @returns true if node is empty
106
+ */
107
+ empty() {
108
+ return this.slotBits === 0;
109
+ }
110
+ /**
111
+ * Compute the hash of this node
112
+ *
113
+ * @returns The hash of this node
114
+ */
115
+ hash() {
116
+ if (this.empty()) {
117
+ return types_1.coreTypes.Hash256.ZERO_256;
118
+ }
119
+ const hash = hashes_1.Sha512Half.put(this.hashPrefix());
120
+ this.toBytesSink(hash);
121
+ return hash.finish();
122
+ }
123
+ /**
124
+ * Writes the bytes representation of this node to a BytesList
125
+ *
126
+ * @param list BytesList to write bytes to
127
+ */
128
+ toBytesSink(list) {
129
+ for (let i = 0; i < this.branches.length; i++) {
130
+ const branch = this.branches[i];
131
+ const hash = branch
132
+ ? branch.hash()
133
+ : types_1.coreTypes.Hash256.ZERO_256;
134
+ hash.toBytesSink(list);
135
+ }
136
+ }
137
+ /**
138
+ * Add item to the SHAMap
139
+ *
140
+ * @param index Hash of the index of the item being inserted
141
+ * @param item Item to insert in the map
142
+ * @param leaf Leaf node to insert when branch doesn't exist
143
+ */
144
+ addItem(index, item, leaf) {
145
+ if (index === undefined) {
146
+ throw new Error();
147
+ }
148
+ if (index !== undefined) {
149
+ const nibble = index.nibblet(this.depth);
150
+ const existing = this.branches[nibble];
151
+ if (existing === undefined) {
152
+ this.setBranch(nibble, leaf || new ShaMapLeaf(index, item));
153
+ }
154
+ else if (existing instanceof ShaMapLeaf) {
155
+ const newInner = new ShaMapInner(this.depth + 1);
156
+ newInner.addItem(existing.index, undefined, existing);
157
+ newInner.addItem(index, item, leaf);
158
+ this.setBranch(nibble, newInner);
159
+ }
160
+ else if (existing instanceof ShaMapInner) {
161
+ existing.addItem(index, item, leaf);
162
+ }
163
+ else {
164
+ throw new Error('invalid ShaMap.addItem call');
165
+ }
166
+ }
167
+ }
168
+ }
169
+ class ShaMap extends ShaMapInner {
170
+ }
171
+ exports.ShaMap = ShaMap;
172
+ //# sourceMappingURL=shamap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shamap.js","sourceRoot":"","sources":["../../src/shamap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { Hash160 } from './hash-160';
2
+ /**
3
+ * Class defining how to encode and decode an AccountID
4
+ */
5
+ declare class AccountID extends Hash160 {
6
+ static readonly defaultAccountID: AccountID;
7
+ constructor(bytes?: Uint8Array);
8
+ /**
9
+ * Defines how to construct an AccountID
10
+ *
11
+ * @param value either an existing AccountID, a hex-string, or a base58 r-Address
12
+ * @returns an AccountID object
13
+ */
14
+ static from<T extends Hash160 | string>(value: T): AccountID;
15
+ /**
16
+ * Defines how to build an AccountID from a base58 r-Address
17
+ *
18
+ * @param value a base58 r-Address
19
+ * @returns an AccountID object
20
+ */
21
+ static fromBase58(value: string): AccountID;
22
+ /**
23
+ * Overload of toJSON
24
+ *
25
+ * @returns the base58 string for this AccountID
26
+ */
27
+ toJSON(): string;
28
+ /**
29
+ * Defines how to encode AccountID into a base58 address
30
+ *
31
+ * @returns the base58 string defined by this.bytes
32
+ */
33
+ toBase58(): string;
34
+ }
35
+ export { AccountID };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountID = void 0;
4
+ const ripple_address_codec_1 = require("ripple-address-codec");
5
+ const hash_160_1 = require("./hash-160");
6
+ const utils_1 = require("@xrplf/isomorphic/utils");
7
+ const HEX_REGEX = /^[A-F0-9]{40}$/;
8
+ /**
9
+ * Class defining how to encode and decode an AccountID
10
+ */
11
+ class AccountID extends hash_160_1.Hash160 {
12
+ constructor(bytes) {
13
+ super(bytes !== null && bytes !== void 0 ? bytes : AccountID.defaultAccountID.bytes);
14
+ }
15
+ /**
16
+ * Defines how to construct an AccountID
17
+ *
18
+ * @param value either an existing AccountID, a hex-string, or a base58 r-Address
19
+ * @returns an AccountID object
20
+ */
21
+ static from(value) {
22
+ if (value instanceof AccountID) {
23
+ return value;
24
+ }
25
+ if (typeof value === 'string') {
26
+ if (value === '') {
27
+ return new AccountID();
28
+ }
29
+ return HEX_REGEX.test(value)
30
+ ? new AccountID((0, utils_1.hexToBytes)(value))
31
+ : this.fromBase58(value);
32
+ }
33
+ throw new Error('Cannot construct AccountID from value given');
34
+ }
35
+ /**
36
+ * Defines how to build an AccountID from a base58 r-Address
37
+ *
38
+ * @param value a base58 r-Address
39
+ * @returns an AccountID object
40
+ */
41
+ static fromBase58(value) {
42
+ if ((0, ripple_address_codec_1.isValidXAddress)(value)) {
43
+ const classic = (0, ripple_address_codec_1.xAddressToClassicAddress)(value);
44
+ if (classic.tag !== false)
45
+ throw new Error('Only allowed to have tag on Account or Destination');
46
+ value = classic.classicAddress;
47
+ }
48
+ return new AccountID(Uint8Array.from((0, ripple_address_codec_1.decodeAccountID)(value)));
49
+ }
50
+ /**
51
+ * Overload of toJSON
52
+ *
53
+ * @returns the base58 string for this AccountID
54
+ */
55
+ toJSON() {
56
+ return this.toBase58();
57
+ }
58
+ /**
59
+ * Defines how to encode AccountID into a base58 address
60
+ *
61
+ * @returns the base58 string defined by this.bytes
62
+ */
63
+ toBase58() {
64
+ return (0, ripple_address_codec_1.encodeAccountID)(this.bytes);
65
+ }
66
+ }
67
+ exports.AccountID = AccountID;
68
+ AccountID.defaultAccountID = new AccountID(new Uint8Array(20));
69
+ //# sourceMappingURL=account-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../../src/types/account-id.ts"],"names":[],"mappings":";;;AAAA,+DAK6B;AAC7B,yCAAoC;AACpC,mDAAoD;AAEpD,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAElC;;GAEG;AACH,MAAM,SAAU,SAAQ,kBAAO;IAK7B,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAA6B,KAAQ;QAC9C,IAAI,KAAK,YAAY,SAAS,EAAE;YAC9B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChB,OAAO,IAAI,SAAS,EAAE,CAAA;aACvB;YAED,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,CAAC,CAAC,IAAI,SAAS,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;SAC3B;QAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,IAAI,IAAA,sCAAe,EAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAA,+CAAwB,EAAC,KAAK,CAAC,CAAA;YAE/C,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK;gBACvB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;YAEvE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAA;SAC/B;QAED,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAA,sCAAe,EAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAA,sCAAe,EAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;;AAGM,8BAAS;AAtEA,0BAAgB,GAAc,IAAI,SAAS,CACzD,IAAI,UAAU,CAAC,EAAE,CAAC,CACnB,CAAA"}
@@ -0,0 +1,67 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType } from './serialized-type';
3
+ /**
4
+ * Interface for JSON objects that represent amounts
5
+ */
6
+ interface AmountObject extends JsonObject {
7
+ value: string;
8
+ currency: string;
9
+ issuer: string;
10
+ }
11
+ /**
12
+ * Class for serializing/Deserializing Amounts
13
+ */
14
+ declare class Amount extends SerializedType {
15
+ static defaultAmount: Amount;
16
+ constructor(bytes: Uint8Array);
17
+ /**
18
+ * Construct an amount from an IOU or string amount
19
+ *
20
+ * @param value An Amount, object representing an IOU, or a string
21
+ * representing an integer amount
22
+ * @returns An Amount object
23
+ */
24
+ static from<T extends Amount | AmountObject | string>(value: T): Amount;
25
+ /**
26
+ * Read an amount from a BinaryParser
27
+ *
28
+ * @param parser BinaryParser to read the Amount from
29
+ * @returns An Amount object
30
+ */
31
+ static fromParser(parser: BinaryParser): Amount;
32
+ /**
33
+ * Get the JSON representation of this Amount
34
+ *
35
+ * @returns the JSON interpretation of this.bytes
36
+ */
37
+ toJSON(): AmountObject | string;
38
+ /**
39
+ * Validate XRP amount
40
+ *
41
+ * @param amount String representing XRP amount
42
+ * @returns void, but will throw if invalid amount
43
+ */
44
+ private static assertXrpIsValid;
45
+ /**
46
+ * Validate IOU.value amount
47
+ *
48
+ * @param decimal BigNumber object representing IOU.value
49
+ * @returns void, but will throw if invalid amount
50
+ */
51
+ private static assertIouIsValid;
52
+ /**
53
+ * Ensure that the value after being multiplied by the exponent does not
54
+ * contain a decimal.
55
+ *
56
+ * @param decimal a Decimal object
57
+ * @returns a string of the object without a decimal
58
+ */
59
+ private static verifyNoDecimal;
60
+ /**
61
+ * Test if this amount is in units of Native Currency(XRP)
62
+ *
63
+ * @returns true if Native (XRP)
64
+ */
65
+ private isNative;
66
+ }
67
+ export { Amount, AmountObject };
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Amount = void 0;
7
+ const binary_parser_1 = require("../serdes/binary-parser");
8
+ const account_id_1 = require("./account-id");
9
+ const currency_1 = require("./currency");
10
+ const serialized_type_1 = require("./serialized-type");
11
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
12
+ const utils_1 = require("@xrplf/isomorphic/utils");
13
+ const utils_2 = require("../utils");
14
+ /**
15
+ * Constants for validating amounts
16
+ */
17
+ const MIN_IOU_EXPONENT = -96;
18
+ const MAX_IOU_EXPONENT = 80;
19
+ const MAX_IOU_PRECISION = 16;
20
+ const MAX_DROPS = new bignumber_js_1.default('1e17');
21
+ const MIN_XRP = new bignumber_js_1.default('1e-6');
22
+ const mask = BigInt(0x00000000ffffffff);
23
+ /**
24
+ * BigNumber configuration for Amount IOUs
25
+ */
26
+ bignumber_js_1.default.config({
27
+ EXPONENTIAL_AT: [
28
+ MIN_IOU_EXPONENT - MAX_IOU_PRECISION,
29
+ MAX_IOU_EXPONENT + MAX_IOU_PRECISION,
30
+ ],
31
+ });
32
+ /**
33
+ * Type guard for AmountObject
34
+ */
35
+ function isAmountObject(arg) {
36
+ const keys = Object.keys(arg).sort();
37
+ return (keys.length === 3 &&
38
+ keys[0] === 'currency' &&
39
+ keys[1] === 'issuer' &&
40
+ keys[2] === 'value');
41
+ }
42
+ /**
43
+ * Class for serializing/Deserializing Amounts
44
+ */
45
+ class Amount extends serialized_type_1.SerializedType {
46
+ constructor(bytes) {
47
+ super(bytes !== null && bytes !== void 0 ? bytes : Amount.defaultAmount.bytes);
48
+ }
49
+ /**
50
+ * Construct an amount from an IOU or string amount
51
+ *
52
+ * @param value An Amount, object representing an IOU, or a string
53
+ * representing an integer amount
54
+ * @returns An Amount object
55
+ */
56
+ static from(value) {
57
+ if (value instanceof Amount) {
58
+ return value;
59
+ }
60
+ let amount = new Uint8Array(8);
61
+ if (typeof value === 'string') {
62
+ Amount.assertXrpIsValid(value);
63
+ const number = BigInt(value);
64
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
65
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(number >> BigInt(32)), 0);
66
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(number & BigInt(mask)), 0);
67
+ amount = (0, utils_1.concat)(intBuf);
68
+ amount[0] |= 0x40;
69
+ return new Amount(amount);
70
+ }
71
+ if (isAmountObject(value)) {
72
+ const number = new bignumber_js_1.default(value.value);
73
+ Amount.assertIouIsValid(number);
74
+ if (number.isZero()) {
75
+ amount[0] |= 0x80;
76
+ }
77
+ else {
78
+ const integerNumberString = number
79
+ .times(`1e${-((number.e || 0) - 15)}`)
80
+ .abs()
81
+ .toString();
82
+ const num = BigInt(integerNumberString);
83
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
84
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(num >> BigInt(32)), 0);
85
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(num & BigInt(mask)), 0);
86
+ amount = (0, utils_1.concat)(intBuf);
87
+ amount[0] |= 0x80;
88
+ if (number.gt(new bignumber_js_1.default(0))) {
89
+ amount[0] |= 0x40;
90
+ }
91
+ const exponent = (number.e || 0) - 15;
92
+ const exponentByte = 97 + exponent;
93
+ amount[0] |= exponentByte >>> 2;
94
+ amount[1] |= (exponentByte & 0x03) << 6;
95
+ }
96
+ const currency = currency_1.Currency.from(value.currency).toBytes();
97
+ const issuer = account_id_1.AccountID.from(value.issuer).toBytes();
98
+ return new Amount((0, utils_1.concat)([amount, currency, issuer]));
99
+ }
100
+ throw new Error('Invalid type to construct an Amount');
101
+ }
102
+ /**
103
+ * Read an amount from a BinaryParser
104
+ *
105
+ * @param parser BinaryParser to read the Amount from
106
+ * @returns An Amount object
107
+ */
108
+ static fromParser(parser) {
109
+ const isXRP = parser.peek() & 0x80;
110
+ const numBytes = isXRP ? 48 : 8;
111
+ return new Amount(parser.read(numBytes));
112
+ }
113
+ /**
114
+ * Get the JSON representation of this Amount
115
+ *
116
+ * @returns the JSON interpretation of this.bytes
117
+ */
118
+ toJSON() {
119
+ if (this.isNative()) {
120
+ const bytes = this.bytes;
121
+ const isPositive = bytes[0] & 0x40;
122
+ const sign = isPositive ? '' : '-';
123
+ bytes[0] &= 0x3f;
124
+ const msb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(0, 4), 0));
125
+ const lsb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(4), 0));
126
+ const num = (msb << BigInt(32)) | lsb;
127
+ return `${sign}${num.toString()}`;
128
+ }
129
+ else {
130
+ const parser = new binary_parser_1.BinaryParser(this.toString());
131
+ const mantissa = parser.read(8);
132
+ const currency = currency_1.Currency.fromParser(parser);
133
+ const issuer = account_id_1.AccountID.fromParser(parser);
134
+ const b1 = mantissa[0];
135
+ const b2 = mantissa[1];
136
+ const isPositive = b1 & 0x40;
137
+ const sign = isPositive ? '' : '-';
138
+ const exponent = ((b1 & 0x3f) << 2) + ((b2 & 0xff) >> 6) - 97;
139
+ mantissa[0] = 0;
140
+ mantissa[1] &= 0x3f;
141
+ const value = new bignumber_js_1.default(`${sign}0x${(0, utils_1.bytesToHex)(mantissa)}`).times(`1e${exponent}`);
142
+ Amount.assertIouIsValid(value);
143
+ return {
144
+ value: value.toString(),
145
+ currency: currency.toJSON(),
146
+ issuer: issuer.toJSON(),
147
+ };
148
+ }
149
+ }
150
+ /**
151
+ * Validate XRP amount
152
+ *
153
+ * @param amount String representing XRP amount
154
+ * @returns void, but will throw if invalid amount
155
+ */
156
+ static assertXrpIsValid(amount) {
157
+ if (amount.indexOf('.') !== -1) {
158
+ throw new Error(`${amount.toString()} is an illegal amount`);
159
+ }
160
+ const decimal = new bignumber_js_1.default(amount);
161
+ if (!decimal.isZero()) {
162
+ if (decimal.lt(MIN_XRP) || decimal.gt(MAX_DROPS)) {
163
+ throw new Error(`${amount.toString()} is an illegal amount`);
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * Validate IOU.value amount
169
+ *
170
+ * @param decimal BigNumber object representing IOU.value
171
+ * @returns void, but will throw if invalid amount
172
+ */
173
+ static assertIouIsValid(decimal) {
174
+ if (!decimal.isZero()) {
175
+ const p = decimal.precision();
176
+ const e = (decimal.e || 0) - 15;
177
+ if (p > MAX_IOU_PRECISION ||
178
+ e > MAX_IOU_EXPONENT ||
179
+ e < MIN_IOU_EXPONENT) {
180
+ throw new Error('Decimal precision out of range');
181
+ }
182
+ this.verifyNoDecimal(decimal);
183
+ }
184
+ }
185
+ /**
186
+ * Ensure that the value after being multiplied by the exponent does not
187
+ * contain a decimal.
188
+ *
189
+ * @param decimal a Decimal object
190
+ * @returns a string of the object without a decimal
191
+ */
192
+ static verifyNoDecimal(decimal) {
193
+ const integerNumberString = decimal
194
+ .times(`1e${-((decimal.e || 0) - 15)}`)
195
+ .abs()
196
+ .toString();
197
+ if (integerNumberString.indexOf('.') !== -1) {
198
+ throw new Error('Decimal place found in integerNumberString');
199
+ }
200
+ }
201
+ /**
202
+ * Test if this amount is in units of Native Currency(XRP)
203
+ *
204
+ * @returns true if Native (XRP)
205
+ */
206
+ isNative() {
207
+ return (this.bytes[0] & 0x80) === 0;
208
+ }
209
+ }
210
+ exports.Amount = Amount;
211
+ Amount.defaultAmount = new Amount((0, utils_1.hexToBytes)('4000000000000000'));
212
+ //# sourceMappingURL=amount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../src/types/amount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { SerializedType } from './serialized-type';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ /**
4
+ * Variable length encoded type
5
+ */
6
+ declare class Blob extends SerializedType {
7
+ constructor(bytes: Uint8Array);
8
+ /**
9
+ * Defines how to read a Blob from a BinaryParser
10
+ *
11
+ * @param parser The binary parser to read the Blob from
12
+ * @param hint The length of the blob, computed by readVariableLengthLength() and passed in
13
+ * @returns A Blob object
14
+ */
15
+ static fromParser(parser: BinaryParser, hint: number): Blob;
16
+ /**
17
+ * Create a Blob object from a hex-string
18
+ *
19
+ * @param value existing Blob object or a hex-string
20
+ * @returns A Blob object
21
+ */
22
+ static from<T extends Blob | string>(value: T): Blob;
23
+ }
24
+ export { Blob };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Blob = void 0;
4
+ const serialized_type_1 = require("./serialized-type");
5
+ const utils_1 = require("@xrplf/isomorphic/utils");
6
+ /**
7
+ * Variable length encoded type
8
+ */
9
+ class Blob extends serialized_type_1.SerializedType {
10
+ constructor(bytes) {
11
+ super(bytes);
12
+ }
13
+ /**
14
+ * Defines how to read a Blob from a BinaryParser
15
+ *
16
+ * @param parser The binary parser to read the Blob from
17
+ * @param hint The length of the blob, computed by readVariableLengthLength() and passed in
18
+ * @returns A Blob object
19
+ */
20
+ static fromParser(parser, hint) {
21
+ return new Blob(parser.read(hint));
22
+ }
23
+ /**
24
+ * Create a Blob object from a hex-string
25
+ *
26
+ * @param value existing Blob object or a hex-string
27
+ * @returns A Blob object
28
+ */
29
+ static from(value) {
30
+ if (value instanceof Blob) {
31
+ return value;
32
+ }
33
+ if (typeof value === 'string') {
34
+ return new Blob((0, utils_1.hexToBytes)(value));
35
+ }
36
+ throw new Error('Cannot construct Blob from value given');
37
+ }
38
+ }
39
+ exports.Blob = Blob;
40
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../../../src/types/blob.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAElD,mDAAoD;AAEpD;;GAEG;AACH,MAAM,IAAK,SAAQ,gCAAc;IAC/B,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAA;IACd,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB,EAAE,IAAY;QAClD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAA0B,KAAQ;QAC3C,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAA;SACnC;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;CACF;AAEQ,oBAAI"}
@@ -0,0 +1,28 @@
1
+ import { Hash160 } from './hash-160';
2
+ /**
3
+ * Class defining how to encode and decode Currencies
4
+ */
5
+ declare class Currency extends Hash160 {
6
+ static readonly XRP: Currency;
7
+ private readonly _iso;
8
+ constructor(byteBuf: Uint8Array);
9
+ /**
10
+ * Return the ISO code of this currency
11
+ *
12
+ * @returns ISO code if it exists, else null
13
+ */
14
+ iso(): string | null;
15
+ /**
16
+ * Constructs a Currency object
17
+ *
18
+ * @param val Currency object or a string representation of a currency
19
+ */
20
+ static from<T extends Hash160 | string>(value: T): Currency;
21
+ /**
22
+ * Gets the JSON representation of a currency
23
+ *
24
+ * @returns JSON representation
25
+ */
26
+ toJSON(): string;
27
+ }
28
+ export { Currency };