@xyo-network/crypto-nft-collection-witness-plugin 2.78.2 → 2.78.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/browser/Plugin.d.cts +2 -0
  2. package/dist/browser/Plugin.d.cts.map +1 -1
  3. package/dist/browser/Plugin.d.mts +2 -0
  4. package/dist/browser/Plugin.d.mts.map +1 -1
  5. package/dist/browser/Plugin.d.ts +2 -0
  6. package/dist/browser/Plugin.d.ts.map +1 -1
  7. package/dist/browser/Witness.d.cts +6 -1
  8. package/dist/browser/Witness.d.cts.map +1 -1
  9. package/dist/browser/Witness.d.mts +6 -1
  10. package/dist/browser/Witness.d.mts.map +1 -1
  11. package/dist/browser/Witness.d.ts +6 -1
  12. package/dist/browser/Witness.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +155 -114
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +155 -114
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/lib/contractHasFunctions.d.cts +4 -0
  18. package/dist/browser/lib/contractHasFunctions.d.cts.map +1 -0
  19. package/dist/browser/lib/contractHasFunctions.d.mts +4 -0
  20. package/dist/browser/lib/contractHasFunctions.d.mts.map +1 -0
  21. package/dist/browser/lib/contractHasFunctions.d.ts +4 -0
  22. package/dist/browser/lib/contractHasFunctions.d.ts.map +1 -0
  23. package/dist/browser/lib/getNftCollectionNfts.d.cts +3 -2
  24. package/dist/browser/lib/getNftCollectionNfts.d.cts.map +1 -1
  25. package/dist/browser/lib/getNftCollectionNfts.d.mts +3 -2
  26. package/dist/browser/lib/getNftCollectionNfts.d.mts.map +1 -1
  27. package/dist/browser/lib/getNftCollectionNfts.d.ts +3 -2
  28. package/dist/browser/lib/getNftCollectionNfts.d.ts.map +1 -1
  29. package/dist/browser/lib/getProviderFromEnv.d.cts +4 -0
  30. package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -0
  31. package/dist/browser/lib/getProviderFromEnv.d.mts +4 -0
  32. package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -0
  33. package/dist/browser/lib/getProviderFromEnv.d.ts +4 -0
  34. package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -0
  35. package/dist/browser/lib/index.d.cts +3 -2
  36. package/dist/browser/lib/index.d.cts.map +1 -1
  37. package/dist/browser/lib/index.d.mts +3 -2
  38. package/dist/browser/lib/index.d.mts.map +1 -1
  39. package/dist/browser/lib/index.d.ts +3 -2
  40. package/dist/browser/lib/index.d.ts.map +1 -1
  41. package/dist/browser/lib/tokenTypes.d.cts +6 -0
  42. package/dist/browser/lib/tokenTypes.d.cts.map +1 -0
  43. package/dist/browser/lib/tokenTypes.d.mts +6 -0
  44. package/dist/browser/lib/tokenTypes.d.mts.map +1 -0
  45. package/dist/browser/lib/tokenTypes.d.ts +6 -0
  46. package/dist/browser/lib/tokenTypes.d.ts.map +1 -0
  47. package/dist/browser/lib/tryCall.d.cts +2 -0
  48. package/dist/browser/lib/tryCall.d.cts.map +1 -0
  49. package/dist/browser/lib/tryCall.d.mts +2 -0
  50. package/dist/browser/lib/tryCall.d.mts.map +1 -0
  51. package/dist/browser/lib/tryCall.d.ts +2 -0
  52. package/dist/browser/lib/tryCall.d.ts.map +1 -0
  53. package/dist/node/Plugin.d.cts +2 -0
  54. package/dist/node/Plugin.d.cts.map +1 -1
  55. package/dist/node/Plugin.d.mts +2 -0
  56. package/dist/node/Plugin.d.mts.map +1 -1
  57. package/dist/node/Plugin.d.ts +2 -0
  58. package/dist/node/Plugin.d.ts.map +1 -1
  59. package/dist/node/Witness.d.cts +6 -1
  60. package/dist/node/Witness.d.cts.map +1 -1
  61. package/dist/node/Witness.d.mts +6 -1
  62. package/dist/node/Witness.d.mts.map +1 -1
  63. package/dist/node/Witness.d.ts +6 -1
  64. package/dist/node/Witness.d.ts.map +1 -1
  65. package/dist/node/index.js +162 -118
  66. package/dist/node/index.js.map +1 -1
  67. package/dist/node/index.mjs +155 -114
  68. package/dist/node/index.mjs.map +1 -1
  69. package/dist/node/lib/contractHasFunctions.d.cts +4 -0
  70. package/dist/node/lib/contractHasFunctions.d.cts.map +1 -0
  71. package/dist/node/lib/contractHasFunctions.d.mts +4 -0
  72. package/dist/node/lib/contractHasFunctions.d.mts.map +1 -0
  73. package/dist/node/lib/contractHasFunctions.d.ts +4 -0
  74. package/dist/node/lib/contractHasFunctions.d.ts.map +1 -0
  75. package/dist/node/lib/getNftCollectionNfts.d.cts +3 -2
  76. package/dist/node/lib/getNftCollectionNfts.d.cts.map +1 -1
  77. package/dist/node/lib/getNftCollectionNfts.d.mts +3 -2
  78. package/dist/node/lib/getNftCollectionNfts.d.mts.map +1 -1
  79. package/dist/node/lib/getNftCollectionNfts.d.ts +3 -2
  80. package/dist/node/lib/getNftCollectionNfts.d.ts.map +1 -1
  81. package/dist/node/lib/getProviderFromEnv.d.cts +4 -0
  82. package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -0
  83. package/dist/node/lib/getProviderFromEnv.d.mts +4 -0
  84. package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -0
  85. package/dist/node/lib/getProviderFromEnv.d.ts +4 -0
  86. package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -0
  87. package/dist/node/lib/index.d.cts +3 -2
  88. package/dist/node/lib/index.d.cts.map +1 -1
  89. package/dist/node/lib/index.d.mts +3 -2
  90. package/dist/node/lib/index.d.mts.map +1 -1
  91. package/dist/node/lib/index.d.ts +3 -2
  92. package/dist/node/lib/index.d.ts.map +1 -1
  93. package/dist/node/lib/tokenTypes.d.cts +6 -0
  94. package/dist/node/lib/tokenTypes.d.cts.map +1 -0
  95. package/dist/node/lib/tokenTypes.d.mts +6 -0
  96. package/dist/node/lib/tokenTypes.d.mts.map +1 -0
  97. package/dist/node/lib/tokenTypes.d.ts +6 -0
  98. package/dist/node/lib/tokenTypes.d.ts.map +1 -0
  99. package/dist/node/lib/tryCall.d.cts +2 -0
  100. package/dist/node/lib/tryCall.d.cts.map +1 -0
  101. package/dist/node/lib/tryCall.d.mts +2 -0
  102. package/dist/node/lib/tryCall.d.mts.map +1 -0
  103. package/dist/node/lib/tryCall.d.ts +2 -0
  104. package/dist/node/lib/tryCall.d.ts.map +1 -0
  105. package/package.json +17 -13
  106. package/src/Witness.ts +51 -9
  107. package/src/lib/contractHasFunctions.ts +20 -0
  108. package/src/lib/getNftCollectionNfts.ts +49 -38
  109. package/src/lib/getProviderFromEnv.ts +29 -0
  110. package/src/lib/index.ts +3 -2
  111. package/src/lib/tokenTypes.ts +25 -0
  112. package/src/lib/tryCall.ts +11 -0
  113. package/dist/browser/lib/getNftCollectionCount.d.cts +0 -2
  114. package/dist/browser/lib/getNftCollectionCount.d.cts.map +0 -1
  115. package/dist/browser/lib/getNftCollectionCount.d.mts +0 -2
  116. package/dist/browser/lib/getNftCollectionCount.d.mts.map +0 -1
  117. package/dist/browser/lib/getNftCollectionCount.d.ts +0 -2
  118. package/dist/browser/lib/getNftCollectionCount.d.ts.map +0 -1
  119. package/dist/browser/lib/getNftCollectionMetadata.d.cts +0 -5
  120. package/dist/browser/lib/getNftCollectionMetadata.d.cts.map +0 -1
  121. package/dist/browser/lib/getNftCollectionMetadata.d.mts +0 -5
  122. package/dist/browser/lib/getNftCollectionMetadata.d.mts.map +0 -1
  123. package/dist/browser/lib/getNftCollectionMetadata.d.ts +0 -5
  124. package/dist/browser/lib/getNftCollectionMetadata.d.ts.map +0 -1
  125. package/dist/browser/lib/getProvider.d.cts +0 -3
  126. package/dist/browser/lib/getProvider.d.cts.map +0 -1
  127. package/dist/browser/lib/getProvider.d.mts +0 -3
  128. package/dist/browser/lib/getProvider.d.mts.map +0 -1
  129. package/dist/browser/lib/getProvider.d.ts +0 -3
  130. package/dist/browser/lib/getProvider.d.ts.map +0 -1
  131. package/dist/node/lib/getNftCollectionCount.d.cts +0 -2
  132. package/dist/node/lib/getNftCollectionCount.d.cts.map +0 -1
  133. package/dist/node/lib/getNftCollectionCount.d.mts +0 -2
  134. package/dist/node/lib/getNftCollectionCount.d.mts.map +0 -1
  135. package/dist/node/lib/getNftCollectionCount.d.ts +0 -2
  136. package/dist/node/lib/getNftCollectionCount.d.ts.map +0 -1
  137. package/dist/node/lib/getNftCollectionMetadata.d.cts +0 -5
  138. package/dist/node/lib/getNftCollectionMetadata.d.cts.map +0 -1
  139. package/dist/node/lib/getNftCollectionMetadata.d.mts +0 -5
  140. package/dist/node/lib/getNftCollectionMetadata.d.mts.map +0 -1
  141. package/dist/node/lib/getNftCollectionMetadata.d.ts +0 -5
  142. package/dist/node/lib/getNftCollectionMetadata.d.ts.map +0 -1
  143. package/dist/node/lib/getProvider.d.cts +0 -3
  144. package/dist/node/lib/getProvider.d.cts.map +0 -1
  145. package/dist/node/lib/getProvider.d.mts +0 -3
  146. package/dist/node/lib/getProvider.d.mts.map +0 -1
  147. package/dist/node/lib/getProvider.d.ts +0 -3
  148. package/dist/node/lib/getProvider.d.ts.map +0 -1
  149. package/src/lib/getNftCollectionCount.ts +0 -22
  150. package/src/lib/getNftCollectionMetadata.ts +0 -58
  151. package/src/lib/getProvider.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { TokenType } from '@xyo-network/crypto-nft-payload-plugin';
