@subsquid/portal-client 0.3.2 → 0.4.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.
- package/lib/client.d.ts +40 -18
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +166 -188
- package/lib/client.js.map +1 -1
- package/lib/query/common/data.d.ts +21 -0
- package/lib/query/common/data.d.ts.map +1 -0
- package/lib/query/common/data.js +3 -0
- package/lib/query/common/data.js.map +1 -0
- package/lib/query/common/query.d.ts +7 -0
- package/lib/query/common/query.d.ts.map +1 -0
- package/lib/query/common/query.js +3 -0
- package/lib/query/common/query.js.map +1 -0
- package/lib/query/evm/data.d.ts +159 -0
- package/lib/query/evm/data.d.ts.map +1 -0
- package/lib/query/evm/data.js +3 -0
- package/lib/query/evm/data.js.map +1 -0
- package/lib/query/evm/fields.d.ts +50 -0
- package/lib/query/evm/fields.d.ts.map +1 -0
- package/lib/query/evm/fields.js +3 -0
- package/lib/query/evm/fields.js.map +1 -0
- package/lib/query/evm/index.d.ts +4 -0
- package/lib/query/evm/index.d.ts.map +1 -0
- package/lib/query/evm/index.js +7 -0
- package/lib/query/evm/index.js.map +1 -0
- package/lib/query/evm/query.d.ts +54 -0
- package/lib/query/evm/query.d.ts.map +1 -0
- package/lib/query/evm/query.js +3 -0
- package/lib/query/evm/query.js.map +1 -0
- package/lib/query/evm/schema.d.ts +322 -0
- package/lib/query/evm/schema.d.ts.map +1 -0
- package/lib/query/evm/schema.js +224 -0
- package/lib/query/evm/schema.js.map +1 -0
- package/lib/query/index.d.ts +576 -8
- package/lib/query/index.d.ts.map +1 -1
- package/lib/query/index.js +15 -24
- package/lib/query/index.js.map +1 -1
- package/lib/query/solana/data.d.ts +115 -0
- package/lib/query/solana/data.d.ts.map +1 -0
- package/lib/query/solana/data.js +3 -0
- package/lib/query/solana/data.js.map +1 -0
- package/lib/query/solana/fields.d.ts +31 -0
- package/lib/query/solana/fields.d.ts.map +1 -0
- package/lib/query/solana/fields.js +3 -0
- package/lib/query/solana/fields.js.map +1 -0
- package/lib/query/solana/index.d.ts +4 -0
- package/lib/query/solana/index.d.ts.map +1 -0
- package/lib/query/solana/index.js +7 -0
- package/lib/query/solana/index.js.map +1 -0
- package/lib/query/solana/query.d.ts +74 -0
- package/lib/query/solana/query.d.ts.map +1 -0
- package/lib/query/solana/query.js +3 -0
- package/lib/query/solana/query.js.map +1 -0
- package/lib/query/solana/schema.d.ts +160 -0
- package/lib/query/solana/schema.d.ts.map +1 -0
- package/lib/query/solana/schema.js +130 -0
- package/lib/query/solana/schema.js.map +1 -0
- package/lib/query/substrate/data.d.ts +98 -0
- package/lib/query/substrate/data.d.ts.map +1 -0
- package/lib/query/substrate/data.js +3 -0
- package/lib/query/substrate/data.js.map +1 -0
- package/lib/query/substrate/fields.d.ts +22 -0
- package/lib/query/substrate/fields.d.ts.map +1 -0
- package/lib/query/substrate/fields.js +3 -0
- package/lib/query/substrate/fields.js.map +1 -0
- package/lib/query/substrate/index.d.ts +4 -0
- package/lib/query/substrate/index.d.ts.map +1 -0
- package/lib/query/substrate/index.js +7 -0
- package/lib/query/substrate/index.js.map +1 -0
- package/lib/query/substrate/query.d.ts +50 -0
- package/lib/query/substrate/query.d.ts.map +1 -0
- package/lib/query/substrate/query.js +3 -0
- package/lib/query/substrate/query.js.map +1 -0
- package/lib/query/substrate/schema.d.ts +102 -0
- package/lib/query/substrate/schema.d.ts.map +1 -0
- package/lib/query/substrate/schema.js +88 -0
- package/lib/query/substrate/schema.js.map +1 -0
- package/lib/query/type-util.d.ts +13 -0
- package/lib/query/type-util.d.ts.map +1 -0
- package/lib/query/type-util.js +3 -0
- package/lib/query/type-util.js.map +1 -0
- package/lib/query/util.d.ts +5 -0
- package/lib/query/util.d.ts.map +1 -0
- package/lib/query/util.js +23 -0
- package/lib/query/util.js.map +1 -0
- package/lib/util.d.ts +19 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +57 -0
- package/lib/util.js.map +1 -0
- package/package.json +3 -3
- package/src/client.ts +231 -247
- package/src/query/common/data.ts +24 -0
- package/src/query/common/query.ts +6 -0
- package/src/query/evm/data.ts +182 -0
- package/src/query/evm/fields.ts +105 -0
- package/src/query/evm/index.ts +3 -0
- package/src/query/evm/query.ts +59 -0
- package/src/query/evm/schema.ts +277 -0
- package/src/query/index.ts +19 -36
- package/src/query/solana/data.ts +132 -0
- package/src/query/solana/fields.ts +42 -0
- package/src/query/solana/index.ts +3 -0
- package/src/query/solana/query.ts +89 -0
- package/src/query/solana/schema.ts +164 -0
- package/src/query/substrate/data.ts +101 -0
- package/src/query/substrate/fields.ts +30 -0
- package/src/query/substrate/index.ts +3 -0
- package/src/query/substrate/query.ts +60 -0
- package/src/query/substrate/schema.ts +114 -0
- package/src/query/type-util.ts +25 -0
- package/src/query/util.ts +23 -0
- package/src/util.ts +56 -0
- package/lib/query/common.d.ts +0 -56
- package/lib/query/common.d.ts.map +0 -1
- package/lib/query/common.js +0 -16
- package/lib/query/common.js.map +0 -1
- package/lib/query/evm.d.ts +0 -267
- package/lib/query/evm.d.ts.map +0 -1
- package/lib/query/evm.js +0 -245
- package/lib/query/evm.js.map +0 -1
- package/lib/query/solana.d.ts +0 -224
- package/lib/query/solana.d.ts.map +0 -1
- package/lib/query/solana.js +0 -121
- package/lib/query/solana.js.map +0 -1
- package/lib/query/substrate.d.ts +0 -173
- package/lib/query/substrate.d.ts.map +0 -1
- package/lib/query/substrate.js +0 -71
- package/lib/query/substrate.js.map +0 -1
- package/src/query/common.ts +0 -83
- package/src/query/evm.ts +0 -677
- package/src/query/solana.ts +0 -438
- package/src/query/substrate.ts +0 -288
package/src/query/evm.ts
DELETED
|
@@ -1,677 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
QTY,
|
|
3
|
-
BYTES,
|
|
4
|
-
constant,
|
|
5
|
-
NAT,
|
|
6
|
-
nullable,
|
|
7
|
-
object,
|
|
8
|
-
option,
|
|
9
|
-
STRING,
|
|
10
|
-
taggedUnion,
|
|
11
|
-
Validator,
|
|
12
|
-
withDefault,
|
|
13
|
-
oneOf,
|
|
14
|
-
ANY,
|
|
15
|
-
} from '@subsquid/util-internal-validation'
|
|
16
|
-
import {array} from '@subsquid/util-internal-validation'
|
|
17
|
-
import {
|
|
18
|
-
Select,
|
|
19
|
-
Selector,
|
|
20
|
-
Trues,
|
|
21
|
-
Hex,
|
|
22
|
-
ConditionalOmit,
|
|
23
|
-
Simplify,
|
|
24
|
-
PortalQuery,
|
|
25
|
-
project,
|
|
26
|
-
type Selected,
|
|
27
|
-
type ObjectValidatorShape,
|
|
28
|
-
} from './common'
|
|
29
|
-
|
|
30
|
-
type AddPrefix<Prefix extends string, S> = S extends string ? `${Prefix}${Capitalize<S>}` : never
|
|
31
|
-
|
|
32
|
-
type RemovePrefix<Prefix extends string, T> = T extends `${Prefix}${infer S}` ? Uncapitalize<S> : never
|
|
33
|
-
|
|
34
|
-
type RemoveKeysPrefix<Prefix extends string, T> = {
|
|
35
|
-
[K in keyof T as RemovePrefix<Prefix, K>]: T[K]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type BlockHeaderFields = {
|
|
39
|
-
number: number
|
|
40
|
-
hash: Hex
|
|
41
|
-
parentHash: Hex
|
|
42
|
-
timestamp: number
|
|
43
|
-
transactionsRoot: Hex
|
|
44
|
-
receiptsRoot: Hex
|
|
45
|
-
stateRoot: Hex
|
|
46
|
-
logsBloom: Hex
|
|
47
|
-
sha3Uncles: Hex
|
|
48
|
-
extraData: Hex
|
|
49
|
-
miner: Hex
|
|
50
|
-
nonce: Hex
|
|
51
|
-
mixHash: Hex
|
|
52
|
-
size: number
|
|
53
|
-
gasLimit: bigint
|
|
54
|
-
gasUsed: bigint
|
|
55
|
-
difficulty: bigint
|
|
56
|
-
totalDifficulty?: bigint
|
|
57
|
-
baseFeePerGas: bigint
|
|
58
|
-
blobGasUsed: bigint
|
|
59
|
-
excessBlobGas: bigint
|
|
60
|
-
l1BlockNumber?: number
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export type TransactionFields = {
|
|
64
|
-
transactionIndex: number
|
|
65
|
-
hash: Hex
|
|
66
|
-
nonce: number
|
|
67
|
-
from: Hex
|
|
68
|
-
to?: Hex
|
|
69
|
-
input: Hex
|
|
70
|
-
value: bigint
|
|
71
|
-
gas: bigint
|
|
72
|
-
gasPrice: bigint
|
|
73
|
-
maxFeePerGas?: bigint
|
|
74
|
-
maxPriorityFeePerGas?: bigint
|
|
75
|
-
v: bigint
|
|
76
|
-
r: Hex
|
|
77
|
-
s: Hex
|
|
78
|
-
yParity?: number
|
|
79
|
-
chainId?: number
|
|
80
|
-
sighash?: Hex
|
|
81
|
-
contractAddress?: Hex
|
|
82
|
-
gasUsed: bigint
|
|
83
|
-
cumulativeGasUsed: bigint
|
|
84
|
-
effectiveGasPrice: bigint
|
|
85
|
-
type: number
|
|
86
|
-
status: number
|
|
87
|
-
blobVersionedHashes?: Hex[]
|
|
88
|
-
|
|
89
|
-
l1Fee?: bigint
|
|
90
|
-
l1FeeScalar?: number
|
|
91
|
-
l1GasPrice?: bigint
|
|
92
|
-
l1GasUsed?: bigint
|
|
93
|
-
l1BlobBaseFee?: bigint
|
|
94
|
-
l1BlobBaseFeeScalar?: number
|
|
95
|
-
l1BaseFeeScalar?: number
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export type LogFields = {
|
|
99
|
-
logIndex: number
|
|
100
|
-
transactionIndex: number
|
|
101
|
-
transactionHash: Hex
|
|
102
|
-
address: Hex
|
|
103
|
-
data: Hex
|
|
104
|
-
topics: Hex[]
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export type TraceType = 'create' | 'call' | 'suicide' | 'reward'
|
|
108
|
-
|
|
109
|
-
export type TraceBaseFields = {
|
|
110
|
-
type: TraceType
|
|
111
|
-
transactionIndex: number
|
|
112
|
-
traceAddress: number[]
|
|
113
|
-
subtraces: number
|
|
114
|
-
error: string | null
|
|
115
|
-
revertReason?: string
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export type TraceCreateFields = TraceBaseFields & {
|
|
119
|
-
type: 'create'
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export type TraceCreateActionFields = {
|
|
123
|
-
from: Hex
|
|
124
|
-
value: bigint
|
|
125
|
-
gas: bigint
|
|
126
|
-
init: Hex
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export type TraceCreateResultFields = {
|
|
130
|
-
gasUsed: bigint
|
|
131
|
-
code?: Hex
|
|
132
|
-
address: Hex
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export type TraceCallFields = TraceBaseFields & {
|
|
136
|
-
type: 'call'
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export type TraceCallActionFields = {
|
|
140
|
-
callType: string
|
|
141
|
-
from: Hex
|
|
142
|
-
to: Hex
|
|
143
|
-
value?: bigint
|
|
144
|
-
gas: bigint
|
|
145
|
-
input: Hex
|
|
146
|
-
sighash?: Hex
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export type TraceCallResultFields = {
|
|
150
|
-
gasUsed: bigint
|
|
151
|
-
output?: Hex
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export type TraceSuicideFields = TraceBaseFields & {
|
|
155
|
-
type: 'suicide'
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export type TraceSuicideActionFields = {
|
|
159
|
-
address: Hex
|
|
160
|
-
refundAddress: Hex
|
|
161
|
-
balance: bigint
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
export type TraceRewardFields = TraceBaseFields & {
|
|
165
|
-
type: 'reward'
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export type TraceRewardActionFields = {
|
|
169
|
-
author: Hex
|
|
170
|
-
value: bigint
|
|
171
|
-
type: string
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
export type StateDiffBaseFields = {
|
|
175
|
-
transactionIndex: number
|
|
176
|
-
address: Hex
|
|
177
|
-
key: 'balance' | 'code' | 'nonce' | Hex
|
|
178
|
-
kind: string
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
export type StateDiffAddFields = StateDiffBaseFields & {
|
|
182
|
-
kind: '+'
|
|
183
|
-
prev?: undefined
|
|
184
|
-
next: Hex
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
export type StateDiffNoChangeFields = StateDiffBaseFields & {
|
|
188
|
-
kind: '='
|
|
189
|
-
prev?: undefined
|
|
190
|
-
next?: undefined
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export type StateDiffChangeFields = StateDiffBaseFields & {
|
|
194
|
-
kind: '*'
|
|
195
|
-
prev: Hex
|
|
196
|
-
next: Hex
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
export type StateDiffDeleteFields = StateDiffBaseFields & {
|
|
200
|
-
kind: '-'
|
|
201
|
-
prev: Hex
|
|
202
|
-
next?: undefined
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
export type BlockHeaderFieldSelection = Selector<keyof BlockHeaderFields, 'number' | 'hash'>
|
|
206
|
-
export type BlockHeader<T extends BlockHeaderFieldSelection = Trues<BlockHeaderFieldSelection>> = Select<
|
|
207
|
-
BlockHeaderFields,
|
|
208
|
-
T
|
|
209
|
-
>
|
|
210
|
-
|
|
211
|
-
export type TransactionFieldSelection = Selector<keyof TransactionFields>
|
|
212
|
-
export type Transaction<T extends TransactionFieldSelection = Trues<TransactionFieldSelection>> = Select<
|
|
213
|
-
TransactionFields,
|
|
214
|
-
T
|
|
215
|
-
>
|
|
216
|
-
|
|
217
|
-
export type LogFieldSelection = Selector<keyof LogFields>
|
|
218
|
-
export type Log<T extends LogFieldSelection = Trues<LogFieldSelection>> = Select<LogFields, T>
|
|
219
|
-
|
|
220
|
-
export type TraceCreateFieldSelection = Selector<
|
|
221
|
-
| keyof TraceBaseFields
|
|
222
|
-
| AddPrefix<'create', keyof TraceCreateActionFields>
|
|
223
|
-
| AddPrefix<'createResult', keyof TraceCreateResultFields>
|
|
224
|
-
>
|
|
225
|
-
|
|
226
|
-
export type TraceCallFieldSelection = Selector<
|
|
227
|
-
| keyof TraceBaseFields
|
|
228
|
-
| AddPrefix<'call', keyof TraceCallActionFields>
|
|
229
|
-
| AddPrefix<'callResult', keyof TraceCallResultFields>
|
|
230
|
-
>
|
|
231
|
-
|
|
232
|
-
export type TraceSuicideFieldSelection = Selector<
|
|
233
|
-
keyof TraceBaseFields | AddPrefix<'suicide', keyof TraceSuicideActionFields>
|
|
234
|
-
>
|
|
235
|
-
|
|
236
|
-
export type TraceRewardFieldSelection = Selector<
|
|
237
|
-
keyof TraceBaseFields | AddPrefix<'reward', keyof TraceRewardActionFields>
|
|
238
|
-
>
|
|
239
|
-
|
|
240
|
-
export type TraceFieldSelection = Simplify<
|
|
241
|
-
TraceCreateFieldSelection & TraceCallFieldSelection & TraceSuicideFieldSelection & TraceRewardFieldSelection
|
|
242
|
-
>
|
|
243
|
-
|
|
244
|
-
export type TraceCreateAction<F extends TraceFieldSelection = Trues<TraceFieldSelection>> = Select<
|
|
245
|
-
TraceCreateActionFields,
|
|
246
|
-
RemoveKeysPrefix<'create', F>
|
|
247
|
-
>
|
|
248
|
-
|
|
249
|
-
export type TraceCreateResult<F extends TraceCreateFieldSelection = Trues<TraceCreateFieldSelection>> = Select<
|
|
250
|
-
TraceCreateResultFields,
|
|
251
|
-
RemoveKeysPrefix<'createResult', F>
|
|
252
|
-
>
|
|
253
|
-
|
|
254
|
-
export type TraceCallAction<F extends TraceCallFieldSelection = Trues<TraceCallFieldSelection>> = Select<
|
|
255
|
-
TraceCallActionFields,
|
|
256
|
-
RemoveKeysPrefix<'call', F>
|
|
257
|
-
>
|
|
258
|
-
|
|
259
|
-
export type TraceCallResult<F extends TraceCallFieldSelection = Trues<TraceCallFieldSelection>> = Select<
|
|
260
|
-
TraceCallResultFields,
|
|
261
|
-
RemoveKeysPrefix<'callResult', F>
|
|
262
|
-
>
|
|
263
|
-
|
|
264
|
-
export type TraceSuicideAction<F extends TraceSuicideFieldSelection = Trues<TraceSuicideFieldSelection>> = Select<
|
|
265
|
-
TraceSuicideActionFields,
|
|
266
|
-
RemoveKeysPrefix<'suicide', F>
|
|
267
|
-
>
|
|
268
|
-
|
|
269
|
-
export type TraceRewardAction<F extends TraceRewardFieldSelection = Trues<TraceRewardFieldSelection>> = Select<
|
|
270
|
-
TraceRewardActionFields,
|
|
271
|
-
RemoveKeysPrefix<'reward', F>
|
|
272
|
-
>
|
|
273
|
-
|
|
274
|
-
export type TraceCreate<F extends TraceCreateFieldSelection = Trues<TraceCreateFieldSelection>> = Simplify<
|
|
275
|
-
Select<TraceCreateFields, F> &
|
|
276
|
-
ConditionalOmit<{action: TraceCreateAction<F>; result?: TraceCreateResult<F>}, {[k: string]: never} | undefined>
|
|
277
|
-
>
|
|
278
|
-
|
|
279
|
-
export type TraceCall<F extends TraceCallFieldSelection = Trues<TraceCallFieldSelection>> = Simplify<
|
|
280
|
-
Select<TraceCallFields, F> &
|
|
281
|
-
ConditionalOmit<{action: TraceCallAction<F>; result?: TraceCallResult<F>}, {[k: string]: never} | undefined>
|
|
282
|
-
>
|
|
283
|
-
|
|
284
|
-
export type TraceSuicide<F extends TraceSuicideFieldSelection = Trues<TraceSuicideFieldSelection>> = Simplify<
|
|
285
|
-
Select<TraceSuicideFields, F> & ConditionalOmit<{action: TraceSuicideAction<F>}, {[k: string]: never} | undefined>
|
|
286
|
-
>
|
|
287
|
-
|
|
288
|
-
export type TraceReward<F extends TraceRewardFieldSelection = Trues<TraceRewardFieldSelection>> = Simplify<
|
|
289
|
-
Select<TraceRewardFields, F> & ConditionalOmit<{action: TraceRewardAction<F>}, {[k: string]: never} | undefined>
|
|
290
|
-
>
|
|
291
|
-
|
|
292
|
-
export type Trace<F extends TraceFieldSelection = Trues<TraceFieldSelection>> = F extends any
|
|
293
|
-
? TraceCreate<F> | TraceCall<F> | TraceSuicide<F> | TraceReward<F>
|
|
294
|
-
: never
|
|
295
|
-
|
|
296
|
-
export type StateDiffFieldSelection = Selector<keyof StateDiffBaseFields>
|
|
297
|
-
|
|
298
|
-
export type StateDiffNoChange<F extends StateDiffFieldSelection = Trues<StateDiffFieldSelection>> = Select<
|
|
299
|
-
StateDiffNoChangeFields,
|
|
300
|
-
F
|
|
301
|
-
>
|
|
302
|
-
|
|
303
|
-
export type StateDiffAdd<F extends StateDiffFieldSelection = Trues<StateDiffFieldSelection>> = Select<
|
|
304
|
-
StateDiffAddFields,
|
|
305
|
-
F
|
|
306
|
-
>
|
|
307
|
-
|
|
308
|
-
export type StateDiffChange<F extends StateDiffFieldSelection = Trues<StateDiffFieldSelection>> = Select<
|
|
309
|
-
StateDiffChangeFields,
|
|
310
|
-
F
|
|
311
|
-
>
|
|
312
|
-
|
|
313
|
-
export type StateDiffDelete<F extends StateDiffFieldSelection = Trues<StateDiffFieldSelection>> = Select<
|
|
314
|
-
StateDiffDeleteFields,
|
|
315
|
-
F
|
|
316
|
-
>
|
|
317
|
-
|
|
318
|
-
export type StateDiff<F extends StateDiffFieldSelection = Trues<StateDiffFieldSelection>> = F extends any
|
|
319
|
-
? StateDiffNoChange<F> | StateDiffAdd<F> | StateDiffChange<F> | StateDiffDelete<F>
|
|
320
|
-
: never
|
|
321
|
-
|
|
322
|
-
export type FieldSelection = {
|
|
323
|
-
block?: BlockHeaderFieldSelection
|
|
324
|
-
transaction?: TransactionFieldSelection
|
|
325
|
-
log?: LogFieldSelection
|
|
326
|
-
trace?: TraceFieldSelection
|
|
327
|
-
stateDiff?: StateDiffFieldSelection
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
export type LogRequest = {
|
|
331
|
-
address?: Hex[]
|
|
332
|
-
topic0?: Hex[]
|
|
333
|
-
topic1?: Hex[]
|
|
334
|
-
topic2?: Hex[]
|
|
335
|
-
topic3?: Hex[]
|
|
336
|
-
transaction?: boolean
|
|
337
|
-
transactionTraces?: boolean
|
|
338
|
-
transactionLogs?: boolean
|
|
339
|
-
transactionStateDiffs?: boolean
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
export type TransactionRequest = {
|
|
343
|
-
to?: Hex[]
|
|
344
|
-
from?: Hex[]
|
|
345
|
-
sighash?: Hex[]
|
|
346
|
-
type?: number[]
|
|
347
|
-
logs?: boolean
|
|
348
|
-
traces?: boolean
|
|
349
|
-
stateDiffs?: boolean
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
export type TraceRequest = {
|
|
353
|
-
type?: TraceType[]
|
|
354
|
-
createFrom?: Hex[]
|
|
355
|
-
callTo?: Hex[]
|
|
356
|
-
callFrom?: Hex[]
|
|
357
|
-
callSighash?: Hex[]
|
|
358
|
-
suicideRefundAddress?: Hex[]
|
|
359
|
-
rewardAuthor?: Hex[]
|
|
360
|
-
transaction?: boolean
|
|
361
|
-
transactionLogs?: boolean
|
|
362
|
-
subtraces?: boolean
|
|
363
|
-
parents?: boolean
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
export type StateDiffRequest = {
|
|
367
|
-
address?: Hex[]
|
|
368
|
-
key?: Hex[]
|
|
369
|
-
kind?: string[]
|
|
370
|
-
transaction?: boolean
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
export type DataRequest = {
|
|
374
|
-
logs?: LogRequest[]
|
|
375
|
-
transactions?: TransactionRequest[]
|
|
376
|
-
traces?: TraceRequest[]
|
|
377
|
-
stateDiffs?: StateDiffRequest[]
|
|
378
|
-
includeAllBlocks?: boolean
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
export type Query<F extends FieldSelection = FieldSelection> = Simplify<
|
|
382
|
-
PortalQuery & {
|
|
383
|
-
type: 'evm'
|
|
384
|
-
fields: F
|
|
385
|
-
} & DataRequest
|
|
386
|
-
>
|
|
387
|
-
|
|
388
|
-
export type Block<F extends FieldSelection> = Simplify<{
|
|
389
|
-
header: BlockHeader<Selected<F, 'block'>>
|
|
390
|
-
logs: Log<Selected<F, 'log'>>[]
|
|
391
|
-
transactions: Transaction<Selected<F, 'transaction'>>[]
|
|
392
|
-
traces: Trace<Selected<F, 'trace'>>[]
|
|
393
|
-
stateDiffs: StateDiff<Selected<F, 'stateDiff'>>[]
|
|
394
|
-
}>
|
|
395
|
-
|
|
396
|
-
export const getBlockSchema = <F extends FieldSelection>(fields: F): Validator<Block<F>, unknown> => {
|
|
397
|
-
let header = object(project(BlockHeaderShape, {...fields.block, number: true, hash: true}))
|
|
398
|
-
let log = object(project(LogShape, fields.log))
|
|
399
|
-
let transaction = object(project(TransactionShape, fields.transaction))
|
|
400
|
-
let trace = getTraceFrameValidator(fields.trace)
|
|
401
|
-
let stateDiff = getStateDiffValidator(fields.stateDiff)
|
|
402
|
-
|
|
403
|
-
return object({
|
|
404
|
-
header,
|
|
405
|
-
logs: withDefault([], array(log)),
|
|
406
|
-
transactions: withDefault([], array(transaction)),
|
|
407
|
-
traces: withDefault([], array(trace)),
|
|
408
|
-
stateDiffs: withDefault([], array(stateDiff)),
|
|
409
|
-
}) as Validator<Block<F>, unknown>
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
const BlockHeaderShape: ObjectValidatorShape<BlockHeaderFields> = {
|
|
413
|
-
number: NAT,
|
|
414
|
-
hash: BYTES,
|
|
415
|
-
parentHash: BYTES,
|
|
416
|
-
timestamp: NAT,
|
|
417
|
-
transactionsRoot: BYTES,
|
|
418
|
-
receiptsRoot: BYTES,
|
|
419
|
-
stateRoot: BYTES,
|
|
420
|
-
logsBloom: BYTES,
|
|
421
|
-
sha3Uncles: BYTES,
|
|
422
|
-
extraData: BYTES,
|
|
423
|
-
miner: BYTES,
|
|
424
|
-
nonce: BYTES,
|
|
425
|
-
mixHash: BYTES,
|
|
426
|
-
size: NAT,
|
|
427
|
-
gasLimit: QTY,
|
|
428
|
-
gasUsed: QTY,
|
|
429
|
-
difficulty: QTY,
|
|
430
|
-
totalDifficulty: option(QTY),
|
|
431
|
-
baseFeePerGas: QTY,
|
|
432
|
-
blobGasUsed: QTY,
|
|
433
|
-
excessBlobGas: QTY,
|
|
434
|
-
l1BlockNumber: option(NAT),
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
const LogShape: ObjectValidatorShape<LogFields> = {
|
|
438
|
-
logIndex: NAT,
|
|
439
|
-
transactionIndex: NAT,
|
|
440
|
-
transactionHash: BYTES,
|
|
441
|
-
address: BYTES,
|
|
442
|
-
data: BYTES,
|
|
443
|
-
topics: array(BYTES),
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
const TransactionShape: ObjectValidatorShape<TransactionFields> = {
|
|
447
|
-
transactionIndex: NAT,
|
|
448
|
-
hash: BYTES,
|
|
449
|
-
nonce: NAT,
|
|
450
|
-
from: BYTES,
|
|
451
|
-
to: option(BYTES),
|
|
452
|
-
input: BYTES,
|
|
453
|
-
value: QTY,
|
|
454
|
-
gas: QTY,
|
|
455
|
-
gasPrice: QTY,
|
|
456
|
-
maxFeePerGas: option(QTY),
|
|
457
|
-
maxPriorityFeePerGas: option(QTY),
|
|
458
|
-
v: QTY,
|
|
459
|
-
r: BYTES,
|
|
460
|
-
s: BYTES,
|
|
461
|
-
yParity: option(NAT),
|
|
462
|
-
chainId: option(NAT),
|
|
463
|
-
sighash: option(BYTES),
|
|
464
|
-
contractAddress: option(BYTES),
|
|
465
|
-
gasUsed: QTY,
|
|
466
|
-
cumulativeGasUsed: QTY,
|
|
467
|
-
effectiveGasPrice: QTY,
|
|
468
|
-
type: NAT,
|
|
469
|
-
status: NAT,
|
|
470
|
-
blobVersionedHashes: option(array(BYTES)),
|
|
471
|
-
l1Fee: option(QTY),
|
|
472
|
-
l1FeeScalar: option(NAT),
|
|
473
|
-
l1GasPrice: option(QTY),
|
|
474
|
-
l1GasUsed: option(QTY),
|
|
475
|
-
l1BlobBaseFee: option(QTY),
|
|
476
|
-
l1BlobBaseFeeScalar: option(NAT),
|
|
477
|
-
l1BaseFeeScalar: option(NAT),
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
function getTraceFrameValidator<T extends FieldSelection['trace']>(
|
|
481
|
-
fields: T
|
|
482
|
-
): Validator<Trace<NonNullable<T>>, unknown> {
|
|
483
|
-
let BaseShape = project(TraceBaseShape, fields)
|
|
484
|
-
|
|
485
|
-
let createAction = object(
|
|
486
|
-
project(TraceCreateActionShape, {
|
|
487
|
-
from: fields?.createFrom,
|
|
488
|
-
value: fields?.createValue,
|
|
489
|
-
gas: fields?.createGas,
|
|
490
|
-
init: fields?.createInit,
|
|
491
|
-
})
|
|
492
|
-
)
|
|
493
|
-
|
|
494
|
-
let createResult = object(
|
|
495
|
-
project(TraceCreateResultShape, {
|
|
496
|
-
gasUsed: fields?.createResultGasUsed,
|
|
497
|
-
code: fields?.createResultCode,
|
|
498
|
-
address: fields?.createResultAddress,
|
|
499
|
-
})
|
|
500
|
-
)
|
|
501
|
-
|
|
502
|
-
let create = object({
|
|
503
|
-
...BaseShape,
|
|
504
|
-
type: constant('create'),
|
|
505
|
-
action: withDefault({}, createAction),
|
|
506
|
-
result: isEmpty(createResult) ? undefined : option(createResult),
|
|
507
|
-
})
|
|
508
|
-
|
|
509
|
-
let callAction = object(
|
|
510
|
-
project(TraceCallActionShape, {
|
|
511
|
-
callType: fields?.callCallType,
|
|
512
|
-
from: fields?.callFrom,
|
|
513
|
-
to: fields?.callTo,
|
|
514
|
-
value: fields?.callValue,
|
|
515
|
-
gas: fields?.callGas,
|
|
516
|
-
input: fields?.callInput,
|
|
517
|
-
sighash: fields?.callSighash,
|
|
518
|
-
})
|
|
519
|
-
)
|
|
520
|
-
|
|
521
|
-
let callResult = object(
|
|
522
|
-
project(TraceCallResultShape, {
|
|
523
|
-
gasUsed: fields?.callResultGasUsed,
|
|
524
|
-
output: fields?.callResultOutput,
|
|
525
|
-
})
|
|
526
|
-
)
|
|
527
|
-
|
|
528
|
-
let call = object({
|
|
529
|
-
...BaseShape,
|
|
530
|
-
type: constant('call'),
|
|
531
|
-
action: withDefault({}, callAction),
|
|
532
|
-
result: isEmpty(callResult) ? undefined : option(callResult),
|
|
533
|
-
})
|
|
534
|
-
|
|
535
|
-
let suicideAction = object(
|
|
536
|
-
project(TraceSuicideActionShape, {
|
|
537
|
-
address: fields?.suicideAddress,
|
|
538
|
-
refundAddress: fields?.suicideRefundAddress,
|
|
539
|
-
balance: fields?.suicideBalance,
|
|
540
|
-
})
|
|
541
|
-
)
|
|
542
|
-
|
|
543
|
-
let suicide = object({
|
|
544
|
-
...BaseShape,
|
|
545
|
-
type: constant('suicide'),
|
|
546
|
-
action: withDefault({}, suicideAction),
|
|
547
|
-
})
|
|
548
|
-
|
|
549
|
-
let rewardAction = object(
|
|
550
|
-
project(TraceRewardActionShape, {
|
|
551
|
-
author: fields?.rewardAuthor,
|
|
552
|
-
value: fields?.rewardValue,
|
|
553
|
-
type: fields?.rewardType,
|
|
554
|
-
})
|
|
555
|
-
)
|
|
556
|
-
|
|
557
|
-
let reward = object({
|
|
558
|
-
...BaseShape,
|
|
559
|
-
type: constant('reward'),
|
|
560
|
-
action: withDefault({}, rewardAction),
|
|
561
|
-
})
|
|
562
|
-
|
|
563
|
-
return taggedUnion('type', {
|
|
564
|
-
create,
|
|
565
|
-
call,
|
|
566
|
-
suicide,
|
|
567
|
-
reward,
|
|
568
|
-
}) as Validator<Trace<NonNullable<T>>, unknown>
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
const TraceBaseShape: ObjectValidatorShape<TraceBaseFields> = {
|
|
572
|
-
type: oneOf({
|
|
573
|
-
create: constant('create'),
|
|
574
|
-
call: constant('call'),
|
|
575
|
-
suicide: constant('suicide'),
|
|
576
|
-
reward: constant('reward'),
|
|
577
|
-
}),
|
|
578
|
-
transactionIndex: NAT,
|
|
579
|
-
traceAddress: array(NAT),
|
|
580
|
-
subtraces: NAT,
|
|
581
|
-
error: nullable(STRING),
|
|
582
|
-
revertReason: option(STRING),
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
const TraceCreateActionShape: ObjectValidatorShape<TraceCreateActionFields> = {
|
|
586
|
-
from: BYTES,
|
|
587
|
-
value: QTY,
|
|
588
|
-
gas: QTY,
|
|
589
|
-
init: BYTES,
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
const TraceCreateResultShape: ObjectValidatorShape<TraceCreateResultFields> = {
|
|
593
|
-
gasUsed: QTY,
|
|
594
|
-
code: option(BYTES),
|
|
595
|
-
address: BYTES,
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
const TraceCallActionShape: ObjectValidatorShape<TraceCallActionFields> = {
|
|
599
|
-
callType: STRING,
|
|
600
|
-
from: BYTES,
|
|
601
|
-
to: BYTES,
|
|
602
|
-
value: option(QTY),
|
|
603
|
-
gas: QTY,
|
|
604
|
-
input: BYTES,
|
|
605
|
-
sighash: option(BYTES),
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
const TraceCallResultShape: ObjectValidatorShape<TraceCallResultFields> = {
|
|
609
|
-
gasUsed: QTY,
|
|
610
|
-
output: option(BYTES),
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
const TraceSuicideActionShape: ObjectValidatorShape<TraceSuicideActionFields> = {
|
|
614
|
-
address: BYTES,
|
|
615
|
-
refundAddress: BYTES,
|
|
616
|
-
balance: QTY,
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
const TraceRewardActionShape: ObjectValidatorShape<TraceRewardActionFields> = {
|
|
620
|
-
author: BYTES,
|
|
621
|
-
value: QTY,
|
|
622
|
-
type: STRING,
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
function getStateDiffValidator<T extends FieldSelection['stateDiff']>(
|
|
626
|
-
fields: T
|
|
627
|
-
): Validator<StateDiff<NonNullable<T>>, unknown> {
|
|
628
|
-
return taggedUnion('kind', {
|
|
629
|
-
'+': object(project(StateDiffAddShape, fields)),
|
|
630
|
-
'-': object(project(StateDiffDeleteShape, fields)),
|
|
631
|
-
'*': object(project(StateDiffChangeShape, fields)),
|
|
632
|
-
'=': object(project(StateDiffNoChangeShape, fields)),
|
|
633
|
-
}) as Validator<StateDiff<NonNullable<T>>, unknown>
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
const StateDiffBaseShape: ObjectValidatorShape<StateDiffBaseFields> = {
|
|
637
|
-
kind: oneOf({
|
|
638
|
-
'+': constant('+'),
|
|
639
|
-
'-': constant('-'),
|
|
640
|
-
'*': constant('*'),
|
|
641
|
-
'=': constant('='),
|
|
642
|
-
}),
|
|
643
|
-
transactionIndex: NAT,
|
|
644
|
-
address: BYTES,
|
|
645
|
-
key: STRING,
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
const StateDiffAddShape: ObjectValidatorShape<StateDiffAddFields> = {
|
|
649
|
-
...StateDiffBaseShape,
|
|
650
|
-
kind: constant('+'),
|
|
651
|
-
next: BYTES,
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
const StateDiffDeleteShape: ObjectValidatorShape<StateDiffDeleteFields> = {
|
|
655
|
-
...StateDiffBaseShape,
|
|
656
|
-
kind: constant('-'),
|
|
657
|
-
prev: BYTES,
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
const StateDiffChangeShape: ObjectValidatorShape<StateDiffChangeFields> = {
|
|
661
|
-
...StateDiffBaseShape,
|
|
662
|
-
kind: constant('*'),
|
|
663
|
-
prev: BYTES,
|
|
664
|
-
next: BYTES,
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
const StateDiffNoChangeShape: ObjectValidatorShape<StateDiffNoChangeFields> = {
|
|
668
|
-
...StateDiffBaseShape,
|
|
669
|
-
kind: constant('='),
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
export function isEmpty(obj: object): boolean {
|
|
673
|
-
for (let _ in obj) {
|
|
674
|
-
return false
|
|
675
|
-
}
|
|
676
|
-
return true
|
|
677
|
-
}
|