@xyo-network/evm-call-witness 2.84.3 → 2.84.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Witness.d.cts +2 -2
- package/dist/browser/Witness.d.cts.map +1 -1
- package/dist/browser/Witness.d.mts +2 -2
- package/dist/browser/Witness.d.mts.map +1 -1
- package/dist/browser/Witness.d.ts +2 -2
- package/dist/browser/Witness.d.ts.map +1 -1
- package/dist/browser/index.cjs +2 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/model.d.cts +3 -3
- package/dist/browser/model.d.cts.map +1 -1
- package/dist/browser/model.d.mts +3 -3
- package/dist/browser/model.d.mts.map +1 -1
- package/dist/browser/model.d.ts +3 -3
- package/dist/browser/model.d.ts.map +1 -1
- package/dist/node/Witness.d.cts +2 -2
- package/dist/node/Witness.d.cts.map +1 -1
- package/dist/node/Witness.d.mts +2 -2
- package/dist/node/Witness.d.mts.map +1 -1
- package/dist/node/Witness.d.ts +2 -2
- package/dist/node/Witness.d.ts.map +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +2 -2
- package/dist/node/index.js.map +1 -1
- package/dist/node/model.d.cts +3 -3
- package/dist/node/model.d.cts.map +1 -1
- package/dist/node/model.d.mts +3 -3
- package/dist/node/model.d.mts.map +1 -1
- package/dist/node/model.d.ts +3 -3
- package/dist/node/model.d.ts.map +1 -1
- package/package.json +21 -21
- package/src/Witness.ts +2 -6
- package/src/model.ts +3 -3
- package/src/spec/Erc721TokenEnumerateSentinel.json +1 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -116,9 +116,9 @@ var import_hex = require("@xylabs/hex");
|
|
|
116
116
|
var import_erc1822_witness = require("@xyo-network/erc1822-witness");
|
|
117
117
|
var import_erc1967_witness = require("@xyo-network/erc1967-witness");
|
|
118
118
|
var import_payload_model2 = require("@xyo-network/payload-model");
|
|
119
|
-
var
|
|
119
|
+
var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
|
|
120
120
|
var import_ethers = require("ethers");
|
|
121
|
-
var EvmCallWitness = class extends
|
|
121
|
+
var EvmCallWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
|
|
122
122
|
static configSchemas = [EvmCallWitnessConfigSchema];
|
|
123
123
|
get abi() {
|
|
124
124
|
return (0, import_assert2.assertEx)(this.config.abi, "Missing abi");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './model'\nexport * from './Payload'\nexport * from './Witness'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmCall,\n EvmCallResult\n> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","import_assert","import_payload_model"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './model'\nexport * from './Payload'\nexport * from './Witness'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","import_assert","import_payload_model"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -80,9 +80,9 @@ import { isHexZero } from "@xylabs/hex";
|
|
|
80
80
|
import { getErc1822SlotStatus } from "@xyo-network/erc1822-witness";
|
|
81
81
|
import { getErc1967SlotStatus } from "@xyo-network/erc1967-witness";
|
|
82
82
|
import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
|
|
83
|
-
import {
|
|
83
|
+
import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
|
|
84
84
|
import { Contract } from "ethers";
|
|
85
|
-
var EvmCallWitness = class extends
|
|
85
|
+
var EvmCallWitness = class extends AbstractEvmWitness {
|
|
86
86
|
static configSchemas = [EvmCallWitnessConfigSchema];
|
|
87
87
|
get abi() {
|
|
88
88
|
return assertEx2(this.config.abi, "Missing abi");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmCall,\n EvmCallResult\n> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","assertEx","isPayloadOfSchemaType","assertEx","isPayloadOfSchemaType"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","assertEx","isPayloadOfSchemaType","assertEx","isPayloadOfSchemaType"]}
|
package/dist/browser/model.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/dist/browser/model.d.mts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/dist/browser/model.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/dist/node/Witness.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
package/dist/node/Witness.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
package/dist/node/Witness.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { EvmCallWitnessParams } from './model';
|
|
3
3
|
import { EvmCall, EvmCallResult } from './Payload';
|
|
4
|
-
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
4
|
+
export declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
5
5
|
static configSchemas: string[];
|
|
6
6
|
get abi(): string | readonly (string | import("ethers").JsonFragment)[];
|
|
7
7
|
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAsD,MAAM,WAAW,CAAA;AAEtG,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,OAAgB,aAAa,WAA+B;IAE5D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAuD9F"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -118,9 +118,9 @@ var import_hex = require("@xylabs/hex");
|
|
|
118
118
|
var import_erc1822_witness = require("@xyo-network/erc1822-witness");
|
|
119
119
|
var import_erc1967_witness = require("@xyo-network/erc1967-witness");
|
|
120
120
|
var import_payload_model2 = require("@xyo-network/payload-model");
|
|
121
|
-
var
|
|
121
|
+
var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
|
|
122
122
|
var import_ethers = require("ethers");
|
|
123
|
-
var EvmCallWitness = class extends
|
|
123
|
+
var EvmCallWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
|
|
124
124
|
static configSchemas = [EvmCallWitnessConfigSchema];
|
|
125
125
|
get abi() {
|
|
126
126
|
return (0, import_assert2.assertEx)(this.config.abi, "Missing abi");
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './model'\nexport * from './Payload'\nexport * from './Witness'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmCall,\n EvmCallResult\n> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","import_assert","import_payload_model"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\nexport * from './model'\nexport * from './Payload'\nexport * from './Witness'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","import_assert","import_payload_model"]}
|
package/dist/node/index.js
CHANGED
|
@@ -82,9 +82,9 @@ import { isHexZero } from "@xylabs/hex";
|
|
|
82
82
|
import { getErc1822SlotStatus } from "@xyo-network/erc1822-witness";
|
|
83
83
|
import { getErc1967SlotStatus } from "@xyo-network/erc1967-witness";
|
|
84
84
|
import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
|
|
85
|
-
import {
|
|
85
|
+
import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
|
|
86
86
|
import { Contract } from "ethers";
|
|
87
|
-
var EvmCallWitness = class extends
|
|
87
|
+
var EvmCallWitness = class extends AbstractEvmWitness {
|
|
88
88
|
static configSchemas = [EvmCallWitnessConfigSchema];
|
|
89
89
|
get abi() {
|
|
90
90
|
return assertEx2(this.config.abi, "Missing abi");
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = BlockchainWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmCall,\n EvmCallResult\n> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","assertEx","isPayloadOfSchemaType","assertEx","isPayloadOfSchemaType"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: string\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [EvmCallDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const results: EvmCallResults = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override configSchemas = [EvmCallWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('throw')\n //calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n //Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n //Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch (ex) {\n //const error = ex as Error & { code: string }\n //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":"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","names":["result","assertEx","isPayloadOfSchemaType","assertEx","isPayloadOfSchemaType"]}
|
package/dist/node/model.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/dist/node/model.d.mts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/dist/node/model.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
|
|
2
2
|
import { JsonFragment } from 'ethers';
|
|
3
3
|
export type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
4
4
|
export declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
5
5
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
6
|
-
export type EvmCallWitnessConfig =
|
|
6
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
7
7
|
abi?: Abi;
|
|
8
8
|
address?: string;
|
|
9
9
|
args?: unknown[];
|
|
10
10
|
block?: number;
|
|
11
11
|
functionName?: string;
|
|
12
12
|
}, EvmCallWitnessConfigSchema>;
|
|
13
|
-
export type EvmCallWitnessParams =
|
|
13
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
14
14
|
//# sourceMappingURL=model.d.ts.map
|
package/dist/node/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -13,31 +13,31 @@
|
|
|
13
13
|
"@xylabs/assert": "^2.13.20",
|
|
14
14
|
"@xylabs/hex": "^2.13.20",
|
|
15
15
|
"@xylabs/promise": "^2.13.20",
|
|
16
|
-
"@xyo-network/abstract-diviner": "^2.84.
|
|
17
|
-
"@xyo-network/diviner-model": "^2.84.
|
|
18
|
-
"@xyo-network/erc1822-witness": "~2.84.
|
|
19
|
-
"@xyo-network/erc1967-witness": "~2.84.
|
|
20
|
-
"@xyo-network/payload-model": "^2.84.
|
|
21
|
-
"@xyo-network/witness-blockchain-abstract": "^2.84.
|
|
22
|
-
"ethers": "^6.9.
|
|
16
|
+
"@xyo-network/abstract-diviner": "^2.84.13",
|
|
17
|
+
"@xyo-network/diviner-model": "^2.84.13",
|
|
18
|
+
"@xyo-network/erc1822-witness": "~2.84.4",
|
|
19
|
+
"@xyo-network/erc1967-witness": "~2.84.4",
|
|
20
|
+
"@xyo-network/payload-model": "^2.84.13",
|
|
21
|
+
"@xyo-network/witness-blockchain-abstract": "^2.84.13",
|
|
22
|
+
"ethers": "^6.9.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@xylabs/jest-helpers": "^2.13.20",
|
|
26
26
|
"@xylabs/profile": "^2.13.20",
|
|
27
|
-
"@xylabs/ts-scripts-yarn3": "^3.2.
|
|
28
|
-
"@xylabs/tsconfig": "^3.2.
|
|
29
|
-
"@xyo-network/account": "^2.84.
|
|
30
|
-
"@xyo-network/diviner-jsonpatch-memory": "^2.84.
|
|
31
|
-
"@xyo-network/diviner-jsonpath-aggregate-memory": "^2.84.
|
|
32
|
-
"@xyo-network/diviner-range": "^2.84.
|
|
33
|
-
"@xyo-network/evm-contract-witness": "~2.84.
|
|
34
|
-
"@xyo-network/evm-token-interface-diviner": "~2.84.
|
|
35
|
-
"@xyo-network/manifest": "^2.84.
|
|
36
|
-
"@xyo-network/module-model": "^2.84.
|
|
27
|
+
"@xylabs/ts-scripts-yarn3": "^3.2.25",
|
|
28
|
+
"@xylabs/tsconfig": "^3.2.25",
|
|
29
|
+
"@xyo-network/account": "^2.84.13",
|
|
30
|
+
"@xyo-network/diviner-jsonpatch-memory": "^2.84.13",
|
|
31
|
+
"@xyo-network/diviner-jsonpath-aggregate-memory": "^2.84.13",
|
|
32
|
+
"@xyo-network/diviner-range": "^2.84.13",
|
|
33
|
+
"@xyo-network/evm-contract-witness": "~2.84.4",
|
|
34
|
+
"@xyo-network/evm-token-interface-diviner": "~2.84.4",
|
|
35
|
+
"@xyo-network/manifest": "^2.84.13",
|
|
36
|
+
"@xyo-network/module-model": "^2.84.13",
|
|
37
37
|
"@xyo-network/open-zeppelin-typechain": "^3.0.5",
|
|
38
|
-
"@xyo-network/sentinel-model": "^2.84.
|
|
39
|
-
"@xyo-network/witness-adhoc": "^2.84.
|
|
40
|
-
"@xyo-network/witness-model": "^2.84.
|
|
38
|
+
"@xyo-network/sentinel-model": "^2.84.13",
|
|
39
|
+
"@xyo-network/witness-adhoc": "^2.84.13",
|
|
40
|
+
"@xyo-network/witness-model": "^2.84.13",
|
|
41
41
|
"jest": "^29.7.0",
|
|
42
42
|
"typescript": "^5.3.3"
|
|
43
43
|
},
|
|
@@ -80,6 +80,6 @@
|
|
|
80
80
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
81
81
|
},
|
|
82
82
|
"sideEffects": false,
|
|
83
|
-
"version": "2.84.
|
|
83
|
+
"version": "2.84.4",
|
|
84
84
|
"type": "module"
|
|
85
85
|
}
|
package/src/Witness.ts
CHANGED
|
@@ -3,17 +3,13 @@ import { isHexZero } from '@xylabs/hex'
|
|
|
3
3
|
import { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'
|
|
4
4
|
import { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'
|
|
5
5
|
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
6
|
-
import {
|
|
6
|
+
import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'
|
|
7
7
|
import { Contract } from 'ethers'
|
|
8
8
|
|
|
9
9
|
import { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model'
|
|
10
10
|
import { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload'
|
|
11
11
|
|
|
12
|
-
export class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends
|
|
13
|
-
TParams,
|
|
14
|
-
EvmCall,
|
|
15
|
-
EvmCallResult
|
|
16
|
-
> {
|
|
12
|
+
export class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
17
13
|
static override configSchemas = [EvmCallWitnessConfigSchema]
|
|
18
14
|
|
|
19
15
|
get abi() {
|
package/src/model.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'
|
|
2
2
|
import { JsonFragment } from 'ethers'
|
|
3
3
|
|
|
4
4
|
export type Abi = string | ReadonlyArray<JsonFragment | string>
|
|
@@ -6,7 +6,7 @@ export type Abi = string | ReadonlyArray<JsonFragment | string>
|
|
|
6
6
|
export const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'
|
|
7
7
|
export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema
|
|
8
8
|
|
|
9
|
-
export type EvmCallWitnessConfig =
|
|
9
|
+
export type EvmCallWitnessConfig = EvmWitnessConfig<
|
|
10
10
|
{
|
|
11
11
|
abi?: Abi
|
|
12
12
|
address?: string
|
|
@@ -17,4 +17,4 @@ export type EvmCallWitnessConfig = BlockchainWitnessConfig<
|
|
|
17
17
|
EvmCallWitnessConfigSchema
|
|
18
18
|
>
|
|
19
19
|
|
|
20
|
-
export type EvmCallWitnessParams =
|
|
20
|
+
export type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
"config": {
|
|
65
|
-
"destinationSchema": "network.xyo.
|
|
65
|
+
"destinationSchema": "network.xyo.evm.address",
|
|
66
66
|
"language": "javascript",
|
|
67
67
|
"name": "Erc1822ToAddressDiviner",
|
|
68
68
|
"schema": "network.xyo.diviner.jsonpath.aggregate.config",
|
|
@@ -368,13 +368,6 @@
|
|
|
368
368
|
"TokenInterfaceToErc721EnumerableInterfaceDiviner"
|
|
369
369
|
],
|
|
370
370
|
"module": "ErcTokenInterfaceToCallDiviner"
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
"input": [
|
|
374
|
-
"ErcTokenInterfaceToCallDiviner",
|
|
375
|
-
"NumberZeroWitness"
|
|
376
|
-
],
|
|
377
|
-
"module": "Erc721TotalSupplyWitness"
|
|
378
371
|
}
|
|
379
372
|
]
|
|
380
373
|
}
|