3
+ export declare const isErc1155: (provider: Provider, address: string) => Promise<boolean>;
4
+ export declare const isErc721: (provider: Provider, address: string) => Promise<boolean>;
5
+ export declare const tokenTypes: (provider: Provider, address: string) => Promise<TokenType[]>;
6
+ //# sourceMappingURL=tokenTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAKlE,eAAO,MAAM,SAAS,aAAoB,QAAQ,WAAW,MAAM,qBAElE,CAAA;AAED,eAAO,MAAM,QAAQ,aAAoB,QAAQ,WAAW,MAAM,qBAEjE,CAAA;AAED,eAAO,MAAM,UAAU,aAAoB,QAAQ,WAAW,MAAM,yBAUnE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { TokenType } from '@xyo-network/crypto-nft-payload-plugin';
3
+ export declare const isErc1155: (provider: Provider, address: string) => Promise<boolean>;
4
+ export declare const isErc721: (provider: Provider, address: string) => Promise<boolean>;
5
+ export declare const tokenTypes: (provider: Provider, address: string) => Promise<TokenType[]>;
6
+ //# sourceMappingURL=tokenTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAKlE,eAAO,MAAM,SAAS,aAAoB,QAAQ,WAAW,MAAM,qBAElE,CAAA;AAED,eAAO,MAAM,QAAQ,aAAoB,QAAQ,WAAW,MAAM,qBAEjE,CAAA;AAED,eAAO,MAAM,UAAU,aAAoB,QAAQ,WAAW,MAAM,yBAUnE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { TokenType } from '@xyo-network/crypto-nft-payload-plugin';
3
+ export declare const isErc1155: (provider: Provider, address: string) => Promise<boolean>;
4
+ export declare const isErc721: (provider: Provider, address: string) => Promise<boolean>;
5
+ export declare const tokenTypes: (provider: Provider, address: string) => Promise<TokenType[]>;
6
+ //# sourceMappingURL=tokenTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAKlE,eAAO,MAAM,SAAS,aAAoB,QAAQ,WAAW,MAAM,qBAElE,CAAA;AAED,eAAO,MAAM,QAAQ,aAAoB,QAAQ,WAAW,MAAM,qBAEjE,CAAA;AAED,eAAO,MAAM,UAAU,aAAoB,QAAQ,WAAW,MAAM,yBAUnE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const tryCall: <T>(func: () => Promise<T>, name?: string) => Promise<T | undefined>;
2
+ //# sourceMappingURL=tryCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryCall.d.ts","sourceRoot":"","sources":["../../../src/lib/tryCall.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,qCAA4C,MAAM,2BAUrE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const tryCall: <T>(func: () => Promise<T>, name?: string) => Promise<T | undefined>;
2
+ //# sourceMappingURL=tryCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryCall.d.ts","sourceRoot":"","sources":["../../../src/lib/tryCall.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,qCAA4C,MAAM,2BAUrE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const tryCall: <T>(func: () => Promise<T>, name?: string) => Promise<T | undefined>;
2
+ //# sourceMappingURL=tryCall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryCall.d.ts","sourceRoot":"","sources":["../../../src/lib/tryCall.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,qCAA4C,MAAM,2BAUrE,CAAA"}
@@ -52,5 +52,7 @@ export declare const CryptoNftCollectionWitnessPlugin: () => import("@xyo-networ
52
52
  };
