@xyo-network/crypto-contract-function-read-plugin 2.77.16

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 (91) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +13 -0
  3. package/dist/browser/CryptoContractDiviner.d.cts +27 -0
  4. package/dist/browser/CryptoContractDiviner.d.cts.map +1 -0
  5. package/dist/browser/CryptoContractDiviner.d.mts +27 -0
  6. package/dist/browser/CryptoContractDiviner.d.mts.map +1 -0
  7. package/dist/browser/CryptoContractDiviner.d.ts +27 -0
  8. package/dist/browser/CryptoContractDiviner.d.ts.map +1 -0
  9. package/dist/browser/Erc1155Diviner.d.cts +17 -0
  10. package/dist/browser/Erc1155Diviner.d.cts.map +1 -0
  11. package/dist/browser/Erc1155Diviner.d.mts +17 -0
  12. package/dist/browser/Erc1155Diviner.d.mts.map +1 -0
  13. package/dist/browser/Erc1155Diviner.d.ts +17 -0
  14. package/dist/browser/Erc1155Diviner.d.ts.map +1 -0
  15. package/dist/browser/Erc721Diviner.d.cts +19 -0
  16. package/dist/browser/Erc721Diviner.d.cts.map +1 -0
  17. package/dist/browser/Erc721Diviner.d.mts +19 -0
  18. package/dist/browser/Erc721Diviner.d.mts.map +1 -0
  19. package/dist/browser/Erc721Diviner.d.ts +19 -0
  20. package/dist/browser/Erc721Diviner.d.ts.map +1 -0
  21. package/dist/browser/Plugin.d.cts +30 -0
  22. package/dist/browser/Plugin.d.cts.map +1 -0
  23. package/dist/browser/Plugin.d.mts +30 -0
  24. package/dist/browser/Plugin.d.mts.map +1 -0
  25. package/dist/browser/Plugin.d.ts +30 -0
  26. package/dist/browser/Plugin.d.ts.map +1 -0
  27. package/dist/browser/Witness.d.cts +13 -0
  28. package/dist/browser/Witness.d.cts.map +1 -0
  29. package/dist/browser/Witness.d.mts +13 -0
  30. package/dist/browser/Witness.d.mts.map +1 -0
  31. package/dist/browser/Witness.d.ts +13 -0
  32. package/dist/browser/Witness.d.ts.map +1 -0
  33. package/dist/browser/index.cjs +81 -0
  34. package/dist/browser/index.cjs.map +1 -0
  35. package/dist/browser/index.d.cts +5 -0
  36. package/dist/browser/index.d.cts.map +1 -0
  37. package/dist/browser/index.d.mts +5 -0
  38. package/dist/browser/index.d.mts.map +1 -0
  39. package/dist/browser/index.d.ts +5 -0
  40. package/dist/browser/index.d.ts.map +1 -0
  41. package/dist/browser/index.js +62 -0
  42. package/dist/browser/index.js.map +1 -0
  43. package/dist/node/CryptoContractDiviner.d.cts +27 -0
  44. package/dist/node/CryptoContractDiviner.d.cts.map +1 -0
  45. package/dist/node/CryptoContractDiviner.d.mts +27 -0
  46. package/dist/node/CryptoContractDiviner.d.mts.map +1 -0
  47. package/dist/node/CryptoContractDiviner.d.ts +27 -0
  48. package/dist/node/CryptoContractDiviner.d.ts.map +1 -0
  49. package/dist/node/Erc1155Diviner.d.cts +17 -0
  50. package/dist/node/Erc1155Diviner.d.cts.map +1 -0
  51. package/dist/node/Erc1155Diviner.d.mts +17 -0
  52. package/dist/node/Erc1155Diviner.d.mts.map +1 -0
  53. package/dist/node/Erc1155Diviner.d.ts +17 -0
  54. package/dist/node/Erc1155Diviner.d.ts.map +1 -0
  55. package/dist/node/Erc721Diviner.d.cts +19 -0
  56. package/dist/node/Erc721Diviner.d.cts.map +1 -0
  57. package/dist/node/Erc721Diviner.d.mts +19 -0
  58. package/dist/node/Erc721Diviner.d.mts.map +1 -0
  59. package/dist/node/Erc721Diviner.d.ts +19 -0
  60. package/dist/node/Erc721Diviner.d.ts.map +1 -0
  61. package/dist/node/Plugin.d.cts +30 -0
  62. package/dist/node/Plugin.d.cts.map +1 -0
  63. package/dist/node/Plugin.d.mts +30 -0
  64. package/dist/node/Plugin.d.mts.map +1 -0
  65. package/dist/node/Plugin.d.ts +30 -0
  66. package/dist/node/Plugin.d.ts.map +1 -0
  67. package/dist/node/Witness.d.cts +13 -0
  68. package/dist/node/Witness.d.cts.map +1 -0
  69. package/dist/node/Witness.d.mts +13 -0
  70. package/dist/node/Witness.d.mts.map +1 -0
  71. package/dist/node/Witness.d.ts +13 -0
  72. package/dist/node/Witness.d.ts.map +1 -0
  73. package/dist/node/index.d.cts +5 -0
  74. package/dist/node/index.d.cts.map +1 -0
  75. package/dist/node/index.d.mts +5 -0
  76. package/dist/node/index.d.mts.map +1 -0
  77. package/dist/node/index.d.ts +5 -0
  78. package/dist/node/index.d.ts.map +1 -0
  79. package/dist/node/index.js +86 -0
  80. package/dist/node/index.js.map +1 -0
  81. package/dist/node/index.mjs +62 -0
  82. package/dist/node/index.mjs.map +1 -0
  83. package/package.json +80 -0
  84. package/src/CryptoContractDiviner.ts +109 -0
  85. package/src/Erc1155Diviner.ts +37 -0
  86. package/src/Erc721Diviner.ts +41 -0
  87. package/src/Erc721Sentinel.json +134 -0
  88. package/src/Plugin.ts +16 -0
  89. package/src/Witness.ts +58 -0
  90. package/src/index.ts +8 -0
  91. package/typedoc.json +5 -0
