@xyo-network/crypto-contract-function-read-plugin 2.77.18 → 2.77.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/browser/CryptoContractDiviner.d.cts +11 -9
  2. package/dist/browser/CryptoContractDiviner.d.cts.map +1 -1
  3. package/dist/browser/CryptoContractDiviner.d.mts +11 -9
  4. package/dist/browser/CryptoContractDiviner.d.mts.map +1 -1
  5. package/dist/browser/CryptoContractDiviner.d.ts +11 -9
  6. package/dist/browser/CryptoContractDiviner.d.ts.map +1 -1
  7. package/dist/browser/Witness.d.cts.map +1 -1
  8. package/dist/browser/Witness.d.mts.map +1 -1
  9. package/dist/browser/Witness.d.ts.map +1 -1
  10. package/dist/browser/index.cjs +14 -41
  11. package/dist/browser/index.cjs.map +1 -1
  12. package/dist/browser/index.d.cts +0 -2
  13. package/dist/browser/index.d.cts.map +1 -1
  14. package/dist/browser/index.d.mts +0 -2
  15. package/dist/browser/index.d.mts.map +1 -1
  16. package/dist/browser/index.d.ts +0 -2
  17. package/dist/browser/index.d.ts.map +1 -1
  18. package/dist/browser/index.js +14 -41
  19. package/dist/browser/index.js.map +1 -1
  20. package/dist/node/CryptoContractDiviner.d.cts +11 -9
  21. package/dist/node/CryptoContractDiviner.d.cts.map +1 -1
  22. package/dist/node/CryptoContractDiviner.d.mts +11 -9
  23. package/dist/node/CryptoContractDiviner.d.mts.map +1 -1
  24. package/dist/node/CryptoContractDiviner.d.ts +11 -9
  25. package/dist/node/CryptoContractDiviner.d.ts.map +1 -1
  26. package/dist/node/Witness.d.cts.map +1 -1
  27. package/dist/node/Witness.d.mts.map +1 -1
  28. package/dist/node/Witness.d.ts.map +1 -1
  29. package/dist/node/index.d.cts +0 -2
  30. package/dist/node/index.d.cts.map +1 -1
  31. package/dist/node/index.d.mts +0 -2
  32. package/dist/node/index.d.mts.map +1 -1
  33. package/dist/node/index.d.ts +0 -2
  34. package/dist/node/index.d.ts.map +1 -1
  35. package/dist/node/index.js +15 -48
  36. package/dist/node/index.js.map +1 -1
  37. package/dist/node/index.mjs +14 -41
  38. package/dist/node/index.mjs.map +1 -1
  39. package/package.json +14 -14
  40. package/src/CryptoContractDiviner.ts +26 -28
  41. package/src/Erc721Sentinel.json +85 -3
  42. package/src/Witness.ts +4 -1
  43. package/src/index.ts +0 -2
  44. package/dist/browser/Erc1155Diviner.d.cts +0 -17
  45. package/dist/browser/Erc1155Diviner.d.cts.map +0 -1
  46. package/dist/browser/Erc1155Diviner.d.mts +0 -17
  47. package/dist/browser/Erc1155Diviner.d.mts.map +0 -1
  48. package/dist/browser/Erc1155Diviner.d.ts +0 -17
  49. package/dist/browser/Erc1155Diviner.d.ts.map +0 -1
  50. package/dist/browser/Erc721Diviner.d.cts +0 -19
  51. package/dist/browser/Erc721Diviner.d.cts.map +0 -1
  52. package/dist/browser/Erc721Diviner.d.mts +0 -19
  53. package/dist/browser/Erc721Diviner.d.mts.map +0 -1
  54. package/dist/browser/Erc721Diviner.d.ts +0 -19
  55. package/dist/browser/Erc721Diviner.d.ts.map +0 -1
  56. package/dist/node/Erc1155Diviner.d.cts +0 -17
  57. package/dist/node/Erc1155Diviner.d.cts.map +0 -1
  58. package/dist/node/Erc1155Diviner.d.mts +0 -17
  59. package/dist/node/Erc1155Diviner.d.mts.map +0 -1
  60. package/dist/node/Erc1155Diviner.d.ts +0 -17
  61. package/dist/node/Erc1155Diviner.d.ts.map +0 -1
  62. package/dist/node/Erc721Diviner.d.cts +0 -19
  63. package/dist/node/Erc721Diviner.d.cts.map +0 -1
  64. package/dist/node/Erc721Diviner.d.mts +0 -19
  65. package/dist/node/Erc721Diviner.d.mts.map +0 -1
  66. package/dist/node/Erc721Diviner.d.ts +0 -19
  67. package/dist/node/Erc721Diviner.d.ts.map +0 -1
  68. package/src/Erc1155Diviner.ts +0 -37
  69. package/src/Erc721Diviner.ts +0 -43
