ox 0.13.1 → 0.13.2

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 (45) hide show
  1. package/Base32/package.json +6 -0
  2. package/CHANGELOG.md +6 -0
  3. package/CompactSize/package.json +6 -0
  4. package/_cjs/core/Base32.js +73 -0
  5. package/_cjs/core/Base32.js.map +1 -0
  6. package/_cjs/core/CompactSize.js +91 -0
  7. package/_cjs/core/CompactSize.js.map +1 -0
  8. package/_cjs/index.js +4 -2
  9. package/_cjs/index.js.map +1 -1
  10. package/_cjs/tempo/TempoAddress.js +116 -0
  11. package/_cjs/tempo/TempoAddress.js.map +1 -0
  12. package/_cjs/tempo/index.js +2 -1
  13. package/_cjs/tempo/index.js.map +1 -1
  14. package/_cjs/version.js +1 -1
  15. package/_esm/core/Base32.js +119 -0
  16. package/_esm/core/Base32.js.map +1 -0
  17. package/_esm/core/CompactSize.js +150 -0
  18. package/_esm/core/CompactSize.js.map +1 -0
  19. package/_esm/index.js +48 -0
  20. package/_esm/index.js.map +1 -1
  21. package/_esm/tempo/TempoAddress.js +181 -0
  22. package/_esm/tempo/TempoAddress.js.map +1 -0
  23. package/_esm/tempo/index.js +21 -0
  24. package/_esm/tempo/index.js.map +1 -1
  25. package/_esm/version.js +1 -1
  26. package/_types/core/Base32.d.ts +79 -0
  27. package/_types/core/Base32.d.ts.map +1 -0
  28. package/_types/core/CompactSize.d.ts +107 -0
  29. package/_types/core/CompactSize.d.ts.map +1 -0
  30. package/_types/index.d.ts +48 -0
  31. package/_types/index.d.ts.map +1 -1
  32. package/_types/tempo/TempoAddress.d.ts +118 -0
  33. package/_types/tempo/TempoAddress.d.ts.map +1 -0
  34. package/_types/tempo/index.d.ts +21 -0
  35. package/_types/tempo/index.d.ts.map +1 -1
  36. package/_types/version.d.ts +1 -1
  37. package/core/Base32.ts +134 -0
  38. package/core/CompactSize.ts +169 -0
  39. package/index.ts +51 -0
  40. package/package.json +16 -1
  41. package/tempo/TempoAddress/package.json +6 -0
  42. package/tempo/TempoAddress.test.ts +202 -0
  43. package/tempo/TempoAddress.ts +225 -0
  44. package/tempo/index.ts +21 -3
  45. package/version.ts +1 -1