package/src/Witness.ts ADDED
@@ -0,0 +1,58 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { AbstractWitness } from '@xyo-network/abstract-witness'
3
+ import {
4
+ CryptoContractFunctionCall,
5
+ CryptoContractFunctionCallResult,
6
+ CryptoContractFunctionCallResultSchema,
7
+ CryptoContractFunctionCallSchema,
8
+ CryptoContractFunctionReadWitnessConfig,
9
+ CryptoContractFunctionReadWitnessConfigSchema,
10
+ } from '@xyo-network/crypto-contract-function-read-payload-plugin'
11
+ import { PayloadHasher } from '@xyo-network/hash'
12
+ import { AnyConfigSchema } from '@xyo-network/module-model'
13
+ import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
14
+ import { WitnessParams } from '@xyo-network/witness-model'
15
+ import { BigNumber, Contract } from 'ethers'
16
+
17
+ export type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<
18
+ AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,
19
+ {
20
+ factory: (address: string) => TContract
21
+ }
22
+ >
23
+
24
+ export class CryptoContractFunctionReadWitness<
25
+ TContract extends Contract = Contract,
26
+ TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,
27
+ > extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {
28
+ static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]
29
+
30
+ protected override async observeHandler(
31
+ inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],
32
+ ): Promise<CryptoContractFunctionCallResult[]> {
33
+ await this.started('throw')
34
+ const observations = await Promise.all(
35
+ inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
36
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }
37
+ const { address, functionName, params } = fullCallPayload
38
+ const validatedAddress = assertEx(address, 'Missing address')
39
+ const contract = this.params.factory(validatedAddress)
40
+ const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)
41
+ const rawResult = await func(...(params ?? []))
42
+ const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)
43
+ ? { type: 'BigNumber', value: rawResult.toHexString() }
44
+ : { value: rawResult }
45
+ const observation: CryptoContractFunctionCallResult = {
46
+ address: validatedAddress,
47
+ call: await PayloadHasher.hashAsync(fullCallPayload),
48
+ chainId: (await contract.provider.getNetwork()).chainId,
49
+ result,
50
+ schema: CryptoContractFunctionCallResultSchema,
51
+ }
52
+ return observation
53
+ }),
54
+ )
55
+
56
+ return observations.flat()
57
+ }
58
+ }
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'
2
+
3
+ export * from './Witness'
4
+
5
+ export { CryptoContractFunctionReadWitnessPlugin }
6
+
7
+ // eslint-disable-next-line import/no-default-export
8
+ export default CryptoContractFunctionReadWitnessPlugin
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["./src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }