@xyo-network/evm-call-witness 2.84.2 → 2.84.3

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 (62) hide show
  1. package/dist/browser/Payload.d.cts +4 -4
  2. package/dist/browser/Payload.d.cts.map +1 -1
  3. package/dist/browser/Payload.d.mts +4 -4
  4. package/dist/browser/Payload.d.mts.map +1 -1
  5. package/dist/browser/Payload.d.ts +4 -4
  6. package/dist/browser/Payload.d.ts.map +1 -1
  7. package/dist/browser/Witness.d.cts +3 -14
  8. package/dist/browser/Witness.d.cts.map +1 -1
  9. package/dist/browser/Witness.d.mts +3 -14
  10. package/dist/browser/Witness.d.mts.map +1 -1
  11. package/dist/browser/Witness.d.ts +3 -14
  12. package/dist/browser/Witness.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +7 -14
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.d.cts +1 -0
  16. package/dist/browser/index.d.cts.map +1 -1
  17. package/dist/browser/index.d.mts +1 -0
  18. package/dist/browser/index.d.mts.map +1 -1
  19. package/dist/browser/index.d.ts +1 -0
  20. package/dist/browser/index.d.ts.map +1 -1
  21. package/dist/browser/index.js +7 -14
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/browser/model.d.cts +14 -0
  24. package/dist/browser/model.d.cts.map +1 -0
  25. package/dist/browser/model.d.mts +14 -0
  26. package/dist/browser/model.d.mts.map +1 -0
  27. package/dist/browser/model.d.ts +14 -0
  28. package/dist/browser/model.d.ts.map +1 -0
  29. package/dist/node/Payload.d.cts +4 -4
  30. package/dist/node/Payload.d.cts.map +1 -1
  31. package/dist/node/Payload.d.mts +4 -4
  32. package/dist/node/Payload.d.mts.map +1 -1
  33. package/dist/node/Payload.d.ts +4 -4
  34. package/dist/node/Payload.d.ts.map +1 -1
  35. package/dist/node/Witness.d.cts +3 -14
  36. package/dist/node/Witness.d.cts.map +1 -1
  37. package/dist/node/Witness.d.mts +3 -14
  38. package/dist/node/Witness.d.mts.map +1 -1
  39. package/dist/node/Witness.d.ts +3 -14
  40. package/dist/node/Witness.d.ts.map +1 -1
  41. package/dist/node/index.cjs +7 -14
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.d.cts +1 -0
  44. package/dist/node/index.d.cts.map +1 -1
  45. package/dist/node/index.d.mts +1 -0
  46. package/dist/node/index.d.mts.map +1 -1
  47. package/dist/node/index.d.ts +1 -0
  48. package/dist/node/index.d.ts.map +1 -1
  49. package/dist/node/index.js +7 -14
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/model.d.cts +14 -0
  52. package/dist/node/model.d.cts.map +1 -0
  53. package/dist/node/model.d.mts +14 -0
  54. package/dist/node/model.d.mts.map +1 -0
  55. package/dist/node/model.d.ts +14 -0
  56. package/dist/node/model.d.ts.map +1 -0
  57. package/package.json +21 -14
  58. package/src/Payload.ts +2 -2
  59. package/src/Witness.ts +6 -34
  60. package/src/index.ts +1 -0
  61. package/src/model.ts +20 -0
  62. package/src/spec/Erc721TokenEnumerateSentinel.json +387 -0