@@ -0,0 +1,150 @@
1
+ import * as Bytes from './Bytes.js';
2
+ import * as Errors from './Errors.js';
3
+ import * as Hex from './Hex.js';
4
+ /**
5
+ * Encodes an integer using Bitcoin's CompactSize variable-length encoding.
6
+ *
7
+ * | Range | Encoding | Bytes |
8
+ * |---|---|---|
9
+ * | 0–252 | Direct value | 1 |
10
+ * | 253–65,535 | `0xFD` + 2 bytes LE | 3 |
11
+ * | 65,536–4,294,967,295 | `0xFE` + 4 bytes LE | 5 |
12
+ * | \> 4,294,967,295 | `0xFF` + 8 bytes LE | 9 |
13
+ *
14
+ * @example
15
+ * ```ts twoslash
16
+ * import { CompactSize } from 'ox'
17
+ *
18
+ * const bytes = CompactSize.toBytes(252)
19
+ * // Uint8Array [252]
20
+ *
21
+ * const bytes2 = CompactSize.toBytes(253)
22
+ * // Uint8Array [253, 253, 0]
23
+ * ```
24
+ *
25
+ * @param value - The integer to encode.
26
+ * @returns The CompactSize-encoded bytes.
27
+ */
28
+ export function toBytes(value) {
29
+ const n = BigInt(value);
30
+ if (n < 0n)
31
+ throw new NegativeValueError({ value: n });
32
+ if (n <= 252n)
33
+ return new Uint8Array([Number(n)]);
34
+ if (n <= 0xffffn) {
35
+ const buf = new Uint8Array(3);
36
+ buf[0] = 0xfd;
37
+ const view = new DataView(buf.buffer);
38
+ view.setUint16(1, Number(n), true);
39
+ return buf;
40
+ }
41
+ if (n <= 0xffffffffn) {
42
+ const buf = new Uint8Array(5);
43
+ buf[0] = 0xfe;
44
+ const view = new DataView(buf.buffer);
45
+ view.setUint32(1, Number(n), true);
46
+ return buf;
47
+ }
48
+ const buf = new Uint8Array(9);
49
+ buf[0] = 0xff;
50
+ const view = new DataView(buf.buffer);
51
+ view.setBigUint64(1, n, true);
52
+ return buf;
53
+ }
54
+ /**
55
+ * Encodes an integer using Bitcoin's CompactSize variable-length encoding and returns it as {@link ox#Hex.Hex}.
56
+ *
57
+ * @example
58
+ * ```ts twoslash
59
+ * import { CompactSize } from 'ox'
60
+ *
61
+ * const hex = CompactSize.toHex(252)
62
+ * // '0xfc'
63
+ * ```
64
+ *
65
+ * @param value - The integer to encode.
66
+ * @returns The CompactSize-encoded hex string.
67
+ */
68
+ export function toHex(value) {
69
+ return Hex.fromBytes(toBytes(value));
70
+ }
71
+ /**
72
+ * Decodes a CompactSize-encoded value from {@link ox#Bytes.Bytes}.
73
+ *
74
+ * @example
75
+ * ```ts twoslash
76
+ * import { CompactSize } from 'ox'
77
+ *
78
+ * const result = CompactSize.fromBytes(new Uint8Array([0xfd, 0x00, 0x01]))
79
+ * // { value: 256, size: 3 }
80
+ * ```
81
+ *
82
+ * @param data - The bytes to decode from.
83
+ * @returns The decoded value and number of bytes consumed.
84
+ */
85
+ export function fromBytes(data) {
86
+ if (data.length === 0)
87
+ throw new InsufficientBytesError({ expected: 1, actual: 0 });
88
+ const first = data[0];
89
+ if (first < 0xfd)
90
+ return { value: BigInt(first), size: 1 };
91
+ const view = new DataView(data.buffer, data.byteOffset);
92
+ if (first === 0xfd) {
93
+ if (data.length < 3)
94
+ throw new InsufficientBytesError({ expected: 3, actual: data.length });
95
+ return { value: BigInt(view.getUint16(1, true)), size: 3 };
96
+ }
97
+ if (first === 0xfe) {
98
+ if (data.length < 5)
99
+ throw new InsufficientBytesError({ expected: 5, actual: data.length });
100
+ return { value: BigInt(view.getUint32(1, true)), size: 5 };
101
+ }
102
+ if (data.length < 9)
103
+ throw new InsufficientBytesError({ expected: 9, actual: data.length });
104
+ return {
105
+ value: view.getBigUint64(1, true),
106
+ size: 9,
107
+ };
108
+ }
109
+ /**
110
+ * Decodes a CompactSize-encoded value from {@link ox#Hex.Hex}.
111
+ *
112
+ * @example
113
+ * ```ts twoslash
114
+ * import { CompactSize } from 'ox'
115
+ *
116
+ * const result = CompactSize.fromHex('0xfd0001')
117
+ * // { value: 256, size: 3 }
118
+ * ```
119
+ *
120
+ * @param data - The hex string to decode from.
121
+ * @returns The decoded value and number of bytes consumed.
122
+ */
123
+ export function fromHex(data) {
124
+ return fromBytes(Bytes.fromHex(data));
125
+ }
126
+ /** Thrown when a CompactSize value is negative. */
127
+ export class NegativeValueError extends Errors.BaseError {
128
+ constructor({ value }) {
129
+ super(`CompactSize value must be non-negative, got ${value}.`);
130
+ Object.defineProperty(this, "name", {
131
+ enumerable: true,
132
+ configurable: true,
133
+ writable: true,
134
+ value: 'CompactSize.NegativeValueError'
135
+ });
136
+ }
137
+ }
138
+ /** Thrown when there are insufficient bytes to decode a CompactSize value. */
139
+ export class InsufficientBytesError extends Errors.BaseError {
140
+ constructor({ expected, actual }) {
141
+ super(`Insufficient bytes for CompactSize decoding. Expected at least ${expected}, got ${actual}.`);
142
+ Object.defineProperty(this, "name", {
143
+ enumerable: true,
144
+ configurable: true,
145
+ writable: true,
146
+ value: 'CompactSize.InsufficientBytesError'
147
+ });
148
+ }
149
+ }
150
+ //# sourceMappingURL=CompactSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompactSize.js","sourceRoot":"","sources":["../../core/CompactSize.ts"],"names":[],"mappings":"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"}
package/_esm/index.js CHANGED
@@ -822,6 +822,30 @@ export * as AesGcm from './core/AesGcm.js';
822
822
  * @category Authorization (EIP-7702)
