@xyo-network/crypto-contract-function-read-plugin 2.83.0 → 2.84.1

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 (100) hide show
  1. package/dist/browser/{CryptoContractDiviner.d.cts → Diviner/Diviner.d.cts} +3 -16
  2. package/dist/browser/Diviner/Diviner.d.cts.map +1 -0
  3. package/dist/browser/{CryptoContractDiviner.d.ts → Diviner/Diviner.d.mts} +3 -16
  4. package/dist/browser/Diviner/Diviner.d.mts.map +1 -0
  5. package/dist/browser/{CryptoContractDiviner.d.mts → Diviner/Diviner.d.ts} +3 -16
  6. package/dist/browser/Diviner/Diviner.d.ts.map +1 -0
  7. package/dist/browser/Diviner/index.d.cts +1 -1
  8. package/dist/browser/Diviner/index.d.cts.map +1 -1
  9. package/dist/browser/Diviner/index.d.mts +1 -1
  10. package/dist/browser/Diviner/index.d.mts.map +1 -1
  11. package/dist/browser/Diviner/index.d.ts +1 -1
  12. package/dist/browser/Diviner/index.d.ts.map +1 -1
  13. package/dist/browser/Plugin.d.cts +611 -5
  14. package/dist/browser/Plugin.d.cts.map +1 -1
  15. package/dist/browser/Plugin.d.mts +611 -5
  16. package/dist/browser/Plugin.d.mts.map +1 -1
  17. package/dist/browser/Plugin.d.ts +611 -5
  18. package/dist/browser/Plugin.d.ts.map +1 -1
  19. package/dist/browser/index.cjs +4 -7
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.d.cts +1 -1
  22. package/dist/browser/index.d.cts.map +1 -1
  23. package/dist/browser/index.d.mts +1 -1
  24. package/dist/browser/index.d.mts.map +1 -1
  25. package/dist/browser/index.d.ts +1 -1
  26. package/dist/browser/index.d.ts.map +1 -1
  27. package/dist/browser/index.js +5 -5
  28. package/dist/browser/index.js.map +1 -1
  29. package/dist/node/{CryptoContractDiviner.d.cts → Diviner/Diviner.d.cts} +3 -16
  30. package/dist/node/Diviner/Diviner.d.cts.map +1 -0
  31. package/dist/node/Diviner/Diviner.d.mts +15 -0
  32. package/dist/node/Diviner/Diviner.d.mts.map +1 -0
  33. package/dist/node/Diviner/Diviner.d.ts +15 -0
  34. package/dist/node/Diviner/Diviner.d.ts.map +1 -0
  35. package/dist/node/Diviner/index.d.cts +1 -1
  36. package/dist/node/Diviner/index.d.cts.map +1 -1
  37. package/dist/node/Diviner/index.d.mts +1 -1
  38. package/dist/node/Diviner/index.d.mts.map +1 -1
  39. package/dist/node/Diviner/index.d.ts +1 -1
  40. package/dist/node/Diviner/index.d.ts.map +1 -1
  41. package/dist/node/Plugin.d.cts +611 -5
  42. package/dist/node/Plugin.d.cts.map +1 -1
  43. package/dist/node/Plugin.d.mts +611 -5
  44. package/dist/node/Plugin.d.mts.map +1 -1
  45. package/dist/node/Plugin.d.ts +611 -5
  46. package/dist/node/Plugin.d.ts.map +1 -1
  47. package/dist/node/index.cjs +171 -0
  48. package/dist/node/index.cjs.map +1 -0
  49. package/dist/node/index.d.cts +1 -1
  50. package/dist/node/index.d.cts.map +1 -1
  51. package/dist/node/index.d.mts +1 -1
  52. package/dist/node/index.d.mts.map +1 -1
  53. package/dist/node/index.d.ts +1 -1
  54. package/dist/node/index.d.ts.map +1 -1
  55. package/dist/node/index.js +45 -69
  56. package/dist/node/index.js.map +1 -1
  57. package/package.json +30 -23
  58. package/src/{CryptoContractDiviner.ts → Diviner/Diviner.ts} +6 -21
  59. package/src/Diviner/index.ts +1 -1
  60. package/src/index.ts +1 -1
  61. package/src/spec/Contract.Sentinel.Erc1155.Index.json +191 -0
  62. package/src/spec/Contract.Sentinel.Erc721.Index.json +191 -0
  63. package/src/spec/Contract.Sentinel.Node.json +233 -0
  64. package/dist/browser/CryptoContractDiviner.d.cts.map +0 -1
  65. package/dist/browser/CryptoContractDiviner.d.mts.map +0 -1
  66. package/dist/browser/CryptoContractDiviner.d.ts.map +0 -1
  67. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.cts +0 -6
  68. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.cts.map +0 -1
  69. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.mts +0 -6
  70. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.mts.map +0 -1
  71. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.ts +0 -6
  72. package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.ts.map +0 -1
  73. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.cts +0 -19
  74. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.cts.map +0 -1
  75. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.mts +0 -19
  76. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.mts.map +0 -1
  77. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.ts +0 -19
  78. package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.ts.map +0 -1
  79. package/dist/node/CryptoContractDiviner.d.cts.map +0 -1
  80. package/dist/node/CryptoContractDiviner.d.mts +0 -28
  81. package/dist/node/CryptoContractDiviner.d.mts.map +0 -1
  82. package/dist/node/CryptoContractDiviner.d.ts +0 -28
  83. package/dist/node/CryptoContractDiviner.d.ts.map +0 -1
  84. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.cts +0 -6
  85. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.cts.map +0 -1
  86. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.mts +0 -6
  87. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.mts.map +0 -1
  88. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.ts +0 -6
  89. package/dist/node/Diviner/CryptoContractIndexingDiviner.d.ts.map +0 -1
  90. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.cts +0 -19
  91. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.cts.map +0 -1
  92. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.mts +0 -19
  93. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.mts.map +0 -1
  94. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.ts +0 -19
  95. package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.ts.map +0 -1
  96. package/dist/node/index.mjs +0 -152
  97. package/dist/node/index.mjs.map +0 -1
  98. package/src/Diviner/CryptoContractIndexingDiviner.ts +0 -7
  99. package/src/Diviner/CryptoContractIndexingDivinerLabels.ts +0 -26
  100. /package/src/{Erc721Sentinel.json → spec/Erc721Sentinel.json} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDiviner.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAA;AAE3F,qBAAa,6BAA8B,SAAQ,eAAe;IAChE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAsC;CACzF"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1 +0,0 @@
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,EAEL,gCAAgC,EAEjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,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,OAAO,CAAC,CAAA;CAClC,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;IAEnE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,GAAG,SAAS;IAKtB,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,28 +0,0 @@
1
- import { Promisable } from '@xylabs/promise';
2
- import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
- import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
4
- import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
- import { Payload } from '@xyo-network/payload-model';
6
- export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
7
- export declare const CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
8
- export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema;
9
- export type CryptoContractDivinerConfig = DivinerConfig<{
10
- schema: CryptoContractDivinerConfigSchema;
11
- }>;
12
- export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>;
13
- export declare const ContractInfoSchema = "network.xyo.crypto.contract.info";
14
- export type ContractInfoSchema = typeof ContractInfoSchema;
15
- export type ContractInfo = Payload<{
16
- address: string;
17
- chainId: string;
18
- results?: Record<string, unknown>;
19
- }, ContractInfoSchema>;
20
- export declare class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
21
- static configSchemas: string[];
22
- protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: CryptoContractFunctionCallResult[]): TResult | undefined;
23
- protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
24
- protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo;
25
- protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<ContractInfo[]>;
26
- protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']>;
27
- }
28
- //# sourceMappingURL=CryptoContractDiviner.d.ts.map
@@ -1 +0,0 @@
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,EAEL,gCAAgC,EAEjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,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,OAAO,CAAC,CAAA;CAClC,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;IAEnE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,GAAG,SAAS;IAKtB,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,28 +0,0 @@
1
- import { Promisable } from '@xylabs/promise';
2
- import { AbstractDiviner } from '@xyo-network/abstract-diviner';
3
- import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin';
4
- import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
5
- import { Payload } from '@xyo-network/payload-model';
6
- export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
7
- export declare const CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
8
- export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema;
9
- export type CryptoContractDivinerConfig = DivinerConfig<{
10
- schema: CryptoContractDivinerConfigSchema;
11
- }>;
12
- export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>;
13
- export declare const ContractInfoSchema = "network.xyo.crypto.contract.info";
14
- export type ContractInfoSchema = typeof ContractInfoSchema;
15
- export type ContractInfo = Payload<{
16
- address: string;
17
- chainId: string;
18
- results?: Record<string, unknown>;
19
- }, ContractInfoSchema>;
20
- export declare class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
21
- static configSchemas: string[];
22
- protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: CryptoContractFunctionCallResult[]): TResult | undefined;
23
- protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
24
- protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo;
25
- protected divineHandler(inPayloads?: CryptoContractFunctionCallResult[]): Promise<ContractInfo[]>;
26
- protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']>;
27
- }
28
- //# sourceMappingURL=CryptoContractDiviner.d.ts.map
@@ -1 +0,0 @@
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,EAEL,gCAAgC,EAEjC,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,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,OAAO,CAAC,CAAA;CAClC,EACD,kBAAkB,CACnB,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,WAAsC;IAEnE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gCAAgC,EAAE,GAC3C,OAAO,GAAG,SAAS;IAKtB,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,6 +0,0 @@
1
- import { IndexingDiviner } from '@xyo-network/diviner-indexing';
2
- import { CryptoContractIndexingDivinerLabels } from './CryptoContractIndexingDivinerLabels';
3
- export declare class CryptoContractIndexingDiviner extends IndexingDiviner {
4
- static labels: CryptoContractIndexingDivinerLabels;
5
- }
6
- //# sourceMappingURL=CryptoContractIndexingDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDiviner.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAA;AAE3F,qBAAa,6BAA8B,SAAQ,eAAe;IAChE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAsC;CACzF"}
@@ -1,6 +0,0 @@
1
- import { IndexingDiviner } from '@xyo-network/diviner-indexing';
2
- import { CryptoContractIndexingDivinerLabels } from './CryptoContractIndexingDivinerLabels';
3
- export declare class CryptoContractIndexingDiviner extends IndexingDiviner {
4
- static labels: CryptoContractIndexingDivinerLabels;
5
- }
6
- //# sourceMappingURL=CryptoContractIndexingDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDiviner.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAA;AAE3F,qBAAa,6BAA8B,SAAQ,eAAe;IAChE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAsC;CACzF"}
@@ -1,6 +0,0 @@
1
- import { IndexingDiviner } from '@xyo-network/diviner-indexing';
2
- import { CryptoContractIndexingDivinerLabels } from './CryptoContractIndexingDivinerLabels';
3
- export declare class CryptoContractIndexingDiviner extends IndexingDiviner {
4
- static labels: CryptoContractIndexingDivinerLabels;
5
- }
6
- //# sourceMappingURL=CryptoContractIndexingDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDiviner.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAA;AAE3F,qBAAa,6BAA8B,SAAQ,eAAe;IAChE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAsC;CACzF"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1,19 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing';
2
- import { Labels } from '@xyo-network/module-model';
3
- /**
4
- * Labels for Image Thumbnail Diviner components
5
- */
6
- export interface CryptoContractIndexingDivinerLabels extends Labels {
7
- 'network.xyo.crypto.contract.info': 'diviner';
8
- }
9
- /**
10
- * Labels for Image Thumbnail Diviner components
11
- */
12
- export declare const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels;
13
- /**
14
- * Labels for Image Thumbnail Diviner Stage Diviners
15
- */
16
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
17
- [key in DivinerStageSchema]: IndexingDivinerStage;
18
- };
19
- //# sourceMappingURL=CryptoContractIndexingDivinerLabels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoContractIndexingDivinerLabels.d.ts","sourceRoot":"","sources":["../../../src/Diviner/CryptoContractIndexingDivinerLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,MAAM;IACjE,kCAAkC,EAAE,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,mCAEjD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG,mCAAmC,GAAG;KAI1F,GAAG,IAAI,kBAAkB,GAAG,oBAAoB;CAClD,CAAA"}
@@ -1,152 +0,0 @@
1
- // src/Plugin.ts
2
- import { NftSchema } from "@xyo-network/crypto-nft-payload-plugin";
3
- import { PayloadSetSchema } from "@xyo-network/payload-model";
4
- import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
5
-
6
- // src/Witness.ts
7
- import { assertEx } from "@xylabs/assert";
8
- import { AbstractWitness } from "@xyo-network/abstract-witness";
9
- import {
10
- CryptoContractFunctionCallResultSchema,
11
- CryptoContractFunctionCallSchema,
12
- CryptoContractFunctionReadWitnessConfigSchema
13
- } from "@xyo-network/crypto-contract-function-read-payload-plugin";
14
- import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
15
- import { Contract } from "ethers";
16
- var CryptoContractFunctionReadWitness = class extends AbstractWitness {
17
- static configSchemas = [CryptoContractFunctionReadWitnessConfigSchema];
18
- get abi() {
19
- return assertEx(this.config.abi, "Missing abi");
20
- }
21
- async observeHandler(inPayloads = []) {
22
- await this.started("throw");
23
- try {
24
- const observations = await Promise.all(
25
- inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
26
- const { providers } = this.params;
27
- const provider = providers[Date.now() % providers.length];
28
- const validatedAddress = assertEx(address ?? this.config.address, "Missing address");
29
- const validatedFunctionName = assertEx(functionName ?? this.config.functionName, "Missing address");
30
- const mergedArgs = [...args ?? this.config.args ?? []];
31
- const contract = new Contract(validatedAddress, this.abi, provider);
32
- try {
33
- const result = await contract[validatedFunctionName](...mergedArgs);
34
- const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
35
- const observation = {
36
- address: validatedAddress,
37
- args: mergedArgs,
38
- chainId: Number((await provider.getNetwork()).chainId),
39
- functionName: validatedFunctionName,
40
- result: transformedResult,
41
- schema: CryptoContractFunctionCallResultSchema
42
- };
43
- return observation;
44
- } catch (ex) {
45
- const error = ex;
46
- console.log(`Error [${this.config.name}]: ${error.code}`);
47
- const observation = {
48
- address: validatedAddress,
49
- args: mergedArgs,
50
- chainId: Number((await provider.getNetwork()).chainId),
51
- error: error.code,
52
- functionName: validatedFunctionName,
53
- schema: CryptoContractFunctionCallResultSchema
54
- };
55
- return observation;
56
- }
57
- })
58
- );
59
- return observations;
60
- } catch (ex) {
61
- const error = ex;
62
- console.log(`Error [${this.config.name}]: ${error.message}`);
63
- throw error;
64
- }
65
- }
66
- };
67
-
68
- // src/Plugin.ts
69
- var CryptoContractFunctionReadWitnessPlugin = () => createPayloadSetWitnessPlugin(
70
- { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
71
- {
72
- witness: async (params) => {
73
- const result = await CryptoContractFunctionReadWitness.create(params);
74
- return result;
75
- }
76
- }
77
- );
78
-
79
- // src/CryptoContractDiviner.ts
80
- import { assertEx as assertEx2 } from "@xylabs/assert";
81
- import { AbstractDiviner } from "@xyo-network/abstract-diviner";
82
- import {
83
- asCryptoContractFunctionCallSuccess,
84
- CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2
85
- } from "@xyo-network/crypto-contract-function-read-payload-plugin";
86
- import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
87
- var CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
88
- var ContractInfoSchema = "network.xyo.crypto.contract.info";
89
- var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner {
90
- static configSchemas = [CryptoContractDivinerConfigSchema];
91
- static findCallResult(address, functionName, payloads) {
92
- var _a;
93
- const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
94
- return (_a = asCryptoContractFunctionCallSuccess(foundPayload)) == null ? void 0 : _a.result;
95
- }
96
- static matchingExistingField(objs, field) {
97
- var _a;
98
- const expectedValue = (_a = objs.at(0)) == null ? void 0 : _a[field];
99
- const didNotMatch = objs.reduce((prev, obj) => {
100
- return prev || obj[field] !== expectedValue;
101
- }, false);
102
- return didNotMatch ? void 0 : expectedValue;
103
- }
104
- contractInfoRequiredFields(callResults) {
105
- return {
106
- address: assertEx2(_CryptoContractDiviner.matchingExistingField(callResults, "address"), "Mismatched address"),
107
- chainId: assertEx2(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId"),
108
- schema: ContractInfoSchema
109
- };
110
- }
111
- async divineHandler(inPayloads = []) {
112
- const callResults = inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallResultSchema2));
113
- const addresses = Object.keys(
114
- callResults.reduce((prev, result2) => {
115
- if (result2.address) {
116
- prev[result2.address] = true;
117
- }
118
- return prev;
119
- }, {})
120
- );
121
- const result = await Promise.all(
122
- addresses.map(async (address) => {
123
- const foundCallResults = callResults.filter((callResult) => callResult.address === address);
124
- const info = {
125
- ...{ results: await this.reduceResults(foundCallResults) },
126
- ...this.contractInfoRequiredFields(foundCallResults)
127
- };
128
- return info;
129
- })
130
- );
131
- return result;
132
- }
133
- reduceResults(callResults) {
134
- return callResults.reduce((prev, callResult) => {
135
- var _a;
136
- prev[callResult.functionName] = (_a = asCryptoContractFunctionCallSuccess(callResult)) == null ? void 0 : _a.result;
137
- return prev;
138
- }, {});
139
- }
140
- };
141
-
142
- // src/index.ts
143
- var src_default = CryptoContractFunctionReadWitnessPlugin;
144
- export {
145
- ContractInfoSchema,
146
- CryptoContractDiviner,
147
- CryptoContractDivinerConfigSchema,
148
- CryptoContractFunctionReadWitness,
149
- CryptoContractFunctionReadWitnessPlugin,
150
- src_default as default
151
- };
152
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
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 CryptoContractFunctionCallFailure,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionCallSuccess,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n get abi() {\n return assertEx(this.config.abi, 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: CryptoContractFunctionCall[] = []): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {\n const { providers } = this.params\n const provider = providers[Date.now() % providers.length] //pick a random provider\n const validatedAddress = assertEx(address ?? this.config.address, 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n const transformedResult = typeof result === 'bigint' ? result.toString(16) : result\n const observation: CryptoContractFunctionCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n } catch (ex) {\n const error = ex as Error & { code: string }\n console.log(`Error [${this.config.name}]: ${error.code}`)\n const observation: CryptoContractFunctionCallFailure = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n error: error.code,\n functionName: validatedFunctionName,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n asCryptoContractFunctionCallSuccess,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\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, unknown>\n },\n ContractInfoSchema\n>\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static findCallResult<TResult = string>(\n address: string,\n functionName: string,\n payloads: CryptoContractFunctionCallResult[],\n ): TResult | undefined {\n const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)\n return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: 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, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(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","isPayloadOfSchemaType","result"]}
@@ -1,7 +0,0 @@
1
- import { IndexingDiviner } from '@xyo-network/diviner-indexing'
2
-
3
- import { CryptoContractIndexingDivinerLabels } from './CryptoContractIndexingDivinerLabels'
4
-
5
- export class CryptoContractIndexingDiviner extends IndexingDiviner {
6
- static labels: CryptoContractIndexingDivinerLabels = CryptoContractIndexingDivinerLabels
7
- }
@@ -1,26 +0,0 @@
1
- import { DivinerStageSchema, IndexingDivinerStage } from '@xyo-network/diviner-indexing'
2
- import { Labels } from '@xyo-network/module-model'
3
-
4
- /**
5
- * Labels for Image Thumbnail Diviner components
6
- */
7
- export interface CryptoContractIndexingDivinerLabels extends Labels {
8
- 'network.xyo.crypto.contract.info': 'diviner'
9
- }
10
-
11
- /**
12
- * Labels for Image Thumbnail Diviner components
13
- */
14
- export const CryptoContractIndexingDivinerLabels: CryptoContractIndexingDivinerLabels = {
15
- 'network.xyo.crypto.contract.info': 'diviner',
16
- }
17
-
18
- /**
19
- * Labels for Image Thumbnail Diviner Stage Diviners
20
- */
21
- export type CryptoContractIndexingDivinerStageLabels = CryptoContractIndexingDivinerLabels & {
22
- /**
23
- * Labels for the stage of the Image Thumbnail Diviner Stage Diviner
24
- */
25
- [key in DivinerStageSchema]: IndexingDivinerStage
26
- }