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