@transia/ripple-binary-codec 1.4.4-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +107 -0
  3. package/dist/binary.d.ts +91 -0
  4. package/dist/binary.js +128 -0
  5. package/dist/binary.js.map +1 -0
  6. package/dist/coretypes.d.ts +9 -0
  7. package/dist/coretypes.js +48 -0
  8. package/dist/coretypes.js.map +1 -0
  9. package/dist/enums/bytes.d.ts +26 -0
  10. package/dist/enums/bytes.js +64 -0
  11. package/dist/enums/bytes.js.map +1 -0
  12. package/dist/enums/constants.d.ts +4 -0
  13. package/dist/enums/constants.js +8 -0
  14. package/dist/enums/constants.js.map +1 -0
  15. package/dist/enums/definitions.json +2476 -0
  16. package/dist/enums/field.d.ts +29 -0
  17. package/dist/enums/field.js +59 -0
  18. package/dist/enums/field.js.map +1 -0
  19. package/dist/enums/index.d.ts +13 -0
  20. package/dist/enums/index.js +53 -0
  21. package/dist/enums/index.js.map +1 -0
  22. package/dist/enums/src/enums/definitions.json +2481 -0
  23. package/dist/enums/utils-renumber.d.ts +101 -0
  24. package/dist/enums/utils-renumber.js +127 -0
  25. package/dist/enums/utils-renumber.js.map +1 -0
  26. package/dist/enums/xrpl-definitions-base.d.ts +45 -0
  27. package/dist/enums/xrpl-definitions-base.js +63 -0
  28. package/dist/enums/xrpl-definitions-base.js.map +1 -0
  29. package/dist/enums/xrpl-definitions.d.ts +21 -0
  30. package/dist/enums/xrpl-definitions.js +29 -0
  31. package/dist/enums/xrpl-definitions.js.map +1 -0
  32. package/dist/hash-prefixes.d.ts +6 -0
  33. package/dist/hash-prefixes.js +41 -0
  34. package/dist/hash-prefixes.js.map +1 -0
  35. package/dist/hashes.d.ts +51 -0
  36. package/dist/hashes.js +77 -0
  37. package/dist/hashes.js.map +1 -0
  38. package/dist/index.d.ts +64 -0
  39. package/dist/index.js +139 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/ledger-hashes.d.ts +49 -0
  42. package/dist/ledger-hashes.js +160 -0
  43. package/dist/ledger-hashes.js.map +1 -0
  44. package/dist/quality.d.ts +22 -0
  45. package/dist/quality.js +40 -0
  46. package/dist/quality.js.map +1 -0
  47. package/dist/serdes/binary-parser.d.ts +101 -0
  48. package/dist/serdes/binary-parser.js +210 -0
  49. package/dist/serdes/binary-parser.js.map +1 -0
  50. package/dist/serdes/binary-serializer.d.ts +82 -0
  51. package/dist/serdes/binary-serializer.js +172 -0
  52. package/dist/serdes/binary-serializer.js.map +1 -0
  53. package/dist/shamap.d.ts +103 -0
  54. package/dist/shamap.js +172 -0
  55. package/dist/shamap.js.map +1 -0
  56. package/dist/types/account-id.d.ts +36 -0
  57. package/dist/types/account-id.js +71 -0
  58. package/dist/types/account-id.js.map +1 -0
  59. package/dist/types/amount.d.ts +68 -0
  60. package/dist/types/amount.js +207 -0
  61. package/dist/types/amount.js.map +1 -0
  62. package/dist/types/blob.d.ts +25 -0
  63. package/dist/types/blob.js +40 -0
  64. package/dist/types/blob.js.map +1 -0
  65. package/dist/types/currency.d.ts +29 -0
  66. package/dist/types/currency.js +127 -0
  67. package/dist/types/currency.js.map +1 -0
  68. package/dist/types/hash-128.d.ts +17 -0
  69. package/dist/types/hash-128.js +32 -0
  70. package/dist/types/hash-128.js.map +1 -0
  71. package/dist/types/hash-160.d.ts +11 -0
  72. package/dist/types/hash-160.js +20 -0
  73. package/dist/types/hash-160.js.map +1 -0
  74. package/dist/types/hash-256.d.ts +11 -0
  75. package/dist/types/hash-256.js +17 -0
  76. package/dist/types/hash-256.js.map +1 -0
  77. package/dist/types/hash.d.ts +41 -0
  78. package/dist/types/hash.js +72 -0
  79. package/dist/types/hash.js.map +1 -0
  80. package/dist/types/index.d.ts +18 -0
  81. package/dist/types/index.js +57 -0
  82. package/dist/types/index.js.map +1 -0
  83. package/dist/types/issue.d.ts +39 -0
  84. package/dist/types/issue.js +81 -0
  85. package/dist/types/issue.js.map +1 -0
  86. package/dist/types/path-set.d.ts +36 -0
  87. package/dist/types/path-set.js +233 -0
  88. package/dist/types/path-set.js.map +1 -0
  89. package/dist/types/serialized-type.d.ts +63 -0
  90. package/dist/types/serialized-type.js +97 -0
  91. package/dist/types/serialized-type.js.map +1 -0
  92. package/dist/types/st-array.d.ts +28 -0
  93. package/dist/types/st-array.js +80 -0
  94. package/dist/types/st-array.js.map +1 -0
  95. package/dist/types/st-object.d.ts +32 -0
  96. package/dist/types/st-object.js +149 -0
  97. package/dist/types/st-object.js.map +1 -0
  98. package/dist/types/uint-16.d.ts +25 -0
  99. package/dist/types/uint-16.js +44 -0
  100. package/dist/types/uint-16.js.map +1 -0
  101. package/dist/types/uint-32.d.ts +25 -0
  102. package/dist/types/uint-32.js +49 -0
  103. package/dist/types/uint-32.js.map +1 -0
  104. package/dist/types/uint-64.d.ts +39 -0
  105. package/dist/types/uint-64.js +87 -0
  106. package/dist/types/uint-64.js.map +1 -0
  107. package/dist/types/uint-8.d.ts +25 -0
  108. package/dist/types/uint-8.js +44 -0
  109. package/dist/types/uint-8.js.map +1 -0
  110. package/dist/types/uint.d.ts +30 -0
  111. package/dist/types/uint.js +42 -0
  112. package/dist/types/uint.js.map +1 -0
  113. package/dist/types/vector-256.d.ts +31 -0
  114. package/dist/types/vector-256.js +75 -0
  115. package/dist/types/vector-256.js.map +1 -0
  116. package/package.json +47 -0
  117. package/test/amount.test.js +43 -0
  118. package/test/binary-json.test.js +45 -0
  119. package/test/binary-parser.test.js +396 -0
  120. package/test/binary-serializer.test.js +289 -0
  121. package/test/definitions.test.js +100 -0
  122. package/test/fixtures/account-tx-transactions.db +0 -0
  123. package/test/fixtures/codec-fixtures.json +4466 -0
  124. package/test/fixtures/data-driven-tests.json +2919 -0
  125. package/test/fixtures/delivermin-tx-binary.json +1 -0
  126. package/test/fixtures/delivermin-tx.json +98 -0
  127. package/test/fixtures/deposit-preauth-tx-binary.json +1 -0
  128. package/test/fixtures/deposit-preauth-tx-meta-binary.json +1 -0
  129. package/test/fixtures/deposit-preauth-tx.json +58 -0
  130. package/test/fixtures/escrow-cancel-binary.json +1 -0
  131. package/test/fixtures/escrow-cancel-tx.json +6 -0
  132. package/test/fixtures/escrow-create-binary.json +1 -0
  133. package/test/fixtures/escrow-create-tx.json +10 -0
  134. package/test/fixtures/escrow-finish-binary.json +1 -0
  135. package/test/fixtures/escrow-finish-meta-binary.json +1 -0
  136. package/test/fixtures/escrow-finish-tx.json +95 -0
  137. package/test/fixtures/ledger-full-38129.json +1 -0
  138. package/test/fixtures/ledger-full-40000.json +1 -0
  139. package/test/fixtures/negative-unl.json +12 -0
  140. package/test/fixtures/nf-token.json +547 -0
  141. package/test/fixtures/payment-channel-claim-binary.json +1 -0
  142. package/test/fixtures/payment-channel-claim-tx.json +8 -0
  143. package/test/fixtures/payment-channel-create-binary.json +1 -0
  144. package/test/fixtures/payment-channel-create-tx.json +11 -0
  145. package/test/fixtures/payment-channel-fund-binary.json +1 -0
  146. package/test/fixtures/payment-channel-fund-tx.json +7 -0
  147. package/test/fixtures/signerlistset-tx-binary.json +1 -0
  148. package/test/fixtures/signerlistset-tx-meta-binary.json +1 -0
  149. package/test/fixtures/signerlistset-tx.json +94 -0
  150. package/test/fixtures/ticket-create-binary.json +1 -0
  151. package/test/fixtures/ticket-create-tx.json +7 -0
  152. package/test/fixtures/x-codec-fixtures.json +188 -0
  153. package/test/hash.test.js +135 -0
  154. package/test/ledger.test.js +29 -0
  155. package/test/lower-case-hex.test.js +46 -0
  156. package/test/pseudo-transaction.test.js +38 -0
  157. package/test/quality.test.js +15 -0
  158. package/test/shamap.test.js +89 -0
  159. package/test/signing-data-encoding.test.js +242 -0
  160. package/test/tx-encode-decode.test.js +119 -0
  161. package/test/types.test.js +34 -0
  162. package/test/uint.test.js +148 -0
  163. package/test/utils.js +30 -0
  164. package/test/x-address.test.js +181 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Currency = void 0;
