@xyo-network/evm-events-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.
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -39,9 +39,9 @@ var import_assert = require("@xylabs/assert");
39
39
  var import_exists = require("@xylabs/exists");
40
40
  var import_hex = require("@xylabs/hex");
41
41
  var import_payload_model = require("@xyo-network/payload-model");
42
- var import_witness_blockchain_abstract = require("@xyo-network/witness-blockchain-abstract");
42
+ var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
43
43
  var import_ethers = require("ethers");
44
- var EvmEventsWitness = class extends import_witness_blockchain_abstract.AbstractBlockchainWitness {
44
+ var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
45
45
  static configSchemas = [EvmEventsWitnessConfigSchema];
46
46
  get abi() {
47
47
  return (0, import_assert.assertEx)(this.config.abi, "Missing abi");
@@ -56,16 +56,16 @@ var EvmEventsWitness = class extends import_witness_blockchain_abstract.Abstract
56
56
  const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, "Missing eventName");
57
57
  const provider = await this.getProvider(true, true);
58
58
  const network = await provider.getNetwork();
59
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider);
59
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
60
60
  const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, "Abi is not an array");
61
61
  const abiEvent = (0, import_assert.assertEx)(
62
62
  abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
63
63
  "Could not find event"
64
64
  );
65
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? void 0;
66
65
  const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
67
- const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
68
- const observation = rawEvents.map((rawLog) => {
66
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
67
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
68
+ const observation = allRawEvents.map((rawLog) => {
69
69
  const rawEvent = rawLog;
70
70
  if (rawEvent.args) {
71
71
  const argsObject = {};
@@ -88,7 +88,6 @@ var EvmEventsWitness = class extends import_witness_blockchain_abstract.Abstract
88
88
  return eventResult;
89
89
  }
90
90
  }).filter(import_exists.exists);
91
- console.log(`observation: ${JSON.stringify(observation, null, 2)}`);
92
91
  return observation;
93
92
  })
94
93
  )).flat();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model'\nexport * from './Payload'\nexport * from './Witness'\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 EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nconst bigIntArrayToHexString = (items: unknown[]) => {\n return items.map((item) => {\n if (typeof item === 'bigint') {\n return hexFromBigInt(item)\n }\n return item\n })\n}\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? undefined\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n\n const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n\n const observation = rawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n ).flat()\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAAsC;AACtC,yCAA0C;AAC1C,oBAAmC;AAc5B,IAAM,mBAAN,cAAgG,6DAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ;AAElE,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB,SAAS,sBAAsB,GAAG,eAAe;AAChH,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AAExF,gBAAM,YAAY,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAErG,gBAAM,cAAc,UACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,QAAI,0BAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,kBAAQ,IAAI,gBAAgB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC,EAAE;AAClE,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model'\nexport * from './Payload'\nexport * from './Witness'\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 EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n //console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAAsC;AACtC,kCAAmC;AACnC,oBAAmC;AAK5B,IAAM,mBAAN,cAAgG,+CAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,QAAI,0BAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -10,9 +10,9 @@ import { assertEx } from "@xylabs/assert";
10
10
  import { exists } from "@xylabs/exists";
11
11
  import { hexFromBigInt } from "@xylabs/hex";
12
12
  import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
13
- import { AbstractBlockchainWitness } from "@xyo-network/witness-blockchain-abstract";
13
+ import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
14
14
  import { Contract } from "ethers";