823
823
  */
824
824
  export * as Authorization from './core/Authorization.js';
825
+ /**
826
+ * Utility functions for working with Base32 values using the [BIP-173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki) bech32 alphabet.
827
+ *
828
+ * @example
829
+ * ### Encoding to Base32
830
+ *
831
+ * ```ts twoslash
832
+ * import { Base32 } from 'ox'
833
+ *
834
+ * const value = Base32.fromHex('0x00ff00')
835
+ * ```
836
+ *
837
+ * @example
838
+ * ### Decoding Base32
839
+ *
840
+ * ```ts twoslash
841
+ * import { Base32 } from 'ox'
842
+ *
843
+ * const value = Base32.toBytes('qrlsq')
844
+ * ```
845
+ *
846
+ * @category Data
847
+ */
848
+ export * as Base32 from './core/Base32.js';
825
849
  /**
826
850
  * Utility functions for working with [Base58](https://digitalbazaar.github.io/base58-spec/) values.
827
851
  *
@@ -1303,6 +1327,30 @@ export * as Caches from './core/Caches.js';
1303
1327
  * @category Data
1304
1328
  */
1305
1329
  export * as Cbor from './core/Cbor.js';
1330
+ /**
1331
+ * Utility functions for [Bitcoin's CompactSize](https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer) variable-length integer encoding.
1332
+ *
1333
+ * @example
1334
+ * ### Encoding
1335
+ *
1336
+ * ```ts twoslash
1337
+ * import { CompactSize } from 'ox'
1338
+ *
1339
+ * const bytes = CompactSize.toBytes(65535)
1340
+ * ```
1341
+ *
1342
+ * @example
1343
+ * ### Decoding
1344
+ *
1345
+ * ```ts twoslash
1346
+ * import { CompactSize } from 'ox'
1347
+ *
1348
+ * const { value, size } = CompactSize.fromBytes(new Uint8Array([0xfd, 0xff, 0xff]))
1349
+ * ```
1350
+ *
1351
+ * @category Data
1352
+ */
1353
+ export * as CompactSize from './core/CompactSize.js';
1306
1354
  /**
1307
1355
  * Utility functions for computing Contract Addresses.
1308
1356
  *
package/_esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkHG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;GAIG;AACH,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAElD;;;;GAIG;AACH,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;GAIG;AACH,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAE5D;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAE1D;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6HG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAEtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AACpC;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AACtC;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AACtC;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAChD;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AACpD;;;;GAIG;AACH,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAChD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AACtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAEtC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,kBAAkB,MAAM,8BAA8B,CAAA;AAClE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,kBAAkB,MAAM,8BAA8B,CAAA;AAClE;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,mBAAmB,MAAM,sBAAsB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoKG;AACH,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4JG;AACH,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqLG;AACH,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkIG;AACH,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwJG;AACH,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAEhD;;;;GAIG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;GAIG;AACH,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,181 @@
1
+ import * as Address from '../core/Address.js';
2
+ import * as Base32 from '../core/Base32.js';
3
+ import * as Bytes from '../core/Bytes.js';
4
+ import * as CompactSize from '../core/CompactSize.js';
5
+ import * as Errors from '../core/Errors.js';
6
+ import * as Hash from '../core/Hash.js';
7
+ import * as Hex from '../core/Hex.js';
8
+ /**
9
+ * Formats a raw Ethereum address (and optional zone ID) into a Tempo address string.
10
+ *
11
+ * @example
12
+ * ```ts twoslash
13
+ * import { TempoAddress } from 'ox/tempo'
14
+ *
15
+ * const address = TempoAddress.format('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28')
16
+ * // @log: 'tempo1wskntnrxxnq9x2f95wuyf0y7wk2l90fg8zd8djs'
17
+ * ```
18
+ *
19
+ * @example
20
+ * ### Zone Address
21
+ * ```ts twoslash
22
+ * import { TempoAddress } from 'ox/tempo'
23
+ *
24
+ * const address = TempoAddress.format(
25
+ * '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
26
+ * { zoneId: 1 },
27
+ * )
28
+ * // @log: 'tempoz1q96z6dwvvc6vq5efyk3ms39une6etu4a9zeqtx3q'
29
+ * ```
30
+ *
31
+ * @param address - The raw 20-byte Ethereum address.
32
+ * @param options - Options.
33
+ * @returns The encoded Tempo address string.
34
+ */
35
+ export function format(address, options = {}) {
36
+ const { zoneId } = options;
37
+ const prefix = zoneId != null ? 'tempoz1' : 'tempo1';
38
+ const zone = zoneId != null ? CompactSize.toBytes(zoneId) : new Uint8Array();
39
+ const address_bytes = Bytes.fromHex(address);
40
+ const input = Bytes.concat(Bytes.fromString(prefix), zone, address_bytes);
41
+ const checksum = Hash.sha256(Hash.sha256(input, { as: 'Bytes' }), {
42
+ as: 'Bytes',
43
+ }).slice(0, 4);
44
+ const payload = Bytes.concat(zone, address_bytes, checksum);
45
+ return `${prefix}${Base32.fromBytes(payload)}`;
46
+ }
47
+ /**
48
+ * Parses a Tempo address string into a raw Ethereum address and optional zone ID.
49
+ *
50
+ * @example
51
+ * ### Mainnet Address
52
+ * ```ts twoslash
53
+ * import { TempoAddress } from 'ox/tempo'
54
+ *
55
+ * const result = TempoAddress.parse(
56
+ * 'tempo1wst8d6qejxtdg4y5r3zarvary0c5xw7kvmgh8pm',
57
+ * )
58
+ * // { address: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28' }
59
+ * ```
60
+ *
61
+ * @example
62
+ * ### Zone Address
63
+ * ```ts twoslash
64
+ * import { TempoAddress } from 'ox/tempo'
65
+ *
66
+ * const result = TempoAddress.parse(
67
+ * 'tempoz1qwst8d6qejxtdg4y5r3zarvary0c5xw7kvmgh8pm',
68
+ * )
69
+ * // { address: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28', zoneId: 1 }
70
+ * ```
71
+ *
72
+ * @param tempoAddress - The Tempo address string to parse.
73
+ * @returns The parsed raw address and optional zone ID.
74
+ */
75
+ export function parse(tempoAddress) {
76
+ const lower = tempoAddress.toLowerCase();
77
+ let prefix;
78
+ let hasZone;
79
+ if (lower.startsWith('tempoz1')) {
80
+ prefix = 'tempoz1';
81
+ hasZone = true;
82
+ }
83
+ else if (lower.startsWith('tempo1')) {
84
+ prefix = 'tempo1';
85
+ hasZone = false;
86
+ }
87
+ else {
88
+ throw new InvalidPrefixError({ address: tempoAddress });
89
+ }
90
+ const payload = Base32.toBytes(lower.slice(prefix.length));
91
+ let zoneId;
92
+ let remaining;
93
+ if (hasZone) {
94
+ const { value, size } = CompactSize.fromBytes(payload);
95
+ zoneId = value;
96
+ remaining = payload.slice(size);
97
+ }
98
+ else {
99
+ zoneId = undefined;
100
+ remaining = payload;
101
+ }
102
+ if (remaining.length !== 24)
103
+ throw new InvalidLengthError({
104
+ address: tempoAddress,
105
+ expected: 24,
106
+ actual: remaining.length,
107
+ });
108
+ const rawAddress = remaining.slice(0, 20);
109
+ const checksum = remaining.slice(20, 24);
110
+ const zoneBytes = zoneId != null ? CompactSize.toBytes(zoneId) : new Uint8Array();
111
+ const checksumInput = Bytes.concat(Bytes.fromString(prefix), zoneBytes, rawAddress);
112
+ const expected = Hash.sha256(Hash.sha256(checksumInput, { as: 'Bytes' }), {
113
+ as: 'Bytes',
114
+ }).slice(0, 4);
115
+ if (!Bytes.isEqual(checksum, expected))
116
+ throw new InvalidChecksumError({ address: tempoAddress });
117
+ const address = Address.checksum(Hex.fromBytes(rawAddress));
118
+ return { address, zoneId };
119
+ }
120
+ /**
121
+ * Validates a Tempo address string.
122
+ *
123
+ * @example
124
+ * ```ts twoslash
125
+ * import { TempoAddress } from 'ox/tempo'
126
+ *
127
+ * const valid = TempoAddress.validate(
128
+ * 'tempo1wst8d6qejxtdg4y5r3zarvary0c5xw7kvmgh8pm',
129
+ * )
130
+ * // true
131
+ * ```
132
+ *
133
+ * @param tempoAddress - The Tempo address string to validate.
134
+ * @returns Whether the address is valid.
135
+ */
136
+ export function validate(tempoAddress) {
137
+ try {
138
+ parse(tempoAddress);
139
+ return true;
140
+ }
141
+ catch {
142
+ return false;
143
+ }
144
+ }
145
+ /** Thrown when a Tempo address has an invalid prefix. */
146
+ export class InvalidPrefixError extends Errors.BaseError {
147
+ constructor({ address }) {
148
+ super(`Tempo address "${address}" has an invalid prefix. Expected "tempo1" or "tempoz1".`);
149
+ Object.defineProperty(this, "name", {
150
+ enumerable: true,
151
+ configurable: true,
152
+ writable: true,
153
+ value: 'TempoAddress.InvalidPrefixError'
154
+ });
155
+ }
156
+ }
157
+ /** Thrown when a Tempo address has an invalid payload length. */
158
+ export class InvalidLengthError extends Errors.BaseError {
159
+ constructor({ address, expected, actual, }) {
160
+ super(`Tempo address "${address}" has an invalid payload length. Expected ${expected} bytes, got ${actual}.`);
161
+ Object.defineProperty(this, "name", {
162
+ enumerable: true,
163
+ configurable: true,
164
+ writable: true,
165
+ value: 'TempoAddress.InvalidLengthError'
166
+ });
167
+ }
168
+ }
169
+ /** Thrown when a Tempo address has an invalid checksum. */
170
+ export class InvalidChecksumError extends Errors.BaseError {
171
+ constructor({ address }) {
172
+ super(`Tempo address "${address}" has an invalid checksum.`);
173
+ Object.defineProperty(this, "name", {
174
+ enumerable: true,
175
+ configurable: true,
176
+ writable: true,
177
+ value: 'TempoAddress.InvalidChecksumError'
178
+ });
179
+ }
180
+ }
181
+ //# sourceMappingURL=TempoAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TempoAddress.js","sourceRoot":"","sources":["../../tempo/TempoAddress.ts"],"names":[],"mappings":"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"}
@@ -113,6 +113,27 @@ export * as PoolId from './PoolId.js';
113
113
  * @category Reference