package/src/Witness.ts CHANGED
@@ -1,42 +1,14 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
+ import { isHexZero } from '@xylabs/hex'
2
3
  import { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'
3
4
  import { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'
4
5
  import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
5
- import { AbstractBlockchainWitness, BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'
6
- import { Contract, JsonFragment } from 'ethers'
6
+ import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'
7
+ import { Contract } from 'ethers'
7
8
 
9
+ import { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'
8
10
  import { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'
9
11
 
10
- export type Abi = string | ReadonlyArray<JsonFragment | string>
11
-
12
- export const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'
13
- export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema
14
-
15
- export type EvmCallWitnessConfig = BlockchainWitnessConfig<
16
- {
17
- abi?: Abi
18
- address?: string
19
- args?: unknown[]
20
- block?: number
21
- functionName?: string
22
- },
23
- EvmCallWitnessConfigSchema
24
- >
25
-
26
- export type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>
27
-
28
- const prefixHex = (value?: string) => {
29
- if (value !== undefined) {
30
- const lowerValue = value.toLowerCase()
31
- return lowerValue.startsWith('0x') ? lowerValue : `0x${lowerValue}`
32
- }
33
- }
34
-
35
- const isHexZero = (value?: string) => {
36
- const prefixedValue = prefixHex(value)
37
- return prefixedValue === undefined ? true : BigInt(prefixedValue) === 0n
38
- }
39
-
40
12
  export class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractBlockchainWitness<
41
13
  TParams,
42
14
  EvmCall,
@@ -54,7 +26,7 @@ export class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnes
54
26
  await this.getProviders()
55
27
  try {
56
28
  const observations = await Promise.all(
57
- inPayloads.filter(isPayloadOfSchemaType(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {
29
+ inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {
58
30
  const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')
59
31
  const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')
60
32
  const mergedArgs = [...(args ?? this.config.args ?? [])]
@@ -69,7 +41,7 @@ export class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnes
69
41
  //Check if ERC-1822 Upgradeable
70
42
  const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)
71
43
 
72
- const implementation = isHexZero(erc1967Status.slots.implementation) ? erc1822Status.implementation : erc1967Status.implementation
44
+ const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation
73
45
 
74
46
  const contract = new Contract(implementation, this.abi, provider)
75
47
  let transformedResult: unknown
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './Diviner'
2
+ export * from './model'
2
3
  export * from './Payload'
3
4
  export * from './Witness'
package/src/model.ts ADDED
@@ -0,0 +1,20 @@
1
+ import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'
2
+ import { JsonFragment } from 'ethers'
3
+
4
+ export type Abi = string | ReadonlyArray<JsonFragment | string>
5
+
6
+ export const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'
7
+ export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema
8
+
9
+ export type EvmCallWitnessConfig = BlockchainWitnessConfig<
10
+ {
11
+ abi?: Abi
12
+ address?: string
13
+ args?: unknown[]
14
+ block?: number
15
+ functionName?: string
16
+ },
17
+ EvmCallWitnessConfigSchema
18
+ >
19
+
20
+ export type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>
@@ -0,0 +1,387 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
3
+ "nodes": [
4
+ {
5
+ "config": {
6
+ "name": "Erc721TokenInfo",
7
+ "schema": "network.xyo.node.config"
8
+ },
9
+ "modules": {
10
+ "public": [
11
+ {
12
+ "config": {
13
+ "labels": {
14
+ "network.xyo.evm.interface": "Erc721UriStorage"
15
+ },
16
+ "language": "javascript",
17
+ "name": "Erc721TokenURIWitness",
18
+ "schema": "network.xyo.evm.call.witness.config"
19
+ }
20
+ },
21
+ {
22
+ "config": {
23
+ "labels": {
24
+ "network.xyo.evm.interface": "Erc721"
25
+ },
26
+ "language": "javascript",
27
+ "name": "Erc721OwnerOfWitness",
28
+ "schema": "network.xyo.evm.call.witness.config"
29
+ }
30
+ },
31
+ {
32
+ "config": {
33
+ "language": "javascript",
34
+ "name": "Erc1822Witness",
35
+ "schema": "network.xyo.erc1822.witness.config"
36
+ }
37
+ },
38
+ {
39
+ "config": {
40
+ "language": "javascript",
41
+ "name": "NumberZeroWitness",
42
+ "payload": {
43
+ "schema": "network.xyo.number",
44
+ "value": 0
45
+ },
46
+ "schema": "network.xyo.witness.adhoc.config"
47
+ }
48
+ },
49
+ {
50
+ "config": {
51
+ "language": "javascript",
52
+ "name": "Erc1967Witness",
53
+ "schema": "network.xyo.erc1967.witness.config"
54
+ }
55
+ },
56
+ {
57
+ "config": {
58
+ "language": "javascript",
59
+ "name": "TokenInfoDiviner",
60
+ "schema": "network.xyo.evm.call.diviner.config"
61
+ }
62
+ },
63
+ {
64
+ "config": {
65
+ "destinationSchema": "network.xyo.blockchain.address",
66
+ "language": "javascript",
67
+ "name": "Erc1822ToAddressDiviner",
68
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config",
69
+ "schemaTransforms": {
70
+ "network.xyo.erc1822.status": [
71
+ {
72
+ "destinationField": "address",
73
+ "sourcePathExpression": "$.implementation"
74
+ },
75
+ {
76
+ "destinationField": "chainId",
77
+ "sourcePathExpression": "$.chainId"
78
+ },
79
+ {
80
+ "destinationField": "blockTag",
81
+ "sourcePathExpression": "$.block"
82
+ }
83
+ ]
84
+ }
85
+ }
86
+ },
87
+ {
88
+ "config": {
89
+ "destinationSchema": "network.xyo.blockchain.address",
90
+ "language": "javascript",
91
+ "name": "Erc1967ToAddressDiviner",
92
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config",
93
+ "schemaTransforms": {
94
+ "network.xyo.erc1967.status": [
95
+ {
96
+ "destinationField": "address",
97
+ "sourcePathExpression": "$.implementation"
98
+ },
99
+ {
100
+ "destinationField": "chainId",
101
+ "sourcePathExpression": "$.chainId"
102
+ },
103
+ {
104
+ "destinationField": "blockTag",
105
+ "sourcePathExpression": "$.block"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ },
111
+ {
112
+ "config": {
113
+ "destinationSchema": "network.xyo.evm.call",
114
+ "language": "javascript",
115
+ "name": "ErcTokenInterfaceToCallDiviner",
116
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config",
117
+ "schemaTransforms": {
118
+ "network.xyo.evm.token.interface.implemented": [
119
+ {
120
+ "destinationField": "address",
121
+ "sourcePathExpression": "$.address"
122
+ },
123
+ {
124
+ "destinationField": "chainId",
125
+ "sourcePathExpression": "$.chainId"
126
+ }
127
+ ]
128
+ }
129
+ }
130
+ },
131
+ {
132
+ "config": {
133
+ "language": "javascript",
134
+ "name": "ContractWitness",
135
+ "schema": "network.xyo.evm.contract.witness.config"
136
+ }
137
+ },
138
+ {
139
+ "config": {
140
+ "language": "javascript",
141
+ "name": "TokenInterfaceDiviner",
142
+ "schema": "network.xyo.evm.token.interface.implemented.diviner.config"
143
+ }
144
+ },
145
+ {
146
+ "config": {
147
+ "language": "javascript",
148
+ "name": "TokenInterfaceToErc721EnumerableInterfaceDiviner",
149
+ "operations": [
150
+ {
151
+ "op": "test",
152
+ "path": "/schema",
153
+ "value": "network.xyo.evm.token.interface.implemented"
154
+ },
155
+ {
156
+ "op": "test",
157
+ "path": "/tokenInterface",
158
+ "value": "ERC721Enumerable"
159
+ },
160
+ {
161
+ "op": "test",
162
+ "path": "/implemented",
163
+ "value": true
164
+ }
165
+ ],
166
+ "schema": "network.xyo.diviner.jsonpatch.config"
167
+ }
168
+ },
169
+ {
170
+ "config": {
171
+ "functionName": "totalSupply",
172
+ "labels": {
173
+ "network.xyo.evm.interface": "Erc721Enumerable"
174
+ },
175
+ "language": "javascript",
176
+ "name": "Erc721TotalSupplyWitness",
177
+ "schema": "network.xyo.evm.call.witness.config"
178
+ }
179
+ },
180
+ {
181
+ "config": {
182
+ "destinationSchema": "network.xyo.range",
183
+ "language": "javascript",
184
+ "name": "TotalSupplyToRangeDiviner",
185
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config",
186
+ "schemaTransforms": {
187
+ "network.xyo.evm.call.result": [
188
+ {
189
+ "destinationField": "start",
190
+ "sourcePathExpression": "$.address"
191
+ },
192
+ {
193
+ "destinationField": "chainId",
194
+ "sourcePathExpression": "$.chainId"
195
+ }
196
+ ]
197
+ }
198
+ }
199
+ },
200
+ {
201
+ "config": {
202
+ "destinationSchema": "network.xyo.blockchain.address",
203
+ "language": "javascript",
204
+ "name": "Erc721EnumerableInterfaceToRangeDiviner",
205
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config",
206
+ "schemaTransforms": {
207
+ "network.xyo.evm.token.interface.implemented": [
208
+ {
209
+ "destinationField": "start",
210
+ "sourcePathExpression": 1
211
+ },
212
+ {
213
+ "destinationField": "count",
214
+ "sourcePathExpression": 10
215
+ }
216
+ ]
217
+ }
218
+ }
219
+ },
220
+ {
221
+ "config": {
222
+ "language": "javascript",
223
+ "name": "Erc721RangeDiviner",
224
+ "schema": "network.xyo.diviner.range.config"
225
+ }
226
+ },
227
+ {
228
+ "config": {
229
+ "language": "javascript",
230
+ "name": "Erc721RangeToCallsDiviner",
231
+ "schema": "network.xyo.diviner.jsonpath.aggregate.config"
232
+ }
233
+ },
234
+ {
235
+ "config": {
236
+ "language": "javascript",
237
+ "name": "Erc721CallWitness",
238
+ "schema": "network.xyo.evm.call.witness.config"
239
+ }
240
+ },
241
+ {
242
+ "config": {
243
+ "language": "javascript",
244
+ "name": "NftTokenInfoAllSentinel",
245
+ "schema": "network.xyo.sentinel.config",
246
+ "synchronous": "true",
247
+ "tasks": [
248
+ {
249
+ "input": true,
250
+ "module": "Erc1822Witness"
251
+ },
252
+ {
253
+ "input": [
254
+ "Erc1822Witness"
255
+ ],
256
+ "module": "Erc1822ToAddressDiviner"
257
+ },
258
+ {
259
+ "input": [
260
+ "Erc1822ToAddressDiviner"
261
+ ],
262
+ "module": "Erc1967Witness"
263
+ },
264
+ {
265
+ "input": [
266
+ "Erc1967Witness"
267
+ ],
268
+ "module": "Erc1967ToAddressDiviner"
269
+ },
270
+ {
271
+ "input": [
272
+ "Erc1967ToAddressDiviner"
273
+ ],
274
+ "module": "ContractWitness"
275
+ },
276
+ {
277
+ "input": [
278
+ "ContractWitness"
279
+ ],
280
+ "module": "TokenInterfaceDiviner"
281
+ },
282
+ {
283
+ "input": [
284
+ "TokenInterfaceDiviner"
285
+ ],
286
+ "module": "TokenInterfaceToRangeDiviner"
287
+ },
288
+ {
289
+ "input": [
290
+ "TokenInterfaceToRangeDiviner"
291
+ ],
292
+ "module": "Erc721RangeDiviner"
293
+ },
294
+ {
295
+ "input": [
296
+ "Erc721RangeDiviner"
297
+ ],
298
+ "module": "Erc721RangeToCallsDiviner"
299
+ },
300
+ {
301
+ "input": [
302
+ "Erc721RangeToCallsDiviner"
303
+ ],
304
+ "module": "Erc721CallWitness"
305
+ },
306
+ {
307
+ "input": [
308
+ "Erc721CallWitness"
309
+ ],
310
+ "module": "TokenInfoDiviner"
311
+ }
312
+ ]
313
+ }
314
+ },
315
+ {
316
+ "config": {
317
+ "language": "javascript",
318
+ "name": "NftTokenInfoAllSentinelDebug",
319
+ "schema": "network.xyo.sentinel.config",
320
+ "synchronous": "true",
321
+ "tasks": [
322
+ {
323
+ "input": true,
324
+ "module": "NumberZeroWitness"
325
+ },
326
+ {
327
+ "input": true,
328
+ "module": "Erc1822Witness"
329
+ },
330
+ {
331
+ "input": [
332
+ "Erc1822Witness"
333
+ ],
334
+ "module": "Erc1822ToAddressDiviner"
335
+ },
336
+ {
337
+ "input": [
338
+ "Erc1822ToAddressDiviner"
339
+ ],
340
+ "module": "Erc1967Witness"
341
+ },
342
+ {
343
+ "input": [
344
+ "Erc1967Witness"
345
+ ],
346
+ "module": "Erc1967ToAddressDiviner"
347
+ },
348
+ {
349
+ "input": [
350
+ "Erc1967ToAddressDiviner"
351
+ ],
352
+ "module": "ContractWitness"
353
+ },
354
+ {
355
+ "input": [
356
+ "ContractWitness"
357
+ ],
358
+ "module": "TokenInterfaceDiviner"
359
+ },
360
+ {
361
+ "input": [
362
+ "TokenInterfaceDiviner"
363
+ ],
364
+ "module": "TokenInterfaceToErc721EnumerableInterfaceDiviner"
365
+ },
366
+ {
367
+ "input": [
368
+ "TokenInterfaceToErc721EnumerableInterfaceDiviner"
369
+ ],
370
+ "module": "ErcTokenInterfaceToCallDiviner"
371
+ },
372
+ {
373
+ "input": [
374
+ "ErcTokenInterfaceToCallDiviner",
375
+ "NumberZeroWitness"
376
+ ],
377
+ "module": "Erc721TotalSupplyWitness"
378
+ }
379
+ ]
380
+ }
381
+ }
382
+ ]
383
+ }
384
+ }
385
+ ],
386
+ "schema": "network.xyo.manifest"
387
+ }