15
- var EvmEventsWitness = class extends AbstractBlockchainWitness {
15
+ var EvmEventsWitness = class extends AbstractEvmWitness {
16
16
  static configSchemas = [EvmEventsWitnessConfigSchema];
17
17
  get abi() {
18
18
  return assertEx(this.config.abi, "Missing abi");
@@ -27,16 +27,16 @@ var EvmEventsWitness = class extends AbstractBlockchainWitness {
27
27
  const validatedEventName = assertEx(eventName ?? this.config.eventName, "Missing eventName");
28
28
  const provider = await this.getProvider(true, true);
29
29
  const network = await provider.getNetwork();
30
- const contract = new Contract(validatedAddress, this.abi, provider);
30
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
31
31
  const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, "Abi is not an array");
32
32
  const abiEvent = assertEx(
33
33
  abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
34
34
  "Could not find event"
35
35
  );
36
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? void 0;
37
36
  const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
38
- const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
39
- const observation = rawEvents.map((rawLog) => {
37
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
38
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
39
+ const observation = allRawEvents.map((rawLog) => {
40
40
  const rawEvent = rawLog;
41
41
  if (rawEvent.args) {
42
42
  const argsObject = {};
@@ -59,7 +59,6 @@ var EvmEventsWitness = class extends AbstractBlockchainWitness {
59
59
  return eventResult;
60
60
  }
61
61
  }).filter(exists);
62
- console.log(`observation: ${JSON.stringify(observation, null, 2)}`);
63
62
  return observation;
64
63
  })
65
64
  )).flat();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nconst bigIntArrayToHexString = (items: unknown[]) => {\n return items.map((item) => {\n if (typeof item === 'bigint') {\n return hexFromBigInt(item)\n }\n return item\n })\n}\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? undefined\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n\n const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n\n const observation = rawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n ).flat()\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":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,iCAAiC;AAC1C,SAAS,gBAA0B;AAc5B,IAAM,mBAAN,cAAgG,0BAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ;AAElE,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB,SAAS,sBAAsB,GAAG,eAAe;AAChH,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AAExF,gBAAM,YAAY,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAErG,gBAAM,cAAc,UACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,IAAI,cAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,kBAAQ,IAAI,gBAAgB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC,EAAE;AAClE,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n //console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\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":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,gBAA0B;AAK5B,IAAM,mBAAN,cAAgG,mBAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,IAAI,cAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -1,7 +1,7 @@
1
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract';
1
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
2
  import { EvmEventsWitnessParams } from './model';
3
3
  import { EvmEvent, EvmEvents } from './Payload';
4
- export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<TParams, EvmEvents, EvmEvent> {
4
+ export declare class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<TParams, EvmEvents, EvmEvent> {
5
5
  static configSchemas: string[];
6
6
  get abi(): string | readonly (string | import("ethers").JsonFragment)[];
7
7
  protected observeHandler(inPayloads?: EvmEvents[]): Promise<EvmEvent[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AAGpF,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAWhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,yBAAyB,CAC9H,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAGtE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmC,MAAM,WAAW,CAAA;AAEhF,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,OAAgB,aAAa,WAAiC;IAE9D,IAAI,GAAG,iEAEN;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsE3F"}
@@ -39,9 +39,9 @@ var import_assert = require("@xylabs/assert");
39
39
  var import_exists = require("@xylabs/exists");
40
40
  var import_hex = require("@xylabs/hex");
41
41
  var import_payload_model = require("@xyo-network/payload-model");
42
- var import_witness_blockchain_abstract = require("@xyo-network/witness-blockchain-abstract");
42
+ var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
43
43
  var import_ethers = require("ethers");
44
- var EvmEventsWitness = class extends import_witness_blockchain_abstract.AbstractBlockchainWitness {
44
+ var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
45
45
  static configSchemas = [EvmEventsWitnessConfigSchema];
46
46
  get abi() {
47
47
  return (0, import_assert.assertEx)(this.config.abi, "Missing abi");
@@ -52,21 +52,20 @@ var EvmEventsWitness = class extends import_witness_blockchain_abstract.Abstract
52
52
  try {
53
53
  const observations = (await Promise.all(
54
54
  inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
55
- var _a;
56
55
  const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, "Missing address");
57
56
  const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, "Missing eventName");
58
57
  const provider = await this.getProvider(true, true);
59
58
  const network = await provider.getNetwork();
60
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider);
59
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
61
60
  const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, "Abi is not an array");
62
61
  const abiEvent = (0, import_assert.assertEx)(
63
62
  abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
64
63
  "Could not find event"
65
64
  );
66
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? ((_a = contract.deploymentTransaction()) == null ? void 0 : _a.blockNumber) ?? void 0;
67
65
  const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
68
- const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
69
- const observation = rawEvents.map((rawLog) => {
66
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
67
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
68
+ const observation = allRawEvents.map((rawLog) => {
70
69
  const rawEvent = rawLog;
71
70
  if (rawEvent.args) {
72
71
  const argsObject = {};
@@ -89,7 +88,6 @@ var EvmEventsWitness = class extends import_witness_blockchain_abstract.Abstract
89
88
  return eventResult;
90
89
  }
91
90
  }).filter(import_exists.exists);
92
- console.log(`observation: ${JSON.stringify(observation, null, 2)}`);
93
91
  return observation;
94
92
  })
95
93
  )).flat();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model'\nexport * from './Payload'\nexport * from './Witness'\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 EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nconst bigIntArrayToHexString = (items: unknown[]) => {\n return items.map((item) => {\n if (typeof item === 'bigint') {\n return hexFromBigInt(item)\n }\n return item\n })\n}\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? undefined\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n\n const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n\n const observation = rawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n ).flat()\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAAsC;AACtC,yCAA0C;AAC1C,oBAAmC;AAc5B,IAAM,mBAAN,cAAgG,6DAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAvCzG;AAwCc,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ;AAElE,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,YAAY,KAAK,OAAO,aAAa,sBAAoB,cAAS,sBAAsB,MAA/B,mBAAkC,gBAAe;AAChH,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AAExF,gBAAM,YAAY,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAErG,gBAAM,cAAc,UACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,QAAI,0BAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,kBAAQ,IAAI,gBAAgB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC,EAAE;AAClE,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model'\nexport * from './Payload'\nexport * from './Witness'\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 EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n //console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAAsC;AACtC,kCAAmC;AACnC,oBAAmC;AAK5B,IAAM,mBAAN,cAAgG,+CAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,QAAI,0BAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -10,9 +10,9 @@ import { assertEx } from "@xylabs/assert";
10
10
  import { exists } from "@xylabs/exists";
11
11
  import { hexFromBigInt } from "@xylabs/hex";
12
12
  import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
13
- import { AbstractBlockchainWitness } from "@xyo-network/witness-blockchain-abstract";
13
+ import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
14
14
  import { Contract } from "ethers";
15
- var EvmEventsWitness = class extends AbstractBlockchainWitness {
15
+ var EvmEventsWitness = class extends AbstractEvmWitness {
16
16
  static configSchemas = [EvmEventsWitnessConfigSchema];
17
17
  get abi() {
18
18
  return assertEx(this.config.abi, "Missing abi");
@@ -23,21 +23,20 @@ var EvmEventsWitness = class extends AbstractBlockchainWitness {
23
23
  try {
24
24
  const observations = (await Promise.all(
25
25
  inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
26
- var _a;
27
26
  const validatedAddress = assertEx(address ?? this.config.address, "Missing address");
28
27
  const validatedEventName = assertEx(eventName ?? this.config.eventName, "Missing eventName");
29
28
  const provider = await this.getProvider(true, true);
30
29
  const network = await provider.getNetwork();
31
- const contract = new Contract(validatedAddress, this.abi, provider);
30
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
32
31
  const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, "Abi is not an array");
33
32
  const abiEvent = assertEx(
34
33
  abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
35
34
  "Could not find event"
36
35
  );
37
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? ((_a = contract.deploymentTransaction()) == null ? void 0 : _a.blockNumber) ?? void 0;
38
36
  const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
39
- const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
40
- const observation = rawEvents.map((rawLog) => {
37
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
38
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
39
+ const observation = allRawEvents.map((rawLog) => {
41
40
  const rawEvent = rawLog;
42
41
  if (rawEvent.args) {
43
42
  const argsObject = {};
@@ -60,7 +59,6 @@ var EvmEventsWitness = class extends AbstractBlockchainWitness {
60
59
  return eventResult;
61
60
  }
62
61
  }).filter(exists);
63
- console.log(`observation: ${JSON.stringify(observation, null, 2)}`);
64
62
  return observation;
65
63
  })
66
64
  )).flat();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = BlockchainWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nconst bigIntArrayToHexString = (items: unknown[]) => {\n return items.map((item) => {\n if (typeof item === 'bigint') {\n return hexFromBigInt(item)\n }\n return item\n })\n}\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? undefined\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n\n const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n\n const observation = rawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\n return observation\n }),\n )\n ).flat()\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":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,iCAAiC;AAC1C,SAAS,gBAA0B;AAc5B,IAAM,mBAAN,cAAgG,0BAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAvCzG;AAwCc,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ;AAElE,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,YAAY,KAAK,OAAO,aAAa,sBAAoB,cAAS,sBAAsB,MAA/B,mBAAkC,gBAAe;AAChH,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AAExF,gBAAM,YAAY,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAErG,gBAAM,cAAc,UACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,IAAI,cAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,kBAAQ,IAAI,gBAAgB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC,EAAE;AAClE,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override configSchemas = [EvmEventsWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\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 = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find((entry) => entry.type === 'event' && entry.name === validatedEventName),\n 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n //console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n if (typeof value === 'bigint') {\n argsObject[input.name] = hexFromBigInt(value)\n } else {\n argsObject[input.name] = value\n }\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\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":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,gBAA0B;AAK5B,IAAM,mBAAN,cAAgG,mBAIrG;AAAA,EACA,OAAgB,gBAAgB,CAAC,4BAA4B;AAAA,EAE7D,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,mBAAmB;AAE3F,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,qBAAqB;AAE/F,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YACpF;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,oBAAI,OAAO,UAAU,UAAU;AAC7B,6BAAW,MAAM,IAAI,IAAI,cAAc,KAAK;AAAA,gBAC9C,OAAO;AACL,6BAAW,MAAM,IAAI,IAAI;AAAA,gBAC3B;AAAA,cACF,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -1,14 +1,14 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract';
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 EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
5
5
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema;
6
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<{
6
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<{
7
7
  abi?: Abi;
8
8
  address?: string;
9
9
  eventName?: string;
10
10
  fromBlock?: number;
11
11
  toBlock?: number;
12
12
  }, EvmEventsWitnessConfigSchema>;
13
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>;
13
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>;
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,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAC3G,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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAC1D;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAA"}
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,4BAA4B,0CAA0C,CAAA;AACnF,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
package/package.json CHANGED
@@ -13,14 +13,14 @@
13
13
  "@xylabs/assert": "^2.13.20",
14
14
  "@xylabs/exists": "^2.13.20",
15
15
  "@xylabs/hex": "^2.13.20",
16
- "@xyo-network/payload-model": "^2.84.8",
17
- "@xyo-network/witness-blockchain-abstract": "^2.84.8",
18
- "ethers": "^6.9.0"
16
+ "@xyo-network/payload-model": "^2.84.13",
17
+ "@xyo-network/witness-blockchain-abstract": "^2.84.13",
18
+ "ethers": "^6.9.1"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@xylabs/jest-helpers": "^2.13.20",
22
- "@xylabs/ts-scripts-yarn3": "^3.2.24",
23
- "@xylabs/tsconfig": "^3.2.24",
22
+ "@xylabs/ts-scripts-yarn3": "^3.2.25",
23
+ "@xylabs/tsconfig": "^3.2.25",
24
24
  "@xyo-network/open-zeppelin-typechain": "^3.0.5",
25
25
  "jest": "^29.7.0",
26
26
  "typescript": "^5.3.3"
@@ -64,6 +64,6 @@
64
64
  "url": "https://github.com/XYOracleNetwork/plugins.git"
65
65
  },
66
66
  "sideEffects": false,
67
- "version": "2.84.3",
67
+ "version": "2.84.4",
68
68
  "type": "module"
69
69
  }
package/src/Witness.ts CHANGED
@@ -2,22 +2,13 @@ import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
3
  import { hexFromBigInt } from '@xylabs/hex'
4
4
  import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
5
- import { AbstractBlockchainWitness } from '@xyo-network/witness-blockchain-abstract'
5
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'
6
6
  import { Contract, EventLog } from 'ethers'
7
7
 
8
8
  import { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model'
9
9
  import { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload'
10
10
 
11
- const bigIntArrayToHexString = (items: unknown[]) => {
12
- return items.map((item) => {
13
- if (typeof item === 'bigint') {
14
- return hexFromBigInt(item)
15
- }
16
- return item
17
- })
18
- }
19
-
20
- export class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractBlockchainWitness<
11
+ export class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<
21
12
  TParams,
22
13
  EvmEvents,
23
14
  EvmEvent
@@ -44,7 +35,7 @@ export class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEvents
44
35
  const provider = await this.getProvider(true, true)
45
36
  const network = await provider.getNetwork()
46
37
 
47
- const contract = new Contract(validatedAddress, this.abi, provider)
38
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)
48
39
 
49
40
  const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, 'Abi is not an array')
50
41
 
@@ -53,12 +44,13 @@ export class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEvents
53
44
  'Could not find event',
54
45
  )
55
46
 
56
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? contract.deploymentTransaction()?.blockNumber ?? undefined
57
47
  const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())
48
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0
58
49
 
59
- const rawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)
50
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)
51
+ //console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)
60
52
 
61
- const observation = rawEvents
53
+ const observation = allRawEvents
62
54
  .map((rawLog) => {
63
55
  const rawEvent = rawLog as EventLog
64
56
  if (rawEvent.args) {
@@ -86,7 +78,6 @@ export class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEvents
86
78
  })
87
79
  .filter(exists)
88
80
 
89
- console.log(`observation: ${JSON.stringify(observation, null, 2)}`)
90
81
  return observation
91
82
  }),
92
83
  )
package/src/model.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract'
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 EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'
7
7
  export type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema
8
8
 
9
- export type EvmEventsWitnessConfig = BlockchainWitnessConfig<
9
+ export type EvmEventsWitnessConfig = EvmWitnessConfig<
10
10
  {
11
11
  abi?: Abi
12
12
  address?: string
@@ -17,4 +17,4 @@ export type EvmEventsWitnessConfig = BlockchainWitnessConfig<
17
17
  EvmEventsWitnessConfigSchema
18
18
  >
19
19
 
20
- export type EvmEventsWitnessParams = BlockchainWitnessParams<EvmEventsWitnessConfig>
20
+ export type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>