@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.
- package/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/browser/CryptoContractDiviner.d.cts +27 -0
- package/dist/browser/CryptoContractDiviner.d.cts.map +1 -0
- package/dist/browser/CryptoContractDiviner.d.mts +27 -0
- package/dist/browser/CryptoContractDiviner.d.mts.map +1 -0
- package/dist/browser/CryptoContractDiviner.d.ts +27 -0
- package/dist/browser/CryptoContractDiviner.d.ts.map +1 -0
- package/dist/browser/Erc1155Diviner.d.cts +17 -0
- package/dist/browser/Erc1155Diviner.d.cts.map +1 -0
- package/dist/browser/Erc1155Diviner.d.mts +17 -0
- package/dist/browser/Erc1155Diviner.d.mts.map +1 -0
- package/dist/browser/Erc1155Diviner.d.ts +17 -0
- package/dist/browser/Erc1155Diviner.d.ts.map +1 -0
- package/dist/browser/Erc721Diviner.d.cts +19 -0
- package/dist/browser/Erc721Diviner.d.cts.map +1 -0
- package/dist/browser/Erc721Diviner.d.mts +19 -0
- package/dist/browser/Erc721Diviner.d.mts.map +1 -0
- package/dist/browser/Erc721Diviner.d.ts +19 -0
- package/dist/browser/Erc721Diviner.d.ts.map +1 -0
- package/dist/browser/Plugin.d.cts +30 -0
- package/dist/browser/Plugin.d.cts.map +1 -0
- package/dist/browser/Plugin.d.mts +30 -0
- package/dist/browser/Plugin.d.mts.map +1 -0
- package/dist/browser/Plugin.d.ts +30 -0
- package/dist/browser/Plugin.d.ts.map +1 -0
- package/dist/browser/Witness.d.cts +13 -0
- package/dist/browser/Witness.d.cts.map +1 -0
- package/dist/browser/Witness.d.mts +13 -0
- package/dist/browser/Witness.d.mts.map +1 -0
- package/dist/browser/Witness.d.ts +13 -0
- package/dist/browser/Witness.d.ts.map +1 -0
- package/dist/browser/index.cjs +81 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +5 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts +5 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +62 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/node/CryptoContractDiviner.d.cts +27 -0
- package/dist/node/CryptoContractDiviner.d.cts.map +1 -0
- package/dist/node/CryptoContractDiviner.d.mts +27 -0
- package/dist/node/CryptoContractDiviner.d.mts.map +1 -0
- package/dist/node/CryptoContractDiviner.d.ts +27 -0
- package/dist/node/CryptoContractDiviner.d.ts.map +1 -0
- package/dist/node/Erc1155Diviner.d.cts +17 -0
- package/dist/node/Erc1155Diviner.d.cts.map +1 -0
- package/dist/node/Erc1155Diviner.d.mts +17 -0
- package/dist/node/Erc1155Diviner.d.mts.map +1 -0
- package/dist/node/Erc1155Diviner.d.ts +17 -0
- package/dist/node/Erc1155Diviner.d.ts.map +1 -0
- package/dist/node/Erc721Diviner.d.cts +19 -0
- package/dist/node/Erc721Diviner.d.cts.map +1 -0
- package/dist/node/Erc721Diviner.d.mts +19 -0
- package/dist/node/Erc721Diviner.d.mts.map +1 -0
- package/dist/node/Erc721Diviner.d.ts +19 -0
- package/dist/node/Erc721Diviner.d.ts.map +1 -0
- package/dist/node/Plugin.d.cts +30 -0
- package/dist/node/Plugin.d.cts.map +1 -0
- package/dist/node/Plugin.d.mts +30 -0
- package/dist/node/Plugin.d.mts.map +1 -0
- package/dist/node/Plugin.d.ts +30 -0
- package/dist/node/Plugin.d.ts.map +1 -0
- package/dist/node/Witness.d.cts +13 -0
- package/dist/node/Witness.d.cts.map +1 -0
- package/dist/node/Witness.d.mts +13 -0
- package/dist/node/Witness.d.mts.map +1 -0
- package/dist/node/Witness.d.ts +13 -0
- package/dist/node/Witness.d.ts.map +1 -0
- package/dist/node/index.d.cts +5 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +5 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +86 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.mjs +62 -0
- package/dist/node/index.mjs.map +1 -0
- package/package.json +80 -0
- package/src/CryptoContractDiviner.ts +109 -0
- package/src/Erc1155Diviner.ts +37 -0
- package/src/Erc721Diviner.ts +41 -0
- package/src/Erc721Sentinel.json +134 -0
- package/src/Plugin.ts +16 -0
- package/src/Witness.ts +58 -0
- package/src/index.ts +8 -0
- 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