@xyo-network/payloadset-plugins 8.0.0 → 8.0.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 (69) hide show
  1. package/dist/browser/modules/crypto-nft-collection-witness/Witness.d.ts +2 -2
  2. package/dist/browser/modules/crypto-nft-collection-witness/Witness.d.ts.map +1 -1
  3. package/dist/browser/modules/crypto-nft-witness-wallet/Witness.d.ts +2 -2
  4. package/dist/browser/modules/crypto-nft-witness-wallet/Witness.d.ts.map +1 -1
  5. package/dist/browser/modules/erc1822-witness/Witness.d.ts +2 -2
  6. package/dist/browser/modules/erc1822-witness/Witness.d.ts.map +1 -1
  7. package/dist/browser/modules/erc1967-witness/Witness.d.ts +2 -2
  8. package/dist/browser/modules/erc1967-witness/Witness.d.ts.map +1 -1
  9. package/dist/browser/modules/evm-call-witness/Witness.d.ts +1 -1
  10. package/dist/browser/modules/evm-call-witness/Witness.d.ts.map +1 -1
  11. package/dist/browser/modules/evm-call-witness/model.d.ts +1 -1
  12. package/dist/browser/modules/evm-call-witness/model.d.ts.map +1 -1
  13. package/dist/browser/modules/evm-contract-witness/Witness.d.ts +2 -2
  14. package/dist/browser/modules/evm-contract-witness/Witness.d.ts.map +1 -1
  15. package/dist/browser/modules/evm-events-witness/Witness.d.ts +1 -1
  16. package/dist/browser/modules/evm-events-witness/Witness.d.ts.map +1 -1
  17. package/dist/browser/modules/evm-events-witness/model.d.ts +1 -1
  18. package/dist/browser/modules/evm-events-witness/model.d.ts.map +1 -1
  19. package/dist/neutral/crypto-nft-collection-witness.mjs +2 -2
  20. package/dist/neutral/crypto-nft-collection-witness.mjs.map +1 -1
  21. package/dist/neutral/crypto-nft-witness-wallet.mjs +2 -2
  22. package/dist/neutral/crypto-nft-witness-wallet.mjs.map +1 -1
  23. package/dist/neutral/erc1822-witness.mjs +1 -1
  24. package/dist/neutral/erc1822-witness.mjs.map +1 -1
  25. package/dist/neutral/erc1967-witness.mjs +1 -1
  26. package/dist/neutral/erc1967-witness.mjs.map +1 -1
  27. package/dist/neutral/evm-call-witness.mjs +1 -1
  28. package/dist/neutral/evm-call-witness.mjs.map +1 -1
  29. package/dist/neutral/evm-contract-witness.mjs +1 -1
  30. package/dist/neutral/evm-contract-witness.mjs.map +1 -1
  31. package/dist/neutral/evm-events-witness.mjs +1 -1
  32. package/dist/neutral/evm-events-witness.mjs.map +1 -1
  33. package/dist/neutral/modules/crypto-nft-collection-witness/Witness.d.ts +2 -2
  34. package/dist/neutral/modules/crypto-nft-collection-witness/Witness.d.ts.map +1 -1
  35. package/dist/neutral/modules/crypto-nft-witness-wallet/Witness.d.ts +2 -2
  36. package/dist/neutral/modules/crypto-nft-witness-wallet/Witness.d.ts.map +1 -1
  37. package/dist/neutral/modules/erc1822-witness/Witness.d.ts +2 -2
  38. package/dist/neutral/modules/erc1822-witness/Witness.d.ts.map +1 -1
  39. package/dist/neutral/modules/erc1967-witness/Witness.d.ts +2 -2
  40. package/dist/neutral/modules/erc1967-witness/Witness.d.ts.map +1 -1
  41. package/dist/neutral/modules/evm-call-witness/Witness.d.ts +1 -1
  42. package/dist/neutral/modules/evm-call-witness/Witness.d.ts.map +1 -1
  43. package/dist/neutral/modules/evm-call-witness/model.d.ts +1 -1
  44. package/dist/neutral/modules/evm-call-witness/model.d.ts.map +1 -1
  45. package/dist/neutral/modules/evm-contract-witness/Witness.d.ts +2 -2
  46. package/dist/neutral/modules/evm-contract-witness/Witness.d.ts.map +1 -1
  47. package/dist/neutral/modules/evm-events-witness/Witness.d.ts +1 -1
  48. package/dist/neutral/modules/evm-events-witness/Witness.d.ts.map +1 -1
  49. package/dist/neutral/modules/evm-events-witness/model.d.ts +1 -1
  50. package/dist/neutral/modules/evm-events-witness/model.d.ts.map +1 -1
  51. package/dist/node/modules/crypto-nft-collection-witness/Witness.d.ts +2 -2
  52. package/dist/node/modules/crypto-nft-collection-witness/Witness.d.ts.map +1 -1
  53. package/dist/node/modules/crypto-nft-witness-wallet/Witness.d.ts +2 -2
  54. package/dist/node/modules/crypto-nft-witness-wallet/Witness.d.ts.map +1 -1
  55. package/dist/node/modules/erc1822-witness/Witness.d.ts +2 -2
  56. package/dist/node/modules/erc1822-witness/Witness.d.ts.map +1 -1
  57. package/dist/node/modules/erc1967-witness/Witness.d.ts +2 -2
  58. package/dist/node/modules/erc1967-witness/Witness.d.ts.map +1 -1
  59. package/dist/node/modules/evm-call-witness/Witness.d.ts +1 -1
  60. package/dist/node/modules/evm-call-witness/Witness.d.ts.map +1 -1
  61. package/dist/node/modules/evm-call-witness/model.d.ts +1 -1
  62. package/dist/node/modules/evm-call-witness/model.d.ts.map +1 -1
  63. package/dist/node/modules/evm-contract-witness/Witness.d.ts +2 -2
  64. package/dist/node/modules/evm-contract-witness/Witness.d.ts.map +1 -1
  65. package/dist/node/modules/evm-events-witness/Witness.d.ts +1 -1
  66. package/dist/node/modules/evm-events-witness/Witness.d.ts.map +1 -1
  67. package/dist/node/modules/evm-events-witness/model.d.ts +1 -1
  68. package/dist/node/modules/evm-events-witness/model.d.ts.map +1 -1
  69. package/package.json +9 -11
@@ -1,7 +1,7 @@
1
1
  import type { NftCollectionInfo, NftCollectionWitnessConfig, NftCollectionWitnessQuery } from '@xyo-network/payload-plugins/crypto-nft-collection';
2
2
  import type { Schema } from '@xyo-network/sdk';