@@ -1,27 +1,29 @@
1
1
  import { Promisable } from '@xylabs/promise';
2
2
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
- import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
3
+ import { ContractFunctionResult, CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
4
4
  import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
5
  import { Payload } from '@xyo-network/payload-model';
6
6
  export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
7
7
  export declare const CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
8
8
  export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema;
9
- export type CryptoContractDivinerConfig = DivinerConfig;
9
+ export type CryptoContractDivinerConfig = DivinerConfig<{
10
+ schema: CryptoContractDivinerConfigSchema;
11
+ }>;
10
12
  export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>;
11
13
  export declare const ContractInfoSchema = "network.xyo.crypto.contract.info";
12
14
  export type ContractInfoSchema = typeof ContractInfoSchema;
13
- export type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>, 'address' | 'chainId'>;
14
- export type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<TFields extends null ? object : TFields & {
15
+ export type ContractInfo = Payload<{
15
16
  address: string;
16
17
  chainId: string;
17
- }, TSchema>;
18
- export declare abstract class CryptoContractDiviner<TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo, TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
18
+ results?: Record<string, ContractFunctionResult>;
19
+ }, ContractInfoSchema>;
20
+ export declare class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
19
21
  static configSchemas: string[];
20
22
  protected static findCallResult<TResult = string>(address: string, functionName: string, params: unknown[], payloads: CryptoContractFunctionCallResult[]): Promise<TResult | undefined>;
21
23
  protected static generateCallHash(address: string, functionName: string, params: unknown[]): Promise<string>;
22
24
  protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
23
- protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>>;
24
- protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<TContractInfo[]>;
25
- protected abstract reduceResults(address: string, callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>;
25
+ protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo;
26
+ protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<ContractInfo[]>;
27
+ protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']>;
26
28
  }
27
29
  //# sourceMappingURL=CryptoContractDiviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,sBAAsB,EAEtB,gCAAgC,EAGjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE3E,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,iCAAiC,+CAA+C,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,OAAO,iCAAiC,CAAA;AAExF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC;IACtD,MAAM,EAAE,iCAAiC,CAAA;CAC1C,CAAC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,qCAAqC,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,MAAM,YAAY,GAAG,OAAO,CAChC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CACjD,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;qBAE5C,cAAc,CAAC,OAAO,GAAG,MAAM,EACpD,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;qBAMR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAUhG,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAQzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,YAAY;cAQ1E,aAAa,CAAC,UAAU,GAAE,gCAAgC,EAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBpH,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CAM9G"}
@@ -1,27 +1,29 @@
1
1
  import { Promisable } from '@xylabs/promise';
2
2
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
- import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
3
+ import { ContractFunctionResult, CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
4
4
  import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
5
  import { Payload } from '@xyo-network/payload-model';
6
6
  export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
7
7
  export declare const CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
8
8
  export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema;
9
- export type CryptoContractDivinerConfig = DivinerConfig;
9
+ export type CryptoContractDivinerConfig = DivinerConfig<{
10
+ schema: CryptoContractDivinerConfigSchema;
11
+ }>;
10
12
  export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>;
11
13
  export declare const ContractInfoSchema = "network.xyo.crypto.contract.info";
12
14
  export type ContractInfoSchema = typeof ContractInfoSchema;
13
- export type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>, 'address' | 'chainId'>;
14
- export type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<TFields extends null ? object : TFields & {
15
+ export type ContractInfo = Payload<{
15
16
  address: string;
16
17
  chainId: string;
17
- }, TSchema>;
18
- export declare abstract class CryptoContractDiviner<TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo, TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
18
+ results?: Record<string, ContractFunctionResult>;
19
+ }, ContractInfoSchema>;
20
+ export declare class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
19
21
  static configSchemas: string[];
20
22
  protected static findCallResult<TResult = string>(address: string, functionName: string, params: unknown[], payloads: CryptoContractFunctionCallResult[]): Promise<TResult | undefined>;
21
23
  protected static generateCallHash(address: string, functionName: string, params: unknown[]): Promise<string>;
22
24
  protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
23
- protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>>;
24
- protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<TContractInfo[]>;
25
- protected abstract reduceResults(address: string, callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>;
25
+ protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo;
26
+ protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<ContractInfo[]>;
27
+ protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']>;
26
28
  }
27
29
  //# sourceMappingURL=CryptoContractDiviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,sBAAsB,EAEtB,gCAAgC,EAGjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE3E,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,iCAAiC,+CAA+C,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,OAAO,iCAAiC,CAAA;AAExF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC;IACtD,MAAM,EAAE,iCAAiC,CAAA;CAC1C,CAAC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,qCAAqC,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,MAAM,YAAY,GAAG,OAAO,CAChC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CACjD,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;qBAE5C,cAAc,CAAC,OAAO,GAAG,MAAM,EACpD,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;qBAMR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAUhG,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAQzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,YAAY;cAQ1E,aAAa,CAAC,UAAU,GAAE,gCAAgC,EAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBpH,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CAM9G"}
@@ -1,27 +1,29 @@
1
1
  import { Promisable } from '@xylabs/promise';
2
2
  import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
- import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
3
+ import { ContractFunctionResult, CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
4
4
  import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
5
  import { Payload } from '@xyo-network/payload-model';
6
6
  export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
7
7
  export declare const CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
8
8
  export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema;
9
- export type CryptoContractDivinerConfig = DivinerConfig;
9
+ export type CryptoContractDivinerConfig = DivinerConfig<{
10
+ schema: CryptoContractDivinerConfigSchema;
11
+ }>;
10
12
  export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>;
11
13
  export declare const ContractInfoSchema = "network.xyo.crypto.contract.info";
12
14
  export type ContractInfoSchema = typeof ContractInfoSchema;
13
- export type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>, 'address' | 'chainId'>;
14
- export type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<TFields extends null ? object : TFields & {
15
+ export type ContractInfo = Payload<{
15
16
  address: string;
16
17
  chainId: string;
17
- }, TSchema>;
18
- export declare abstract class CryptoContractDiviner<TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo, TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
18
+ results?: Record<string, ContractFunctionResult>;
19
+ }, ContractInfoSchema>;
20
+ export declare class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
19
21
  static configSchemas: string[];
20
22
  protected static findCallResult<TResult = string>(address: string, functionName: string, params: unknown[], payloads: CryptoContractFunctionCallResult[]): Promise<TResult | undefined>;
21
23
  protected static generateCallHash(address: string, functionName: string, params: unknown[]): Promise<string>;
22
24
  protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
23
- protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>>;
24
- protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<TContractInfo[]>;
25
- protected abstract reduceResults(address: string, callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>;
25
+ protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo;
26
+ protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<ContractInfo[]>;
27
+ protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']>;
26
28
  }
27
29
  //# sourceMappingURL=CryptoContractDiviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptoContractDiviner.d.ts","sourceRoot":"","sources":["../../src/CryptoContractDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,sBAAsB,EAEtB,gCAAgC,EAGjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE3E,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,iCAAiC,+CAA+C,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,OAAO,iCAAiC,CAAA;AAExF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC;IACtD,MAAM,EAAE,iCAAiC,CAAA;CAC1C,CAAC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,qCAAqC,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,MAAM,YAAY,GAAG,OAAO,CAChC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CACjD,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;qBAE5C,cAAc,CAAC,OAAO,GAAG,MAAM,EACpD,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;qBAMR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAUhG,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAQzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,YAAY;cAQ1E,aAAa,CAAC,UAAU,GAAE,gCAAgC,EAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBpH,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CAM9G"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAmC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAmC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAmC/C"}
@@ -1,7 +1,5 @@
1
1
  import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
2
2
  export * from './CryptoContractDiviner';
3
- export * from './Erc721Diviner';
4
- export * from './Erc1155Diviner';
5
3
  export * from './Witness';
6
4
  export { CryptoContractFunctionReadWitnessPlugin };
7
5
  export default CryptoContractFunctionReadWitnessPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
@@ -1,7 +1,5 @@
1
1
  import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
2
2
  export * from './CryptoContractDiviner';
3
- export * from './Erc721Diviner';
4
- export * from './Erc1155Diviner';
5
3
  export * from './Witness';
6
4
  export { CryptoContractFunctionReadWitnessPlugin };
7
5
  export default CryptoContractFunctionReadWitnessPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
@@ -1,7 +1,5 @@
1
1
  import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
2
2
  export * from './CryptoContractDiviner';
3
- export * from './Erc721Diviner';
4
- export * from './Erc1155Diviner';
5
3
  export * from './Witness';
6
4
  export { CryptoContractFunctionReadWitnessPlugin };
7
5
  export default CryptoContractFunctionReadWitnessPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,yBAAyB,CAAA;AACvC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
@@ -23,14 +23,8 @@ __export(src_exports, {
23
23
  ContractInfoSchema: () => ContractInfoSchema,
24
24
  CryptoContractDiviner: () => CryptoContractDiviner,
25
25
  CryptoContractDivinerConfigSchema: () => CryptoContractDivinerConfigSchema,
26
- CryptoContractErc1155Diviner: () => CryptoContractErc1155Diviner,
27
- CryptoContractErc1155DivinerConfigSchema: () => CryptoContractErc1155DivinerConfigSchema,
28
- CryptoContractErc721Diviner: () => CryptoContractErc721Diviner,
29
- CryptoContractErc721DivinerConfigSchema: () => CryptoContractErc721DivinerConfigSchema,
30
26
  CryptoContractFunctionReadWitness: () => CryptoContractFunctionReadWitness,
31
27
  CryptoContractFunctionReadWitnessPlugin: () => CryptoContractFunctionReadWitnessPlugin,
32
- Erc1155ContractInfoSchema: () => Erc1155ContractInfoSchema,
33
- Erc721ContractInfoSchema: () => Erc721ContractInfoSchema,
34
28
  default: () => src_default
35
29
  });
36
30
  module.exports = __toCommonJS(src_exports);
@@ -57,14 +51,17 @@ var CryptoContractFunctionReadWitness = class extends import_abstract_witness.Ab
57
51
  const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
58
52
  const { address, functionName, params } = fullCallPayload;
59
53
  const validatedAddress = (0, import_assert.assertEx)(address, "Missing address");
54
+ const validatedFunctionName = (0, import_assert.assertEx)(functionName, "Missing functionName");
60
55
  const contract = this.params.factory(validatedAddress);
61
- const func = (0, import_assert.assertEx)(contract.callStatic[(0, import_assert.assertEx)(functionName, "missing functionName")], `functionName [${functionName}] not found`);
56
+ const func = (0, import_assert.assertEx)(contract.callStatic[validatedFunctionName], `functionName [${validatedFunctionName}] not found`);
62
57
  const rawResult = await func(...params ?? []);
63
58
  const result = import_ethers.BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
64
59
  const observation = {
65
60
  address: validatedAddress,
66
61
  call: await import_hash.PayloadHasher.hashAsync(fullCallPayload),
67
62
  chainId: (await contract.provider.getNetwork()).chainId,
63
+ functionName: validatedFunctionName,
64
+ params,
68
65
  result,
69
66
  schema: import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema
70
67
  };
@@ -126,7 +123,8 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends import_abstract
126
123
  contractInfoRequiredFields(callResults) {
127
124
  return {
128
125
  address: (0, import_assert2.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "address"), "Mismatched address"),
129
- chainId: (0, import_assert2.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId")
126
+ chainId: (0, import_assert2.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId"),
127
+ schema: ContractInfoSchema
130
128
  };
131
129
  }
132
130
  async divineHandler(inPayloads = []) {
@@ -142,45 +140,20 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends import_abstract
142
140
  const result = await Promise.all(
143
141
  addresses.map(async (address) => {
144
142
  const foundCallResults = callResults.filter((callResult) => callResult.address === address);
145
- return {
146
- ...await this.reduceResults(address, foundCallResults),
143
+ const info = {
144
+ ...{ results: await this.reduceResults(foundCallResults) },
147
145
  ...this.contractInfoRequiredFields(foundCallResults)
148
146
  };
147
+ return info;
149
148
  })
150
149
  );
151
150
  return result;
152
151
  }
153
- };
154
-
155
- // src/Erc721Diviner.ts
156
- var CryptoContractErc721DivinerConfigSchema = "network.xyo.crypto.contract.erc721.info.diviner.config";
157
- var Erc721ContractInfoSchema = "network.xyo.crypto.contract.erc721.info";
158
- var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends CryptoContractDiviner {
159
- static configSchemas = [CryptoContractErc721DivinerConfigSchema];
160
- async reduceResults(address, callResults) {
161
- const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
162
- const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
163
- const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
164
- return {
165
- name,
166
- schema: Erc721ContractInfoSchema,
167
- symbol,
168
- totalSupply
169
- };
170
- }
171
- };
172
-
173
- // src/Erc1155Diviner.ts
174
- var CryptoContractErc1155DivinerConfigSchema = "network.xyo.crypto.contract.erc1155.info.diviner.config";
175
- var Erc1155ContractInfoSchema = "network.xyo.crypto.contract.erc1155.info";
176
- var CryptoContractErc1155Diviner = class _CryptoContractErc1155Diviner extends CryptoContractDiviner {
177
- static configSchemas = [CryptoContractErc1155DivinerConfigSchema];
178
- async reduceResults(address, callResults) {
179
- const uri = await _CryptoContractErc1155Diviner.findCallResult(address, "uri", [], callResults);
180
- return {
181
- schema: Erc1155ContractInfoSchema,
182
- uri
183
- };
152
+ reduceResults(callResults) {
153
+ return callResults.reduce((prev, callResult) => {
154
+ prev[callResult.functionName] = callResult.result;
155
+ return prev;
156
+ }, {});
184
157
  }
185
158
  };
186
159
 
@@ -191,13 +164,7 @@ var src_default = CryptoContractFunctionReadWitnessPlugin;
191
164
  ContractInfoSchema,
192
165
  CryptoContractDiviner,
193
166
  CryptoContractDivinerConfigSchema,
194
- CryptoContractErc1155Diviner,
195
- CryptoContractErc1155DivinerConfigSchema,
196
- CryptoContractErc721Diviner,
197
- CryptoContractErc721DivinerConfigSchema,
198
167
  CryptoContractFunctionReadWitness,
199
- CryptoContractFunctionReadWitnessPlugin,
200
- Erc1155ContractInfoSchema,
201
- Erc721ContractInfoSchema
168
+ CryptoContractFunctionReadWitnessPlugin
202
169
  });
203
170
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const validatedFunctionName = assertEx(functionName, 'Missing functionName')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[validatedFunctionName], `functionName [${validatedFunctionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n functionName: validatedFunctionName,\n params,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n ContractFunctionResult,\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig<{\n schema: CryptoContractDivinerConfigSchema\n}>\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type ContractInfo = Payload<\n {\n address: string\n chainId: string\n results?: Record<string, ContractFunctionResult>\n },\n ContractInfoSchema\n>\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const info: ContractInfo = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n return callResults.reduce<Record<string, ContractFunctionResult>>((prev, callResult) => {\n prev[callResult.functionName] = callResult.result\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
@@ -24,14 +24,17 @@ var CryptoContractFunctionReadWitness = class extends AbstractWitness {
24
24
  const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
25
25
  const { address, functionName, params } = fullCallPayload;
26
26
  const validatedAddress = assertEx(address, "Missing address");
27
+ const validatedFunctionName = assertEx(functionName, "Missing functionName");
27
28
  const contract = this.params.factory(validatedAddress);
28
- const func = assertEx(contract.callStatic[assertEx(functionName, "missing functionName")], `functionName [${functionName}] not found`);
29
+ const func = assertEx(contract.callStatic[validatedFunctionName], `functionName [${validatedFunctionName}] not found`);
29
30
  const rawResult = await func(...params ?? []);
30
31
  const result = BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
31
32
  const observation = {
32
33
  address: validatedAddress,
33
34
  call: await PayloadHasher.hashAsync(fullCallPayload),
34
35
  chainId: (await contract.provider.getNetwork()).chainId,
36
+ functionName: validatedFunctionName,
37
+ params,
35
38
  result,
36
39
  schema: CryptoContractFunctionCallResultSchema
37
40
  };
@@ -96,7 +99,8 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner
96
99
  contractInfoRequiredFields(callResults) {
97
100
  return {
98
101
  address: assertEx2(_CryptoContractDiviner.matchingExistingField(callResults, "address"), "Mismatched address"),
99
- chainId: assertEx2(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId")
102
+ chainId: assertEx2(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId"),
103
+ schema: ContractInfoSchema
100
104
  };
101
105
  }
102
106
  async divineHandler(inPayloads = []) {
@@ -112,45 +116,20 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner
112
116
  const result = await Promise.all(
113
117
  addresses.map(async (address) => {
114
118
  const foundCallResults = callResults.filter((callResult) => callResult.address === address);
115
- return {
116
- ...await this.reduceResults(address, foundCallResults),
119
+ const info = {
120
+ ...{ results: await this.reduceResults(foundCallResults) },
117
121
  ...this.contractInfoRequiredFields(foundCallResults)
118
122
  };
123
+ return info;
119
124
  })
120
125
  );
121
126
  return result;
122
127
  }
123
- };
124
-
125
- // src/Erc721Diviner.ts
126
- var CryptoContractErc721DivinerConfigSchema = "network.xyo.crypto.contract.erc721.info.diviner.config";
127
- var Erc721ContractInfoSchema = "network.xyo.crypto.contract.erc721.info";
128
- var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends CryptoContractDiviner {
129
- static configSchemas = [CryptoContractErc721DivinerConfigSchema];
130
- async reduceResults(address, callResults) {
131
- const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
132
- const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
133
- const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
134
- return {
135
- name,
136
- schema: Erc721ContractInfoSchema,
137
- symbol,
138
- totalSupply
139
- };
140
- }
141
- };
142
-
143
- // src/Erc1155Diviner.ts
144
- var CryptoContractErc1155DivinerConfigSchema = "network.xyo.crypto.contract.erc1155.info.diviner.config";
145
- var Erc1155ContractInfoSchema = "network.xyo.crypto.contract.erc1155.info";
146
- var CryptoContractErc1155Diviner = class _CryptoContractErc1155Diviner extends CryptoContractDiviner {
147
- static configSchemas = [CryptoContractErc1155DivinerConfigSchema];
148
- async reduceResults(address, callResults) {
149
- const uri = await _CryptoContractErc1155Diviner.findCallResult(address, "uri", [], callResults);
150
- return {
151
- schema: Erc1155ContractInfoSchema,
152
- uri
153
- };
128
+ reduceResults(callResults) {
129
+ return callResults.reduce((prev, callResult) => {
130
+ prev[callResult.functionName] = callResult.result;
131
+ return prev;
132
+ }, {});
154
133
  }
155
134
  };
156
135
 
@@ -160,14 +139,8 @@ export {
160
139
  ContractInfoSchema,
161
140
  CryptoContractDiviner,
162
141
  CryptoContractDivinerConfigSchema,
163
- CryptoContractErc1155Diviner,
164
- CryptoContractErc1155DivinerConfigSchema,
165
- CryptoContractErc721Diviner,
166
- CryptoContractErc721DivinerConfigSchema,
167
142
  CryptoContractFunctionReadWitness,
168
143
  CryptoContractFunctionReadWitnessPlugin,
169
- Erc1155ContractInfoSchema,
170
- Erc721ContractInfoSchema,
171
144
  src_default as default
172
145
  };
173
146
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}
1
+ {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const validatedFunctionName = assertEx(functionName, 'Missing functionName')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[validatedFunctionName], `functionName [${validatedFunctionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n functionName: validatedFunctionName,\n params,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n ContractFunctionResult,\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig<{\n schema: CryptoContractDivinerConfigSchema\n}>\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type ContractInfo = Payload<\n {\n address: string\n chainId: string\n results?: Record<string, ContractFunctionResult>\n },\n ContractInfoSchema\n>\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n const info: ContractInfo = {\n ...{ results: await this.reduceResults(foundCallResults) },\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n return callResults.reduce<Record<string, ContractFunctionResult>>((prev, callResult) => {\n prev[callResult.functionName] = callResult.result\n return prev\n }, {})\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}