@subsquid/evm-codec 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/lib/codec.d.ts +59 -12
  2. package/lib/codec.d.ts.map +1 -1
  3. package/lib/codec.js.map +1 -1
  4. package/lib/codecs/array.d.ts +3 -3
  5. package/lib/codecs/array.d.ts.map +1 -1
  6. package/lib/codecs/array.js +13 -7
  7. package/lib/codecs/array.js.map +1 -1
  8. package/lib/codecs/primitives.d.ts +2 -16
  9. package/lib/codecs/primitives.d.ts.map +1 -1
  10. package/lib/codecs/primitives.js +52 -141
  11. package/lib/codecs/primitives.js.map +1 -1
  12. package/lib/codecs/struct.d.ts +17 -9
  13. package/lib/codecs/struct.d.ts.map +1 -1
  14. package/lib/codecs/struct.js +53 -39
  15. package/lib/codecs/struct.js.map +1 -1
  16. package/lib/dsl.d.ts +11 -0
  17. package/lib/dsl.d.ts.map +1 -0
  18. package/lib/dsl.js +33 -0
  19. package/lib/dsl.js.map +1 -0
  20. package/lib/index.d.ts +7 -4
  21. package/lib/index.d.ts.map +1 -1
  22. package/lib/index.js +7 -6
  23. package/lib/index.js.map +1 -1
  24. package/lib/sink/bounds.d.ts +21 -0
  25. package/lib/sink/bounds.d.ts.map +1 -0
  26. package/lib/sink/bounds.js +24 -0
  27. package/lib/sink/bounds.js.map +1 -0
  28. package/lib/sink/bytes.d.ts +41 -0
  29. package/lib/sink/bytes.d.ts.map +1 -0
  30. package/lib/sink/bytes.js +261 -0
  31. package/lib/sink/bytes.js.map +1 -0
  32. package/lib/sink/hex.d.ts +33 -0
  33. package/lib/sink/hex.d.ts.map +1 -0
  34. package/lib/sink/hex.js +289 -0
  35. package/lib/sink/hex.js.map +1 -0
  36. package/lib/{src.d.ts → src/bytes.d.ts} +7 -5
  37. package/lib/src/bytes.d.ts.map +1 -0
  38. package/lib/src/bytes.js +161 -0
  39. package/lib/src/bytes.js.map +1 -0
  40. package/lib/src/hex.d.ts +33 -0
  41. package/lib/src/hex.d.ts.map +1 -0
  42. package/lib/src/hex.js +164 -0
  43. package/lib/src/hex.js.map +1 -0
  44. package/lib/util.d.ts +6 -0
  45. package/lib/util.d.ts.map +1 -0
  46. package/lib/util.js +20 -0
  47. package/lib/util.js.map +1 -0
  48. package/package.json +6 -8
  49. package/src/codec.ts +67 -18
  50. package/src/codecs/array.test.ts +87 -0
  51. package/src/codecs/array.ts +9 -12
  52. package/src/codecs/primitives.test.ts +27 -0
  53. package/src/codecs/primitives.ts +87 -191
  54. package/src/codecs/struct.test.ts +69 -0
  55. package/src/codecs/struct.ts +80 -60
  56. package/src/dsl.ts +16 -0
  57. package/src/index.ts +7 -4
  58. package/src/sink/bounds.ts +26 -0
  59. package/src/sink/bytes.test.ts +92 -0
  60. package/src/sink/bytes.ts +290 -0
  61. package/src/sink/hex.ts +311 -0
  62. package/src/src/bytes.test.ts +114 -0
  63. package/src/src/bytes.ts +187 -0
  64. package/src/src/hex.ts +191 -0
  65. package/src/util.ts +19 -0
  66. package/lib/safeToNumber.d.ts +0 -2
  67. package/lib/safeToNumber.d.ts.map +0 -1
  68. package/lib/safeToNumber.js +0 -11
  69. package/lib/safeToNumber.js.map +0 -1
  70. package/lib/sink.d.ts +0 -43
  71. package/lib/sink.d.ts.map +0 -1
  72. package/lib/sink.js +0 -215
  73. package/lib/sink.js.map +0 -1
  74. package/lib/src.d.ts.map +0 -1
  75. package/lib/src.js +0 -141
  76. package/lib/src.js.map +0 -1
  77. package/src/safeToNumber.ts +0 -6
  78. package/src/sink.ts +0 -241
  79. package/src/src.ts +0 -158