53
53
  ephemeralQueryAccountEnabled?: boolean | undefined;
54
54
  wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
55
+ } & {
56
+ provider: import("@ethersproject/abstract-provider").Provider;
55
57
  }>>;
56
58
  //# sourceMappingURL=Plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
@@ -52,5 +52,7 @@ export declare const CryptoNftCollectionWitnessPlugin: () => import("@xyo-networ
52
52
  };
53
53
  ephemeralQueryAccountEnabled?: boolean | undefined;
54
54
  wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
55
+ } & {
56
+ provider: import("@ethersproject/abstract-provider").Provider;
55
57
  }>>;
56
58
  //# sourceMappingURL=Plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
@@ -52,5 +52,7 @@ export declare const CryptoNftCollectionWitnessPlugin: () => import("@xyo-networ
52
52
  };
53
53
  ephemeralQueryAccountEnabled?: boolean | undefined;
54
54
  wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
55
+ } & {
56
+ provider: import("@ethersproject/abstract-provider").Provider;
55
57
  }>>;
56
58
  //# sourceMappingURL=Plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEtD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1C,CAAA"}
@@ -1,10 +1,15 @@
1
+ import { InfuraProvider, Provider, WebSocketProvider } from '@ethersproject/providers';
1
2
  import { AbstractWitness } from '@xyo-network/abstract-witness';