114
114
  */
115
115
  export * as SignatureEnvelope from './SignatureEnvelope.js';
116
+ /**
117
+ * Tempo address encoding/decoding utilities for human-readable addresses.
118
+ *
119
+ * Tempo addresses use a bech32 base32-encoded format with `tempo1` prefix for mainnet
120
+ * and `tempoz1` prefix for zone addresses. Includes CompactSize zone ID encoding
121
+ * and double-SHA256 checksumming.
122
+ *
123
+ * @example
124
+ * ```ts twoslash
125
+ * import { TempoAddress } from 'ox/tempo'
126
+ *
127
+ * const encoded = TempoAddress.format('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28')
128
+ * // @log: 'tempo1wskntnrxxnq9x2f95wuyf0y7wk2l90fg8zd8djs'
129
+ *
130
+ * const { address, zoneId } = TempoAddress.parse(encoded)
131
+ * // @log: { address: '0x742d35CC6634c0532925a3B844bc9e7595F2Bd28' }
132
+ * ```
133
+ *
134
+ * @category Reference
135
+ */
136
+ export * as TempoAddress from './TempoAddress.js';
116
137
  /**
117
138
  * Tick-based pricing utilities for DEX price conversions.
118
139
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
package/_esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export const version = '0.13.1';
2
+ export const version = '0.13.2';
3
3
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,79 @@
1
+ import * as Bytes from './Bytes.js';
2
+ import * as Errors from './Errors.js';
3
+ import * as Hex from './Hex.js';
4
+ /**
5
+ * Encodes a {@link ox#Bytes.Bytes} value to a Base32-encoded string (using the BIP-173 bech32 alphabet).
6
+ *
7
+ * @example
8
+ * ```ts twoslash
9
+ * import { Base32, Bytes } from 'ox'
10
+ *
11
+ * const value = Base32.fromBytes(new Uint8Array([0x00, 0xff, 0x00]))
12
+ * ```
13
+ *
14
+ * @param value - The byte array to encode.
15
+ * @returns The Base32 encoded string.
16
+ */
17
+ export declare function fromBytes(value: Bytes.Bytes): string;
18
+ export declare namespace fromBytes {
19
+ type ErrorType = Errors.GlobalErrorType;
20
+ }
21
+ /**
22
+ * Encodes a {@link ox#Hex.Hex} value to a Base32-encoded string (using the BIP-173 bech32 alphabet).
23
+ *
24
+ * @example
25
+ * ```ts twoslash
26
+ * import { Base32 } from 'ox'
27
+ *
28
+ * const value = Base32.fromHex('0x00ff00')
29
+ * ```
30
+ *
31
+ * @param value - The hex value to encode.
32
+ * @returns The Base32 encoded string.
33
+ */
34
+ export declare function fromHex(value: Hex.Hex): string;
35
+ export declare namespace fromHex {
36
+ type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType;
37
+ }
38
+ /**
39
+ * Decodes a Base32-encoded string (using the BIP-173 bech32 alphabet) to {@link ox#Bytes.Bytes}.
40
+ *
41
+ * @example
42
+ * ```ts twoslash
43
+ * import { Base32 } from 'ox'
44
+ *
45
+ * const value = Base32.toBytes('qqsa0')
46
+ * ```
47
+ *
48
+ * @param value - The Base32 encoded string.
49
+ * @returns The decoded byte array.
50
+ */
51
+ export declare function toBytes(value: string): Bytes.Bytes;
52
+ export declare namespace toBytes {
53
+ type ErrorType = InvalidCharacterError | Errors.GlobalErrorType;
54
+ }
55
+ /**
56
+ * Decodes a Base32-encoded string (using the BIP-173 bech32 alphabet) to {@link ox#Hex.Hex}.
57
+ *
58
+ * @example
59
+ * ```ts twoslash
60
+ * import { Base32 } from 'ox'
61
+ *
62
+ * const value = Base32.toHex('qqsa0')
63
+ * ```
64
+ *
65
+ * @param value - The Base32 encoded string.
66
+ * @returns The decoded hex string.
67
+ */
68
+ export declare function toHex(value: string): Hex.Hex;
69
+ export declare namespace toHex {
70
+ type ErrorType = toBytes.ErrorType | Errors.GlobalErrorType;
71
+ }
72
+ /** Thrown when a Base32 string contains an invalid character. */
73
+ export declare class InvalidCharacterError extends Errors.BaseError {
74
+ readonly name = "Base32.InvalidCharacterError";
75
+ constructor({ character }: {
76
+ character: string;
77
+ });
78
+ }
79
+ //# sourceMappingURL=Base32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base32.d.ts","sourceRoot":"","sources":["../../core/Base32.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAU/B;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAcpD;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAE9C;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CAC9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAoBlD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,SAAS,GAAG,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAA;CAChE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,CAE5C;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CAC5D;AAED,iEAAiE;AACjE,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,SAAS;IACzD,SAAkB,IAAI,kCAAiC;gBAE3C,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;CAGjD"}
@@ -0,0 +1,107 @@
1
+ import * as Bytes from './Bytes.js';
2
+ import * as Errors from './Errors.js';
3
+ import * as Hex from './Hex.js';
4
+ /**
5
+ * Encodes an integer using Bitcoin's CompactSize variable-length encoding.
6
+ *
7
+ * | Range | Encoding | Bytes |
8
+ * |---|---|---|
9
+ * | 0–252 | Direct value | 1 |
10
+ * | 253–65,535 | `0xFD` + 2 bytes LE | 3 |
11
+ * | 65,536–4,294,967,295 | `0xFE` + 4 bytes LE | 5 |
12
+ * | \> 4,294,967,295 | `0xFF` + 8 bytes LE | 9 |
13
+ *
14
+ * @example
15
+ * ```ts twoslash
16
+ * import { CompactSize } from 'ox'
17
+ *
18
+ * const bytes = CompactSize.toBytes(252)
19
+ * // Uint8Array [252]
20
+ *
21
+ * const bytes2 = CompactSize.toBytes(253)
22
+ * // Uint8Array [253, 253, 0]
23
+ * ```
24
+ *
25
+ * @param value - The integer to encode.
26
+ * @returns The CompactSize-encoded bytes.
27
+ */
28
+ export declare function toBytes(value: bigint | number): Bytes.Bytes;
29
+ export declare namespace toBytes {
30
+ type ErrorType = NegativeValueError | Errors.GlobalErrorType;
31
+ }
32
+ /**
33
+ * Encodes an integer using Bitcoin's CompactSize variable-length encoding and returns it as {@link ox#Hex.Hex}.
34
+ *
35
+ * @example
36
+ * ```ts twoslash
37
+ * import { CompactSize } from 'ox'
38
+ *
39
+ * const hex = CompactSize.toHex(252)
40
+ * // '0xfc'
41
+ * ```
42
+ *
43
+ * @param value - The integer to encode.
44
+ * @returns The CompactSize-encoded hex string.
45
+ */
46
+ export declare function toHex(value: bigint | number): Hex.Hex;
47
+ export declare namespace toHex {
48
+ type ErrorType = toBytes.ErrorType | Errors.GlobalErrorType;
49
+ }
50
+ /**
51
+ * Decodes a CompactSize-encoded value from {@link ox#Bytes.Bytes}.
52
+ *
53
+ * @example
54
+ * ```ts twoslash
55
+ * import { CompactSize } from 'ox'
56
+ *
57
+ * const result = CompactSize.fromBytes(new Uint8Array([0xfd, 0x00, 0x01]))
58
+ * // { value: 256, size: 3 }
59
+ * ```
60
+ *
61
+ * @param data - The bytes to decode from.
62
+ * @returns The decoded value and number of bytes consumed.
63
+ */
64
+ export declare function fromBytes(data: Bytes.Bytes): fromBytes.ReturnType;
65
+ export declare namespace fromBytes {
66
+ type ReturnType = {
67
+ /** The decoded integer value. */
68
+ value: bigint;
69
+ /** The number of bytes consumed. */
70
+ size: number;
71
+ };
72
+ type ErrorType = InsufficientBytesError | Errors.GlobalErrorType;
73
+ }
74
+ /**
75
+ * Decodes a CompactSize-encoded value from {@link ox#Hex.Hex}.
76
+ *
77
+ * @example
78
+ * ```ts twoslash
79
+ * import { CompactSize } from 'ox'
80
+ *
81
+ * const result = CompactSize.fromHex('0xfd0001')
82
+ * // { value: 256, size: 3 }
83
+ * ```
84
+ *
85
+ * @param data - The hex string to decode from.
86
+ * @returns The decoded value and number of bytes consumed.
87
+ */
88
+ export declare function fromHex(data: Hex.Hex): fromBytes.ReturnType;
89
+ export declare namespace fromHex {
90
+ type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType;
91
+ }
92
+ /** Thrown when a CompactSize value is negative. */
93
+ export declare class NegativeValueError extends Errors.BaseError {
94
+ readonly name = "CompactSize.NegativeValueError";
95
+ constructor({ value }: {
96
+ value: bigint;
97
+ });
98
+ }
99
+ /** Thrown when there are insufficient bytes to decode a CompactSize value. */
100
+ export declare class InsufficientBytesError extends Errors.BaseError {
101
+ readonly name = "CompactSize.InsufficientBytesError";
102
+ constructor({ expected, actual }: {
103
+ expected: number;
104
+ actual: number;
105
+ });
106
+ }
107
+ //# sourceMappingURL=CompactSize.d.ts.map