4
+ const hash_160_1 = require("./hash-160");
5
+ const buffer_1 = require("buffer/");
6
+ const XRP_HEX_REGEX = /^0{40}$/;
7
+ const ISO_REGEX = /^[A-Z0-9a-z?!@#$%^&*(){}[\]|]{3}$/;
8
+ const HEX_REGEX = /^[A-F0-9]{40}$/;
9
+ // eslint-disable-next-line no-control-regex
10
+ const STANDARD_FORMAT_HEX_REGEX = /^0{24}[\x00-\x7F]{6}0{10}$/;
11
+ /**
12
+ * Convert an ISO code to a currency bytes representation
13
+ */
14
+ function isoToBytes(iso) {
15
+ const bytes = buffer_1.Buffer.alloc(20);
16
+ if (iso !== 'XRP') {
17
+ const isoBytes = iso.split('').map((c) => c.charCodeAt(0));
18
+ bytes.set(isoBytes, 12);
19
+ }
20
+ return bytes;
21
+ }
22
+ /**
23
+ * Tests if ISO is a valid iso code
24
+ */
25
+ function isIsoCode(iso) {
26
+ return ISO_REGEX.test(iso);
27
+ }
28
+ function isoCodeFromHex(code) {
29
+ const iso = code.toString();
30
+ if (iso === 'XRP') {
31
+ return null;
32
+ }
33
+ if (isIsoCode(iso)) {
34
+ return iso;
35
+ }
36
+ return null;
37
+ }
38
+ /**
39
+ * Tests if hex is a valid hex-string
40
+ */
41
+ function isHex(hex) {
42
+ return HEX_REGEX.test(hex);
43
+ }
44
+ /**
45
+ * Tests if a string is a valid representation of a currency
46
+ */
47
+ function isStringRepresentation(input) {
48
+ return input.length === 3 || isHex(input);
49
+ }
50
+ /**
51
+ * Tests if a Buffer is a valid representation of a currency
52
+ */
53
+ function isBytesArray(bytes) {
54
+ return bytes.byteLength === 20;
55
+ }
56
+ /**
57
+ * Ensures that a value is a valid representation of a currency
58
+ */
59
+ function isValidRepresentation(input) {
60
+ return input instanceof buffer_1.Buffer
61
+ ? isBytesArray(input)
62
+ : isStringRepresentation(input);
63
+ }
64
+ /**
65
+ * Generate bytes from a string or buffer representation of a currency
66
+ */
67
+ function bytesFromRepresentation(input) {
68
+ if (!isValidRepresentation(input)) {
69
+ throw new Error(`Unsupported Currency representation: ${input}`);
70
+ }
71
+ return input.length === 3 ? isoToBytes(input) : buffer_1.Buffer.from(input, 'hex');
72
+ }
73
+ /**
74
+ * Class defining how to encode and decode Currencies
75
+ */
76
+ class Currency extends hash_160_1.Hash160 {
77
+ constructor(byteBuf) {
78
+ super(byteBuf !== null && byteBuf !== void 0 ? byteBuf : Currency.XRP.bytes);
79
+ const hex = this.bytes.toString('hex');
80
+ if (XRP_HEX_REGEX.test(hex)) {
81
+ this._iso = 'XRP';
82
+ }
83
+ else if (STANDARD_FORMAT_HEX_REGEX.test(hex)) {
84
+ this._iso = isoCodeFromHex(this.bytes.slice(12, 15));
85
+ }
86
+ else {
87
+ this._iso = null;
88
+ }
89
+ }
90
+ /**
91
+ * Return the ISO code of this currency
92
+ *
93
+ * @returns ISO code if it exists, else null
94
+ */
95
+ iso() {
96
+ return this._iso;
97
+ }
98
+ /**
99
+ * Constructs a Currency object
100
+ *
101
+ * @param val Currency object or a string representation of a currency
102
+ */
103
+ static from(value) {
104
+ if (value instanceof Currency) {
105
+ return value;
106
+ }
107
+ if (typeof value === 'string') {
108
+ return new Currency(bytesFromRepresentation(value));
109
+ }
110
+ throw new Error('Cannot construct Currency from value given');
111
+ }
112
+ /**
113
+ * Gets the JSON representation of a currency
114
+ *
115
+ * @returns JSON representation
116
+ */
117
+ toJSON() {
118
+ const iso = this.iso();
119
+ if (iso !== null) {
120
+ return iso;
121
+ }
122
+ return this.bytes.toString('hex').toUpperCase();
123
+ }
124
+ }
125
+ exports.Currency = Currency;
126
+ Currency.XRP = new Currency(buffer_1.Buffer.alloc(20));
127
+ //# sourceMappingURL=currency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../src/types/currency.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,oCAAgC;AAEhC,MAAM,aAAa,GAAG,SAAS,CAAA;AAC/B,MAAM,SAAS,GAAG,mCAAmC,CAAA;AACrD,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAClC,4CAA4C;AAC5C,MAAM,yBAAyB,GAAG,4BAA4B,CAAA;AAE9D;;GAEG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC9B,IAAI,GAAG,KAAK,KAAK,EAAE;QACjB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;KACxB;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC3B,IAAI,GAAG,KAAK,KAAK,EAAE;QACjB,OAAO,IAAI,CAAA;KACZ;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;QAClB,OAAO,GAAG,CAAA;KACX;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,UAAU,KAAK,EAAE,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAAsB;IACnD,OAAO,KAAK,YAAY,eAAM;QAC5B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAA;KACjE;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,QAAS,SAAQ,kBAAO;IAI5B,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEtC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;SAClB;aAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;SACrD;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;SACjB;IACH,CAAC;IAED;;;;OAIG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAA6B,KAAQ;QAC9C,IAAI,KAAK,YAAY,QAAQ,EAAE;YAC7B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;SACpD;QAED,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,OAAO,GAAG,CAAA;SACX;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACjD,CAAC;;AAGM,4BAAQ;AAxDC,YAAG,GAAG,IAAI,QAAQ,CAAC,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { Hash } from './hash';
2
+ import { Buffer } from 'buffer/';
3
+ /**
4
+ * Hash with a width of 128 bits
5
+ */
6
+ declare class Hash128 extends Hash {
7
+ static readonly width = 16;
8
+ static readonly ZERO_128: Hash128;
9
+ constructor(bytes: Buffer);
10
+ /**
11
+ * Get the hex representation of a hash-128 bytes, allowing unset
12
+ *
13
+ * @returns hex String of this.bytes
14
+ */
15
+ toHex(): string;
16
+ }
17
+ export { Hash128 };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hash128 = void 0;
4
+ const hash_1 = require("./hash");
5
+ const buffer_1 = require("buffer/");
6
+ /**
7
+ * Hash with a width of 128 bits
8
+ */
9
+ class Hash128 extends hash_1.Hash {
10
+ constructor(bytes) {
11
+ if (bytes && bytes.byteLength === 0) {
12
+ bytes = Hash128.ZERO_128.bytes;
13
+ }
14
+ super(bytes !== null && bytes !== void 0 ? bytes : Hash128.ZERO_128.bytes);
15
+ }
16
+ /**
17
+ * Get the hex representation of a hash-128 bytes, allowing unset
18
+ *
19
+ * @returns hex String of this.bytes
20
+ */
21
+ toHex() {
22
+ const hex = this.toBytes().toString('hex').toUpperCase();
23
+ if (/^0+$/.exec(hex)) {
24
+ return '';
25
+ }
26
+ return hex;
27
+ }
28
+ }
29
+ exports.Hash128 = Hash128;
30
+ Hash128.width = 16;
31
+ Hash128.ZERO_128 = new Hash128(buffer_1.Buffer.alloc(Hash128.width));
32
+ //# sourceMappingURL=hash-128.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-128.js","sourceRoot":"","sources":["../../src/types/hash-128.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAa;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;YACnC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;SAC/B;QAED,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACxD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,EAAE,CAAA;SACV;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;;AAGM,0BAAO;AAzBE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAY,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { Hash } from './hash';
2
+ import { Buffer } from 'buffer/';
3
+ /**
4
+ * Hash with a width of 160 bits
5
+ */
6
+ declare class Hash160 extends Hash {
7
+ static readonly width = 20;
8
+ static readonly ZERO_160: Hash160;
9
+ constructor(bytes?: Buffer);
10
+ }
11
+ export { Hash160 };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hash160 = void 0;
4
+ const hash_1 = require("./hash");
5
+ const buffer_1 = require("buffer/");
6
+ /**
7
+ * Hash with a width of 160 bits
8
+ */
9
+ class Hash160 extends hash_1.Hash {
10
+ constructor(bytes) {
11
+ if (bytes && bytes.byteLength === 0) {
12
+ bytes = Hash160.ZERO_160.bytes;
13
+ }
14
+ super(bytes !== null && bytes !== void 0 ? bytes : Hash160.ZERO_160.bytes);
15
+ }
16
+ }
17
+ exports.Hash160 = Hash160;
18
+ Hash160.width = 20;
19
+ Hash160.ZERO_160 = new Hash160(buffer_1.Buffer.alloc(Hash160.width));
20
+ //# sourceMappingURL=hash-160.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-160.js","sourceRoot":"","sources":["../../src/types/hash-160.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAc;QACxB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;YACnC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;SAC/B;QAED,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;;AAGM,0BAAO;AAZE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAY,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { Hash } from './hash';
2
+ import { Buffer } from 'buffer/';
3
+ /**
4
+ * Hash with a width of 256 bits
5
+ */
6
+ declare class Hash256 extends Hash {
7
+ static readonly width = 32;
8
+ static readonly ZERO_256: Hash256;
9
+ constructor(bytes: Buffer);
10
+ }
11
+ export { Hash256 };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hash256 = void 0;
4
+ const hash_1 = require("./hash");
5
+ const buffer_1 = require("buffer/");
6
+ /**
7
+ * Hash with a width of 256 bits
8
+ */
9
+ class Hash256 extends hash_1.Hash {
10
+ constructor(bytes) {
11
+ super(bytes !== null && bytes !== void 0 ? bytes : Hash256.ZERO_256.bytes);
12
+ }
13
+ }
14
+ exports.Hash256 = Hash256;
15
+ Hash256.width = 32;
16
+ Hash256.ZERO_256 = new Hash256(buffer_1.Buffer.alloc(Hash256.width));
17
+ //# sourceMappingURL=hash-256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-256.js","sourceRoot":"","sources":["../../src/types/hash-256.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,oCAAgC;AAEhC;;GAEG;AACH,MAAM,OAAQ,SAAQ,WAAI;IAIxB,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;;AAGM,0BAAO;AARE,aAAK,GAAG,EAAE,CAAA;AACV,gBAAQ,GAAG,IAAI,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { Comparable } from './serialized-type';
2
+ import { BinaryParser } from '../serdes/binary-parser';
3
+ import { Buffer } from 'buffer/';
4
+ /**
5
+ * Base class defining how to encode and decode hashes
6
+ */
7
+ declare class Hash extends Comparable {
8
+ static readonly width: number;
9
+ constructor(bytes: Buffer);
10
+ /**
11
+ * Construct a Hash object from an existing Hash object or a hex-string
12
+ *
13
+ * @param value A hash object or hex-string of a hash
14
+ */
15
+ static from<T extends Hash | string>(value: T): Hash;
16
+ /**
17
+ * Read a Hash object from a BinaryParser
18
+ *
19
+ * @param parser BinaryParser to read the hash from
20
+ * @param hint length of the bytes to read, optional
21
+ */
22
+ static fromParser(parser: BinaryParser, hint?: number): Hash;
23
+ /**
24
+ * Overloaded operator for comparing two hash objects
25
+ *
26
+ * @param other The Hash to compare this to
27
+ */
28
+ compareTo(other: Hash): number;
29
+ /**
30
+ * @returns the hex-string representation of this Hash
31
+ */
32
+ toString(): string;
33
+ /**
34
+ * Returns four bits at the specified depth within a hash
35
+ *
36
+ * @param depth The depth of the four bits
37
+ * @returns The number represented by the four bits
38
+ */
39
+ nibblet(depth: number): number;
40
+ }
41
+ export { Hash };
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hash = void 0;
4
+ const serialized_type_1 = require("./serialized-type");
5
+ const buffer_1 = require("buffer/");
6
+ /**
7
+ * Base class defining how to encode and decode hashes
8
+ */
9
+ class Hash extends serialized_type_1.Comparable {
10
+ constructor(bytes) {
11
+ super(bytes);
12
+ if (this.bytes.byteLength !== this.constructor.width) {
13
+ throw new Error(`Invalid Hash length ${this.bytes.byteLength}`);
14
+ }
15
+ }
16
+ /**
17
+ * Construct a Hash object from an existing Hash object or a hex-string
18
+ *
19
+ * @param value A hash object or hex-string of a hash
20
+ */
21
+ static from(value) {
22
+ if (value instanceof this) {
23
+ return value;
24
+ }
25
+ if (typeof value === 'string') {
26
+ return new this(buffer_1.Buffer.from(value, 'hex'));
27
+ }
28
+ throw new Error('Cannot construct Hash from given value');
29
+ }
30
+ /**
31
+ * Read a Hash object from a BinaryParser
32
+ *
33
+ * @param parser BinaryParser to read the hash from
34
+ * @param hint length of the bytes to read, optional
35
+ */
36
+ static fromParser(parser, hint) {
37
+ return new this(parser.read(hint !== null && hint !== void 0 ? hint : this.width));
38
+ }
39
+ /**
40
+ * Overloaded operator for comparing two hash objects
41
+ *
42
+ * @param other The Hash to compare this to
43
+ */
44
+ compareTo(other) {
45
+ return this.bytes.compare(this.constructor.from(other).bytes);
46
+ }
47
+ /**
48
+ * @returns the hex-string representation of this Hash
49
+ */
50
+ toString() {
51
+ return this.toHex();
52
+ }
53
+ /**
54
+ * Returns four bits at the specified depth within a hash
55
+ *
56
+ * @param depth The depth of the four bits
57
+ * @returns The number represented by the four bits
58
+ */
59
+ nibblet(depth) {
60
+ const byteIx = depth > 0 ? (depth / 2) | 0 : 0;
61
+ let b = this.bytes[byteIx];
62
+ if (depth % 2 === 0) {
63
+ b = (b & 0xf0) >>> 4;
64
+ }
65
+ else {
66
+ b = b & 0x0f;
67
+ }
68
+ return b;
69
+ }
70
+ }
71
+ exports.Hash = Hash;
72
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/types/hash.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAE9C,oCAAgC;AAEhC;;GAEG;AACH,MAAM,IAAK,SAAQ,4BAAU;IAG3B,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAM,IAAI,CAAC,WAA2B,CAAC,KAAK,EAAE;YACrE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;SAChE;IACH,CAAC;IAED;;;;OAIG;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,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;SAC3C;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB,EAAE,IAAa;QACnD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,IAAI,CAAC,WAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CACpD,CAAA;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAa;QACnB,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;SACrB;aAAM;YACL,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;SACb;QACD,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AAEQ,oBAAI"}
@@ -0,0 +1,18 @@
1
+ import { AccountID } from './account-id';
2
+ import { Amount } from './amount';
3
+ import { Blob } from './blob';
4
+ import { Currency } from './currency';
5
+ import { Hash128 } from './hash-128';
6
+ import { Hash160 } from './hash-160';
7
+ import { Hash256 } from './hash-256';
8
+ import { PathSet } from './path-set';
9
+ import { STArray } from './st-array';
10
+ import { STObject } from './st-object';
11
+ import { UInt16 } from './uint-16';
12
+ import { UInt32 } from './uint-32';
13
+ import { UInt64 } from './uint-64';
14
+ import { UInt8 } from './uint-8';
15
+ import { Vector256 } from './vector-256';
16
+ import { type SerializedType } from './serialized-type';
17
+ declare const coreTypes: Record<string, typeof SerializedType>;
18
+ export { coreTypes, AccountID, Amount, Blob, Currency, Hash128, Hash160, Hash256, PathSet, STArray, STObject, UInt8, UInt16, UInt32, UInt64, Vector256, };
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vector256 = exports.UInt64 = exports.UInt32 = exports.UInt16 = exports.UInt8 = exports.STObject = exports.STArray = exports.PathSet = exports.Hash256 = exports.Hash160 = exports.Hash128 = exports.Currency = exports.Blob = exports.Amount = exports.AccountID = exports.coreTypes = void 0;
4
+ const account_id_1 = require("./account-id");
5
+ Object.defineProperty(exports, "AccountID", { enumerable: true, get: function () { return account_id_1.AccountID; } });
6
+ const amount_1 = require("./amount");
7
+ Object.defineProperty(exports, "Amount", { enumerable: true, get: function () { return amount_1.Amount; } });
8
+ const blob_1 = require("./blob");
9
+ Object.defineProperty(exports, "Blob", { enumerable: true, get: function () { return blob_1.Blob; } });
10
+ const currency_1 = require("./currency");
11
+ Object.defineProperty(exports, "Currency", { enumerable: true, get: function () { return currency_1.Currency; } });
12
+ const hash_128_1 = require("./hash-128");
13
+ Object.defineProperty(exports, "Hash128", { enumerable: true, get: function () { return hash_128_1.Hash128; } });
14
+ const hash_160_1 = require("./hash-160");
15
+ Object.defineProperty(exports, "Hash160", { enumerable: true, get: function () { return hash_160_1.Hash160; } });
16
+ const hash_256_1 = require("./hash-256");
17
+ Object.defineProperty(exports, "Hash256", { enumerable: true, get: function () { return hash_256_1.Hash256; } });
18
+ const path_set_1 = require("./path-set");
19
+ Object.defineProperty(exports, "PathSet", { enumerable: true, get: function () { return path_set_1.PathSet; } });
20
+ const st_array_1 = require("./st-array");
21
+ Object.defineProperty(exports, "STArray", { enumerable: true, get: function () { return st_array_1.STArray; } });
22
+ const st_object_1 = require("./st-object");
23
+ Object.defineProperty(exports, "STObject", { enumerable: true, get: function () { return st_object_1.STObject; } });
24
+ const uint_16_1 = require("./uint-16");
25
+ Object.defineProperty(exports, "UInt16", { enumerable: true, get: function () { return uint_16_1.UInt16; } });
26
+ const uint_32_1 = require("./uint-32");
27
+ Object.defineProperty(exports, "UInt32", { enumerable: true, get: function () { return uint_32_1.UInt32; } });
28
+ const uint_64_1 = require("./uint-64");
29
+ Object.defineProperty(exports, "UInt64", { enumerable: true, get: function () { return uint_64_1.UInt64; } });
30
+ const uint_8_1 = require("./uint-8");
31
+ Object.defineProperty(exports, "UInt8", { enumerable: true, get: function () { return uint_8_1.UInt8; } });
32
+ const vector_256_1 = require("./vector-256");
33
+ Object.defineProperty(exports, "Vector256", { enumerable: true, get: function () { return vector_256_1.Vector256; } });
34
+ const enums_1 = require("../enums");
35
+ const coreTypes = {
36
+ AccountID: account_id_1.AccountID,
37
+ Amount: amount_1.Amount,
38
+ Blob: blob_1.Blob,
39
+ Currency: currency_1.Currency,
40
+ Hash128: hash_128_1.Hash128,
41
+ Hash160: hash_160_1.Hash160,
42
+ Hash256: hash_256_1.Hash256,
43
+ PathSet: path_set_1.PathSet,
44
+ STArray: st_array_1.STArray,
45
+ STObject: st_object_1.STObject,
46
+ UInt8: uint_8_1.UInt8,
47
+ UInt16: uint_16_1.UInt16,
48
+ UInt32: uint_32_1.UInt32,
49
+ UInt64: uint_64_1.UInt64,
50
+ Vector256: vector_256_1.Vector256,
51
+ };
52
+ exports.coreTypes = coreTypes;
53
+ // Ensures that the DEFAULT_DEFINITIONS object connects these types to fields for serializing/deserializing
54
+ // This is done here instead of in enums/index.ts to avoid a circular dependency
55
+ // because some of the above types depend on BinarySerailizer which depends on enums/index.ts.
56
+ enums_1.DEFAULT_DEFINITIONS.associateTypes(coreTypes);
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AA2CtC,0FA3CO,sBAAS,OA2CP;AA1CX,qCAAiC;AA2C/B,uFA3CO,eAAM,OA2CP;AA1CR,iCAA6B;AA2C3B,qFA3CO,WAAI,OA2CP;AA1CN,yCAAqC;AA2CnC,yFA3CO,mBAAQ,OA2CP;AA1CV,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,yCAAoC;AA2ClC,wFA3CO,kBAAO,OA2CP;AA1CT,2CAAsC;AA2CpC,yFA3CO,oBAAQ,OA2CP;AA1CV,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,uCAAkC;AA4ChC,uFA5CO,gBAAM,OA4CP;AA3CR,qCAAgC;AAwC9B,sFAxCO,cAAK,OAwCP;AAvCP,6CAAwC;AA2CtC,0FA3CO,sBAAS,OA2CP;AAzCX,oCAA8C;AAE9C,MAAM,SAAS,GAA0C;IACvD,SAAS,EAAT,sBAAS;IACT,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,mBAAQ;IACR,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,OAAO,EAAP,kBAAO;IACP,QAAQ,EAAR,oBAAQ;IACR,KAAK,EAAL,cAAK;IACL,MAAM,EAAN,gBAAM;IACN,MAAM,EAAN,gBAAM;IACN,MAAM,EAAN,gBAAM;IACN,SAAS,EAAT,sBAAS;CACV,CAAA;AAQC,8BAAS;AANX,2GAA2G;AAC3G,gFAAgF;AAChF,8FAA8F;AAC9F,2BAAmB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { JsonObject, SerializedType } from './serialized-type';
3
+ import { Buffer } from 'buffer/';
4
+ /**
5
+ * Interface for JSON objects that represent amounts
6
+ */
7
+ interface IssueObject extends JsonObject {
8
+ currency: string;
9
+ issuer?: string;
10
+ }
11
+ /**
12
+ * Class for serializing/Deserializing Amounts
13
+ */
14
+ declare class Issue extends SerializedType {
15
+ static readonly ZERO_ISSUED_CURRENCY: Issue;
16
+ constructor(bytes: Buffer);
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 Issue | IssueObject>(value: T): Issue;
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): Issue;
32
+ /**
33
+ * Get the JSON representation of this Amount
34
+ *
35
+ * @returns the JSON interpretation of this.bytes
36
+ */
37
+ toJSON(): IssueObject;
38
+ }
39
+ export { Issue, IssueObject };
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Issue = void 0;
4
+ const binary_parser_1 = require("../serdes/binary-parser");
5
+ const account_id_1 = require("./account-id");
6
+ const currency_1 = require("./currency");
7
+ const serialized_type_1 = require("./serialized-type");
8
+ const buffer_1 = require("buffer/");
9
+ /**
10
+ * Type guard for AmountObject
11
+ */
12
+ function isIssueObject(arg) {
13
+ const keys = Object.keys(arg).sort();
14
+ if (keys.length === 1) {
15
+ return keys[0] === 'currency';
16
+ }
17
+ return keys.length === 2 && keys[0] === 'currency' && keys[1] === 'issuer';
18
+ }
19
+ /**
20
+ * Class for serializing/Deserializing Amounts
21
+ */
22
+ class Issue extends serialized_type_1.SerializedType {
23
+ constructor(bytes) {
24
+ super(bytes !== null && bytes !== void 0 ? bytes : Issue.ZERO_ISSUED_CURRENCY.bytes);
25
+ }
26
+ /**
27
+ * Construct an amount from an IOU or string amount
28
+ *
29
+ * @param value An Amount, object representing an IOU, or a string
30
+ * representing an integer amount
31
+ * @returns An Amount object
32
+ */
33
+ static from(value) {
34
+ if (value instanceof Issue) {
35
+ return value;
36
+ }
37
+ if (isIssueObject(value)) {
38
+ const currency = currency_1.Currency.from(value.currency).toBytes();
39
+ if (value.issuer == null) {
40
+ return new Issue(currency);
41
+ }
42
+ const issuer = account_id_1.AccountID.from(value.issuer).toBytes();
43
+ return new Issue(buffer_1.Buffer.concat([currency, issuer]));
44
+ }
45
+ throw new Error('Invalid type to construct an Amount');
46
+ }
47
+ /**
48
+ * Read an amount from a BinaryParser
49
+ *
50
+ * @param parser BinaryParser to read the Amount from
51
+ * @returns An Amount object
52
+ */
53
+ static fromParser(parser) {
54
+ const currency = parser.read(20);
55
+ if (new currency_1.Currency(currency).toJSON() === 'XRP') {
56
+ return new Issue(currency);
57
+ }
58
+ const currencyAndIssuer = [currency, parser.read(20)];
59
+ return new Issue(buffer_1.Buffer.concat(currencyAndIssuer));
60
+ }
61
+ /**
62
+ * Get the JSON representation of this Amount
63
+ *
64
+ * @returns the JSON interpretation of this.bytes
65
+ */
66
+ toJSON() {
67
+ const parser = new binary_parser_1.BinaryParser(this.toString());
68
+ const currency = currency_1.Currency.fromParser(parser);
69
+ if (currency.toJSON() === 'XRP') {
70
+ return { currency: currency.toJSON() };
71
+ }
72
+ const issuer = account_id_1.AccountID.fromParser(parser);
73
+ return {
74
+ currency: currency.toJSON(),
75
+ issuer: issuer.toJSON(),
76
+ };
77
+ }
78
+ }
79
+ exports.Issue = Issue;
80
+ Issue.ZERO_ISSUED_CURRENCY = new Issue(buffer_1.Buffer.alloc(20));
81
+ //# sourceMappingURL=issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/types/issue.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAEtD,6CAAwC;AACxC,yCAAqC;AACrC,uDAA8D;AAC9D,oCAAgC;AAUhC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAG;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAA;KAC9B;IACD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,KAAM,SAAQ,gCAAc;IAGhC,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAgC,KAAQ;QACjD,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,QAAQ,GAAG,mBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;YACxD,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;gBACxB,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;aAC3B;YACD,MAAM,MAAM,GAAG,sBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,OAAO,IAAI,KAAK,CAAC,eAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACpD;QAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChC,IAAI,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;YAC7C,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;SAC3B;QACD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,OAAO,IAAI,KAAK,CAAC,eAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,mBAAQ,CAAC,UAAU,CAAC,MAAM,CAAa,CAAA;QACxD,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE;YAC/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAA;SACvC;QACD,MAAM,MAAM,GAAG,sBAAS,CAAC,UAAU,CAAC,MAAM,CAAc,CAAA;QAExD,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;SACxB,CAAA;IACH,CAAC;;AAGM,sBAAK;AAjEI,0BAAoB,GAAU,IAAI,KAAK,CAAC,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { BinaryParser } from '../serdes/binary-parser';
2
+ import { SerializedType, JsonObject } from './serialized-type';
3
+ /**
4
+ * The object representation of a Hop, an issuer AccountID, an account AccountID, and a Currency
5
+ */
6
+ interface HopObject extends JsonObject {
7
+ issuer?: string;
8
+ account?: string;
9
+ currency?: string;
10
+ }
11
+ /**
12
+ * Deserialize and Serialize the PathSet type
13
+ */
14
+ declare class PathSet extends SerializedType {
15
+ /**
16
+ * Construct a PathSet from an Array of Arrays representing paths
17
+ *
18
+ * @param value A PathSet or Array of Array of HopObjects
19
+ * @returns the PathSet constructed from value
20
+ */
21
+ static from<T extends PathSet | Array<Array<HopObject>>>(value: T): PathSet;
22
+ /**
23
+ * Construct a PathSet from a BinaryParser
24
+ *
25
+ * @param parser A BinaryParser to read PathSet from
26
+ * @returns the PathSet read from parser
27
+ */
28
+ static fromParser(parser: BinaryParser): PathSet;
29
+ /**
30
+ * Get the JSON representation of this PathSet
31
+ *
32
+ * @returns an Array of Array of HopObjects, representing this PathSet
33
+ */
34
+ toJSON(): Array<Array<HopObject>>;
35
+ }
36
+ export { PathSet };