2
3
  import { NftCollectionInfo, NftCollectionWitnessConfig, NftCollectionWitnessQuery } from '@xyo-network/crypto-nft-collection-payload-plugin';
3
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
4
5
  import { WitnessParams } from '@xyo-network/witness-model';
5
- export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>>;
6
+ export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>, {
7
+ provider: Provider;
8
+ }>;
6
9
  export declare class CryptoNftCollectionWitness<TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams> extends AbstractWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {
7
10
  static configSchemas: "network.xyo.crypto.nft.collection.witness.config"[];
11
+ protected providers: Record<number, WebSocketProvider | InfuraProvider>;
12
+ protected getProvider(chainId: number): WebSocketProvider | InfuraProvider;
8
13
  protected observeHandler(payloads?: NftCollectionWitnessQuery[]): Promise<NftCollectionInfo[]>;
9
14
  }
10
15
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAWzG,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;cAEzC,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA8B9G"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAC1D,eAAe,CAAC,0BAA0B,CAAC,EAC3C;IACE,QAAQ,EAAE,QAAQ,CAAA;CACnB,CACF,CAAA;AAoBD,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;IAElE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAK;IAE5E,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM;cAKZ,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAiD9G"}
@@ -1,10 +1,15 @@
1
+ import { InfuraProvider, Provider, WebSocketProvider } from '@ethersproject/providers';
1
2
  import { AbstractWitness } from '@xyo-network/abstract-witness';
2
3
  import { NftCollectionInfo, NftCollectionWitnessConfig, NftCollectionWitnessQuery } from '@xyo-network/crypto-nft-collection-payload-plugin';
3
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
4
5
  import { WitnessParams } from '@xyo-network/witness-model';
5
- export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>>;
6
+ export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>, {
7
+ provider: Provider;
8
+ }>;
6
9
  export declare class CryptoNftCollectionWitness<TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams> extends AbstractWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {
7
10
  static configSchemas: "network.xyo.crypto.nft.collection.witness.config"[];
11
+ protected providers: Record<number, WebSocketProvider | InfuraProvider>;
12
+ protected getProvider(chainId: number): WebSocketProvider | InfuraProvider;
8
13
  protected observeHandler(payloads?: NftCollectionWitnessQuery[]): Promise<NftCollectionInfo[]>;
9
14
  }
10
15
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAWzG,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;cAEzC,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA8B9G"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAC1D,eAAe,CAAC,0BAA0B,CAAC,EAC3C;IACE,QAAQ,EAAE,QAAQ,CAAA;CACnB,CACF,CAAA;AAoBD,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;IAElE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAK;IAE5E,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM;cAKZ,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAiD9G"}
@@ -1,10 +1,15 @@
1
+ import { InfuraProvider, Provider, WebSocketProvider } from '@ethersproject/providers';
1
2
  import { AbstractWitness } from '@xyo-network/abstract-witness';
2
3
  import { NftCollectionInfo, NftCollectionWitnessConfig, NftCollectionWitnessQuery } from '@xyo-network/crypto-nft-collection-payload-plugin';
3
4
  import { AnyConfigSchema } from '@xyo-network/module-model';
4
5
  import { WitnessParams } from '@xyo-network/witness-model';
5
- export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>>;
6
+ export type CryptoNftCollectionWitnessParams = WitnessParams<AnyConfigSchema<NftCollectionWitnessConfig>, {
7
+ provider: Provider;
8
+ }>;
6
9
  export declare class CryptoNftCollectionWitness<TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams> extends AbstractWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {
7
10
  static configSchemas: "network.xyo.crypto.nft.collection.witness.config"[];
11
+ protected providers: Record<number, WebSocketProvider | InfuraProvider>;
12
+ protected getProvider(chainId: number): WebSocketProvider | InfuraProvider;
8
13
  protected observeHandler(payloads?: NftCollectionWitnessQuery[]): Promise<NftCollectionInfo[]>;
9
14
  }
