ripple-binary-codec 1.0.4-beta.0 → 1.0.4-mpt-beta

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 (335) hide show
  1. package/README.md +3 -3
  2. package/dist/binary.d.ts +34 -20
  3. package/dist/binary.js +51 -36
  4. package/dist/binary.js.map +1 -1
  5. package/dist/coretypes.d.ts +9 -9
  6. package/dist/coretypes.js +33 -9
  7. package/dist/coretypes.js.map +1 -1
  8. package/dist/enums/bytes.d.ts +25 -0
  9. package/dist/enums/bytes.js +63 -0
  10. package/dist/enums/bytes.js.map +1 -0
  11. package/dist/enums/constants.d.ts +4 -0
  12. package/dist/enums/constants.js +8 -0
  13. package/dist/enums/constants.js.map +1 -0
  14. package/dist/enums/definitions.json +3066 -1780
  15. package/dist/enums/field.d.ts +28 -0
  16. package/dist/enums/field.js +58 -0
  17. package/dist/enums/field.js.map +1 -0
  18. package/dist/enums/index.d.ts +12 -46
  19. package/dist/enums/index.js +22 -110
  20. package/dist/enums/index.js.map +1 -1
  21. package/dist/enums/src/enums/definitions.json +3073 -0
  22. package/dist/enums/utils-renumber.js +20 -20
  23. package/dist/enums/utils-renumber.js.map +1 -1
  24. package/dist/enums/xrpl-definitions-base.d.ts +44 -0
  25. package/dist/enums/xrpl-definitions-base.js +59 -0
  26. package/dist/enums/xrpl-definitions-base.js.map +1 -0
  27. package/dist/enums/xrpl-definitions.d.ts +21 -0
  28. package/dist/enums/xrpl-definitions.js +29 -0
  29. package/dist/enums/xrpl-definitions.js.map +1 -0
  30. package/dist/hash-prefixes.d.ts +1 -2
  31. package/dist/hash-prefixes.js +7 -6
  32. package/dist/hash-prefixes.js.map +1 -1
  33. package/dist/hashes.d.ts +7 -8
  34. package/dist/hashes.js +23 -44
  35. package/dist/hashes.js.map +1 -1
  36. package/dist/index.d.ts +16 -17
  37. package/dist/index.js +65 -40
  38. package/dist/index.js.map +1 -1
  39. package/dist/ledger-hashes.d.ts +7 -5
  40. package/dist/ledger-hashes.js +40 -34
  41. package/dist/ledger-hashes.js.map +1 -1
  42. package/dist/quality.d.ts +3 -4
  43. package/dist/quality.js +20 -20
  44. package/dist/quality.js.map +1 -1
  45. package/dist/serdes/binary-parser.d.ts +8 -6
  46. package/dist/serdes/binary-parser.js +74 -64
  47. package/dist/serdes/binary-parser.js.map +1 -1
  48. package/dist/serdes/binary-serializer.d.ts +10 -11
  49. package/dist/serdes/binary-serializer.js +50 -48
  50. package/dist/serdes/binary-serializer.js.map +1 -1
  51. package/dist/shamap.d.ts +6 -7
  52. package/dist/shamap.js +74 -97
  53. package/dist/shamap.js.map +1 -1
  54. package/dist/src/binary.d.ts +90 -0
  55. package/dist/src/binary.js +128 -0
  56. package/dist/src/binary.js.map +1 -0
  57. package/dist/src/coretypes.d.ts +9 -0
  58. package/dist/src/coretypes.js +48 -0
  59. package/dist/src/coretypes.js.map +1 -0
  60. package/dist/src/enums/bytes.d.ts +25 -0
  61. package/dist/src/enums/bytes.js +63 -0
  62. package/dist/src/enums/bytes.js.map +1 -0
  63. package/dist/src/enums/constants.d.ts +4 -0
  64. package/dist/src/enums/constants.js +8 -0
  65. package/dist/src/enums/constants.js.map +1 -0
  66. package/dist/src/enums/definitions.json +3068 -0
  67. package/dist/src/enums/field.d.ts +28 -0
  68. package/dist/src/enums/field.js +58 -0
  69. package/dist/src/enums/field.js.map +1 -0
  70. package/dist/src/enums/index.d.ts +12 -0
  71. package/dist/src/enums/index.js +31 -0
  72. package/dist/src/enums/index.js.map +1 -0
  73. package/dist/src/enums/utils-renumber.d.ts +101 -0
  74. package/dist/src/enums/utils-renumber.js +127 -0
  75. package/dist/src/enums/utils-renumber.js.map +1 -0
  76. package/dist/src/enums/xrpl-definitions-base.d.ts +44 -0
  77. package/dist/src/enums/xrpl-definitions-base.js +59 -0
  78. package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
  79. package/dist/src/enums/xrpl-definitions.d.ts +21 -0
  80. package/dist/src/enums/xrpl-definitions.js +29 -0
  81. package/dist/src/enums/xrpl-definitions.js.map +1 -0
  82. package/dist/src/hash-prefixes.d.ts +5 -0
  83. package/dist/src/hash-prefixes.js +41 -0
  84. package/dist/src/hash-prefixes.js.map +1 -0
  85. package/dist/src/hashes.d.ts +50 -0
  86. package/dist/src/hashes.js +76 -0
  87. package/dist/src/hashes.js.map +1 -0
  88. package/dist/src/index.d.ts +64 -0
  89. package/dist/src/index.js +123 -0
  90. package/dist/src/index.js.map +1 -0
  91. package/dist/src/ledger-hashes.d.ts +48 -0
  92. package/dist/src/ledger-hashes.js +141 -0
  93. package/dist/src/ledger-hashes.js.map +1 -0
  94. package/dist/src/quality.d.ts +21 -0
  95. package/dist/src/quality.js +42 -0
  96. package/dist/src/quality.js.map +1 -0
  97. package/dist/src/serdes/binary-parser.d.ts +100 -0
  98. package/dist/src/serdes/binary-parser.js +194 -0
  99. package/dist/src/serdes/binary-parser.js.map +1 -0
  100. package/dist/src/serdes/binary-serializer.d.ts +81 -0
  101. package/dist/src/serdes/binary-serializer.js +149 -0
  102. package/dist/src/serdes/binary-serializer.js.map +1 -0
  103. package/dist/src/shamap.d.ts +102 -0
  104. package/dist/src/shamap.js +172 -0
  105. package/dist/src/shamap.js.map +1 -0
  106. package/dist/src/types/account-id.d.ts +35 -0
  107. package/dist/src/types/account-id.js +69 -0
  108. package/dist/src/types/account-id.js.map +1 -0
  109. package/dist/src/types/amount.d.ts +91 -0
  110. package/dist/src/types/amount.js +289 -0
  111. package/dist/src/types/amount.js.map +1 -0
  112. package/dist/src/types/blob.d.ts +24 -0
  113. package/dist/src/types/blob.js +43 -0
  114. package/dist/src/types/blob.js.map +1 -0
  115. package/dist/src/types/currency.d.ts +28 -0
  116. package/dist/src/types/currency.js +127 -0
  117. package/dist/src/types/currency.js.map +1 -0
  118. package/dist/src/types/hash-128.d.ts +16 -0
  119. package/dist/src/types/hash-128.js +32 -0
  120. package/dist/src/types/hash-128.js.map +1 -0
  121. package/dist/src/types/hash-160.d.ts +10 -0
  122. package/dist/src/types/hash-160.js +19 -0
  123. package/dist/src/types/hash-160.js.map +1 -0
  124. package/dist/src/types/hash-192.d.ts +10 -0
  125. package/dist/src/types/hash-192.js +19 -0
  126. package/dist/src/types/hash-192.js.map +1 -0
  127. package/dist/src/types/hash-256.d.ts +10 -0
  128. package/dist/src/types/hash-256.js +16 -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 +73 -0
  132. package/dist/src/types/hash.js.map +1 -0
  133. package/dist/src/types/index.d.ts +19 -0
  134. package/dist/src/types/index.js +64 -0
  135. package/dist/src/types/index.js.map +1 -0
  136. package/dist/src/types/issue.d.ts +38 -0
  137. package/dist/src/types/issue.js +81 -0
  138. package/dist/src/types/issue.js.map +1 -0
  139. package/dist/src/types/path-set.d.ts +36 -0
  140. package/dist/src/types/path-set.js +233 -0
  141. package/dist/src/types/path-set.js.map +1 -0
  142. package/dist/src/types/serialized-type.d.ts +70 -0
  143. package/dist/src/types/serialized-type.js +105 -0
  144. package/dist/src/types/serialized-type.js.map +1 -0
  145. package/dist/src/types/st-array.d.ts +31 -0
  146. package/dist/src/types/st-array.js +86 -0
  147. package/dist/src/types/st-array.js.map +1 -0
  148. package/dist/src/types/st-object.d.ts +32 -0
  149. package/dist/src/types/st-object.js +155 -0
  150. package/dist/src/types/st-object.js.map +1 -0
  151. package/dist/src/types/uint-16.d.ts +24 -0
  152. package/dist/src/types/uint-16.js +45 -0
  153. package/dist/src/types/uint-16.js.map +1 -0
  154. package/dist/src/types/uint-32.d.ts +24 -0
  155. package/dist/src/types/uint-32.js +50 -0
  156. package/dist/src/types/uint-32.js.map +1 -0
  157. package/dist/src/types/uint-64.d.ts +37 -0
  158. package/dist/src/types/uint-64.js +86 -0
  159. package/dist/src/types/uint-64.js.map +1 -0
  160. package/dist/src/types/uint-8.d.ts +24 -0
  161. package/dist/src/types/uint-8.js +46 -0
  162. package/dist/src/types/uint-8.js.map +1 -0
  163. package/dist/src/types/uint.d.ts +29 -0
  164. package/dist/src/types/uint.js +47 -0
  165. package/dist/src/types/uint.js.map +1 -0
  166. package/dist/src/types/vector-256.d.ts +30 -0
  167. package/dist/src/types/vector-256.js +73 -0
  168. package/dist/src/types/vector-256.js.map +1 -0
  169. package/dist/src/types/xchain-bridge.d.ts +44 -0
  170. package/dist/src/types/xchain-bridge.js +102 -0
  171. package/dist/src/types/xchain-bridge.js.map +1 -0
  172. package/dist/src/utils.d.ts +47 -0
  173. package/dist/src/utils.js +137 -0
  174. package/dist/src/utils.js.map +1 -0
  175. package/dist/tsconfig.tsbuildinfo +1 -0
  176. package/dist/types/account-id.d.ts +2 -3
  177. package/dist/types/account-id.js +29 -37
  178. package/dist/types/account-id.js.map +1 -1
  179. package/dist/types/amount.d.ts +33 -10
  180. package/dist/types/amount.js +181 -113
  181. package/dist/types/amount.js.map +1 -1
  182. package/dist/types/blob.d.ts +3 -4
  183. package/dist/types/blob.js +16 -27
  184. package/dist/types/blob.js.map +1 -1
  185. package/dist/types/currency.d.ts +5 -13
  186. package/dist/types/currency.js +53 -66
  187. package/dist/types/currency.js.map +1 -1
  188. package/dist/types/hash-128.d.ts +8 -3
  189. package/dist/types/hash-128.js +23 -22
  190. package/dist/types/hash-128.js.map +1 -1
  191. package/dist/types/hash-160.d.ts +2 -3
  192. package/dist/types/hash-160.js +7 -24
  193. package/dist/types/hash-160.js.map +1 -1
  194. package/dist/types/hash-192.d.ts +10 -0
  195. package/dist/types/hash-192.js +19 -0
  196. package/dist/types/hash-192.js.map +1 -0
  197. package/dist/types/hash-256.d.ts +2 -3
  198. package/dist/types/hash-256.js +7 -22
  199. package/dist/types/hash-256.js.map +1 -1
  200. package/dist/types/hash.d.ts +4 -5
  201. package/dist/types/hash.js +25 -39
  202. package/dist/types/hash.js.map +1 -1
  203. package/dist/types/index.d.ts +19 -33
  204. package/dist/types/index.js +44 -24
  205. package/dist/types/index.js.map +1 -1
  206. package/dist/types/issue.d.ts +38 -0
  207. package/dist/types/issue.js +81 -0
  208. package/dist/types/issue.js.map +1 -0
  209. package/dist/types/path-set.d.ts +2 -2
  210. package/dist/types/path-set.js +73 -94
  211. package/dist/types/path-set.js.map +1 -1
  212. package/dist/types/serialized-type.d.ts +27 -20
  213. package/dist/types/serialized-type.js +50 -60
  214. package/dist/types/serialized-type.js.map +1 -1
  215. package/dist/types/st-array.d.ts +7 -4
  216. package/dist/types/st-array.js +36 -47
  217. package/dist/types/st-array.js.map +1 -1
  218. package/dist/types/st-object.d.ts +8 -5
  219. package/dist/types/st-object.js +73 -74
  220. package/dist/types/st-object.js.map +1 -1
  221. package/dist/types/uint-16.d.ts +3 -4
  222. package/dist/types/uint-16.js +20 -33
  223. package/dist/types/uint-16.js.map +1 -1
  224. package/dist/types/uint-32.d.ts +3 -4
  225. package/dist/types/uint-32.js +23 -36
  226. package/dist/types/uint-32.js.map +1 -1
  227. package/dist/types/uint-64.d.ts +6 -8
  228. package/dist/types/uint-64.js +43 -57
  229. package/dist/types/uint-64.js.map +1 -1
  230. package/dist/types/uint-8.d.ts +3 -4
  231. package/dist/types/uint-8.js +21 -33
  232. package/dist/types/uint-8.js.map +1 -1
  233. package/dist/types/uint.d.ts +6 -7
  234. package/dist/types/uint.js +16 -26
  235. package/dist/types/uint.js.map +1 -1
  236. package/dist/types/vector-256.d.ts +3 -4
  237. package/dist/types/vector-256.js +28 -45
  238. package/dist/types/vector-256.js.map +1 -1
  239. package/dist/types/xchain-bridge.d.ts +44 -0
  240. package/dist/types/xchain-bridge.js +102 -0
  241. package/dist/types/xchain-bridge.js.map +1 -0
  242. package/dist/utils.d.ts +47 -0
  243. package/dist/utils.js +137 -0
  244. package/dist/utils.js.map +1 -0
  245. package/package.json +23 -34
  246. package/src/README.md +5 -0
  247. package/src/binary.ts +194 -0
  248. package/src/coretypes.ts +31 -0
  249. package/src/enums/README.md +144 -0
  250. package/src/enums/bytes.ts +74 -0
  251. package/src/enums/constants.ts +4 -0
  252. package/src/enums/definitions.json +3073 -0
  253. package/src/enums/field.ts +84 -0
  254. package/src/enums/index.ts +34 -0
  255. package/src/enums/utils-renumber.ts +134 -0
  256. package/src/enums/xrpl-definitions-base.ts +111 -0
  257. package/src/enums/xrpl-definitions.ts +32 -0
  258. package/src/hash-prefixes.ts +40 -0
  259. package/src/hashes.ts +75 -0
  260. package/src/index.ts +153 -0
  261. package/src/ledger-hashes.ts +191 -0
  262. package/src/quality.ts +38 -0
  263. package/src/serdes/binary-parser.ts +228 -0
  264. package/src/serdes/binary-serializer.ts +166 -0
  265. package/src/shamap.ts +186 -0
  266. package/src/types/account-id.ts +86 -0
  267. package/src/types/amount.ts +362 -0
  268. package/src/types/blob.ts +46 -0
  269. package/src/types/currency.ts +140 -0
  270. package/src/types/hash-128.ts +33 -0
  271. package/src/types/hash-160.ts +19 -0
  272. package/src/types/hash-192.ts +19 -0
  273. package/src/types/hash-256.ts +15 -0
  274. package/src/types/hash.ts +83 -0
  275. package/src/types/index.ts +66 -0
  276. package/src/types/issue.ts +96 -0
  277. package/src/types/path-set.ts +290 -0
  278. package/src/types/serialized-type.ts +122 -0
  279. package/src/types/st-array.ts +113 -0
  280. package/src/types/st-object.ts +192 -0
  281. package/src/types/uint-16.ts +53 -0
  282. package/src/types/uint-32.ts +59 -0
  283. package/src/types/uint-64.ts +104 -0
  284. package/src/types/uint-8.ts +52 -0
  285. package/src/types/uint.ts +60 -0
  286. package/src/types/vector-256.ts +79 -0
  287. package/src/types/xchain-bridge.ts +128 -0
  288. package/src/utils.ts +152 -0
  289. package/HISTORY.md +0 -74
  290. package/test/amount.test.js +0 -43
  291. package/test/binary-json.test.js +0 -47
  292. package/test/binary-parser.test.js +0 -397
  293. package/test/binary-serializer.test.js +0 -263
  294. package/test/fixtures/account-tx-transactions.db +0 -0
  295. package/test/fixtures/codec-fixtures.json +0 -4466
  296. package/test/fixtures/data-driven-tests.json +0 -3721
  297. package/test/fixtures/delivermin-tx-binary.json +0 -1
  298. package/test/fixtures/delivermin-tx.json +0 -98
  299. package/test/fixtures/deposit-preauth-tx-binary.json +0 -1
  300. package/test/fixtures/deposit-preauth-tx-meta-binary.json +0 -1
  301. package/test/fixtures/deposit-preauth-tx.json +0 -58
  302. package/test/fixtures/escrow-cancel-binary.json +0 -1
  303. package/test/fixtures/escrow-cancel-tx.json +0 -6
  304. package/test/fixtures/escrow-create-binary.json +0 -1
  305. package/test/fixtures/escrow-create-tx.json +0 -10
  306. package/test/fixtures/escrow-finish-binary.json +0 -1
  307. package/test/fixtures/escrow-finish-meta-binary.json +0 -1
  308. package/test/fixtures/escrow-finish-tx.json +0 -95
  309. package/test/fixtures/ledger-full-38129.json +0 -1
  310. package/test/fixtures/ledger-full-40000.json +0 -1
  311. package/test/fixtures/negative-unl.json +0 -12
  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/signerlistset-tx-binary.json +0 -1
  319. package/test/fixtures/signerlistset-tx-meta-binary.json +0 -1
  320. package/test/fixtures/signerlistset-tx.json +0 -94
  321. package/test/fixtures/ticket-create-binary.json +0 -1
  322. package/test/fixtures/ticket-create-tx.json +0 -7
  323. package/test/fixtures/x-codec-fixtures.json +0 -188
  324. package/test/hash.test.js +0 -82
  325. package/test/ledger.test.js +0 -29
  326. package/test/lower-case-hex.test.js +0 -45
  327. package/test/pseudo-transaction.test.js +0 -38
  328. package/test/quality.test.js +0 -15
  329. package/test/shamap.test.js +0 -88
  330. package/test/signing-data-encoding.test.js +0 -129
  331. package/test/tx-encode-decode.test.js +0 -97
  332. package/test/types.test.js +0 -34
  333. package/test/uint.test.js +0 -40
  334. package/test/utils.js +0 -29
  335. package/test/x-address.test.js +0 -147