3
- import type { EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
4
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
3
+ import type { EvmWitnessParams } from '@xyo-network/witness-evm';
4
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
5
5
  export type CryptoNftCollectionWitnessParams = EvmWitnessParams<NftCollectionWitnessConfig>;
6
6
  export declare class CryptoNftCollectionWitness<TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams> extends AbstractEvmWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {
7
7
  static readonly configSchemas: Schema[];
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/crypto-nft-collection-witness/Witness.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,oDAAoD,CAAA;AAM3D,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAA;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAMtE,MAAM,MAAM,gCAAgC,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAA;AAoB3F,qBAAa,0BAA0B,CACrC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CACnF,SAAQ,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;IACjF,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA6D;IAC7G,gBAAyB,mBAAmB,EAAE,MAAM,CAAmC;cAE9D,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAkD9G"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/crypto-nft-collection-witness/Witness.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,oDAAoD,CAAA;AAM3D,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAA;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAM7D,MAAM,MAAM,gCAAgC,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAA;AAoB3F,qBAAa,0BAA0B,CACrC,OAAO,SAAS,gCAAgC,GAAG,gCAAgC,CACnF,SAAQ,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;IACjF,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA6D;IAC7G,gBAAyB,mBAAmB,EAAE,MAAM,CAAmC;cAE9D,cAAc,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAkD9G"}
@@ -1,7 +1,7 @@
1
1
  import type { CryptoWalletNftWitnessConfig, NftInfo, NftWitnessQuery } from '@xyo-network/payload-plugins/crypto-nft';
2
2
  import type { Schema } from '@xyo-network/sdk';
3
- import type { EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
4
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
3
+ import type { EvmWitnessParams } from '@xyo-network/witness-evm';
4
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
5
5
  export type CryptoWalletNftWitnessParams = EvmWitnessParams<CryptoWalletNftWitnessConfig>;
6
6
  export declare class CryptoWalletNftWitness<TParams extends CryptoWalletNftWitnessParams = CryptoWalletNftWitnessParams> extends AbstractEvmWitness<TParams, NftWitnessQuery, NftInfo> {
7
7
  static readonly configSchemas: Schema[];
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/crypto-nft-witness-wallet/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,OAAO,EACP,eAAe,EAChB,MAAM,yCAAyC,CAAA;AAMhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAItE,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAA;AAMzF,qBAAa,sBAAsB,CAAC,OAAO,SAAS,4BAA4B,GAAG,4BAA4B,CAAE,SAAQ,kBAAkB,CACzI,OAAO,EACP,eAAe,EACf,OAAO,CACR;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAE7E,IAAI,YAAY,YAEf;IAED,IAAI,OAAO,WAEV;cAEwB,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAqC1F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/crypto-nft-witness-wallet/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,OAAO,EACP,eAAe,EAChB,MAAM,yCAAyC,CAAA;AAMhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI7D,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,CAAA;AAMzF,qBAAa,sBAAsB,CAAC,OAAO,SAAS,4BAA4B,GAAG,4BAA4B,CAAE,SAAQ,kBAAkB,CACzI,OAAO,EACP,eAAe,EACf,OAAO,CACR;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAE7E,IAAI,YAAY,YAEf;IAED,IAAI,OAAO,WAEV;cAEwB,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAqC1F"}
@@ -1,6 +1,6 @@
1
1
  import type { Schema } from '@xyo-network/sdk';
2
- import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
3
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
+ import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm';
3
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
4
4
  import type { Erc1822Status } from './Payload.js';
5
5
  export declare const Erc1822WitnessConfigSchema: "network.xyo.erc1822.witness.config" & {
6
6
  readonly __schema: true;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/erc1822-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAAE,gBAAgB,EACnC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mCAAmC,CAAA;AAGxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,0BAA0B;;CAAuD,CAAA;AAC9F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,0BAA0B,CAAC,CAAA;AAErG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEzE,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CACjH,OAAO,EACP,UAAU,EACV,aAAa,CACd;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;cAExD,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAkCjG"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/erc1822-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAAE,gBAAgB,EACnC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,0BAA0B,CAAA;AAG/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,0BAA0B;;CAAuD,CAAA;AAC9F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,0BAA0B,CAAC,CAAA;AAErG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEzE,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CACjH,OAAO,EACP,UAAU,EACV,aAAa,CACd;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;cAExD,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAkCjG"}
@@ -1,6 +1,6 @@
1
1
  import type { Schema } from '@xyo-network/sdk';
2
- import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
3
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
+ import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm';
3
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
4
4
  import type { Erc1967Status } from './Payload.js';
5
5
  export declare const Erc1967WitnessConfigSchema: "network.xyo.erc1967.witness.config" & {
6
6
  readonly __schema: true;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/erc1967-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAAE,gBAAgB,EACnC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mCAAmC,CAAA;AAGxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,0BAA0B;;CAAuD,CAAA;AAC9F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,0BAA0B,CAAC,CAAA;AAErG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEzE,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CACjH,OAAO,EACP,UAAU,EACV,aAAa,CACd;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;cAExD,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAsCjG"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/erc1967-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAAE,gBAAgB,EACnC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,0BAA0B,CAAA;AAG/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,0BAA0B;;CAAuD,CAAA;AAC9F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,0BAA0B,CAAC,CAAA;AAErG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEzE,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CACjH,OAAO,EACP,UAAU,EACV,aAAa,CACd;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;cAExD,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAsCjG"}
@@ -1,5 +1,5 @@
1
1
  import type { Schema } from '@xyo-network/sdk';
2
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
3
3
  import type { InterfaceAbi } from 'ethers';
4
4
  import type { EvmCallWitnessParams } from './model.js';
5
5
  import type { EvmCall, EvmCallResult } from './Payload.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-call-witness/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAM1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,KAAK,EACV,OAAO,EAAE,aAAa,EAEvB,MAAM,cAAc,CAAA;AAGrB,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;IAEjF,IAAI,GAAG,IACoD,YAAY,CACtE;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CA0D9F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-call-witness/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAM1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,KAAK,EACV,OAAO,EAAE,aAAa,EAEvB,MAAM,cAAc,CAAA;AAGrB,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;IAClJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;IAEjF,IAAI,GAAG,IACoD,YAAY,CACtE;cAEwB,cAAc,CAAC,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CA0D9F"}
@@ -1,4 +1,4 @@
1
- import type { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
1
+ import type { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm';
2
2
  import type { JsonFragment } from 'ethers';
3
3
  export type Abi = string | readonly (JsonFragment | string)[];
4
4
  export declare const EvmCallWitnessConfigSchema: "network.xyo.evm.call.witness.config" & {
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-call-witness/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAA;AAE7D,eAAO,MAAM,0BAA0B;;CAAwD,CAAA;AAC/F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-call-witness/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAA;AAE7D,eAAO,MAAM,0BAA0B;;CAAwD,CAAA;AAC/F,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CACjD;IACE,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,0BAA0B,CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Schema } from '@xyo-network/sdk';
2
- import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
3
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
+ import type { EvmAddress, EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm';
3
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
4
4
  import type { EvmContract } from './Payload.js';
5
5
  export declare const EvmContractWitnessConfigSchema: "network.xyo.evm.contract.witness.config" & {
6
6
  readonly __schema: true;
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-contract-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAI9C,OAAO,KAAK,EACV,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAC/C,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mCAAmC,CAAA;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,eAAO,MAAM,8BAA8B;;CAA4D,CAAA;AACvG,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAA;AAElF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,8BAA8B,CAAC,CAAA;AAE7G,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAA;AAEjF,qBACa,kBAAkB,CAAC,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,CAAE,SAAQ,kBAAkB,CAC7H,OAAO,EACP,UAAU,EACV,WAAW,CACZ;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA2D;IAC3G,gBAAyB,mBAAmB,EAAE,MAAM,CAAiC;cAE5D,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CA8B/F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-contract-witness/Witness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAI9C,OAAO,KAAK,EACV,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAC/C,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,0BAA0B,CAAA;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,eAAO,MAAM,8BAA8B;;CAA4D,CAAA;AACvG,MAAM,MAAM,8BAA8B,GAAG,OAAO,8BAA8B,CAAA;AAElF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,8BAA8B,CAAC,CAAA;AAE7G,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAA;AAEjF,qBACa,kBAAkB,CAAC,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,CAAE,SAAQ,kBAAkB,CAC7H,OAAO,EACP,UAAU,EACV,WAAW,CACZ;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA2D;IAC3G,gBAAyB,mBAAmB,EAAE,MAAM,CAAiC;cAE5D,cAAc,CAAC,UAAU,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CA8B/F"}
@@ -1,5 +1,5 @@
1
1
  import type { Schema } from '@xyo-network/sdk';
2
- import { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
2
+ import { AbstractEvmWitness } from '@xyo-network/witness-evm';
3
3
  import type { InterfaceAbi } from 'ethers';
4
4
  import type { EvmEventsWitnessParams } from './model.js';
5
5
  import type { EvmEvent, EvmEvents } from './Payload.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-events-witness/Witness.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,KAAK,EACA,YAAY,EACvB,MAAM,QAAQ,CAAA;AAGf,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGvD,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAEnF,IAAI,GAAG,IAAI,YAAY,CAEtB;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CA+E3F"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-events-witness/Witness.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,EACA,YAAY,EACvB,MAAM,QAAQ,CAAA;AAGf,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGvD,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAAE,SAAQ,kBAAkB,CACvH,OAAO,EACP,SAAS,EACT,QAAQ,CACT;IACC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAEnF,IAAI,GAAG,IAAI,YAAY,CAEtB;cAEwB,cAAc,CAAC,UAAU,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CA+E3F"}
@@ -1,4 +1,4 @@
1
- import type { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract';
1
+ import type { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm';
2
2
  import type { Fragment, JsonFragment } from 'ethers';
3
3
  export type InterfaceAbi = string | readonly (Fragment | JsonFragment | string)[];
4
4
  export declare const EvmEventsWitnessConfigSchema: "network.xyo.evm.events.witness.config" & {
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-events-witness/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAEpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,CAAA;AAEjF,eAAO,MAAM,4BAA4B;;CAA0D,CAAA;AACnG,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/modules/evm-events-witness/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAEpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,CAAA;AAEjF,eAAO,MAAM,4BAA4B;;CAA0D,CAAA;AACnG,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD;IACE,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,4BAA4B,CAC7B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA"}
@@ -81,7 +81,7 @@ import {
81
81
  ERC1155Supply__factory
82
82
  } from "@xyo-network/open-zeppelin-typechain";
83
83
  import { NftSchema, toTokenType } from "@xyo-network/payload-plugins/crypto-nft";
84
- import { checkIpfsUrl } from "@xyo-network/witness-blockchain-abstract";
84
+ import { checkIpfsUrl } from "@xyo-network/witness-blockchain";
85
85
  import { getErc1822SlotStatus } from "#erc1822-witness";
86
86
  import { getErc1967SlotStatus } from "#erc1967-witness";
87
87
 
@@ -195,7 +195,7 @@ import {
195
195
  NftCollectionWitnessConfigSchema
196
196
  } from "@xyo-network/payload-plugins/crypto-nft-collection";
197
197
  import { PayloadBuilder } from "@xyo-network/sdk";
198
- import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
198
+ import { AbstractEvmWitness } from "@xyo-network/witness-evm";
199
199
  var defaultMaxNfts = 100;
200
200
  var NoOp = Promise.resolve();
201
201
  function resolvedValue(settled, assert) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/crypto-nft-collection-witness/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts", "../../src/modules/crypto-nft-collection-witness/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts", "../../src/modules/crypto-nft-collection-witness/lib/collectionMetrics/getNftCollectionMetrics.ts", "../../src/modules/crypto-nft-collection-witness/lib/contractHasFunctions.ts", "../../src/modules/crypto-nft-collection-witness/lib/getNftCollectionNfts.ts", "../../src/modules/crypto-nft-collection-witness/lib/tokenTypes.ts", "../../src/modules/crypto-nft-collection-witness/lib/tryCall.ts", "../../src/modules/crypto-nft-collection-witness/Plugin.ts", "../../src/modules/crypto-nft-collection-witness/Witness.ts"],
4
- "sourcesContent": ["import type { Distribution } from './distribution.ts'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n for (const item of array) {\n for (const property of Object.keys(item as object) as (keyof T)[]) {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = String(value)\n const propertyDistribution = distribution[property] ?? {}\n propertyDistribution[valueString] = (propertyDistribution[valueString] ?? 0) + 1\n distribution[property] = propertyDistribution\n }\n }\n }\n\n return distribution\n}\n", "import type { BinomialDistributionParameters } from '@xyo-network/payload-plugins/crypto-nft-collection'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (\u00B5)\n const mean = n * p\n\n // Variance (\u03C3^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (\u03C3)\n const stdDev = Math.sqrt(variance)\n\n return {\n mean, p, stdDev, variance,\n }\n}\n", "import type { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/payload-plugins/crypto-nft-collection'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib/index.ts'\n\ntype TraitDistributionEntry = [string, Record<string, number>]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map(nft => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map(attribute => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n", "import { assertEx } from '@ariestools/sdk'\nimport type { Interface, Provider } from 'ethers'\n\nexport const contractHasFunctions = async (provider: Provider, address: string, contractInterface: Interface, functionNames: string[]) => {\n try {\n const bytecode = await provider.getCode(address, 'latest')\n for (const functionName of functionNames) {\n const selector = assertEx(contractInterface.getFunction(functionName)?.selector, () => 'Function not found on interface')\n return (bytecode.includes(selector.slice(2)))\n }\n return false\n } catch (ex) {\n const error = ex as Error\n console.log(error)\n return false\n }\n}\n", "import type { EthAddress } from '@ariestools/sdk'\nimport {\n exists, FetchJsonClient, isHexZero,\n} from '@ariestools/sdk'\nimport {\n ERC721Enumerable__factory, ERC721URIStorage__factory, ERC1155Supply__factory,\n} from '@xyo-network/open-zeppelin-typechain'\nimport type {\n NftInfo, NftMetadata, TokenType,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport { NftSchema, toTokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport { checkIpfsUrl } from '@xyo-network/witness-blockchain-abstract'\nimport type { Provider } from 'ethers'\n\nimport { getErc1822SlotStatus } from '#erc1822-witness'\nimport { getErc1967SlotStatus } from '#erc1967-witness'\n\nimport { tokenTypes } from './tokenTypes.ts'\nimport { tryCall } from './tryCall.ts'\n\nconst ipfsGateway = '5d7b6582.beta.decentralnetworkservices.com'\n\nfunction range(size: number, startAt = 0): readonly number[] {\n return Array.from({ length: size }, (_value, i) => i + startAt)\n}\n\nexport const getNftCollectionNfts = async (\n /**\n * The address of the NFT contract to search for\n */\n contractAddress: EthAddress,\n /**\n * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on\n */\n provider: Provider,\n types?: TokenType[],\n /**\n * The maximum number of NFTs to return. Configurable to prevent\n * large wallets from exhausting Infura API credits. Ideally a\n * multiple of 100 as that appears to be the default page size.\n */\n maxNfts = 100,\n): Promise<NftInfo[]> => {\n try {\n const block = await provider.getBlockNumber()\n\n // Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, contractAddress, block)\n\n // Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, contractAddress, block)\n\n const implementation\n = (erc1967Status.slots.implementation == null || isHexZero(erc1967Status.slots.implementation) === true\n ? erc1822Status\n : erc1967Status).implementation\n\n const client = new FetchJsonClient({ timeout: 2000 })\n const enumerable = ERC721Enumerable__factory.connect(implementation, provider)\n const storage = ERC721URIStorage__factory.connect(implementation, provider)\n const supply1155 = ERC1155Supply__factory.connect(implementation, provider)\n const finalTypes = types ?? (await tokenTypes(provider, implementation))\n\n const maxNftsArray = range(maxNfts)\n\n const settledNfts = await Promise.all(\n maxNftsArray.map(async (_value, i) => {\n const tokenId = (await tryCall(async () => await enumerable.tokenByIndex(i, { blockTag: block }))) ?? BigInt(i)\n if (tokenId !== undefined) {\n const supply\n = finalTypes.includes(toTokenType('ERC1155'))\n ? ((await tryCall(async () => await supply1155['totalSupply(uint256)'](tokenId))) ?? '0x01')\n : '0x01'\n const metadataUri = await tryCall(async () => await storage.tokenURI(tokenId, { blockTag: block }))\n const checkedMetadataUri = metadataUri != null && metadataUri !== '' ? checkIpfsUrl(metadataUri, ipfsGateway) : undefined\n let metadata: NftMetadata | undefined\n if (checkedMetadataUri !== undefined) {\n try {\n const response = await client.get<NftMetadata>(checkedMetadataUri)\n metadata = response.data ?? undefined\n } catch (ex) {\n const error = ex as Error\n console.error(`Get Metadata failed: ${error.message}`)\n }\n }\n\n const network = await provider.getNetwork()\n const info: NftInfo = {\n address: contractAddress,\n chainId: Number(network.chainId),\n metadata,\n metadataUri,\n schema: NftSchema,\n supply: `0x${supply.toString(16)}`,\n tokenId: `0x${tokenId.toString(16)}`,\n type: finalTypes.at(0),\n types: finalTypes,\n }\n if (implementation !== contractAddress) {\n info.implementation = implementation\n }\n return info\n }\n }),\n )\n const result: NftInfo[] = settledNfts.filter(exists)\n return result\n } catch (ex) {\n const error = ex as Error\n console.error(`getNftCollectionNfts failed: [${error.name}] ${error.message}`)\n console.log(error.stack)\n return []\n }\n}\n", "import { ERC721__factory, ERC1155URIStorage__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\n\nimport { contractHasFunctions } from './contractHasFunctions.ts'\n\nexport const isErc1155 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC1155URIStorage__factory.createInterface(), ['uri'])\n}\n\nexport const isErc721 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC721__factory.createInterface(), ['name', 'symbol', 'tokenURI'])\n}\n\nexport const tokenTypes = async (provider: Provider, address: string) => {\n const [erc721, erc1155] = await Promise.all([isErc721(provider, address), isErc1155(provider, address)])\n const result: TokenType[] = []\n if (erc721) {\n result.push('ERC721')\n }\n if (erc1155) {\n result.push('ERC1155')\n }\n return result\n}\n", "export const tryCall = async <T>(func: () => Promise<T>, name?: string): Promise<T | undefined> => {\n try {\n return await func()\n } catch (ex) {\n if (name != null && name !== '') {\n const error = ex as Error\n console.log(`tryCall failed [${name}]: ${error.message}`)\n }\n return undefined\n }\n}\n", "import { NftSchema } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { PayloadSetWitnessPlugin } from '@xyo-network/sdk'\nimport { createPayloadSetWitnessPlugin, PayloadSetSchema } from '@xyo-network/sdk'\n\nimport { CryptoNftCollectionWitness } from './Witness.ts'\n\nexport const CryptoNftCollectionWitnessPlugin = (): PayloadSetWitnessPlugin<CryptoNftCollectionWitness> =>\n createPayloadSetWitnessPlugin<CryptoNftCollectionWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoNftCollectionWitness.create(params)\n return result\n },\n },\n )\n", "import { EthAddressWrapper } from '@ariestools/eth-address'\nimport { asEthAddress, assertEx } from '@ariestools/sdk'\nimport { ERC721Enumerable__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type {\n NftCollectionInfo,\n NftCollectionWitnessConfig,\n NftCollectionWitnessQuery,\n} from '@xyo-network/payload-plugins/crypto-nft-collection'\nimport {\n isNftCollectionWitnessQuery,\n NftCollectionSchema,\n NftCollectionWitnessConfigSchema,\n} from '@xyo-network/payload-plugins/crypto-nft-collection'\nimport type { Schema, WithSources } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type { EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\n\nimport {\n getNftCollectionMetrics, getNftCollectionNfts, tokenTypes,\n} from './lib/index.ts'\n\nexport type CryptoNftCollectionWitnessParams = EvmWitnessParams<NftCollectionWitnessConfig>\n\nconst defaultMaxNfts = 100\n\n/**\n * A \"no operation\" Promise to be used\n * when no action is desired but a Promise\n * is required to be returned\n */\nconst NoOp = Promise.resolve()\n\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert: true): T\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert?: false): T | undefined\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert?: boolean) {\n if (assert === true && settled.status === 'rejected') {\n throw settled.reason\n }\n return settled.status === 'fulfilled' ? settled.value : undefined\n}\n\nexport class CryptoNftCollectionWitness<\n TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams,\n> extends AbstractEvmWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NftCollectionWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = NftCollectionWitnessConfigSchema\n\n protected override async observeHandler(payloads?: NftCollectionWitnessQuery[]): Promise<NftCollectionInfo[]> {\n await this.startedAsync('throw')\n await this.getProviders() // make sure cache clears\n const queries = payloads?.filter(isNftCollectionWitnessQuery) ?? []\n const observations = await Promise.all(\n queries.map<Promise<NftCollectionInfo>>(async (query) => {\n const chainId = assertEx(query?.chainId ?? this.config.chainId, () => 'params.chainId is required')\n const provider = await this.getProvider(true, true)\n const address = asEthAddress(assertEx(\n EthAddressWrapper.parse(assertEx(query?.address ?? this.config.address, () => 'params.address is required')),\n () => 'Failed to parse params.address',\n ).toString(), true)\n\n const erc721Enumerable = ERC721Enumerable__factory.connect(address, provider)\n\n const maxNfts = query?.maxNfts != null && query.maxNfts > 0 ? query.maxNfts : defaultMaxNfts\n const [name, symbol, total, typesSettled, archivistSettled] = await Promise.allSettled([\n erc721Enumerable.name(),\n erc721Enumerable.symbol(),\n erc721Enumerable.totalSupply(),\n tokenTypes(provider, address),\n this.archivistInstance(),\n ])\n const types = resolvedValue(typesSettled, true)\n const nfts = await getNftCollectionNfts(address, provider, types, maxNfts)\n const metrics = getNftCollectionMetrics(nfts)\n const archivist = resolvedValue(archivistSettled)\n const [$sources] = await Promise.all([\n // Hash all the payloads\n Promise.all(nfts.map(nft => PayloadBuilder.dataHash(nft))),\n // Insert them into the archivist if we have one\n archivist ? archivist.insert(nfts) : NoOp,\n ])\n const payload: WithSources<NftCollectionInfo> = {\n address,\n chainId,\n metrics,\n name: resolvedValue(name, true),\n schema: NftCollectionSchema,\n $sources,\n symbol: resolvedValue(symbol, true),\n total: Number(resolvedValue(total, true)),\n type: types.at(0),\n types,\n }\n return payload\n }),\n )\n return observations.flat()\n }\n}\n"],
4
+ "sourcesContent": ["import type { Distribution } from './distribution.ts'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n for (const item of array) {\n for (const property of Object.keys(item as object) as (keyof T)[]) {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = String(value)\n const propertyDistribution = distribution[property] ?? {}\n propertyDistribution[valueString] = (propertyDistribution[valueString] ?? 0) + 1\n distribution[property] = propertyDistribution\n }\n }\n }\n\n return distribution\n}\n", "import type { BinomialDistributionParameters } from '@xyo-network/payload-plugins/crypto-nft-collection'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (\u00B5)\n const mean = n * p\n\n // Variance (\u03C3^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (\u03C3)\n const stdDev = Math.sqrt(variance)\n\n return {\n mean, p, stdDev, variance,\n }\n}\n", "import type { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/payload-plugins/crypto-nft-collection'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib/index.ts'\n\ntype TraitDistributionEntry = [string, Record<string, number>]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map(nft => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map(attribute => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n", "import { assertEx } from '@ariestools/sdk'\nimport type { Interface, Provider } from 'ethers'\n\nexport const contractHasFunctions = async (provider: Provider, address: string, contractInterface: Interface, functionNames: string[]) => {\n try {\n const bytecode = await provider.getCode(address, 'latest')\n for (const functionName of functionNames) {\n const selector = assertEx(contractInterface.getFunction(functionName)?.selector, () => 'Function not found on interface')\n return (bytecode.includes(selector.slice(2)))\n }\n return false\n } catch (ex) {\n const error = ex as Error\n console.log(error)\n return false\n }\n}\n", "import type { EthAddress } from '@ariestools/sdk'\nimport {\n exists, FetchJsonClient, isHexZero,\n} from '@ariestools/sdk'\nimport {\n ERC721Enumerable__factory, ERC721URIStorage__factory, ERC1155Supply__factory,\n} from '@xyo-network/open-zeppelin-typechain'\nimport type {\n NftInfo, NftMetadata, TokenType,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport { NftSchema, toTokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport { checkIpfsUrl } from '@xyo-network/witness-blockchain'\nimport type { Provider } from 'ethers'\n\nimport { getErc1822SlotStatus } from '#erc1822-witness'\nimport { getErc1967SlotStatus } from '#erc1967-witness'\n\nimport { tokenTypes } from './tokenTypes.ts'\nimport { tryCall } from './tryCall.ts'\n\nconst ipfsGateway = '5d7b6582.beta.decentralnetworkservices.com'\n\nfunction range(size: number, startAt = 0): readonly number[] {\n return Array.from({ length: size }, (_value, i) => i + startAt)\n}\n\nexport const getNftCollectionNfts = async (\n /**\n * The address of the NFT contract to search for\n */\n contractAddress: EthAddress,\n /**\n * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on\n */\n provider: Provider,\n types?: TokenType[],\n /**\n * The maximum number of NFTs to return. Configurable to prevent\n * large wallets from exhausting Infura API credits. Ideally a\n * multiple of 100 as that appears to be the default page size.\n */\n maxNfts = 100,\n): Promise<NftInfo[]> => {\n try {\n const block = await provider.getBlockNumber()\n\n // Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, contractAddress, block)\n\n // Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, contractAddress, block)\n\n const implementation\n = (erc1967Status.slots.implementation == null || isHexZero(erc1967Status.slots.implementation) === true\n ? erc1822Status\n : erc1967Status).implementation\n\n const client = new FetchJsonClient({ timeout: 2000 })\n const enumerable = ERC721Enumerable__factory.connect(implementation, provider)\n const storage = ERC721URIStorage__factory.connect(implementation, provider)\n const supply1155 = ERC1155Supply__factory.connect(implementation, provider)\n const finalTypes = types ?? (await tokenTypes(provider, implementation))\n\n const maxNftsArray = range(maxNfts)\n\n const settledNfts = await Promise.all(\n maxNftsArray.map(async (_value, i) => {\n const tokenId = (await tryCall(async () => await enumerable.tokenByIndex(i, { blockTag: block }))) ?? BigInt(i)\n if (tokenId !== undefined) {\n const supply\n = finalTypes.includes(toTokenType('ERC1155'))\n ? ((await tryCall(async () => await supply1155['totalSupply(uint256)'](tokenId))) ?? '0x01')\n : '0x01'\n const metadataUri = await tryCall(async () => await storage.tokenURI(tokenId, { blockTag: block }))\n const checkedMetadataUri = metadataUri != null && metadataUri !== '' ? checkIpfsUrl(metadataUri, ipfsGateway) : undefined\n let metadata: NftMetadata | undefined\n if (checkedMetadataUri !== undefined) {\n try {\n const response = await client.get<NftMetadata>(checkedMetadataUri)\n metadata = response.data ?? undefined\n } catch (ex) {\n const error = ex as Error\n console.error(`Get Metadata failed: ${error.message}`)\n }\n }\n\n const network = await provider.getNetwork()\n const info: NftInfo = {\n address: contractAddress,\n chainId: Number(network.chainId),\n metadata,\n metadataUri,\n schema: NftSchema,\n supply: `0x${supply.toString(16)}`,\n tokenId: `0x${tokenId.toString(16)}`,\n type: finalTypes.at(0),\n types: finalTypes,\n }\n if (implementation !== contractAddress) {\n info.implementation = implementation\n }\n return info\n }\n }),\n )\n const result: NftInfo[] = settledNfts.filter(exists)\n return result\n } catch (ex) {\n const error = ex as Error\n console.error(`getNftCollectionNfts failed: [${error.name}] ${error.message}`)\n console.log(error.stack)\n return []\n }\n}\n", "import { ERC721__factory, ERC1155URIStorage__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\n\nimport { contractHasFunctions } from './contractHasFunctions.ts'\n\nexport const isErc1155 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC1155URIStorage__factory.createInterface(), ['uri'])\n}\n\nexport const isErc721 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC721__factory.createInterface(), ['name', 'symbol', 'tokenURI'])\n}\n\nexport const tokenTypes = async (provider: Provider, address: string) => {\n const [erc721, erc1155] = await Promise.all([isErc721(provider, address), isErc1155(provider, address)])\n const result: TokenType[] = []\n if (erc721) {\n result.push('ERC721')\n }\n if (erc1155) {\n result.push('ERC1155')\n }\n return result\n}\n", "export const tryCall = async <T>(func: () => Promise<T>, name?: string): Promise<T | undefined> => {\n try {\n return await func()\n } catch (ex) {\n if (name != null && name !== '') {\n const error = ex as Error\n console.log(`tryCall failed [${name}]: ${error.message}`)\n }\n return undefined\n }\n}\n", "import { NftSchema } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { PayloadSetWitnessPlugin } from '@xyo-network/sdk'\nimport { createPayloadSetWitnessPlugin, PayloadSetSchema } from '@xyo-network/sdk'\n\nimport { CryptoNftCollectionWitness } from './Witness.ts'\n\nexport const CryptoNftCollectionWitnessPlugin = (): PayloadSetWitnessPlugin<CryptoNftCollectionWitness> =>\n createPayloadSetWitnessPlugin<CryptoNftCollectionWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoNftCollectionWitness.create(params)\n return result\n },\n },\n )\n", "import { EthAddressWrapper } from '@ariestools/eth-address'\nimport { asEthAddress, assertEx } from '@ariestools/sdk'\nimport { ERC721Enumerable__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type {\n NftCollectionInfo,\n NftCollectionWitnessConfig,\n NftCollectionWitnessQuery,\n} from '@xyo-network/payload-plugins/crypto-nft-collection'\nimport {\n isNftCollectionWitnessQuery,\n NftCollectionSchema,\n NftCollectionWitnessConfigSchema,\n} from '@xyo-network/payload-plugins/crypto-nft-collection'\nimport type { Schema, WithSources } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type { EvmWitnessParams } from '@xyo-network/witness-evm'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm'\n\nimport {\n getNftCollectionMetrics, getNftCollectionNfts, tokenTypes,\n} from './lib/index.ts'\n\nexport type CryptoNftCollectionWitnessParams = EvmWitnessParams<NftCollectionWitnessConfig>\n\nconst defaultMaxNfts = 100\n\n/**\n * A \"no operation\" Promise to be used\n * when no action is desired but a Promise\n * is required to be returned\n */\nconst NoOp = Promise.resolve()\n\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert: true): T\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert?: false): T | undefined\nfunction resolvedValue<T>(settled: PromiseSettledResult<T>, assert?: boolean) {\n if (assert === true && settled.status === 'rejected') {\n throw settled.reason\n }\n return settled.status === 'fulfilled' ? settled.value : undefined\n}\n\nexport class CryptoNftCollectionWitness<\n TParams extends CryptoNftCollectionWitnessParams = CryptoNftCollectionWitnessParams,\n> extends AbstractEvmWitness<TParams, NftCollectionWitnessQuery, NftCollectionInfo> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NftCollectionWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = NftCollectionWitnessConfigSchema\n\n protected override async observeHandler(payloads?: NftCollectionWitnessQuery[]): Promise<NftCollectionInfo[]> {\n await this.startedAsync('throw')\n await this.getProviders() // make sure cache clears\n const queries = payloads?.filter(isNftCollectionWitnessQuery) ?? []\n const observations = await Promise.all(\n queries.map<Promise<NftCollectionInfo>>(async (query) => {\n const chainId = assertEx(query?.chainId ?? this.config.chainId, () => 'params.chainId is required')\n const provider = await this.getProvider(true, true)\n const address = asEthAddress(assertEx(\n EthAddressWrapper.parse(assertEx(query?.address ?? this.config.address, () => 'params.address is required')),\n () => 'Failed to parse params.address',\n ).toString(), true)\n\n const erc721Enumerable = ERC721Enumerable__factory.connect(address, provider)\n\n const maxNfts = query?.maxNfts != null && query.maxNfts > 0 ? query.maxNfts : defaultMaxNfts\n const [name, symbol, total, typesSettled, archivistSettled] = await Promise.allSettled([\n erc721Enumerable.name(),\n erc721Enumerable.symbol(),\n erc721Enumerable.totalSupply(),\n tokenTypes(provider, address),\n this.archivistInstance(),\n ])\n const types = resolvedValue(typesSettled, true)\n const nfts = await getNftCollectionNfts(address, provider, types, maxNfts)\n const metrics = getNftCollectionMetrics(nfts)\n const archivist = resolvedValue(archivistSettled)\n const [$sources] = await Promise.all([\n // Hash all the payloads\n Promise.all(nfts.map(nft => PayloadBuilder.dataHash(nft))),\n // Insert them into the archivist if we have one\n archivist ? archivist.insert(nfts) : NoOp,\n ])\n const payload: WithSources<NftCollectionInfo> = {\n address,\n chainId,\n metrics,\n name: resolvedValue(name, true),\n schema: NftCollectionSchema,\n $sources,\n symbol: resolvedValue(symbol, true),\n total: Number(resolvedValue(total, true)),\n type: types.at(0),\n types,\n }\n return payload\n }),\n )\n return observations.flat()\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["attributes", "p", "NftSchema", "assertEx", "ERC721Enumerable__factory", "assertEx", "ERC721Enumerable__factory", "NftSchema"]
7
7
  }
@@ -29,7 +29,7 @@ import { getErc1967SlotStatus } from "#erc1967-witness";
29
29
  // src/modules/crypto-nft-witness-wallet/lib/getNftMetadata.ts
30
30
  import { FetchJsonClient } from "@ariestools/sdk";
31
31
  import { ERC721URIStorage__factory, ERC1155URIStorage__factory as ERC1155URIStorage__factory2 } from "@xyo-network/open-zeppelin-typechain";
32
- import { checkIpfsUrl } from "@xyo-network/witness-blockchain-abstract";
32
+ import { checkIpfsUrl } from "@xyo-network/witness-blockchain";
33
33
  import parseDataUrl from "parse-data-url";
34
34
 
35
35
  // src/modules/crypto-nft-witness-wallet/lib/tokenTypes.ts
@@ -260,7 +260,7 @@ import {
260
260
  NftSchema,
261
261
  NftWitnessConfigSchema
262
262
  } from "@xyo-network/payload-plugins/crypto-nft";
263
- import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
263
+ import { AbstractEvmWitness } from "@xyo-network/witness-evm";
264
264
  var schema = NftSchema;
265
265
  var defaultMaxNfts = 200;
266
266
  var CryptoWalletNftWitness = class extends AbstractEvmWitness {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/crypto-nft-witness-wallet/lib/contractHasFunctions.ts", "../../src/modules/crypto-nft-witness-wallet/lib/getNftsOwnedByAddress.ts", "../../src/modules/crypto-nft-witness-wallet/lib/getNftMetadata.ts", "../../src/modules/crypto-nft-witness-wallet/lib/tokenTypes.ts", "../../src/modules/crypto-nft-witness-wallet/lib/getNftsFromWalletFromOpenSea.ts", "../../src/modules/crypto-nft-witness-wallet/lib/getProvider.ts", "../../src/modules/crypto-nft-witness-wallet/lib/tryCall.ts", "../../src/modules/crypto-nft-witness-wallet/Plugin.ts", "../../src/modules/crypto-nft-witness-wallet/Witness.ts"],
4
- "sourcesContent": ["import { assertEx } from '@ariestools/sdk'\nimport type { Interface, Provider } from 'ethers'\n\nexport const contractHasFunctions = async (provider: Provider, address: string, contractInterface: Interface, functionNames: string[]) => {\n try {\n const bytecode = await provider.getCode(address, 'latest')\n for (const functionName of functionNames) {\n const selector = assertEx(contractInterface.getFunction(functionName)?.selector, () => 'Function not found on interface')\n return bytecode.includes(selector.slice(2))\n }\n return false\n } catch (ex) {\n const error = ex as Error\n console.log(error)\n return false\n }\n}\n", "import { isHexZero } from '@ariestools/sdk'\nimport {\n ERC721__factory, ERC1155__factory, ERC1155Supply__factory,\n} from '@xyo-network/open-zeppelin-typechain'\nimport type { NftInfoFields, TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\nimport { LRUCache } from 'lru-cache'\n\nimport { getErc1822SlotStatus } from '#erc1822-witness'\nimport { getErc1967SlotStatus } from '#erc1967-witness'\n\nimport { getNftMetadata } from './getNftMetadata.ts'\nimport { getNftsFromWalletFromOpenSea } from './getNftsFromWalletFromOpenSea.ts'\nimport { getProvider } from './getProvider.ts'\nimport { tokenTypes } from './tokenTypes.ts'\nimport { tryCall } from './tryCall.ts'\n\nconst tokenTypeCache = new LRUCache<string, TokenType[]>({ max: 100 })\n\nexport const getTokenTypes = async (provider: Provider, address: string) => {\n const network = await provider.getNetwork()\n const key = `${address}|${network.chainId}`\n const currentValue = tokenTypeCache.get(key)\n if (currentValue) {\n return currentValue\n }\n const types = await tokenTypes(provider, address)\n tokenTypeCache.set(key, types)\n return types\n}\n\nexport const getErc721MetadataUri = async (\n address: string,\n tokenId: string,\n provider: Provider,\n): Promise<[string | undefined, Error | undefined]> => {\n try {\n const contract = ERC721__factory.connect(address, provider)\n return [await contract.tokenURI(tokenId), undefined]\n } catch (ex) {\n return [undefined, ex as Error]\n }\n}\n\nexport const getErc1155MetadataUri = async (\n address: string,\n tokenId: string,\n provider: Provider,\n): Promise<[string | undefined, Error | undefined]> => {\n try {\n const contract = ERC1155__factory.connect(address, provider)\n return [await contract.uri(tokenId), undefined]\n } catch (ex) {\n return [undefined, ex as Error]\n }\n}\n\nexport const getNftMetadataUri = async (address: string, tokenId: string, provider: Provider) => {\n const results = await Promise.all([getErc721MetadataUri(address, tokenId, provider), getErc1155MetadataUri(address, tokenId, provider)])\n return results[0][0] ?? results[1][0]\n}\n\nexport const getNftsOwnedByAddressWithMetadata = async (\n /** @param publicAddress The address of the wallet to search for NFTs */\n publicAddress: string,\n /** @param provider The provider to use for accessing the block chain */\n providers: Provider[],\n /** @param maxNfts The maximum number of NFTs to return. Configurable to prevent large wallets from exhausting Infura API credits. */\n maxNfts = 200,\n /** @param httpTimeout The connection timeout for HTTP call to get metadata */\n timeout = 5000,\n): Promise<NftInfoFields[]> => {\n const nfts = await getNftsOwnedByAddress(publicAddress, providers, maxNfts, timeout)\n const nftResult = await Promise.all(\n nfts.map(async (nft) => {\n try {\n if (nft.metadataUri == null || nft.metadataUri === '' || !nft.metadata) {\n const [metadataUri, metadata] = await getNftMetadata(\n nft.implementation ?? nft.address,\n getProvider(providers),\n nft.tokenId,\n true,\n nft.metadataUri,\n )\n nft.metadata = nft.metadata ?? metadata\n nft.metadataUri = nft.metadataUri ?? metadataUri\n }\n return nft\n } catch (ex) {\n const error = ex as Error\n console.error(`Error: ${error.message}`)\n console.error(error.stack)\n throw ex\n }\n }),\n )\n return nftResult\n}\n\nexport const getNftsOwnedByAddress = async (\n /** @param publicAddress The address of the wallet to search for NFTs */\n publicAddress: string,\n /** @param provider The provider to use for accessing the block chain */\n providers: Provider[],\n /** @param maxNfts The maximum number of NFTs to return. Configurable to prevent large wallets from exhausting Infura API credits. */\n maxNfts = 100,\n /** @param httpTimeout The connection timeout for HTTP call to get metadata */\n timeout = 5000,\n): Promise<NftInfoFields[]> => {\n // const assets = await getAssetsFromWallet(publicAddress, maxNfts, timeout)\n const nfts = await getNftsFromWalletFromOpenSea(publicAddress, maxNfts, timeout)\n\n const nftResult = await Promise.all(\n nfts.map(async (nft) => {\n try {\n const {\n contract, identifier, metadata_url,\n } = nft\n const provider = getProvider(providers)\n\n const block = await provider.getBlockNumber()\n\n // Check if Upgradeable\n const [erc1967Status, erc1822Status] = await Promise.all([\n // Check if ERC-1967 Upgradeable\n getErc1967SlotStatus(provider, contract, block),\n\n // Check if ERC-1822 Upgradeable\n getErc1822SlotStatus(provider, contract, block),\n ])\n\n const erc1967Implementation = erc1967Status.slots.implementation\n const implementation\n = (erc1967Implementation == null || erc1967Implementation === '' || isHexZero(erc1967Implementation) === true\n ? erc1822Status\n : erc1967Status).implementation\n\n let supply = 1n\n const types = await getTokenTypes(provider, implementation)\n if (types.includes('ERC1155')) {\n const supply1155 = ERC1155Supply__factory.connect(implementation, getProvider(providers))\n supply = (await tryCall(async () => await supply1155['totalSupply(uint256)'](erc1967Status.address))) ?? 1n\n }\n const fieldsNetwork = await provider.getNetwork()\n const fields: NftInfoFields = {\n address: contract,\n chainId: Number(fieldsNetwork.chainId),\n metadataUri: metadata_url ?? undefined,\n supply: `0x${supply.toString(16)}`,\n tokenId: identifier,\n type: types.at(0),\n types,\n }\n if (implementation !== contract) {\n fields.implementation = implementation\n }\n return fields\n } catch (ex) {\n const error = ex as Error\n console.error(`Error: ${error.message}`)\n console.error(error.stack)\n throw ex\n }\n }),\n )\n\n return nftResult\n}\n", "/* eslint-disable complexity */\n\nimport { FetchJsonClient } from '@ariestools/sdk'\nimport { ERC721URIStorage__factory, ERC1155URIStorage__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { NftMetadata } from '@xyo-network/payload-plugins/crypto-nft'\nimport { checkIpfsUrl } from '@xyo-network/witness-blockchain-abstract'\nimport type { Provider } from 'ethers'\nimport parseDataUrl from 'parse-data-url'\n\nimport { isErc721, isErc1155 } from './tokenTypes.ts'\n\n/* const baseUrlAbi = [\n {\n inputs: [],\n name: 'baseUrl',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] */\n\nconst ipfsGateway = '5d7b6582.beta.decentralnetworkservices.com'\n\nconst fetchMetadataFromUri = async (uri: string): Promise<NftMetadata | undefined> => {\n const client = new FetchJsonClient({ timeout: 5000 })\n const response = await client.get<NftMetadata>(uri)\n return response.data ?? undefined\n}\n\nexport const getNftMetadata = async (\n /**\n * The address of the NFT contract to search for\n */\n contractAddress: string,\n /**\n * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on\n */\n provider: Provider,\n /**\n * The maximum number of NFTs to return. Configurable to prevent\n * large wallets from exhausting Infura API credits. Ideally a\n * multiple of 100 as that appears to be the default page size.\n */\n tokenId: string,\n load = false,\n defaultUri?: string,\n): Promise<[string | undefined, NftMetadata | undefined]> => {\n const storage721 = ERC721URIStorage__factory.connect(contractAddress, provider)\n const storage1155 = ERC1155URIStorage__factory.connect(contractAddress, provider)\n\n let uri721: string | undefined\n const is721 = await isErc721(provider, contractAddress)\n if (is721) {\n try {\n uri721 = await storage721.tokenURI(tokenId)\n } catch {\n // const error = ex as Error\n // console.error(`metaDataUri[${error.name}][${contractAddress}]: storage721.tokenURI(tokenId) failed`)\n }\n }\n\n /* let baseUrl: string | undefined = undefined\n if (is721) {\n try {\n const baseUrlContract = new Contract(contractAddress, baseUrlAbi, provider)\n baseUrl = await baseUrlContract.bareUrl()\n } catch (ex) {\n const error = ex as Error\n console.error(`baseUrl[${error.name}][${contractAddress}]: baseUrl() failed`)\n }\n }\n\n if (baseUrl && !uri721?.startsWith(baseUrl)) {\n uri721 = `${baseUrl}${uri721 ?? tokenId}`\n }\n */\n\n let uri1155: string | undefined\n if (uri721 == null || uri721 === '') {\n const is1155 = await isErc1155(provider, contractAddress)\n if (is1155) {\n try {\n uri1155 = await storage1155.uri(tokenId)\n } catch {\n // const error = ex as Error\n // console.error(`metaDataUri[${error.name}][${contractAddress}]: storage1155.uri(tokenId) failed`)\n // console.log(error.message)\n }\n }\n }\n\n const tokenMetadataUri = [uri721, uri1155].find(Boolean) ?? defaultUri\n let metadata: NftMetadata | undefined\n if (load) {\n if (tokenMetadataUri?.startsWith('data:') === true) {\n const parsedDataUrl = parseDataUrl(tokenMetadataUri)\n if (parsedDataUrl !== false && parsedDataUrl.contentType === 'application/json') {\n const buf = parsedDataUrl.toBuffer()\n const value = buf.toString('utf8')\n metadata = JSON.parse(value) as NftMetadata\n }\n } else {\n /* if (tokenMetadataUri && tokenMetadataUri.length < 5) {\n console.log(`tokenMetadataUri [<5][${contractAddress}]: ${tokenMetadataUri}`)\n console.log(`tokenMetadataUri [uri721]: ${uri721}`)\n console.log(`tokenMetadataUri [uri1155]: ${uri1155}`)\n console.log(`tokenMetadataUri [defaultUri]: ${defaultUri}`)\n } */\n const checkedMetadataUri = tokenMetadataUri != null && tokenMetadataUri.length > 0 ? checkIpfsUrl(tokenMetadataUri, ipfsGateway) : undefined\n try {\n if (checkedMetadataUri != null && checkedMetadataUri.length > 0) {\n metadata = await fetchMetadataFromUri(checkedMetadataUri)\n }\n } catch {\n try {\n if (defaultUri != null && defaultUri.length > 0) {\n metadata = await fetchMetadataFromUri(defaultUri)\n }\n } catch {\n // const error = ex as Error\n // console.error(`metadata: ${error.message}`)\n }\n }\n }\n }\n\n return [tokenMetadataUri, metadata]\n}\n", "import { ERC1155URIStorage__factory, IERC721Metadata__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\n\nimport { contractHasFunctions } from './contractHasFunctions.ts'\n\nexport const isErc1155 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC1155URIStorage__factory.createInterface(), ['uri'])\n}\n\nexport const isErc721 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, IERC721Metadata__factory.createInterface(), ['name', 'symbol', 'tokenURI'])\n}\n\nexport const tokenTypes = async (provider: Provider, address: string) => {\n const [erc721, erc1155] = await Promise.all([isErc721(provider, address), isErc1155(provider, address)])\n const result: TokenType[] = []\n if (erc721) {\n result.push('ERC721')\n }\n if (erc1155) {\n result.push('ERC1155')\n }\n return result\n}\n", "import type { EthAddress } from '@ariestools/sdk'\nimport { assertEx, FetchJsonClient } from '@ariestools/sdk'\n\ninterface OpenSeaNFT {\n /*\n * Collection slug. A unique string to identify a collection on OpenSea\n */\n collection: string\n /*\n * The unique public blockchain identifier for the contract\n */\n contract: EthAddress\n /**\n * @deprecated\n */\n created_at: string\n /*\n * Description of the NFT\n */\n description: string | null\n /*\n * The NFT's unique identifier within the smart contract (also referred to as token_id)\n */\n identifier: string\n /*\n * Link to the image associated with the NFT\n */\n image_url: string | null\n /*\n * If the item is currently able to be bought or sold using OpenSea\n */\n is_disabled: boolean\n /*\n * If the item is currently classified as 'Not Safe for Work' by OpenSea as defined in OpenSea's NSFW Policy.\n */\n is_nsfw: boolean\n /*\n * Link to the offchain metadata store\n */\n metadata_url: string | null\n /*\n * Name of the NFT\n */\n name: string | null\n /*\n * ERC standard of the token (erc721, erc1155)\n */\n token_standard: string\n /*\n * Last time that the NFT's metadata was updated by OpenSea\n */\n updated_at: string\n}\n\nexport const getNftsFromWalletFromOpenSea = async (address: string, maxNfts = 200, timeout = 2000) => {\n const apiKey = assertEx(process.env.OPENSEA_API_KEY, () => 'No opensea key found')\n\n const client = new FetchJsonClient({ headers: { 'x-api-key': apiKey }, timeout })\n\n const response = await client.get<{ nfts: OpenSeaNFT[] }>(`https://api.opensea.io/api/v2/chain/ethereum/account/${address}/nfts?limit=${maxNfts}`)\n const nfts = response.data?.nfts ?? []\n return nfts\n}\n", "import type { Provider } from 'ethers'\n\nexport const getProvider = (providers: Provider[]) => {\n return providers[Date.now() % providers.length] // pick a random provider\n}\n", "export const tryCall = async <T>(func: () => Promise<T>, name?: string): Promise<T | undefined> => {\n try {\n return await func()\n } catch (ex) {\n if (name != null && name !== '') {\n const error = ex as Error\n console.log(`tryCall failed [${name}]: ${error.message}`)\n }\n return undefined\n }\n}\n", "import { NftSchema } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { PayloadSetWitnessPlugin } from '@xyo-network/sdk'\nimport { createPayloadSetWitnessPlugin, PayloadSetSchema } from '@xyo-network/sdk'\n\nimport { CryptoWalletNftWitness } from './Witness.ts'\n\nexport const CryptoWalletNftWitnessPlugin = (): PayloadSetWitnessPlugin<CryptoWalletNftWitness> =>\n createPayloadSetWitnessPlugin<CryptoWalletNftWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoWalletNftWitness.create(params)\n return result\n },\n },\n )\n", "import { EthAddressWrapper } from '@ariestools/eth-address'\nimport { assertEx } from '@ariestools/sdk'\nimport type {\n CryptoWalletNftWitnessConfig,\n NftInfo,\n NftWitnessQuery,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport {\n isNftWitnessQuery,\n NftSchema,\n NftWitnessConfigSchema,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Schema } from '@xyo-network/sdk'\nimport type { EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\n\nimport { getNftsOwnedByAddress, getNftsOwnedByAddressWithMetadata } from './lib/index.ts'\n\nexport type CryptoWalletNftWitnessParams = EvmWitnessParams<CryptoWalletNftWitnessConfig>\n\nconst schema = NftSchema\n\nconst defaultMaxNfts = 200\n\nexport class CryptoWalletNftWitness<TParams extends CryptoWalletNftWitnessParams = CryptoWalletNftWitnessParams> extends AbstractEvmWitness<\n TParams,\n NftWitnessQuery,\n NftInfo\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NftWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = NftWitnessConfigSchema\n\n get loadMetadata() {\n return this.config.loadMetadata ?? true\n }\n\n get timeout() {\n return this.config.timeout ?? 10_000\n }\n\n protected override async observeHandler(payloads?: NftWitnessQuery[]): Promise<NftInfo[]> {\n await this.startedAsync('throw')\n const queries = payloads?.filter(isNftWitnessQuery) ?? []\n // calling it here to make sure we rests the cache\n const providers = await this.getProviders()\n try {\n const observations = await Promise.all(\n queries.map(async (query) => {\n const provider = await this.getProvider(true, true)\n const addressValue = assertEx(query?.address ?? this.config.address, () => 'params.address is required')\n const parsedAddressValue = EthAddressWrapper.parse(addressValue)\n const address = assertEx(parsedAddressValue?.toString(), () => 'Failed to parse params.address')\n const network = await provider.getNetwork()\n const chainId = assertEx(network.chainId, () => 'params.chainId is required')\n const maxNfts = query?.maxNfts != null && query.maxNfts > 0 ? query.maxNfts : defaultMaxNfts\n try {\n const nfts\n = this.loadMetadata\n ? await getNftsOwnedByAddressWithMetadata(address, providers, maxNfts, this.timeout)\n : await getNftsOwnedByAddress(address, providers, maxNfts, this.timeout)\n const observation = nfts.map<NftInfo>((nft) => {\n return { ...nft, schema }\n })\n return observation\n } catch (ex) {\n const error = ex as Error\n throw new Error(`Failed to get nfts for address ${address} on chainId ${chainId}: ${error.message}`, { cause: ex })\n }\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.error(error)\n return []\n }\n }\n}\n"],
4
+ "sourcesContent": ["import { assertEx } from '@ariestools/sdk'\nimport type { Interface, Provider } from 'ethers'\n\nexport const contractHasFunctions = async (provider: Provider, address: string, contractInterface: Interface, functionNames: string[]) => {\n try {\n const bytecode = await provider.getCode(address, 'latest')\n for (const functionName of functionNames) {\n const selector = assertEx(contractInterface.getFunction(functionName)?.selector, () => 'Function not found on interface')\n return bytecode.includes(selector.slice(2))\n }\n return false\n } catch (ex) {\n const error = ex as Error\n console.log(error)\n return false\n }\n}\n", "import { isHexZero } from '@ariestools/sdk'\nimport {\n ERC721__factory, ERC1155__factory, ERC1155Supply__factory,\n} from '@xyo-network/open-zeppelin-typechain'\nimport type { NftInfoFields, TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\nimport { LRUCache } from 'lru-cache'\n\nimport { getErc1822SlotStatus } from '#erc1822-witness'\nimport { getErc1967SlotStatus } from '#erc1967-witness'\n\nimport { getNftMetadata } from './getNftMetadata.ts'\nimport { getNftsFromWalletFromOpenSea } from './getNftsFromWalletFromOpenSea.ts'\nimport { getProvider } from './getProvider.ts'\nimport { tokenTypes } from './tokenTypes.ts'\nimport { tryCall } from './tryCall.ts'\n\nconst tokenTypeCache = new LRUCache<string, TokenType[]>({ max: 100 })\n\nexport const getTokenTypes = async (provider: Provider, address: string) => {\n const network = await provider.getNetwork()\n const key = `${address}|${network.chainId}`\n const currentValue = tokenTypeCache.get(key)\n if (currentValue) {\n return currentValue\n }\n const types = await tokenTypes(provider, address)\n tokenTypeCache.set(key, types)\n return types\n}\n\nexport const getErc721MetadataUri = async (\n address: string,\n tokenId: string,\n provider: Provider,\n): Promise<[string | undefined, Error | undefined]> => {\n try {\n const contract = ERC721__factory.connect(address, provider)\n return [await contract.tokenURI(tokenId), undefined]\n } catch (ex) {\n return [undefined, ex as Error]\n }\n}\n\nexport const getErc1155MetadataUri = async (\n address: string,\n tokenId: string,\n provider: Provider,\n): Promise<[string | undefined, Error | undefined]> => {\n try {\n const contract = ERC1155__factory.connect(address, provider)\n return [await contract.uri(tokenId), undefined]\n } catch (ex) {\n return [undefined, ex as Error]\n }\n}\n\nexport const getNftMetadataUri = async (address: string, tokenId: string, provider: Provider) => {\n const results = await Promise.all([getErc721MetadataUri(address, tokenId, provider), getErc1155MetadataUri(address, tokenId, provider)])\n return results[0][0] ?? results[1][0]\n}\n\nexport const getNftsOwnedByAddressWithMetadata = async (\n /** @param publicAddress The address of the wallet to search for NFTs */\n publicAddress: string,\n /** @param provider The provider to use for accessing the block chain */\n providers: Provider[],\n /** @param maxNfts The maximum number of NFTs to return. Configurable to prevent large wallets from exhausting Infura API credits. */\n maxNfts = 200,\n /** @param httpTimeout The connection timeout for HTTP call to get metadata */\n timeout = 5000,\n): Promise<NftInfoFields[]> => {\n const nfts = await getNftsOwnedByAddress(publicAddress, providers, maxNfts, timeout)\n const nftResult = await Promise.all(\n nfts.map(async (nft) => {\n try {\n if (nft.metadataUri == null || nft.metadataUri === '' || !nft.metadata) {\n const [metadataUri, metadata] = await getNftMetadata(\n nft.implementation ?? nft.address,\n getProvider(providers),\n nft.tokenId,\n true,\n nft.metadataUri,\n )\n nft.metadata = nft.metadata ?? metadata\n nft.metadataUri = nft.metadataUri ?? metadataUri\n }\n return nft\n } catch (ex) {\n const error = ex as Error\n console.error(`Error: ${error.message}`)\n console.error(error.stack)\n throw ex\n }\n }),\n )\n return nftResult\n}\n\nexport const getNftsOwnedByAddress = async (\n /** @param publicAddress The address of the wallet to search for NFTs */\n publicAddress: string,\n /** @param provider The provider to use for accessing the block chain */\n providers: Provider[],\n /** @param maxNfts The maximum number of NFTs to return. Configurable to prevent large wallets from exhausting Infura API credits. */\n maxNfts = 100,\n /** @param httpTimeout The connection timeout for HTTP call to get metadata */\n timeout = 5000,\n): Promise<NftInfoFields[]> => {\n // const assets = await getAssetsFromWallet(publicAddress, maxNfts, timeout)\n const nfts = await getNftsFromWalletFromOpenSea(publicAddress, maxNfts, timeout)\n\n const nftResult = await Promise.all(\n nfts.map(async (nft) => {\n try {\n const {\n contract, identifier, metadata_url,\n } = nft\n const provider = getProvider(providers)\n\n const block = await provider.getBlockNumber()\n\n // Check if Upgradeable\n const [erc1967Status, erc1822Status] = await Promise.all([\n // Check if ERC-1967 Upgradeable\n getErc1967SlotStatus(provider, contract, block),\n\n // Check if ERC-1822 Upgradeable\n getErc1822SlotStatus(provider, contract, block),\n ])\n\n const erc1967Implementation = erc1967Status.slots.implementation\n const implementation\n = (erc1967Implementation == null || erc1967Implementation === '' || isHexZero(erc1967Implementation) === true\n ? erc1822Status\n : erc1967Status).implementation\n\n let supply = 1n\n const types = await getTokenTypes(provider, implementation)\n if (types.includes('ERC1155')) {\n const supply1155 = ERC1155Supply__factory.connect(implementation, getProvider(providers))\n supply = (await tryCall(async () => await supply1155['totalSupply(uint256)'](erc1967Status.address))) ?? 1n\n }\n const fieldsNetwork = await provider.getNetwork()\n const fields: NftInfoFields = {\n address: contract,\n chainId: Number(fieldsNetwork.chainId),\n metadataUri: metadata_url ?? undefined,\n supply: `0x${supply.toString(16)}`,\n tokenId: identifier,\n type: types.at(0),\n types,\n }\n if (implementation !== contract) {\n fields.implementation = implementation\n }\n return fields\n } catch (ex) {\n const error = ex as Error\n console.error(`Error: ${error.message}`)\n console.error(error.stack)\n throw ex\n }\n }),\n )\n\n return nftResult\n}\n", "/* eslint-disable complexity */\n\nimport { FetchJsonClient } from '@ariestools/sdk'\nimport { ERC721URIStorage__factory, ERC1155URIStorage__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { NftMetadata } from '@xyo-network/payload-plugins/crypto-nft'\nimport { checkIpfsUrl } from '@xyo-network/witness-blockchain'\nimport type { Provider } from 'ethers'\nimport parseDataUrl from 'parse-data-url'\n\nimport { isErc721, isErc1155 } from './tokenTypes.ts'\n\n/* const baseUrlAbi = [\n {\n inputs: [],\n name: 'baseUrl',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] */\n\nconst ipfsGateway = '5d7b6582.beta.decentralnetworkservices.com'\n\nconst fetchMetadataFromUri = async (uri: string): Promise<NftMetadata | undefined> => {\n const client = new FetchJsonClient({ timeout: 5000 })\n const response = await client.get<NftMetadata>(uri)\n return response.data ?? undefined\n}\n\nexport const getNftMetadata = async (\n /**\n * The address of the NFT contract to search for\n */\n contractAddress: string,\n /**\n * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on\n */\n provider: Provider,\n /**\n * The maximum number of NFTs to return. Configurable to prevent\n * large wallets from exhausting Infura API credits. Ideally a\n * multiple of 100 as that appears to be the default page size.\n */\n tokenId: string,\n load = false,\n defaultUri?: string,\n): Promise<[string | undefined, NftMetadata | undefined]> => {\n const storage721 = ERC721URIStorage__factory.connect(contractAddress, provider)\n const storage1155 = ERC1155URIStorage__factory.connect(contractAddress, provider)\n\n let uri721: string | undefined\n const is721 = await isErc721(provider, contractAddress)\n if (is721) {\n try {\n uri721 = await storage721.tokenURI(tokenId)\n } catch {\n // const error = ex as Error\n // console.error(`metaDataUri[${error.name}][${contractAddress}]: storage721.tokenURI(tokenId) failed`)\n }\n }\n\n /* let baseUrl: string | undefined = undefined\n if (is721) {\n try {\n const baseUrlContract = new Contract(contractAddress, baseUrlAbi, provider)\n baseUrl = await baseUrlContract.bareUrl()\n } catch (ex) {\n const error = ex as Error\n console.error(`baseUrl[${error.name}][${contractAddress}]: baseUrl() failed`)\n }\n }\n\n if (baseUrl && !uri721?.startsWith(baseUrl)) {\n uri721 = `${baseUrl}${uri721 ?? tokenId}`\n }\n */\n\n let uri1155: string | undefined\n if (uri721 == null || uri721 === '') {\n const is1155 = await isErc1155(provider, contractAddress)\n if (is1155) {\n try {\n uri1155 = await storage1155.uri(tokenId)\n } catch {\n // const error = ex as Error\n // console.error(`metaDataUri[${error.name}][${contractAddress}]: storage1155.uri(tokenId) failed`)\n // console.log(error.message)\n }\n }\n }\n\n const tokenMetadataUri = [uri721, uri1155].find(Boolean) ?? defaultUri\n let metadata: NftMetadata | undefined\n if (load) {\n if (tokenMetadataUri?.startsWith('data:') === true) {\n const parsedDataUrl = parseDataUrl(tokenMetadataUri)\n if (parsedDataUrl !== false && parsedDataUrl.contentType === 'application/json') {\n const buf = parsedDataUrl.toBuffer()\n const value = buf.toString('utf8')\n metadata = JSON.parse(value) as NftMetadata\n }\n } else {\n /* if (tokenMetadataUri && tokenMetadataUri.length < 5) {\n console.log(`tokenMetadataUri [<5][${contractAddress}]: ${tokenMetadataUri}`)\n console.log(`tokenMetadataUri [uri721]: ${uri721}`)\n console.log(`tokenMetadataUri [uri1155]: ${uri1155}`)\n console.log(`tokenMetadataUri [defaultUri]: ${defaultUri}`)\n } */\n const checkedMetadataUri = tokenMetadataUri != null && tokenMetadataUri.length > 0 ? checkIpfsUrl(tokenMetadataUri, ipfsGateway) : undefined\n try {\n if (checkedMetadataUri != null && checkedMetadataUri.length > 0) {\n metadata = await fetchMetadataFromUri(checkedMetadataUri)\n }\n } catch {\n try {\n if (defaultUri != null && defaultUri.length > 0) {\n metadata = await fetchMetadataFromUri(defaultUri)\n }\n } catch {\n // const error = ex as Error\n // console.error(`metadata: ${error.message}`)\n }\n }\n }\n }\n\n return [tokenMetadataUri, metadata]\n}\n", "import { ERC1155URIStorage__factory, IERC721Metadata__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { TokenType } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Provider } from 'ethers'\n\nimport { contractHasFunctions } from './contractHasFunctions.ts'\n\nexport const isErc1155 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, ERC1155URIStorage__factory.createInterface(), ['uri'])\n}\n\nexport const isErc721 = async (provider: Provider, address: string) => {\n return await contractHasFunctions(provider, address, IERC721Metadata__factory.createInterface(), ['name', 'symbol', 'tokenURI'])\n}\n\nexport const tokenTypes = async (provider: Provider, address: string) => {\n const [erc721, erc1155] = await Promise.all([isErc721(provider, address), isErc1155(provider, address)])\n const result: TokenType[] = []\n if (erc721) {\n result.push('ERC721')\n }\n if (erc1155) {\n result.push('ERC1155')\n }\n return result\n}\n", "import type { EthAddress } from '@ariestools/sdk'\nimport { assertEx, FetchJsonClient } from '@ariestools/sdk'\n\ninterface OpenSeaNFT {\n /*\n * Collection slug. A unique string to identify a collection on OpenSea\n */\n collection: string\n /*\n * The unique public blockchain identifier for the contract\n */\n contract: EthAddress\n /**\n * @deprecated\n */\n created_at: string\n /*\n * Description of the NFT\n */\n description: string | null\n /*\n * The NFT's unique identifier within the smart contract (also referred to as token_id)\n */\n identifier: string\n /*\n * Link to the image associated with the NFT\n */\n image_url: string | null\n /*\n * If the item is currently able to be bought or sold using OpenSea\n */\n is_disabled: boolean\n /*\n * If the item is currently classified as 'Not Safe for Work' by OpenSea as defined in OpenSea's NSFW Policy.\n */\n is_nsfw: boolean\n /*\n * Link to the offchain metadata store\n */\n metadata_url: string | null\n /*\n * Name of the NFT\n */\n name: string | null\n /*\n * ERC standard of the token (erc721, erc1155)\n */\n token_standard: string\n /*\n * Last time that the NFT's metadata was updated by OpenSea\n */\n updated_at: string\n}\n\nexport const getNftsFromWalletFromOpenSea = async (address: string, maxNfts = 200, timeout = 2000) => {\n const apiKey = assertEx(process.env.OPENSEA_API_KEY, () => 'No opensea key found')\n\n const client = new FetchJsonClient({ headers: { 'x-api-key': apiKey }, timeout })\n\n const response = await client.get<{ nfts: OpenSeaNFT[] }>(`https://api.opensea.io/api/v2/chain/ethereum/account/${address}/nfts?limit=${maxNfts}`)\n const nfts = response.data?.nfts ?? []\n return nfts\n}\n", "import type { Provider } from 'ethers'\n\nexport const getProvider = (providers: Provider[]) => {\n return providers[Date.now() % providers.length] // pick a random provider\n}\n", "export const tryCall = async <T>(func: () => Promise<T>, name?: string): Promise<T | undefined> => {\n try {\n return await func()\n } catch (ex) {\n if (name != null && name !== '') {\n const error = ex as Error\n console.log(`tryCall failed [${name}]: ${error.message}`)\n }\n return undefined\n }\n}\n", "import { NftSchema } from '@xyo-network/payload-plugins/crypto-nft'\nimport type { PayloadSetWitnessPlugin } from '@xyo-network/sdk'\nimport { createPayloadSetWitnessPlugin, PayloadSetSchema } from '@xyo-network/sdk'\n\nimport { CryptoWalletNftWitness } from './Witness.ts'\n\nexport const CryptoWalletNftWitnessPlugin = (): PayloadSetWitnessPlugin<CryptoWalletNftWitness> =>\n createPayloadSetWitnessPlugin<CryptoWalletNftWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoWalletNftWitness.create(params)\n return result\n },\n },\n )\n", "import { EthAddressWrapper } from '@ariestools/eth-address'\nimport { assertEx } from '@ariestools/sdk'\nimport type {\n CryptoWalletNftWitnessConfig,\n NftInfo,\n NftWitnessQuery,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport {\n isNftWitnessQuery,\n NftSchema,\n NftWitnessConfigSchema,\n} from '@xyo-network/payload-plugins/crypto-nft'\nimport type { Schema } from '@xyo-network/sdk'\nimport type { EvmWitnessParams } from '@xyo-network/witness-evm'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm'\n\nimport { getNftsOwnedByAddress, getNftsOwnedByAddressWithMetadata } from './lib/index.ts'\n\nexport type CryptoWalletNftWitnessParams = EvmWitnessParams<CryptoWalletNftWitnessConfig>\n\nconst schema = NftSchema\n\nconst defaultMaxNfts = 200\n\nexport class CryptoWalletNftWitness<TParams extends CryptoWalletNftWitnessParams = CryptoWalletNftWitnessParams> extends AbstractEvmWitness<\n TParams,\n NftWitnessQuery,\n NftInfo\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NftWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = NftWitnessConfigSchema\n\n get loadMetadata() {\n return this.config.loadMetadata ?? true\n }\n\n get timeout() {\n return this.config.timeout ?? 10_000\n }\n\n protected override async observeHandler(payloads?: NftWitnessQuery[]): Promise<NftInfo[]> {\n await this.startedAsync('throw')\n const queries = payloads?.filter(isNftWitnessQuery) ?? []\n // calling it here to make sure we rests the cache\n const providers = await this.getProviders()\n try {\n const observations = await Promise.all(\n queries.map(async (query) => {\n const provider = await this.getProvider(true, true)\n const addressValue = assertEx(query?.address ?? this.config.address, () => 'params.address is required')\n const parsedAddressValue = EthAddressWrapper.parse(addressValue)\n const address = assertEx(parsedAddressValue?.toString(), () => 'Failed to parse params.address')\n const network = await provider.getNetwork()\n const chainId = assertEx(network.chainId, () => 'params.chainId is required')\n const maxNfts = query?.maxNfts != null && query.maxNfts > 0 ? query.maxNfts : defaultMaxNfts\n try {\n const nfts\n = this.loadMetadata\n ? await getNftsOwnedByAddressWithMetadata(address, providers, maxNfts, this.timeout)\n : await getNftsOwnedByAddress(address, providers, maxNfts, this.timeout)\n const observation = nfts.map<NftInfo>((nft) => {\n return { ...nft, schema }\n })\n return observation\n } catch (ex) {\n const error = ex as Error\n throw new Error(`Failed to get nfts for address ${address} on chainId ${chainId}: ${error.message}`, { cause: ex })\n }\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.error(error)\n return []\n }\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ERC1155URIStorage__factory", "ERC1155URIStorage__factory", "assertEx", "FetchJsonClient", "NftSchema", "assertEx", "assertEx", "NftSchema"]
7
7
  }
@@ -55,7 +55,7 @@ var toErc1822Status = zodToFactory(Erc1822StatusZod, "toErc1822Status");
55
55
  // src/modules/erc1822-witness/Witness.ts
56
56
  import { asEthAddress as asEthAddress2, assertEx } from "@ariestools/sdk";
57
57
  import { asSchema as asSchema2, isPayloadOfSchemaType } from "@xyo-network/sdk";
58
- import { AbstractEvmWitness, EvmAddressSchema } from "@xyo-network/witness-evm-abstract";
58
+ import { AbstractEvmWitness, EvmAddressSchema } from "@xyo-network/witness-evm";
59
59
  var Erc1822WitnessConfigSchema = asSchema2("network.xyo.erc1822.witness.config", true);
60
60
  var Erc1822Witness = class extends AbstractEvmWitness {
61
61
  static configSchemas = [...super.configSchemas, Erc1822WitnessConfigSchema];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/erc1822-witness/lib/getErc1822SlotStatus.ts", "../../src/modules/erc1822-witness/Payload.ts", "../../src/modules/erc1822-witness/Witness.ts"],
4
- "sourcesContent": ["import type { EthAddress } from '@ariestools/sdk'\nimport {\n asEthAddress, hexFromHexString, isHexZero,\n} from '@ariestools/sdk'\nimport type { Provider } from 'ethers'\nimport * as z from 'zod/mini'\n\nexport const ERC1822_PROXY_LOGIC_SLOT = '0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7'\n\nexport const Erc1822DataSlotsZod = z.object({ implementation: z.optional(z.custom<EthAddress>()) })\n\nexport type Erc1822DataSlots = z.infer<typeof Erc1822DataSlotsZod>\n\nexport const Erc1822SlotStatusZod = z.object({\n address: z.custom<EthAddress>(),\n implementation: z.custom<EthAddress>(),\n slots: Erc1822DataSlotsZod,\n})\n\nexport type Erc1822SlotStatus = z.infer<typeof Erc1822SlotStatusZod>\n\nconst readAddressFromSlot = async (provider: Provider, address: string, slot: string, block?: number) => {\n try {\n const slotValue = await provider.getStorage(address, slot, block)\n return asEthAddress(hexFromHexString(slotValue, { prefix: true }))\n } catch {\n return\n }\n}\n\nexport const getErc1822SlotStatus = async (provider: Provider, address: EthAddress, block?: number): Promise<Erc1822SlotStatus> => {\n const status: Erc1822SlotStatus = {\n address,\n implementation: address,\n slots: { implementation: await readAddressFromSlot(provider, address, ERC1822_PROXY_LOGIC_SLOT, block) },\n }\n\n if (status.slots.implementation != null && isHexZero(status.slots.implementation) !== true) {\n status.implementation = status.slots.implementation\n }\n\n return status\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk'\nimport * as z from 'zod/mini'\n\nimport { Erc1822SlotStatusZod } from './lib/index.ts'\n\nexport const Erc1822StatusSchema = asSchema('network.xyo.erc1822.status', true)\nexport type Erc1822StatusSchema = typeof Erc1822StatusSchema\n\nexport const Erc1822StatusZod = z.extend(PayloadZodOfSchema(Erc1822StatusSchema), {\n address: z.string(),\n block: z.number(),\n chainId: z.number(),\n implementation: z.optional(Erc1822SlotStatusZod.shape.implementation),\n slots: z.optional(Erc1822SlotStatusZod.shape.slots),\n})\n\nexport type Erc1822Status = z.infer<typeof Erc1822StatusZod>\n\nexport const isErc1822Status = zodIsFactory(Erc1822StatusZod)\nexport const asErc1822Status = zodAsFactory(Erc1822StatusZod, 'asErc1822Status')\nexport const toErc1822Status = zodToFactory(Erc1822StatusZod, 'toErc1822Status')\n", "import { asEthAddress, assertEx } from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\nimport type {\n EvmAddress,\n EvmWitnessConfig, EvmWitnessParams,\n} from '@xyo-network/witness-evm-abstract'\nimport { AbstractEvmWitness, EvmAddressSchema } from '@xyo-network/witness-evm-abstract'\n\nimport { getErc1822SlotStatus } from './lib/index.ts'\nimport type { Erc1822Status } from './Payload.ts'\nimport { Erc1822StatusSchema } from './Payload.ts'\n\nexport const Erc1822WitnessConfigSchema = asSchema('network.xyo.erc1822.witness.config', true)\nexport type Erc1822WitnessConfigSchema = typeof Erc1822WitnessConfigSchema\n\nexport type Erc1822WitnessConfig = EvmWitnessConfig<{ address?: string }, Erc1822WitnessConfigSchema>\n\nexport type Erc1822WitnessParams = EvmWitnessParams<Erc1822WitnessConfig>\n\nexport class Erc1822Witness<TParams extends Erc1822WitnessParams = Erc1822WitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmAddress,\n Erc1822Status\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, Erc1822WitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = Erc1822WitnessConfigSchema\n\n protected override async observeHandler(inPayloads: EvmAddress[] = []): Promise<Erc1822Status[]> {\n await this.startedAsync('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmAddress>(EvmAddressSchema)).map(async ({ address }) => {\n const validatedAddress = asEthAddress(assertEx(address ?? this.config.address, () => 'Missing address'), true)\n\n const provider = await this.getProvider(true, true)\n\n const block = await provider.getBlockNumber()\n\n const { implementation, slots } = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const network = await provider.getNetwork()\n const observation: Erc1822Status = {\n address: validatedAddress,\n block,\n chainId: Number(network.chainId),\n implementation,\n schema: Erc1822StatusSchema,\n slots,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],
4
+ "sourcesContent": ["import type { EthAddress } from '@ariestools/sdk'\nimport {\n asEthAddress, hexFromHexString, isHexZero,\n} from '@ariestools/sdk'\nimport type { Provider } from 'ethers'\nimport * as z from 'zod/mini'\n\nexport const ERC1822_PROXY_LOGIC_SLOT = '0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7'\n\nexport const Erc1822DataSlotsZod = z.object({ implementation: z.optional(z.custom<EthAddress>()) })\n\nexport type Erc1822DataSlots = z.infer<typeof Erc1822DataSlotsZod>\n\nexport const Erc1822SlotStatusZod = z.object({\n address: z.custom<EthAddress>(),\n implementation: z.custom<EthAddress>(),\n slots: Erc1822DataSlotsZod,\n})\n\nexport type Erc1822SlotStatus = z.infer<typeof Erc1822SlotStatusZod>\n\nconst readAddressFromSlot = async (provider: Provider, address: string, slot: string, block?: number) => {\n try {\n const slotValue = await provider.getStorage(address, slot, block)\n return asEthAddress(hexFromHexString(slotValue, { prefix: true }))\n } catch {\n return\n }\n}\n\nexport const getErc1822SlotStatus = async (provider: Provider, address: EthAddress, block?: number): Promise<Erc1822SlotStatus> => {\n const status: Erc1822SlotStatus = {\n address,\n implementation: address,\n slots: { implementation: await readAddressFromSlot(provider, address, ERC1822_PROXY_LOGIC_SLOT, block) },\n }\n\n if (status.slots.implementation != null && isHexZero(status.slots.implementation) !== true) {\n status.implementation = status.slots.implementation\n }\n\n return status\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk'\nimport * as z from 'zod/mini'\n\nimport { Erc1822SlotStatusZod } from './lib/index.ts'\n\nexport const Erc1822StatusSchema = asSchema('network.xyo.erc1822.status', true)\nexport type Erc1822StatusSchema = typeof Erc1822StatusSchema\n\nexport const Erc1822StatusZod = z.extend(PayloadZodOfSchema(Erc1822StatusSchema), {\n address: z.string(),\n block: z.number(),\n chainId: z.number(),\n implementation: z.optional(Erc1822SlotStatusZod.shape.implementation),\n slots: z.optional(Erc1822SlotStatusZod.shape.slots),\n})\n\nexport type Erc1822Status = z.infer<typeof Erc1822StatusZod>\n\nexport const isErc1822Status = zodIsFactory(Erc1822StatusZod)\nexport const asErc1822Status = zodAsFactory(Erc1822StatusZod, 'asErc1822Status')\nexport const toErc1822Status = zodToFactory(Erc1822StatusZod, 'toErc1822Status')\n", "import { asEthAddress, assertEx } from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\nimport type {\n EvmAddress,\n EvmWitnessConfig, EvmWitnessParams,\n} from '@xyo-network/witness-evm'\nimport { AbstractEvmWitness, EvmAddressSchema } from '@xyo-network/witness-evm'\n\nimport { getErc1822SlotStatus } from './lib/index.ts'\nimport type { Erc1822Status } from './Payload.ts'\nimport { Erc1822StatusSchema } from './Payload.ts'\n\nexport const Erc1822WitnessConfigSchema = asSchema('network.xyo.erc1822.witness.config', true)\nexport type Erc1822WitnessConfigSchema = typeof Erc1822WitnessConfigSchema\n\nexport type Erc1822WitnessConfig = EvmWitnessConfig<{ address?: string }, Erc1822WitnessConfigSchema>\n\nexport type Erc1822WitnessParams = EvmWitnessParams<Erc1822WitnessConfig>\n\nexport class Erc1822Witness<TParams extends Erc1822WitnessParams = Erc1822WitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmAddress,\n Erc1822Status\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, Erc1822WitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = Erc1822WitnessConfigSchema\n\n protected override async observeHandler(inPayloads: EvmAddress[] = []): Promise<Erc1822Status[]> {\n await this.startedAsync('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmAddress>(EvmAddressSchema)).map(async ({ address }) => {\n const validatedAddress = asEthAddress(assertEx(address ?? this.config.address, () => 'Missing address'), true)\n\n const provider = await this.getProvider(true, true)\n\n const block = await provider.getBlockNumber()\n\n const { implementation, slots } = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const network = await provider.getNetwork()\n const observation: Erc1822Status = {\n address: validatedAddress,\n block,\n chainId: Number(network.chainId),\n implementation,\n schema: Erc1822StatusSchema,\n slots,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["z", "asEthAddress", "asSchema", "asSchema", "asEthAddress"]
7
7
  }
@@ -87,7 +87,7 @@ var toErc1967Status = zodToFactory(Erc1967StatusZod, "toErc1967Status");
87
87
  // src/modules/erc1967-witness/Witness.ts
88
88
  import { assertEx } from "@ariestools/sdk";
89
89
  import { asSchema as asSchema2, isPayloadOfSchemaType } from "@xyo-network/sdk";
90
- import { AbstractEvmWitness, EvmAddressSchema } from "@xyo-network/witness-evm-abstract";
90
+ import { AbstractEvmWitness, EvmAddressSchema } from "@xyo-network/witness-evm";
91
91
  var Erc1967WitnessConfigSchema = asSchema2("network.xyo.erc1967.witness.config", true);
92
92
  var Erc1967Witness = class extends AbstractEvmWitness {
93
93
  static configSchemas = [...super.configSchemas, Erc1967WitnessConfigSchema];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/erc1967-witness/lib/getErc1967SlotStatus.ts", "../../src/modules/erc1967-witness/Payload.ts", "../../src/modules/erc1967-witness/Witness.ts"],
4
- "sourcesContent": ["import type { Address, EthAddress } from '@ariestools/sdk'\nimport {\n asEthAddress, hexFromHexString, isHexZero,\n} from '@ariestools/sdk'\nimport { UpgradeableBeacon__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { Provider } from 'ethers'\nimport * as z from 'zod/mini'\n\nexport const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc' as EthAddress\nexport const ERC1967_PROXY_BEACON_STORAGE_SLOT = '0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50' as EthAddress\nexport const ERC1967_PROXY_ADMIN_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103' as EthAddress\nexport const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = '0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143' as EthAddress\n\nexport const Erc1967DataSlotsZod = z.object({\n admin: z.optional(z.custom<EthAddress>()),\n beacon: z.optional(z.custom<EthAddress>()),\n implementation: z.optional(z.custom<EthAddress>()),\n rollback: z.optional(z.custom<EthAddress>()),\n})\n\nexport type Erc1967DataSlots = z.infer<typeof Erc1967DataSlotsZod>\n\nexport const Erc1967SlotStatusZod = z.object({\n address: z.string(),\n beacon: z.optional(z.object({ implementation: z.optional(z.custom<Address>()) })),\n implementation: z.string(),\n slots: Erc1967DataSlotsZod,\n})\n\nexport type Erc1967SlotStatus = z.infer<typeof Erc1967SlotStatusZod>\n\nconst readAddressFromSlot = async (provider: Provider, address: string, slot: string, block?: number) => {\n try {\n const slotValue = await provider.getStorage(address, slot, block)\n return asEthAddress(hexFromHexString(slotValue, { prefix: true }))\n } catch {\n return\n }\n}\n\nexport const getErc1967SlotStatus = async (provider: Provider, address: string, block?: number): Promise<Erc1967SlotStatus> => {\n const status: Erc1967SlotStatus = {\n address,\n implementation: address,\n slots: {\n admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT, block),\n beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT, block),\n implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT, block),\n rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT, block),\n },\n }\n\n if (status.slots.implementation != null && isHexZero(status.slots.implementation) === false) {\n status.implementation = `0x${BigInt(status.slots.implementation)\n .toString(16)\n .padStart(40, '0')}`\n } else {\n if (status.slots.beacon != null && isHexZero(status.slots.beacon) === false) {\n const beacon = UpgradeableBeacon__factory.connect(status.slots.beacon, { provider })\n try {\n const implementation = (await beacon.implementation(block != null && block !== 0 ? { blockTag: block } : {})) as Address\n if (implementation.length > 0) {\n status.beacon = { implementation }\n if (isHexZero(implementation) === false) {\n status.implementation = implementation\n }\n }\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n }\n }\n }\n\n return status\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk'\nimport * as z from 'zod/mini'\n\nimport { Erc1967DataSlotsZod, Erc1967SlotStatusZod } from './lib/index.ts'\n\nexport const Erc1967StatusSchema = asSchema('network.xyo.erc1967.status', true)\nexport type Erc1967StatusSchema = typeof Erc1967StatusSchema\n\nexport const Erc1967StatusZod = z.extend(PayloadZodOfSchema(Erc1967StatusSchema), {\n address: z.string(),\n beacon: Erc1967SlotStatusZod.shape.beacon,\n block: z.number(),\n chainId: z.number(),\n implementation: z.optional(Erc1967SlotStatusZod.shape.implementation),\n slots: z.optional(Erc1967DataSlotsZod),\n})\n\nexport type Erc1967Status = z.infer<typeof Erc1967StatusZod>\n\nexport const isErc1967Status = zodIsFactory(Erc1967StatusZod)\nexport const asErc1967Status = zodAsFactory(Erc1967StatusZod, 'asErc1967Status')\nexport const toErc1967Status = zodToFactory(Erc1967StatusZod, 'toErc1967Status')\n", "import { assertEx } from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\nimport type {\n EvmAddress,\n EvmWitnessConfig, EvmWitnessParams,\n} from '@xyo-network/witness-evm-abstract'\nimport { AbstractEvmWitness, EvmAddressSchema } from '@xyo-network/witness-evm-abstract'\n\nimport { getErc1967SlotStatus } from './lib/index.ts'\nimport type { Erc1967Status } from './Payload.ts'\nimport { Erc1967StatusSchema } from './Payload.ts'\n\nexport const Erc1967WitnessConfigSchema = asSchema('network.xyo.erc1967.witness.config', true)\nexport type Erc1967WitnessConfigSchema = typeof Erc1967WitnessConfigSchema\n\nexport type Erc1967WitnessConfig = EvmWitnessConfig<{ address?: string }, Erc1967WitnessConfigSchema>\n\nexport type Erc1967WitnessParams = EvmWitnessParams<Erc1967WitnessConfig>\n\nexport class Erc1967Witness<TParams extends Erc1967WitnessParams = Erc1967WitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmAddress,\n Erc1967Status\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, Erc1967WitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = Erc1967WitnessConfigSchema\n\n protected override async observeHandler(inPayloads: EvmAddress[] = []): Promise<Erc1967Status[]> {\n await this.startedAsync('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmAddress>(EvmAddressSchema)).map(async ({ address }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address').toLowerCase()\n\n const provider = await this.getProvider(true, true)\n\n const block = await provider.getBlockNumber()\n\n const {\n beacon, implementation, slots,\n } = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n const network = await provider.getNetwork()\n\n const observation: Erc1967Status = {\n address: validatedAddress,\n beacon,\n block,\n chainId: Number(network.chainId),\n implementation,\n schema: Erc1967StatusSchema,\n slots,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],
4
+ "sourcesContent": ["import type { Address, EthAddress } from '@ariestools/sdk'\nimport {\n asEthAddress, hexFromHexString, isHexZero,\n} from '@ariestools/sdk'\nimport { UpgradeableBeacon__factory } from '@xyo-network/open-zeppelin-typechain'\nimport type { Provider } from 'ethers'\nimport * as z from 'zod/mini'\n\nexport const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc' as EthAddress\nexport const ERC1967_PROXY_BEACON_STORAGE_SLOT = '0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50' as EthAddress\nexport const ERC1967_PROXY_ADMIN_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103' as EthAddress\nexport const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = '0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143' as EthAddress\n\nexport const Erc1967DataSlotsZod = z.object({\n admin: z.optional(z.custom<EthAddress>()),\n beacon: z.optional(z.custom<EthAddress>()),\n implementation: z.optional(z.custom<EthAddress>()),\n rollback: z.optional(z.custom<EthAddress>()),\n})\n\nexport type Erc1967DataSlots = z.infer<typeof Erc1967DataSlotsZod>\n\nexport const Erc1967SlotStatusZod = z.object({\n address: z.string(),\n beacon: z.optional(z.object({ implementation: z.optional(z.custom<Address>()) })),\n implementation: z.string(),\n slots: Erc1967DataSlotsZod,\n})\n\nexport type Erc1967SlotStatus = z.infer<typeof Erc1967SlotStatusZod>\n\nconst readAddressFromSlot = async (provider: Provider, address: string, slot: string, block?: number) => {\n try {\n const slotValue = await provider.getStorage(address, slot, block)\n return asEthAddress(hexFromHexString(slotValue, { prefix: true }))\n } catch {\n return\n }\n}\n\nexport const getErc1967SlotStatus = async (provider: Provider, address: string, block?: number): Promise<Erc1967SlotStatus> => {\n const status: Erc1967SlotStatus = {\n address,\n implementation: address,\n slots: {\n admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT, block),\n beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT, block),\n implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT, block),\n rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT, block),\n },\n }\n\n if (status.slots.implementation != null && isHexZero(status.slots.implementation) === false) {\n status.implementation = `0x${BigInt(status.slots.implementation)\n .toString(16)\n .padStart(40, '0')}`\n } else {\n if (status.slots.beacon != null && isHexZero(status.slots.beacon) === false) {\n const beacon = UpgradeableBeacon__factory.connect(status.slots.beacon, { provider })\n try {\n const implementation = (await beacon.implementation(block != null && block !== 0 ? { blockTag: block } : {})) as Address\n if (implementation.length > 0) {\n status.beacon = { implementation }\n if (isHexZero(implementation) === false) {\n status.implementation = implementation\n }\n }\n } catch (ex) {\n const error = ex as Error\n console.log(error.message)\n }\n }\n }\n\n return status\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk'\nimport * as z from 'zod/mini'\n\nimport { Erc1967DataSlotsZod, Erc1967SlotStatusZod } from './lib/index.ts'\n\nexport const Erc1967StatusSchema = asSchema('network.xyo.erc1967.status', true)\nexport type Erc1967StatusSchema = typeof Erc1967StatusSchema\n\nexport const Erc1967StatusZod = z.extend(PayloadZodOfSchema(Erc1967StatusSchema), {\n address: z.string(),\n beacon: Erc1967SlotStatusZod.shape.beacon,\n block: z.number(),\n chainId: z.number(),\n implementation: z.optional(Erc1967SlotStatusZod.shape.implementation),\n slots: z.optional(Erc1967DataSlotsZod),\n})\n\nexport type Erc1967Status = z.infer<typeof Erc1967StatusZod>\n\nexport const isErc1967Status = zodIsFactory(Erc1967StatusZod)\nexport const asErc1967Status = zodAsFactory(Erc1967StatusZod, 'asErc1967Status')\nexport const toErc1967Status = zodToFactory(Erc1967StatusZod, 'toErc1967Status')\n", "import { assertEx } from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\nimport type {\n EvmAddress,\n EvmWitnessConfig, EvmWitnessParams,\n} from '@xyo-network/witness-evm'\nimport { AbstractEvmWitness, EvmAddressSchema } from '@xyo-network/witness-evm'\n\nimport { getErc1967SlotStatus } from './lib/index.ts'\nimport type { Erc1967Status } from './Payload.ts'\nimport { Erc1967StatusSchema } from './Payload.ts'\n\nexport const Erc1967WitnessConfigSchema = asSchema('network.xyo.erc1967.witness.config', true)\nexport type Erc1967WitnessConfigSchema = typeof Erc1967WitnessConfigSchema\n\nexport type Erc1967WitnessConfig = EvmWitnessConfig<{ address?: string }, Erc1967WitnessConfigSchema>\n\nexport type Erc1967WitnessParams = EvmWitnessParams<Erc1967WitnessConfig>\n\nexport class Erc1967Witness<TParams extends Erc1967WitnessParams = Erc1967WitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmAddress,\n Erc1967Status\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, Erc1967WitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = Erc1967WitnessConfigSchema\n\n protected override async observeHandler(inPayloads: EvmAddress[] = []): Promise<Erc1967Status[]> {\n await this.startedAsync('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType<EvmAddress>(EvmAddressSchema)).map(async ({ address }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address').toLowerCase()\n\n const provider = await this.getProvider(true, true)\n\n const block = await provider.getBlockNumber()\n\n const {\n beacon, implementation, slots,\n } = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n const network = await provider.getNetwork()\n\n const observation: Erc1967Status = {\n address: validatedAddress,\n beacon,\n block,\n chainId: Number(network.chainId),\n implementation,\n schema: Erc1967StatusSchema,\n slots,\n }\n return observation\n }),\n )\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["z", "asSchema", "asSchema"]
7
7
  }
@@ -137,7 +137,7 @@ import {
137
137
  isHexZero
138
138
  } from "@ariestools/sdk";
139
139
  import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/sdk";
140
- import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
140
+ import { AbstractEvmWitness } from "@xyo-network/witness-evm";
141
141
  import { Contract } from "ethers";
142
142
  import { getErc1822SlotStatus } from "#erc1822-witness";
143
143
  import { getErc1967SlotStatus } from "#erc1967-witness";