10
15
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAWzG,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;cAEzC,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA8B9G"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAEL,iBAAiB,EAEjB,0BAA0B,EAE1B,yBAAyB,EAC1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI1D,MAAM,MAAM,gCAAgC,GAAG,aAAa,CAC1D,eAAe,CAAC,0BAA0B,CAAC,EAC3C;IACE,QAAQ,EAAE,QAAQ,CAAA;CACnB,CACF,CAAA;AAoBD,qBAAa,0BAA0B,CAAC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CAAE,SAAQ,eAAe,CAClJ,OAAO,EACP,yBAAyB,EACzB,iBAAiB,CAClB;IACC,OAAgB,aAAa,uDAAqC;IAElE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAK;IAE5E,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM;cAKZ,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAiD9G"}
@@ -23,12 +23,15 @@ __export(src_exports, {
23
23
  CryptoNftCollectionWitness: () => CryptoNftCollectionWitness,
24
24
  CryptoNftCollectionWitnessPlugin: () => CryptoNftCollectionWitnessPlugin,
25
25
  checkIpfsUrl: () => checkIpfsUrl,
26
+ contractHasFunctions: () => contractHasFunctions,
26
27
  default: () => src_default,
27
- getInterfaceID: () => getInterfaceID,
28
- getNftCollectionCount: () => getNftCollectionCount,
29
- getNftCollectionMetadata: () => getNftCollectionMetadata,
30
28
  getNftCollectionMetrics: () => getNftCollectionMetrics,
31
- getNftCollectionNfts: () => getNftCollectionNfts
29
+ getNftCollectionNfts: () => getNftCollectionNfts,
30
+ getProviderFromEnv: () => getProviderFromEnv,
31
+ getProviderFromEnvInternal: () => getProviderFromEnvInternal,
32
+ isErc1155: () => isErc1155,
33
+ isErc721: () => isErc721,
34
+ tokenTypes: () => tokenTypes
32
35
  });
33
36
  module.exports = __toCommonJS(src_exports);
34
37
 
@@ -43,6 +46,7 @@ var import_eth_address = require("@xylabs/eth-address");
43
46
  var import_abstract_witness = require("@xyo-network/abstract-witness");
44
47
  var import_core = require("@xyo-network/core");
45
48
  var import_crypto_nft_collection_payload_plugin = require("@xyo-network/crypto-nft-collection-payload-plugin");
49
+ var import_open_zeppelin_typechain3 = require("@xyo-network/open-zeppelin-typechain");
46
50
 
47
51
  // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