package/lib/sink.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sink.js","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"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"}
package/lib/src.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"src.d.ts","sourceRoot":"","sources":["../src/src.ts"],"names":[],"mappings":"AAEA,qBAAa,GAAG;;IAIF,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,MAAM,CAAI;gBACE,GAAG,EAAE,UAAU;IAInC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG;IAIvC,EAAE,IAAI,MAAM;IAOZ,EAAE,IAAI,MAAM;IAIZ,GAAG,IAAI,MAAM;IAOb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAOb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAWb,GAAG,IAAI,MAAM;IAWb,IAAI,IAAI,MAAM;IAWd,IAAI,IAAI,MAAM;IAWd,IAAI,IAAI,MAAM;IAMd,IAAI,IAAI,MAAM;IAMd,OAAO,IAAI,MAAM;IAIjB,KAAK,IAAI,UAAU;IAUnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IASpC,MAAM,IAAI,MAAM;IAUhB,IAAI,IAAI,OAAO;IAIf,OAAO,CAAC,YAAY;IAMb,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ7C,QAAQ,IAAI,IAAI;CAGxB"}
package/lib/src.js DELETED
@@ -1,141 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var _Src_instances, _Src_u64, _Src_i64, _Src_u128, _Src_i128;
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Src = void 0;
10
- const codec_1 = require("./codec");
11
- class Src {
12
- constructor(buf) {
13
- _Src_instances.add(this);
14
- this.buf = buf;
15
- this.pos = 0;
16
- this.oldPos = 0;
17
- this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
18
- }
19
- slice(start, end) {
20
- return new Src(this.buf.subarray(start, end));
21
- }
22
- u8() {
23
- this.pos += codec_1.WORD_SIZE - 1;
24
- let val = this.view.getUint8(this.pos);
25
- this.pos += 1;
26
- return val;
27
- }
28
- i8() {
29
- return Number(this.i256());
30
- }
31
- u16() {
32
- this.pos += codec_1.WORD_SIZE - 2;
33
- let val = this.view.getUint16(this.pos, false);
34
- this.pos += 2;
35
- return val;
36
- }
37
- i16() {
38
- return Number(this.i256());
39
- }
40
- u32() {
41
- this.pos += codec_1.WORD_SIZE - 4;
42
- let val = this.view.getUint32(this.pos, false);
43
- this.pos += 4;
44
- return val;
45
- }
46
- i32() {
47
- return Number(this.i256());
48
- }
49
- u64() {
50
- this.pos += codec_1.WORD_SIZE - 8;
51
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
52
- }
53
- i64() {
54
- this.pos += codec_1.WORD_SIZE - 8;
55
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_i64).call(this);
56
- }
57
- u128() {
58
- this.pos += codec_1.WORD_SIZE - 16;
59
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
60
- }
61
- i128() {
62
- this.pos += codec_1.WORD_SIZE - 16;
63
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_i128).call(this);
64
- }
65
- u256() {
66
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
67
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
68
- return lo + (hi << 128n);
69
- }
70
- i256() {
71
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_i128).call(this);
72
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
73
- return lo + (hi << 128n);
74
- }
75
- address() {
76
- return '0x' + this.u256().toString(16).padStart(40, '0');
77
- }
78
- bytes() {
79
- const ptr = this.u32();
80
- this.safeJump(ptr, 'bytes');
81
- const len = Number(this.u256());
82
- this.assertLength(len, 'bytes');
83
- const val = this.buf.subarray(this.pos, this.pos + len);
84
- this.jumpBack();
85
- return val;
86
- }
87
- staticBytes(len) {
88
- if (len > 32) {
89
- throw new Error(`bytes${len} is not a valid type`);
90
- }
91
- const val = this.buf.subarray(this.pos, this.pos + len);
92
- this.pos += codec_1.WORD_SIZE;
93
- return val;
94
- }
95
- string() {
96
- const ptr = this.u32();
97
- this.safeJump(ptr, 'string');
98
- const len = Number(this.u256());
99
- this.assertLength(len, 'string');
100
- const val = Buffer.from(this.buf.buffer, this.buf.byteOffset + this.pos, len).toString('utf-8');
101
- this.jumpBack();
102
- return val;
103
- }
104
- bool() {
105
- return !!this.u8();
106
- }
107
- assertLength(len, typeName) {
108
- if (this.buf.length - this.pos < len) {
109
- throw new RangeError(`Unexpected end of input. Attempting to read ${typeName} of length ${len} from 0x${Buffer.from(this.buf).toString('hex')}`);
110
- }
111
- }
112
- safeJump(pos, typeName) {
113
- if (pos < 0 || pos >= this.buf.length) {
114
- throw new RangeError(`Unexpected pointer location: 0x${pos.toString(16)}. Attempting to read ${typeName} from 0x${Buffer.from(this.buf).toString('hex')}`);
115
- }
116
- this.oldPos = this.pos;
117
- this.pos = pos;
118
- }
119
- jumpBack() {
120
- this.pos = this.oldPos;
121
- }
122
- }
123
- exports.Src = Src;
124
- _Src_instances = new WeakSet(), _Src_u64 = function _Src_u64() {
125
- let val = this.view.getBigUint64(this.pos, false);
126
- this.pos += 8;
127
- return val;
128
- }, _Src_i64 = function _Src_i64() {
129
- let val = this.view.getBigInt64(this.pos, false);
130
- this.pos += 8;
131
- return val;
132
- }, _Src_u128 = function _Src_u128() {
133
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
134
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
135
- return lo + (hi << 64n);
136
- }, _Src_i128 = function _Src_i128() {
137
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_i64).call(this);
138
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
139
- return lo + (hi << 64n);
140
- };
141
- //# sourceMappingURL=src.js.map
package/lib/src.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"src.js","sourceRoot":"","sources":["../src/src.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export function safeToNumber(value: number | bigint): number {
2
- if ( value < Number.MIN_SAFE_INTEGER || value > Number.MAX_SAFE_INTEGER) {
3
- throw new Error(`${value} is not a safe integer`)
4
- }
5
- return Number(value)
6
- }
package/src/sink.ts DELETED
@@ -1,241 +0,0 @@
1
- import assert from 'node:assert'
2
- import { WORD_SIZE } from './codec'
3
-
4
- export class Sink {
5
- private pos = 0
6
- private buf: Buffer
7
- private view: DataView
8
- private stack: { start: number; jumpBackPtr: number; size: number }[] = []
9
- constructor(fields: number, capacity: number = 1280) {
10
- this.stack.push({
11
- start: 0,
12
- jumpBackPtr: 0,
13
- size: fields * WORD_SIZE,
14
- })
15
- this.buf = Buffer.alloc(capacity)
16
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength)
17
- }
18
-
19
- result(): Buffer {
20
- assert(this.stack.length === 1, 'Cannot get result during dynamic encoding')
21
- return this.buf.subarray(0, this.size())
22
- }
23
-
24
- toString() {
25
- return '0x' + this.result().toString('hex')
26
- }
27
-
28
- reserve(additional: number): void {
29
- if (this.buf.length - this.pos < additional) {
30
- this._allocate(this.pos + additional)
31
- }
32
- }
33
-
34
- size() {
35
- return this.stack[this.stack.length - 1].size
36
- }
37
-
38
- private _allocate(cap: number): void {
39
- cap = Math.max(cap, this.buf.length * 2)
40
- let buf = Buffer.alloc(cap)
41
- buf.set(this.buf)
42
- this.buf = buf
43
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength)
44
- }
45
-
46
- private checkNumberBounds(val: bigint | number, min: bigint, max: bigint, typeName: string) {
47
- if (val < min || val > max) {
48
- throw new Error(`${val} is out of bounds for ${typeName}[${min}, ${max}]`)
49
- }
50
- }
51
-
52
- u8(val: number) {
53
- this.checkNumberBounds(val, 0n, 255n, 'uint8')
54
- this.reserve(WORD_SIZE)
55
- this.pos += WORD_SIZE - 1
56
- this.view.setUint8(this.pos, val)
57
- this.pos += 1
58
- }
59
-
60
- i8(val: number) {
61
- this.checkNumberBounds(val, -128n, 127n, 'int8')
62
- this.#i256(BigInt(val))
63
- }
64
-
65
- u16(val: number) {
66
- this.checkNumberBounds(val, 0n, 65535n, 'uint16')
67
- this.reserve(WORD_SIZE)
68
- this.pos += WORD_SIZE - 2
69
- this.view.setUint16(this.pos, val, false)
70
- this.pos += 2
71
- }
72
-
73
- i16(val: number) {
74
- this.checkNumberBounds(val, -32768n, 32767n, 'int16')
75
- this.#i256(BigInt(val))
76
- }
77
-
78
- u32(val: number) {
79
- this.checkNumberBounds(val, 0n, 4294967295n, 'uint32')
80
- this.reserve(WORD_SIZE)
81
- this.pos += WORD_SIZE - 4
82
- this.view.setUint32(this.pos, val, false)
83
- this.pos += 4
84
- }
85
-
86
- i32(val: number) {
87
- this.checkNumberBounds(val, -2147483648n, 2147483647n, 'int32')
88
- this.#i256(BigInt(val))
89
- }
90
-
91
- u64(val: bigint) {
92
- this.checkNumberBounds(val, 0n, 18446744073709551615n, 'uint64')
93
- this.reserve(WORD_SIZE)
94
- this.pos += WORD_SIZE - 8
95
- this.view.setBigUint64(this.pos, val, false)
96
- this.pos += 8
97
- }
98
-
99
- i64(val: bigint) {
100
- this.checkNumberBounds(val, -9223372036854775808n, 9223372036854775807n, 'int64')
101
- this.#i256(val)
102
- }
103
-
104
- #u64(val: bigint) {
105
- this.view.setBigUint64(this.pos, val, false)
106
- this.pos += 8
107
- }
108
-
109
- u128(val: bigint) {
110
- this.checkNumberBounds(val, 0n, 340282366920938463463374607431768211455n, 'uint128')
111
- this.reserve(WORD_SIZE)
112
- this.pos += WORD_SIZE - 16
113
- this.#u64(val & 0xffffffffffffffffn)
114
- this.#u64(val >> 64n)
115
- }
116
-
117
- i128(val: bigint) {
118
- this.checkNumberBounds(val, -170141183460469231731687303715884105728n, 170141183460469231731687303715884105727n, 'int128')
119
- this.#i256(val)
120
- }
121
-
122
- #u128(val: bigint) {
123
- this.reserve(WORD_SIZE)
124
- this.#u64(val >> 64n)
125
- this.#u64(val & 0xffffffffffffffffn)
126
- }
127
-
128
- u256(val: bigint) {
129
- this.checkNumberBounds(val, 0n, 115792089237316195423570985008687907853269984665640564039457584007913129639935n, 'uint256')
130
- this.reserve(WORD_SIZE)
131
- this.#u128(val >> 128n)
132
- this.#u128(val & (2n ** 128n - 1n))
133
- }
134
-
135
- i256(val: bigint) {
136
- this.checkNumberBounds(val,
137
- -57896044618658097711785492504343953926634992332820282019728792003956564819968n,
138
- 57896044618658097711785492504343953926634992332820282019728792003956564819967n,
139
- 'int256'
140
- )
141
- this.#i256(val)
142
- }
143
-
144
- #i256(val: bigint) {
145
- let base = 2n ** 256n
146
- const uval = (val + base) % base
147
- this.reserve(WORD_SIZE)
148
- this.#u128(uval >> 128n)
149
- this.#u128(uval & (2n ** 128n - 1n))
150
- }
151
-
152
- bytes(val: Uint8Array) {
153
- const size = Buffer.byteLength(val)
154
- this.u32(size)
155
- const wordsCount = Math.ceil(size / WORD_SIZE)
156
- const reservedSize = WORD_SIZE * wordsCount
157
- this.reserve(reservedSize)
158
- this.buf.set(val, this.pos)
159
- this.pos += reservedSize
160
- this.increaseCurrentDataAreaSize(reservedSize + WORD_SIZE)
161
- }
162
-
163
- staticBytes(len: number, val: Uint8Array) {
164
- if (len > 32) {
165
- throw new Error(`bytes${len} is not a valid type`)
166
- }
167
- const size = Buffer.byteLength(val)
168
- if (size > len) {
169
- throw new Error(`invalid data size for bytes${len}`)
170
- }
171
- this.reserve(WORD_SIZE)
172
- this.buf.set(val, this.pos)
173
- this.pos += WORD_SIZE
174
- }
175
-
176
- address(val: string) {
177
- this.u256(BigInt(val))
178
- }
179
-
180
- string(val: string) {
181
- const size = Buffer.byteLength(val)
182
- this.u32(size)
183
- const wordsCount = Math.ceil(size / WORD_SIZE)
184
- const reservedSize = WORD_SIZE * wordsCount
185
- this.reserve(reservedSize)
186
- this.buf.write(val, this.pos)
187
- this.pos += reservedSize
188
- this.increaseCurrentDataAreaSize(reservedSize + WORD_SIZE)
189
- }
190
-
191
- bool(val: boolean) {
192
- this.u8(val ? 1 : 0)
193
- }
194
-
195
- /**
196
- * @example
197
- * @link [Solidity docs](https://docs.soliditylang.org/en/latest/abi-spec.html#use-of-dynamic-types)
198
- */
199
- newStaticDataArea(slotsCount = 0) {
200
- const offset = this.size()
201
- this.u32(offset)
202
- const dataAreaStart = this.currentDataAreaStart()
203
- this.pushDataArea(dataAreaStart + offset, slotsCount)
204
- this.pos = dataAreaStart + offset
205
- }
206
-
207
- // Adds elements count before the data area in an additional slot
208
- newDynamicDataArea(slotsCount: number) {
209
- const offset = this.size()
210
- this.u32(offset)
211
- const dataAreaStart = this.currentDataAreaStart()
212
- this.pushDataArea(dataAreaStart + offset + WORD_SIZE, slotsCount)
213
- this.pos = dataAreaStart + offset
214
- this.u32(slotsCount)
215
- }
216
-
217
- private currentDataAreaStart() {
218
- return this.stack[this.stack.length - 1].start
219
- }
220
-
221
- public increaseCurrentDataAreaSize(amount: number) {
222
- this.stack[this.stack.length - 1].size += amount
223
- }
224
-
225
- private pushDataArea(dataAreaStart: number, slotsCount: number) {
226
- const size = slotsCount * WORD_SIZE
227
- this.reserve(dataAreaStart + size)
228
- this.stack.push({
229
- start: dataAreaStart,
230
- jumpBackPtr: this.pos,
231
- size,
232
- })
233
- }
234
-
235
- public endCurrentDataArea() {
236
- assert(this.stack.length > 1, 'No dynamic encoding started')
237
- const { jumpBackPtr, size } = this.stack.pop()!
238
- this.increaseCurrentDataAreaSize(size)
239
- this.pos = jumpBackPtr
240
- }
241
- }
package/src/src.ts DELETED
@@ -1,158 +0,0 @@
1
- import { WORD_SIZE } from './codec'
2
-
3
- export class Src {
4
- private view: DataView
5
- private pos = 0
6
- private oldPos = 0
7
- constructor(private buf: Uint8Array) {
8
- this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
9
- }
10
-
11
- slice(start: number, end?: number): Src {
12
- return new Src(this.buf.subarray(start, end))
13
- }
14
-
15
- u8(): number {
16
- this.pos += WORD_SIZE - 1
17
- let val = this.view.getUint8(this.pos)
18
- this.pos += 1
19
- return val
20
- }
21
-
22
- i8(): number {
23
- return Number(this.i256())
24
- }
25
-
26
- u16(): number {
27
- this.pos += WORD_SIZE - 2
28
- let val = this.view.getUint16(this.pos, false)
29
- this.pos += 2
30
- return val
31
- }
32
-
33
- i16(): number {
34
- return Number(this.i256())
35
- }
36
-
37
- u32(): number {
38
- this.pos += WORD_SIZE - 4
39
- let val = this.view.getUint32(this.pos, false)
40
- this.pos += 4
41
- return val
42
- }
43
-
44
- i32(): number {
45
- return Number(this.i256())
46
- }
47
-
48
- u64(): bigint {
49
- this.pos += WORD_SIZE - 8
50
- return this.#u64()
51
- }
52
-
53
- #u64(): bigint {
54
- let val = this.view.getBigUint64(this.pos, false)
55
- this.pos += 8
56
- return val
57
- }
58
-
59
- i64(): bigint {
60
- this.pos += WORD_SIZE - 8
61
- return this.#i64()
62
- }
63
-
64
- #i64(): bigint {
65
- let val = this.view.getBigInt64(this.pos, false)
66
- this.pos += 8
67
- return val
68
- }
69
-
70
- u128(): bigint {
71
- this.pos += WORD_SIZE - 16
72
- return this.#u128()
73
- }
74
-
75
- #u128(): bigint {
76
- let hi = this.#u64()
77
- let lo = this.#u64()
78
- return lo + (hi << 64n)
79
- }
80
-
81
- i128(): bigint {
82
- this.pos += WORD_SIZE - 16
83
- return this.#i128()
84
- }
85
-
86
- #i128(): bigint {
87
- let hi = this.#i64()
88
- let lo = this.#u64()
89
- return lo + (hi << 64n)
90
- }
91
-
92
- u256(): bigint {
93
- let hi = this.#u128()
94
- let lo = this.#u128()
95
- return lo + (hi << 128n)
96
- }
97
-
98
- i256(): bigint {
99
- let hi = this.#i128()
100
- let lo = this.#u128()
101
- return lo + (hi << 128n)
102
- }
103
-
104
- address(): string {
105
- return '0x' + this.u256().toString(16).padStart(40, '0')
106
- }
107
-
108
- bytes(): Uint8Array {
109
- const ptr = this.u32()
110
- this.safeJump(ptr, 'bytes')
111
- const len = Number(this.u256())
112
- this.assertLength(len, 'bytes')
113
- const val = this.buf.subarray(this.pos, this.pos + len)
114
- this.jumpBack()
115
- return val
116
- }
117
-
118
- staticBytes(len: number): Uint8Array {
119
- if (len > 32) {
120
- throw new Error(`bytes${len} is not a valid type`)
121
- }
122
- const val = this.buf.subarray(this.pos, this.pos + len)
123
- this.pos += WORD_SIZE
124
- return val
125
- }
126
-
127
- string(): string {
128
- const ptr = this.u32()
129
- this.safeJump(ptr, 'string')
130
- const len = Number(this.u256())
131
- this.assertLength(len, 'string')
132
- const val = Buffer.from(this.buf.buffer, this.buf.byteOffset + this.pos, len).toString('utf-8')
133
- this.jumpBack()
134
- return val
135
- }
136
-
137
- bool(): boolean {
138
- return !!this.u8()
139
- }
140
-
141
- private assertLength(len: number, typeName: string): void {
142
- if (this.buf.length - this.pos < len) {
143
- throw new RangeError(`Unexpected end of input. Attempting to read ${typeName} of length ${len} from 0x${Buffer.from(this.buf).toString('hex')}`)
144
- }
145
- }
146
-
147
- public safeJump(pos: number, typeName: string): void {
148
- if (pos < 0 || pos >= this.buf.length) {
149
- throw new RangeError(`Unexpected pointer location: 0x${pos.toString(16)}. Attempting to read ${typeName} from 0x${Buffer.from(this.buf).toString('hex')}`)
150
- }
151
- this.oldPos = this.pos
152
- this.pos = pos
153
- }
154
-
155
- public jumpBack(): void {
156
- this.pos = this.oldPos
157
- }
158
- }