@@ -1,29 +1,16 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
2
  Object.defineProperty(exports, "__esModule", { value: true });
16
3
  exports.AccountID = void 0;
17
- var ripple_address_codec_1 = require("ripple-address-codec");
18
- var hash_160_1 = require("./hash-160");
19
- var HEX_REGEX = /^[A-F0-9]{40}$/;
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}$/;
20
8
  /**
21
9
  * Class defining how to encode and decode an AccountID
22
10
  */
23
- var AccountID = /** @class */ (function (_super) {
24
- __extends(AccountID, _super);
25
- function AccountID(bytes) {
26
- return _super.call(this, bytes !== null && bytes !== void 0 ? bytes : AccountID.defaultAccountID.bytes) || this;
11
+ class AccountID extends hash_160_1.Hash160 {
12
+ constructor(bytes) {
13
+ super(bytes !== null && bytes !== void 0 ? bytes : AccountID.defaultAccountID.bytes);
27
14
  }
28
15
  /**
29
16
  * Defines how to construct an AccountID
@@ -31,47 +18,52 @@ var AccountID = /** @class */ (function (_super) {
31
18
  * @param value either an existing AccountID, a hex-string, or a base58 r-Address
32
19
  * @returns an AccountID object
33
20
  */
34
- AccountID.from = function (value) {
21
+ static from(value) {
35
22
  if (value instanceof AccountID) {
36
23
  return value;
37
24
  }
38
- if (typeof value === "string") {
39
- if (value === "") {
25
+ if (typeof value === 'string') {
26
+ if (value === '') {
40
27
  return new AccountID();
41
28
  }
42
29
  return HEX_REGEX.test(value)
43
- ? new AccountID(Buffer.from(value, "hex"))
30
+ ? new AccountID((0, utils_1.hexToBytes)(value))
44
31
  : this.fromBase58(value);
45
32
  }
46
- throw new Error("Cannot construct AccountID from value given");
47
- };
33
+ throw new Error('Cannot construct AccountID from value given');
34
+ }
48
35
  /**
49
36
  * Defines how to build an AccountID from a base58 r-Address
50
37
  *
51
38
  * @param value a base58 r-Address
52
39
  * @returns an AccountID object
53
40
  */
54
- AccountID.fromBase58 = function (value) {
55
- return new AccountID(ripple_address_codec_1.decodeAccountID(value));
56
- };
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
+ }
57
50
  /**
58
51
  * Overload of toJSON
59
52
  *
60
53
  * @returns the base58 string for this AccountID
61
54
  */
62
- AccountID.prototype.toJSON = function () {
55
+ toJSON() {
63
56
  return this.toBase58();
64
- };
57
+ }
65
58
  /**
66
59
  * Defines how to encode AccountID into a base58 address
67
60
  *
68
61
  * @returns the base58 string defined by this.bytes
69
62
  */
70
- AccountID.prototype.toBase58 = function () {
71
- return ripple_address_codec_1.encodeAccountID(this.bytes);
72
- };
73
- AccountID.defaultAccountID = new AccountID(Buffer.alloc(20));
74
- return AccountID;
75
- }(hash_160_1.Hash160));
63
+ toBase58() {
64
+ return (0, ripple_address_codec_1.encodeAccountID)(this.bytes);
65
+ }
66
+ }
76
67
  exports.AccountID = AccountID;
68
+ AccountID.defaultAccountID = new AccountID(new Uint8Array(20));
77
69
  //# sourceMappingURL=account-id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../src/types/account-id.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAAwE;AACxE,uCAAqC;AAErC,IAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC;;GAEG;AACH;IAAwB,6BAAO;IAG7B,mBAAY,KAAc;eACxB,kBAAM,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACI,cAAI,GAAX,UAAwC,KAAQ;QAC9C,IAAI,KAAK,YAAY,SAAS,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChB,OAAO,IAAI,SAAS,EAAE,CAAC;aACxB;YAED,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACI,oBAAU,GAAjB,UAAkB,KAAa;QAC7B,OAAO,IAAI,SAAS,CAAC,sCAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,0BAAM,GAAN;QACE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,4BAAQ,GAAR;QACE,OAAO,sCAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAxDe,0BAAgB,GAAc,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAyDhF,gBAAC;CAAA,AA1DD,CAAwB,kBAAO,GA0D9B;AAEQ,8BAAS"}
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"}
@@ -1,22 +1,26 @@
1
- /// <reference types="node" />
2
- import { BinaryParser } from "../serdes/binary-parser";
3
- import { JsonObject, SerializedType } from "./serialized-type";
4
- /**
5
- * Interface for JSON objects that represent amounts
6
- */
7
- interface AmountObject extends JsonObject {
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType } from './serialized-type';
3
+ interface AmountObjectIOU extends JsonObject {
8
4
  value: string;
9
5
  currency: string;
10
6
  issuer: string;
11
7
  }
8
+ interface AmountObjectMPT extends JsonObject {
9
+ value: string;
10
+ mpt_issuance_id: string;
11
+ }
12
+ /**
13
+ * Interface for JSON objects that represent amounts
14
+ */
15
+ type AmountObject = AmountObjectIOU | AmountObjectMPT;
12
16
  /**
13
17
  * Class for serializing/Deserializing Amounts
14
18
  */
15
19
  declare class Amount extends SerializedType {
16
20
  static defaultAmount: Amount;
17
- constructor(bytes: Buffer);
21
+ constructor(bytes: Uint8Array);
18
22
  /**
19
- * Construct an amount from an IOU or string amount
23
+ * Construct an amount from an IOU, MPT or string amount
20
24
  *
21
25
  * @param value An Amount, object representing an IOU, or a string
22
26
  * representing an integer amount
@@ -46,10 +50,17 @@ declare class Amount extends SerializedType {
46
50
  /**
47
51
  * Validate IOU.value amount
48
52
  *
49
- * @param decimal Decimal.js object representing IOU.value
53
+ * @param decimal BigNumber object representing IOU.value
50
54
  * @returns void, but will throw if invalid amount
51
55
  */
52
56
  private static assertIouIsValid;
57
+ /**
58
+ * Validate MPT.value amount
59
+ *
60
+ * @param decimal BigNumber object representing MPT.value
61
+ * @returns void, but will throw if invalid amount
62
+ */
63
+ private static assertMptIsValid;
53
64
  /**
54
65
  * Ensure that the value after being multiplied by the exponent does not
55
66
  * contain a decimal.
@@ -64,5 +75,17 @@ declare class Amount extends SerializedType {
64
75
  * @returns true if Native (XRP)
65
76
  */
66
77
  private isNative;
78
+ /**
79
+ * Test if this amount is in units of MPT
80
+ *
81
+ * @returns true if MPT
82
+ */
83
+ private isMPT;
84
+ /**
85
+ * Test if this amount is in units of IOU
86
+ *
87
+ * @returns true if IOU
88
+ */
89
+ private isIOU;
67
90
  }
68
91
  export { Amount, AmountObject };
@@ -1,152 +1,169 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
15
5
  Object.defineProperty(exports, "__esModule", { value: true });
16
6
  exports.Amount = void 0;
17
- var decimal_js_1 = require("decimal.js");
18
- var binary_parser_1 = require("../serdes/binary-parser");
19
- var account_id_1 = require("./account-id");
20
- var currency_1 = require("./currency");
21
- var serialized_type_1 = require("./serialized-type");
22
- var bigInt = require("big-integer");
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
+ const hash_192_1 = require("./hash-192");
23
15
  /**
24
16
  * Constants for validating amounts
25
17
  */
26
- var MIN_IOU_EXPONENT = -96;
27
- var MAX_IOU_EXPONENT = 80;
28
- var MAX_IOU_PRECISION = 16;
29
- var MAX_DROPS = new decimal_js_1.Decimal("1e17");
30
- var MIN_XRP = new decimal_js_1.Decimal("1e-6");
31
- var mask = bigInt(0x00000000ffffffff);
18
+ const MIN_IOU_EXPONENT = -96;
19
+ const MAX_IOU_EXPONENT = 80;
20
+ const MAX_IOU_PRECISION = 16;
21
+ const MAX_DROPS = new bignumber_js_1.default('1e17');
22
+ const MIN_XRP = new bignumber_js_1.default('1e-6');
23
+ const mask = BigInt(0x00000000ffffffff);
24
+ const mptMask = BigInt(0x8000000000000000);
32
25
  /**
33
- * decimal.js configuration for Amount IOUs
26
+ * BigNumber configuration for Amount IOUs
34
27
  */
35
- decimal_js_1.Decimal.config({
36
- toExpPos: MAX_IOU_EXPONENT + MAX_IOU_PRECISION,
37
- toExpNeg: MIN_IOU_EXPONENT - MAX_IOU_PRECISION,
28
+ bignumber_js_1.default.config({
29
+ EXPONENTIAL_AT: [
30
+ MIN_IOU_EXPONENT - MAX_IOU_PRECISION,
31
+ MAX_IOU_EXPONENT + MAX_IOU_PRECISION,
32
+ ],
38
33
  });
39
34
  /**
40
- * Type guard for AmountObject
35
+ * Type guard for AmountObjectIOU
41
36
  */
42
- function isAmountObject(arg) {
43
- var keys = Object.keys(arg).sort();
37
+ function isAmountObjectIOU(arg) {
38
+ const keys = Object.keys(arg).sort();
44
39
  return (keys.length === 3 &&
45
- keys[0] === "currency" &&
46
- keys[1] === "issuer" &&
47
- keys[2] === "value");
40
+ keys[0] === 'currency' &&
41
+ keys[1] === 'issuer' &&
42
+ keys[2] === 'value');
43
+ }
44
+ /**
45
+ * Type guard for AmountObjectMPT
46
+ */
47
+ function isAmountObjectMPT(arg) {
48
+ const keys = Object.keys(arg).sort();
49
+ return (keys.length === 2 && keys[0] === 'mpt_issuance_id' && keys[1] === 'value');
48
50
  }
49
51
  /**
50
52
  * Class for serializing/Deserializing Amounts
51
53
  */
52
- var Amount = /** @class */ (function (_super) {
53
- __extends(Amount, _super);
54
- function Amount(bytes) {
55
- return _super.call(this, bytes !== null && bytes !== void 0 ? bytes : Amount.defaultAmount.bytes) || this;
54
+ class Amount extends serialized_type_1.SerializedType {
55
+ constructor(bytes) {
56
+ super(bytes !== null && bytes !== void 0 ? bytes : Amount.defaultAmount.bytes);
56
57
  }
57
58
  /**
58
- * Construct an amount from an IOU or string amount
59
+ * Construct an amount from an IOU, MPT or string amount
59
60
  *
60
61
  * @param value An Amount, object representing an IOU, or a string
61
62
  * representing an integer amount
62
63
  * @returns An Amount object
63
64
  */
64
- Amount.from = function (value) {
65
+ static from(value) {
65
66
  if (value instanceof Amount) {
66
67
  return value;
67
68
  }
68
- var amount = Buffer.alloc(8);
69
- if (typeof value === "string") {
69
+ let amount = new Uint8Array(8);
70
+ if (typeof value === 'string') {
70
71
  Amount.assertXrpIsValid(value);
71
- var number = bigInt(value);
72
- var intBuf = [Buffer.alloc(4), Buffer.alloc(4)];
73
- intBuf[0].writeUInt32BE(Number(number.shiftRight(32)));
74
- intBuf[1].writeUInt32BE(Number(number.and(mask)));
75
- amount = Buffer.concat(intBuf);
72
+ const number = BigInt(value);
73
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
74
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(number >> BigInt(32)), 0);
75
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(number & BigInt(mask)), 0);
76
+ amount = (0, utils_1.concat)(intBuf);
76
77
  amount[0] |= 0x40;
77
78
  return new Amount(amount);
78
79
  }
79
- if (isAmountObject(value)) {
80
- var number = new decimal_js_1.Decimal(value.value);
80
+ if (isAmountObjectIOU(value)) {
81
+ const number = new bignumber_js_1.default(value.value);
81
82
  Amount.assertIouIsValid(number);
82
83
  if (number.isZero()) {
83
84
  amount[0] |= 0x80;
84
85
  }
85
86
  else {
86
- var integerNumberString = number
87
- .times("1e" + -(number.e - 15))
87
+ const integerNumberString = number
88
+ .times(`1e${-((number.e || 0) - 15)}`)
88
89
  .abs()
89
90
  .toString();
90
- var num = bigInt(integerNumberString);
91
- var intBuf = [Buffer.alloc(4), Buffer.alloc(4)];
92
- intBuf[0].writeUInt32BE(Number(num.shiftRight(32)));
93
- intBuf[1].writeUInt32BE(Number(num.and(mask)));
94
- amount = Buffer.concat(intBuf);
91
+ const num = BigInt(integerNumberString);
92
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
93
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(num >> BigInt(32)), 0);
94
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(num & BigInt(mask)), 0);
95
+ amount = (0, utils_1.concat)(intBuf);
95
96
  amount[0] |= 0x80;
96
- if (number.gt(new decimal_js_1.Decimal(0))) {
97
+ if (number.gt(new bignumber_js_1.default(0))) {
97
98
  amount[0] |= 0x40;
98
99
  }
99
- var exponent = number.e - 15;
100
- var exponentByte = 97 + exponent;
100
+ const exponent = (number.e || 0) - 15;
101
+ const exponentByte = 97 + exponent;
101
102
  amount[0] |= exponentByte >>> 2;
102
103
  amount[1] |= (exponentByte & 0x03) << 6;
103
104
  }
104
- var currency = currency_1.Currency.from(value.currency).toBytes();
105
- var issuer = account_id_1.AccountID.from(value.issuer).toBytes();
106
- return new Amount(Buffer.concat([amount, currency, issuer]));
105
+ const currency = currency_1.Currency.from(value.currency).toBytes();
106
+ const issuer = account_id_1.AccountID.from(value.issuer).toBytes();
107
+ return new Amount((0, utils_1.concat)([amount, currency, issuer]));
107
108
  }
108
- throw new Error("Invalid type to construct an Amount");
109
- };
109
+ if (isAmountObjectMPT(value)) {
110
+ Amount.assertMptIsValid(value.value);
111
+ let leadingByte = new Uint8Array(1);
112
+ leadingByte[0] |= 0x60;
113
+ const num = BigInt(value.value);
114
+ const intBuf = [new Uint8Array(4), new Uint8Array(4)];
115
+ (0, utils_2.writeUInt32BE)(intBuf[0], Number(num >> BigInt(32)), 0);
116
+ (0, utils_2.writeUInt32BE)(intBuf[1], Number(num & BigInt(mask)), 0);
117
+ amount = (0, utils_1.concat)(intBuf);
118
+ const mptIssuanceID = hash_192_1.Hash192.from(value.mpt_issuance_id).toBytes();
119
+ return new Amount((0, utils_1.concat)([leadingByte, amount, mptIssuanceID]));
120
+ }
121
+ throw new Error('Invalid type to construct an Amount');
122
+ }
110
123
  /**
111
124
  * Read an amount from a BinaryParser
112
125
  *
113
126
  * @param parser BinaryParser to read the Amount from
114
127
  * @returns An Amount object
115
128
  */
116
- Amount.fromParser = function (parser) {
117
- var isXRP = parser.peek() & 0x80;
118
- var numBytes = isXRP ? 48 : 8;
129
+ static fromParser(parser) {
130
+ const isIOU = parser.peek() & 0x80;
131
+ if (isIOU)
132
+ return new Amount(parser.read(48));
133
+ // the amount can be either MPT or XRP at this point
134
+ const isMPT = parser.peek() & 0x20;
135
+ const numBytes = isMPT ? 33 : 8;
119
136
  return new Amount(parser.read(numBytes));
120
- };
137
+ }
121
138
  /**
122
139
  * Get the JSON representation of this Amount
123
140
  *
124
141
  * @returns the JSON interpretation of this.bytes
125
142
  */
126
- Amount.prototype.toJSON = function () {
143
+ toJSON() {
127
144
  if (this.isNative()) {
128
- var bytes = this.bytes;
129
- var isPositive = bytes[0] & 0x40;
130
- var sign = isPositive ? "" : "-";
145
+ const bytes = this.bytes;
146
+ const isPositive = bytes[0] & 0x40;
147
+ const sign = isPositive ? '' : '-';
131
148
  bytes[0] &= 0x3f;
132
- var msb = bigInt(bytes.slice(0, 4).readUInt32BE());
133
- var lsb = bigInt(bytes.slice(4).readUInt32BE());
134
- var num = msb.shiftLeft(32).or(lsb);
135
- return "" + sign + num.toString();
149
+ const msb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(0, 4), 0));
150
+ const lsb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(4), 0));
151
+ const num = (msb << BigInt(32)) | lsb;
152
+ return `${sign}${num.toString()}`;
136
153
  }
137
- else {
138
- var parser = new binary_parser_1.BinaryParser(this.toString());
139
- var mantissa = parser.read(8);
140
- var currency = currency_1.Currency.fromParser(parser);
141
- var issuer = account_id_1.AccountID.fromParser(parser);
142
- var b1 = mantissa[0];
143
- var b2 = mantissa[1];
144
- var isPositive = b1 & 0x40;
145
- var sign = isPositive ? "" : "-";
146
- var exponent = ((b1 & 0x3f) << 2) + ((b2 & 0xff) >> 6) - 97;
154
+ if (this.isIOU()) {
155
+ const parser = new binary_parser_1.BinaryParser(this.toString());
156
+ const mantissa = parser.read(8);
157
+ const currency = currency_1.Currency.fromParser(parser);
158
+ const issuer = account_id_1.AccountID.fromParser(parser);
159
+ const b1 = mantissa[0];
160
+ const b2 = mantissa[1];
161
+ const isPositive = b1 & 0x40;
162
+ const sign = isPositive ? '' : '-';
163
+ const exponent = ((b1 & 0x3f) << 2) + ((b2 & 0xff) >> 6) - 97;
147
164
  mantissa[0] = 0;
148
165
  mantissa[1] &= 0x3f;
149
- var value = new decimal_js_1.Decimal(sign + "0x" + mantissa.toString("hex")).times("1e" + exponent);
166
+ const value = new bignumber_js_1.default(`${sign}0x${(0, utils_1.bytesToHex)(mantissa)}`).times(`1e${exponent}`);
150
167
  Amount.assertIouIsValid(value);
151
168
  return {
152
169
  value: value.toString(),
@@ -154,42 +171,78 @@ var Amount = /** @class */ (function (_super) {
154
171
  issuer: issuer.toJSON(),
155
172
  };
156
173
  }
157
- };
174
+ if (this.isMPT()) {
175
+ const parser = new binary_parser_1.BinaryParser(this.toString());
176
+ const leadingByte = parser.read(1);
177
+ const amount = parser.read(8);
178
+ const mptID = hash_192_1.Hash192.fromParser(parser);
179
+ const isPositive = leadingByte[0] & 0x40;
180
+ const sign = isPositive ? '' : '-';
181
+ const msb = BigInt((0, utils_2.readUInt32BE)(amount.slice(0, 4), 0));
182
+ const lsb = BigInt((0, utils_2.readUInt32BE)(amount.slice(4), 0));
183
+ const num = (msb << BigInt(32)) | lsb;
184
+ return {
185
+ value: `${sign}${num.toString()}`,
186
+ mpt_issuance_id: mptID.toString(),
187
+ };
188
+ }
189
+ throw new Error('Invalid amount to construct JSON');
190
+ }
158
191
  /**
159
192
  * Validate XRP amount
160
193
  *
161
194
  * @param amount String representing XRP amount
162
195
  * @returns void, but will throw if invalid amount
163
196
  */
164
- Amount.assertXrpIsValid = function (amount) {
165
- if (amount.indexOf(".") !== -1) {
166
- throw new Error(amount.toString() + " is an illegal amount");
197
+ static assertXrpIsValid(amount) {
198
+ if (amount.indexOf('.') !== -1) {
199
+ throw new Error(`${amount.toString()} is an illegal amount`);
167
200
  }
168
- var decimal = new decimal_js_1.Decimal(amount);
201
+ const decimal = new bignumber_js_1.default(amount);
169
202
  if (!decimal.isZero()) {
170
203
  if (decimal.lt(MIN_XRP) || decimal.gt(MAX_DROPS)) {
171
- throw new Error(amount.toString() + " is an illegal amount");
204
+ throw new Error(`${amount.toString()} is an illegal amount`);
172
205
  }
173
206
  }
174
- };
207
+ }
175
208
  /**
176
209
  * Validate IOU.value amount
177
210
  *
178
- * @param decimal Decimal.js object representing IOU.value
211
+ * @param decimal BigNumber object representing IOU.value
179
212
  * @returns void, but will throw if invalid amount
180
213
  */
181
- Amount.assertIouIsValid = function (decimal) {
214
+ static assertIouIsValid(decimal) {
182
215
  if (!decimal.isZero()) {
183
- var p = decimal.precision();
184
- var e = decimal.e - 15;
216
+ const p = decimal.precision();
217
+ const e = (decimal.e || 0) - 15;
185
218
  if (p > MAX_IOU_PRECISION ||
186
219
  e > MAX_IOU_EXPONENT ||
187
220
  e < MIN_IOU_EXPONENT) {
188
- throw new Error("Decimal precision out of range");
221
+ throw new Error('Decimal precision out of range');
189
222
  }
190
223
  this.verifyNoDecimal(decimal);
191
224
  }
192
- };
225
+ }
226
+ /**
227
+ * Validate MPT.value amount
228
+ *
229
+ * @param decimal BigNumber object representing MPT.value
230
+ * @returns void, but will throw if invalid amount
231
+ */
232
+ static assertMptIsValid(amount) {
233
+ if (amount.indexOf('.') !== -1) {
234
+ throw new Error(`${amount.toString()} is an illegal amount`);
235
+ }
236
+ const decimal = new bignumber_js_1.default(amount);
237
+ if (!decimal.isZero()) {
238
+ if (decimal < (0, bignumber_js_1.default)(0)) {
239
+ throw new Error(`${amount.toString()} is an illegal amount`);
240
+ }
241
+ if (Number(BigInt(amount) & BigInt(mptMask)) != 0) {
242
+ throw new Error(`${amount.toString()} is an illegal amount`);
243
+ }
244
+ }
245
+ }
193
246
  /**
194
247
  * Ensure that the value after being multiplied by the exponent does not
195
248
  * contain a decimal.
@@ -197,25 +250,40 @@ var Amount = /** @class */ (function (_super) {
197
250
  * @param decimal a Decimal object
198
251
  * @returns a string of the object without a decimal
199
252
  */
200
- Amount.verifyNoDecimal = function (decimal) {
201
- var integerNumberString = decimal
202
- .times("1e" + -(decimal.e - 15))
253
+ static verifyNoDecimal(decimal) {
254
+ const integerNumberString = decimal
255
+ .times(`1e${-((decimal.e || 0) - 15)}`)
203
256
  .abs()
204
257
  .toString();
205
- if (integerNumberString.indexOf(".") !== -1) {
206
- throw new Error("Decimal place found in integerNumberString");
258
+ if (integerNumberString.indexOf('.') !== -1) {
259
+ throw new Error('Decimal place found in integerNumberString');
207
260
  }
208
- };
261
+ }
209
262
  /**
210
263
  * Test if this amount is in units of Native Currency(XRP)
211
264
  *
212
265
  * @returns true if Native (XRP)
213
266
  */
214
- Amount.prototype.isNative = function () {
215
- return (this.bytes[0] & 0x80) === 0;
216
- };
217
- Amount.defaultAmount = new Amount(Buffer.from("4000000000000000", "hex"));
218
- return Amount;
219
- }(serialized_type_1.SerializedType));
267
+ isNative() {
268
+ return (this.bytes[0] & 0x80) === 0 && (this.bytes[0] & 0x20) === 0;
269
+ }
270
+ /**
271
+ * Test if this amount is in units of MPT
272
+ *
273
+ * @returns true if MPT
274
+ */
275
+ isMPT() {
276
+ return (this.bytes[0] & 0x80) === 0 && (this.bytes[0] & 0x20) !== 0;
277
+ }
278
+ /**
279
+ * Test if this amount is in units of IOU
280
+ *
281
+ * @returns true if IOU
282
+ */
283
+ isIOU() {
284
+ return (this.bytes[0] & 0x80) !== 0;
285
+ }
286
+ }
220
287
  exports.Amount = Amount;
288
+ Amount.defaultAmount = new Amount((0, utils_1.hexToBytes)('4000000000000000'));
221
289
  //# sourceMappingURL=amount.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"amount.js","sourceRoot":"","sources":["../../src/types/amount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"amount.js","sourceRoot":"","sources":["../../src/types/amount.ts"],"names":[],"mappings":"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"}