48
52
  var calculateAllPropertiesDistribution = (array) => {
@@ -104,87 +108,64 @@ var getNftCollectionMetrics = (nfts) => {
104
108
  return { metadata: { attributes } };
105
109
  };
106
110
 
107
- // src/lib/getNftCollectionCount.ts
108
- var import_open_zeppelin_typechain = require("@xyo-network/open-zeppelin-typechain");
109
-
110
- // src/lib/getProvider.ts
111
- var import_providers = require("@ethersproject/providers");
112
- var getProviderFromEnv = (chainId = "homestead") => {
113
- const infuraWssUri = process.env.INFURA_WSS_URI;
114
- const infuraProvider = new import_providers.InfuraProvider("homestead", {
115
- projectId: process.env.INFURA_PROJECT_ID,
116
- projectSecret: process.env.INFURA_PROJECT_SECRET
117
- });
118
- const infuraWebsocketProvider = infuraWssUri ? new import_providers.WebSocketProvider(infuraWssUri, chainId) : void 0;
119
- const quickNodeUri = process.env.QUICKNODE_WSS_URI;
120
- const quickNodeProvider = quickNodeUri ? new import_providers.WebSocketProvider(quickNodeUri, chainId) : void 0;
121
- const provider = infuraWebsocketProvider ?? infuraProvider ?? infuraWebsocketProvider ?? quickNodeProvider ?? infuraProvider;
122
- return provider;
123
- };
124
-
125
- // src/lib/nonEvaluableContractAddresses.ts
126
- var nonEvaluableContractAddresses = [
127
- // ENS
128
- "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"
129
- ].map((address) => address.toUpperCase());
130
-
131
- // src/lib/getNftCollectionCount.ts
132
- var getNftCollectionCount = async (contractAddress, chainId) => {
133
- if (nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
134
- throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
111
+ // src/lib/contractHasFunctions.ts
112
+ var contractHasFunctions = async (provider, address, contractInterface, functionNames) => {
113
+ try {
114
+ const bytecode = await provider.getCode(address, "latest");
115
+ for (let i = 0; i < functionNames.length; i++) {
116
+ const nameSig = contractInterface.getSighash(functionNames[i]).substring(2);
117
+ if (!bytecode.includes(nameSig)) {
118
+ return false;
119
+ }
120
+ return true;
121
+ }
122
+ return false;
123
+ } catch (ex) {
124
+ const error = ex;
125
+ console.log(error);
126
+ return false;
135
127
  }
136
- const provider = getProviderFromEnv(chainId);
137
- const contract = import_open_zeppelin_typechain.ERC721Enumerable__factory.connect(contractAddress, provider);
138
- return (await contract.totalSupply()).toNumber();
139
128
  };
140
129
 
141
- // src/lib/getNftCollectionMetadata.ts
130
+ // src/lib/getNftCollectionNfts.ts
131
+ var import_axios = require("@xyo-network/axios");
132
+ var import_crypto_nft_payload_plugin = require("@xyo-network/crypto-nft-payload-plugin");
142
133
  var import_open_zeppelin_typechain2 = require("@xyo-network/open-zeppelin-typechain");
143
- var import_ethers = require("ethers");
144
- function getInterfaceID(contractInterface) {
145
- let interfaceID = import_ethers.constants.Zero;
146
- const functions = Object.keys(contractInterface.functions);
147
- for (let i = 0; i < functions.length; i++) {
148
- interfaceID = interfaceID.xor(contractInterface.getSighash(functions[i]));
149
- }
150
- return interfaceID.toHexString();
151
- }
152
- var getNftCollectionMetadata = async (contractAddress, chainId) => {
153
- if (nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
154
- throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
155
- }
156
- const provider = getProviderFromEnv(chainId);
157
- const contract721 = import_open_zeppelin_typechain2.ERC721Enumerable__factory.connect(contractAddress, provider);
158
- const contract1155 = import_open_zeppelin_typechain2.ERC1155__factory.connect(contractAddress, provider);
159
- let name = "";
160
- try {
161
- name = await contract721.name();
162
- } catch (ex) {
163
- const error = ex;
164
- console.log(`name: ${error.message}`);
134
+
135
+ // src/lib/tokenTypes.ts
136
+ var import_open_zeppelin_typechain = require("@xyo-network/open-zeppelin-typechain");
137
+ var isErc1155 = async (provider, address) => {
138
+ return await contractHasFunctions(provider, address, import_open_zeppelin_typechain.ERC1155URIStorage__factory.createInterface(), ["uri"]);
139
+ };
140
+ var isErc721 = async (provider, address) => {
141
+ return await contractHasFunctions(provider, address, import_open_zeppelin_typechain.IERC721Metadata__factory.createInterface(), ["name", "symbol", "tokenURI"]);
142
+ };
143
+ var tokenTypes = async (provider, address) => {
144
+ const [erc721, erc1155] = await Promise.all([isErc721(provider, address), isErc1155(provider, address)]);
145
+ const result = [];
146
+ if (erc721) {
147
+ result.push("ERC721");
165
148
  }
166
- let symbol = "";
167
- try {
168
- symbol = await contract721.symbol();
169
- } catch (ex) {
170
- const error = ex;
171
- console.log(`symbol: ${error.message}`);
149
+ if (erc1155) {
150
+ result.push("ERC1155");
172
151
  }
173
- let is1155 = false;
152
+ return result;
153
+ };
154
+
155
+ // src/lib/tryCall.ts
156
+ var tryCall = async (func, name) => {
174
157
  try {
175
- is1155 = await contract1155.supportsInterface(getInterfaceID(import_open_zeppelin_typechain2.ERC1155__factory.getInterface(import_open_zeppelin_typechain2.ERC1155__factory.abi)));
158
+ return await func();
176
159
  } catch (ex) {
177
- const error = ex;
178
- console.log(`is1155: ${error.message}`);
179
- is1155 = false;
160
+ if (name) {
161
+ const error = ex;
162
+ console.log(`tryCall failed [${name}]: ${error.message}`);
163
+ }
164
+ return void 0;
180
165
  }
181
- return { address: contractAddress, chainId, name, symbol, type: is1155 ? "ERC1155" : "ERC721" };
182
166
  };
183
167
 
184
168
  // src/lib/getNftCollectionNfts.ts
185
- var import_axios = require("@xyo-network/axios");
186
- var import_crypto_nft_payload_plugin = require("@xyo-network/crypto-nft-payload-plugin");
187
- var import_open_zeppelin_typechain3 = require("@xyo-network/open-zeppelin-typechain");
188
169
  var ipfsGateway = "5d7b6582.beta.decentralnetworkservices.com";
189
170
  var checkIpfsUrl = (urlToCheck, ipfsGateway2) => {
190
171
  const url = new URL(urlToCheck);
@@ -202,74 +183,134 @@ var checkIpfsUrl = (urlToCheck, ipfsGateway2) => {
202
183
  return urlToCheck;
203
184
  }
204
185
  };
205
- var getNftCollectionNfts = async (contractAddress, chainId, maxNfts = 100) => {
206
- if (nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
207
- throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
208
- }
209
- const axios = new import_axios.AxiosJson({ timeout: 2e3 });
210
- const provider = getProviderFromEnv(chainId);
211
- const enumerable = import_open_zeppelin_typechain3.ERC721Enumerable__factory.connect(contractAddress, provider);
212
- const storage = import_open_zeppelin_typechain3.ERC721URIStorage__factory.connect(contractAddress, provider);
213
- const supply1155 = import_open_zeppelin_typechain3.ERC1155Supply__factory.connect(contractAddress, provider);
214
- const result = [];
215
- const { type: nftType } = await getNftCollectionMetadata(contractAddress, chainId);
216
- for (let i = 0; i < maxNfts; i++) {
217
- const tokenId = (await enumerable.tokenByIndex(i)).toHexString();
218
- const supply = nftType === (0, import_crypto_nft_payload_plugin.toTokenType)("ERC11155") ? (await supply1155.totalSupply(tokenId)).toHexString() : "0x01";
219
- const metadataUri = await storage.tokenURI(tokenId);
220
- const checkedMetaDataUri = checkIpfsUrl(metadataUri, ipfsGateway);
221
- let metadata = void 0;
222
- try {
223
- metadata = (await axios.get(checkedMetaDataUri)).data;
224
- } catch (ex) {
225
- const error = ex;
226
- console.error(error.message);
186
+ var getNftCollectionNfts = async (contractAddress, provider, types, maxNfts = 100) => {
187
+ try {
188
+ const axios = new import_axios.AxiosJson({ timeout: 2e3 });
189
+ const enumerable = import_open_zeppelin_typechain2.ERC721Enumerable__factory.connect(contractAddress, provider);
190
+ const storage = import_open_zeppelin_typechain2.ERC721URIStorage__factory.connect(contractAddress, provider);
191
+ const supply1155 = import_open_zeppelin_typechain2.ERC1155Supply__factory.connect(contractAddress, provider);
192
+ const finalTypes = types ?? await tokenTypes(provider, contractAddress);
193
+ const result = [];
194
+ for (let i = 0; i < maxNfts; i++) {
195
+ const tokenId = await tryCall(async () => (await enumerable.tokenByIndex(i)).toHexString());
196
+ if (tokenId !== void 0) {
197
+ const supply = finalTypes.includes((0, import_crypto_nft_payload_plugin.toTokenType)("ERC1155")) ? await tryCall(async () => (await supply1155.totalSupply(tokenId)).toHexString()) ?? "0x01" : "0x01";
198
+ const metadataUri = await tryCall(async () => await storage.tokenURI(tokenId));
199
+ const checkedMetaDataUri = metadataUri ? checkIpfsUrl(metadataUri, ipfsGateway) : void 0;
200
+ let metadata = void 0;
201
+ if (checkedMetaDataUri !== void 0) {
202
+ try {
203
+ metadata = (await axios.get(checkedMetaDataUri)).data;
204
+ } catch (ex) {
205
+ const error = ex;
206
+ console.error(`Get Metadata failed: ${error.message}`);
207
+ }
208
+ }
209
+ const info = {
210
+ address: contractAddress,
211
+ chainId: provider.network.chainId,
212
+ metadata,
213
+ metadataUri,
214
+ schema: import_crypto_nft_payload_plugin.NftSchema,
215
+ supply,
216
+ tokenId,
217
+ type: finalTypes.at(0),
218
+ types: finalTypes
219
+ };
220
+ result.push(info);
221
+ }
227
222
  }
228
- const info = {
229
- address: contractAddress,
230
- chainId,
231
- metadata,
232
- metadataUri,
233
- schema: import_crypto_nft_payload_plugin.NftSchema,
234
- supply,
235
- tokenId,
236
- type: nftType
237
- };
238
- result.push(info);
223
+ return result;
224
+ } catch (ex) {
225
+ const error = ex;
226
+ console.error(`getNftCollectionNfts failed: [${error.name}] ${error.message}`);
227
+ console.log(error.stack);
228
+ return [];
239
229
  }
240
- return result;
230
+ };
231
+
232
+ // src/lib/getProviderFromEnv.ts
233
+ var import_providers = require("@ethersproject/providers");
234
+ var getProviderFromEnvInternal = (chainId = 1) => {
235
+ console.log(`getProviderFromEnvInternal: ${chainId}`);
236
+ const infuraWssUri = process.env.INFURA_WSS_URI;
237
+ const infuraProvider = new import_providers.InfuraProvider(chainId, {
238
+ projectId: process.env.INFURA_PROJECT_ID,
239
+ projectSecret: process.env.INFURA_PROJECT_SECRET
240
+ });
241
+ const infuraGenericWebsocketProvider = infuraWssUri ? new import_providers.WebSocketProvider(infuraWssUri, chainId) : void 0;
242
+ const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI;
243
+ const quickNodeWebSocketProvider = quickNodeWSSUri ? new import_providers.WebSocketProvider(quickNodeWSSUri, chainId) : void 0;
244
+ const quickNodeHttpsUri = process.env.QUICKNODE_WSS_URI;
245
+ const quickRpcProvider = quickNodeHttpsUri ? new import_providers.JsonRpcProvider(quickNodeHttpsUri, chainId) : void 0;
246
+ const provider = infuraProvider ?? quickNodeWebSocketProvider ?? infuraProvider ?? infuraGenericWebsocketProvider ?? quickRpcProvider;
247
+ return provider;
248
+ };
249
+ var providers = {};
250
+ var getProviderFromEnv = (chainId = 1) => {
251
+ console.log(`getProviderFromEnv: ${chainId}`);
252
+ providers[chainId] = providers[chainId] ?? getProviderFromEnvInternal(chainId);
253
+ return providers[chainId];
241
254
  };
242
255
 
243
256
  // src/Witness.ts
244
257
  var defaultMaxNfts = 100;
245
258
  var NoOp = Promise.resolve();
259
+ function resolvedValue(settled, assert) {
260
+ if (assert && settled.status === "rejected") {
261
+ throw settled.reason;
262
+ }
263
+ return settled.status === "fulfilled" ? settled.value : void 0;
264
+ }
246
265
  var CryptoNftCollectionWitness = class extends import_abstract_witness.AbstractWitness {
247
266
  static configSchemas = [import_crypto_nft_collection_payload_plugin.NftCollectionWitnessConfigSchema];
267
+ providers = {};
268
+ getProvider(chainId) {
269
+ this.providers[chainId] = this.providers[chainId] ?? getProviderFromEnv(chainId);
270
+ return this.providers[chainId];
271
+ }
248
272
  async observeHandler(payloads) {
249
273
  await this.started("throw");
250
274
  const queries = (payloads == null ? void 0 : payloads.filter(import_crypto_nft_collection_payload_plugin.isNftCollectionWitnessQuery)) ?? [];
251
275
  const observations = await Promise.all(
252
276
  queries.map(async (query) => {
277
+ const chainId = (0, import_assert.assertEx)((query == null ? void 0 : query.chainId) || this.config.chainId, "params.chainId is required");
278
+ const provider = this.getProvider(chainId);
253
279
  const address = (0, import_assert.assertEx)(
254
280
  import_eth_address.EthAddress.parse((0, import_assert.assertEx)((query == null ? void 0 : query.address) || this.config.address, "params.address is required")),
255
281
  "Failed to parse params.address"
256
282
  ).toString();
257
- const chainId = (0, import_assert.assertEx)((query == null ? void 0 : query.chainId) || this.config.chainId, "params.chainId is required");
283
+ const erc721Enumerable = import_open_zeppelin_typechain3.ERC721Enumerable__factory.connect(address, provider);
258
284
  const maxNfts = (query == null ? void 0 : query.maxNfts) || defaultMaxNfts;
259
- const [info, total, nfts, archivist] = await Promise.all([
260
- getNftCollectionMetadata(address, chainId),
261
- getNftCollectionCount(address, chainId),
262
- getNftCollectionNfts(address, chainId, maxNfts),
263
- this.writeArchivist()
285
+ const [name, symbol, total, typesSettled, archivistSettled] = await Promise.allSettled([
286
+ await erc721Enumerable.name(),
287
+ await erc721Enumerable.symbol(),
288
+ (await erc721Enumerable.totalSupply()).toNumber(),
289
+ await tokenTypes(provider, address),
290
+ await this.writeArchivist()
264
291
  ]);
292
+ const types = resolvedValue(typesSettled, true);
293
+ const nfts = await getNftCollectionNfts(address, provider, types, maxNfts);
265
294
  const metrics = getNftCollectionMetrics(nfts);
295
+ const archivist = resolvedValue(archivistSettled);
266
296
  const [sources] = await Promise.all([
267
297
  // Hash all the payloads
268
298
  Promise.all(nfts.map((nft) => import_core.PayloadHasher.hashAsync(nft))),
269
299
  // Insert them into the archivist if we have one
270
300
  archivist ? archivist.insert(nfts) : NoOp
271
301
  ]);
272
- const payload = { ...info, metrics, schema: import_crypto_nft_collection_payload_plugin.NftCollectionSchema, sources, total };
302
+ const payload = {
303
+ address,
304
+ chainId,
305
+ metrics,
306
+ name: resolvedValue(name, true),
307
+ schema: import_crypto_nft_collection_payload_plugin.NftCollectionSchema,
308
+ sources,
309
+ symbol: resolvedValue(symbol, true),
310
+ total: resolvedValue(total, true),
311
+ type: types.at(0),
312
+ types
313
+ };
273
314
  return payload;
274
315
  })
275
316
  );
@@ -295,10 +336,13 @@ var src_default = CryptoNftCollectionWitnessPlugin;
295
336
  CryptoNftCollectionWitness,
296
337
  CryptoNftCollectionWitnessPlugin,
297
338
  checkIpfsUrl,
298
- getInterfaceID,
299
- getNftCollectionCount,
300
- getNftCollectionMetadata,
339
+ contractHasFunctions,
301
340
  getNftCollectionMetrics,
302
- getNftCollectionNfts
341
+ getNftCollectionNfts,
342
+ getProviderFromEnv,
343
+ getProviderFromEnvInternal,
344
+ isErc1155,
345
+ isErc721,
346
+ tokenTypes
303
347
  });
304
348
  //# sourceMappingURL=index.js.map