@xyo-network/evm-call-witness 2.99.5 → 3.0.0
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/dist/neutral/index.d.ts +93 -6
- package/dist/neutral/index.mjs +52 -71
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +42 -61
- package/xy.config.ts +4 -5
- package/dist/browser/Diviner.d.cts +0 -34
- package/dist/browser/Diviner.d.cts.map +0 -1
- package/dist/browser/Diviner.d.mts +0 -34
- package/dist/browser/Diviner.d.mts.map +0 -1
- package/dist/browser/Diviner.d.ts +0 -34
- package/dist/browser/Diviner.d.ts.map +0 -1
- package/dist/browser/Labels.d.cts +0 -6
- package/dist/browser/Labels.d.cts.map +0 -1
- package/dist/browser/Labels.d.mts +0 -6
- package/dist/browser/Labels.d.mts.map +0 -1
- package/dist/browser/Labels.d.ts +0 -6
- package/dist/browser/Labels.d.ts.map +0 -1
- package/dist/browser/Payload.d.cts +0 -32
- package/dist/browser/Payload.d.cts.map +0 -1
- package/dist/browser/Payload.d.mts +0 -32
- package/dist/browser/Payload.d.mts.map +0 -1
- package/dist/browser/Payload.d.ts +0 -32
- package/dist/browser/Payload.d.ts.map +0 -1
- package/dist/browser/Witness.d.cts +0 -11
- package/dist/browser/Witness.d.cts.map +0 -1
- package/dist/browser/Witness.d.mts +0 -11
- package/dist/browser/Witness.d.mts.map +0 -1
- package/dist/browser/Witness.d.ts +0 -11
- package/dist/browser/Witness.d.ts.map +0 -1
- package/dist/browser/index.cjs +0 -200
- package/dist/browser/index.cjs.map +0 -1
- package/dist/browser/index.d.cts +0 -6
- package/dist/browser/index.d.cts.map +0 -1
- package/dist/browser/index.d.mts +0 -6
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.d.ts +0 -6
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.mjs +0 -179
- package/dist/browser/index.mjs.map +0 -1
- package/dist/browser/model.d.cts +0 -14
- package/dist/browser/model.d.cts.map +0 -1
- package/dist/browser/model.d.mts +0 -14
- package/dist/browser/model.d.mts.map +0 -1
- package/dist/browser/model.d.ts +0 -14
- package/dist/browser/model.d.ts.map +0 -1
- package/dist/neutral/Diviner.d.cts +0 -34
- package/dist/neutral/Diviner.d.cts.map +0 -1
- package/dist/neutral/Diviner.d.mts +0 -34
- package/dist/neutral/Diviner.d.mts.map +0 -1
- package/dist/neutral/Diviner.d.ts +0 -34
- package/dist/neutral/Diviner.d.ts.map +0 -1
- package/dist/neutral/Labels.d.cts +0 -6
- package/dist/neutral/Labels.d.cts.map +0 -1
- package/dist/neutral/Labels.d.mts +0 -6
- package/dist/neutral/Labels.d.mts.map +0 -1
- package/dist/neutral/Labels.d.ts +0 -6
- package/dist/neutral/Labels.d.ts.map +0 -1
- package/dist/neutral/Payload.d.cts +0 -32
- package/dist/neutral/Payload.d.cts.map +0 -1
- package/dist/neutral/Payload.d.mts +0 -32
- package/dist/neutral/Payload.d.mts.map +0 -1
- package/dist/neutral/Payload.d.ts +0 -32
- package/dist/neutral/Payload.d.ts.map +0 -1
- package/dist/neutral/Witness.d.cts +0 -11
- package/dist/neutral/Witness.d.cts.map +0 -1
- package/dist/neutral/Witness.d.mts +0 -11
- package/dist/neutral/Witness.d.mts.map +0 -1
- package/dist/neutral/Witness.d.ts +0 -11
- package/dist/neutral/Witness.d.ts.map +0 -1
- package/dist/neutral/index.cjs +0 -200
- package/dist/neutral/index.cjs.map +0 -1
- package/dist/neutral/index.d.cts +0 -6
- package/dist/neutral/index.d.cts.map +0 -1
- package/dist/neutral/index.d.mts +0 -6
- package/dist/neutral/index.d.mts.map +0 -1
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/model.d.cts +0 -14
- package/dist/neutral/model.d.cts.map +0 -1
- package/dist/neutral/model.d.mts +0 -14
- package/dist/neutral/model.d.mts.map +0 -1
- package/dist/neutral/model.d.ts +0 -14
- package/dist/neutral/model.d.ts.map +0 -1
- package/dist/node/Diviner.d.cts +0 -34
- package/dist/node/Diviner.d.cts.map +0 -1
- package/dist/node/Diviner.d.mts +0 -34
- package/dist/node/Diviner.d.mts.map +0 -1
- package/dist/node/Diviner.d.ts +0 -34
- package/dist/node/Diviner.d.ts.map +0 -1
- package/dist/node/Labels.d.cts +0 -6
- package/dist/node/Labels.d.cts.map +0 -1
- package/dist/node/Labels.d.mts +0 -6
- package/dist/node/Labels.d.mts.map +0 -1
- package/dist/node/Labels.d.ts +0 -6
- package/dist/node/Labels.d.ts.map +0 -1
- package/dist/node/Payload.d.cts +0 -32
- package/dist/node/Payload.d.cts.map +0 -1
- package/dist/node/Payload.d.mts +0 -32
- package/dist/node/Payload.d.mts.map +0 -1
- package/dist/node/Payload.d.ts +0 -32
- package/dist/node/Payload.d.ts.map +0 -1
- package/dist/node/Witness.d.cts +0 -11
- package/dist/node/Witness.d.cts.map +0 -1
- package/dist/node/Witness.d.mts +0 -11
- package/dist/node/Witness.d.mts.map +0 -1
- package/dist/node/Witness.d.ts +0 -11
- package/dist/node/Witness.d.ts.map +0 -1
- package/dist/node/index.cjs +0 -221
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.d.cts +0 -6
- package/dist/node/index.d.cts.map +0 -1
- package/dist/node/index.d.mts +0 -6
- package/dist/node/index.d.mts.map +0 -1
- package/dist/node/index.d.ts +0 -6
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/index.mjs +0 -184
- package/dist/node/index.mjs.map +0 -1
- package/dist/node/model.d.cts +0 -14
- package/dist/node/model.d.cts.map +0 -1
- package/dist/node/model.d.mts +0 -14
- package/dist/node/model.d.mts.map +0 -1
- package/dist/node/model.d.ts +0 -14
- package/dist/node/model.d.ts.map +0 -1
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,6 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
+
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
5
|
+
import { Labels } from '@xyo-network/module-model';
|
|
6
|
+
import { EvmWitnessConfig, EvmWitnessParams, AbstractEvmWitness } from '@xyo-network/witness-evm-abstract';
|
|
7
|
+
import * as ethers from 'ethers';
|
|
8
|
+
import { JsonFragment } from 'ethers';
|
|
9
|
+
|
|
10
|
+
interface EvmCallDivinerLabels extends Labels {
|
|
11
|
+
'network.xyo.crypto.contract.info': 'diviner';
|
|
12
|
+
}
|
|
13
|
+
declare const EvmCallDivinerLabels: EvmCallDivinerLabels;
|
|
14
|
+
|
|
15
|
+
declare const EvmCallSchema = "network.xyo.evm.call";
|
|
16
|
+
type EvmCallSchema = typeof EvmCallSchema;
|
|
17
|
+
type EvmCall = Payload<{
|
|
18
|
+
address?: string;
|
|
19
|
+
args?: unknown[];
|
|
20
|
+
block?: number;
|
|
21
|
+
functionName?: string;
|
|
22
|
+
}, EvmCallSchema>;
|
|
23
|
+
declare const EvmCallResultSchema = "network.xyo.evm.call.result";
|
|
24
|
+
type EvmCallResultSchema = typeof EvmCallResultSchema;
|
|
25
|
+
type EvmCallResultBase = Payload<{
|
|
26
|
+
address: string;
|
|
27
|
+
args: unknown[];
|
|
28
|
+
block?: number;
|
|
29
|
+
chainId: number;
|
|
30
|
+
functionName: string;
|
|
31
|
+
implementation?: string;
|
|
32
|
+
}, EvmCallResultSchema>;
|
|
33
|
+
type EvmCallSuccess = EvmCallResultBase & {
|
|
34
|
+
result: unknown;
|
|
35
|
+
};
|
|
36
|
+
type EvmCallFailure = EvmCallResultBase & {
|
|
37
|
+
error: string;
|
|
38
|
+
};
|
|
39
|
+
type EvmCallResult = EvmCallSuccess | EvmCallFailure;
|
|
40
|
+
declare const isEvmCallSuccess: (payload?: EvmCallResult) => payload is EvmCallSuccess;
|
|
41
|
+
declare const isEvmCallFailure: (payload?: EvmCallResult) => payload is EvmCallFailure;
|
|
42
|
+
declare const isEvmCallResult: (x?: unknown | null) => x is EvmCallResult;
|
|
43
|
+
declare const asEvmCallSuccess: (payload?: EvmCallResult) => EvmCallSuccess | undefined;
|
|
44
|
+
declare const asEvmCallFailure: (payload?: EvmCallResult) => EvmCallFailure | undefined;
|
|
45
|
+
|
|
46
|
+
type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
|
|
47
|
+
declare const EvmCallDivinerConfigSchema = "network.xyo.evm.call.diviner.config";
|
|
48
|
+
type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema;
|
|
49
|
+
type EvmCallDivinerConfig = DivinerConfig<{
|
|
50
|
+
schema: EvmCallDivinerConfigSchema;
|
|
51
|
+
}>;
|
|
52
|
+
type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>;
|
|
53
|
+
declare const EvmCallResultsSchema = "network.xyo.evm.call.results";
|
|
54
|
+
type EvmCallResultsSchema = typeof EvmCallResultsSchema;
|
|
55
|
+
type EvmCallResults = Payload<{
|
|
56
|
+
address: string;
|
|
57
|
+
chainId: number;
|
|
58
|
+
results?: Record<string, {
|
|
59
|
+
args?: unknown[];
|
|
60
|
+
result: unknown;
|
|
61
|
+
}>;
|
|
62
|
+
}, EvmCallResultsSchema>;
|
|
63
|
+
declare class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {
|
|
64
|
+
static readonly configSchemas: Schema[];
|
|
65
|
+
static readonly defaultConfigSchema: Schema;
|
|
66
|
+
static labels: EvmCallDivinerLabels;
|
|
67
|
+
protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined;
|
|
68
|
+
protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
|
|
69
|
+
protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults;
|
|
70
|
+
protected divineHandler(inPayloads?: EvmCallResult[]): Promise<EvmCallResults[]>;
|
|
71
|
+
protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
type Abi = string | ReadonlyArray<JsonFragment | string>;
|
|
75
|
+
declare const EvmCallWitnessConfigSchema = "network.xyo.evm.call.witness.config";
|
|
76
|
+
type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema;
|
|
77
|
+
type EvmCallWitnessConfig = EvmWitnessConfig<{
|
|
78
|
+
abi?: Abi;
|
|
79
|
+
address?: string;
|
|
80
|
+
args?: unknown[];
|
|
81
|
+
block?: number;
|
|
82
|
+
functionName?: string;
|
|
83
|
+
}, EvmCallWitnessConfigSchema>;
|
|
84
|
+
type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>;
|
|
85
|
+
|
|
86
|
+
declare class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {
|
|
87
|
+
static readonly configSchemas: Schema[];
|
|
88
|
+
static readonly defaultConfigSchema: Schema;
|
|
89
|
+
get abi(): string | readonly (string | ethers.JsonFragment)[];
|
|
90
|
+
protected observeHandler(inPayloads?: EvmCall[]): Promise<EvmCallResult[]>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { type Abi, type EvmCall, EvmCallDiviner, type EvmCallDivinerConfig, EvmCallDivinerConfigSchema, EvmCallDivinerLabels, type EvmCallDivinerParams, type EvmCallFailure, type EvmCallResult, type EvmCallResultBase, EvmCallResultSchema, type EvmCallResults, EvmCallResultsSchema, EvmCallSchema, type EvmCallSuccess, EvmCallWitness, type EvmCallWitnessConfig, EvmCallWitnessConfigSchema, type EvmCallWitnessParams, type FindCallResult, asEvmCallFailure, asEvmCallSuccess, isEvmCallFailure, isEvmCallResult, isEvmCallSuccess };
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/Diviner.ts
|
|
5
2
|
import { assertEx } from "@xylabs/assert";
|
|
6
3
|
import { AbstractDiviner } from "@xyo-network/diviner-abstract";
|
|
@@ -15,32 +12,23 @@ var EvmCallDivinerLabels = {
|
|
|
15
12
|
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
16
13
|
var EvmCallSchema = "network.xyo.evm.call";
|
|
17
14
|
var EvmCallResultSchema = "network.xyo.evm.call.result";
|
|
18
|
-
var isEvmCallSuccess =
|
|
15
|
+
var isEvmCallSuccess = (payload) => {
|
|
19
16
|
return payload?.result !== void 0;
|
|
20
|
-
}
|
|
21
|
-
var isEvmCallFailure =
|
|
17
|
+
};
|
|
18
|
+
var isEvmCallFailure = (payload) => {
|
|
22
19
|
return payload?.error !== void 0;
|
|
23
|
-
}
|
|
20
|
+
};
|
|
24
21
|
var isEvmCallResult = isPayloadOfSchemaType(EvmCallResultSchema);
|
|
25
|
-
var asEvmCallSuccess =
|
|
26
|
-
var asEvmCallFailure =
|
|
22
|
+
var asEvmCallSuccess = (payload) => isEvmCallSuccess(payload) ? payload : void 0;
|
|
23
|
+
var asEvmCallFailure = (payload) => isEvmCallFailure(payload) ? payload : void 0;
|
|
27
24
|
|
|
28
25
|
// src/Diviner.ts
|
|
29
26
|
var EvmCallDivinerConfigSchema = "network.xyo.evm.call.diviner.config";
|
|
30
27
|
var EvmCallResultsSchema = "network.xyo.evm.call.results";
|
|
31
28
|
var EvmCallDiviner = class _EvmCallDiviner extends AbstractDiviner {
|
|
32
|
-
static
|
|
33
|
-
__name(this, "EvmCallDiviner");
|
|
34
|
-
}
|
|
35
|
-
static configSchemas = [
|
|
36
|
-
...super.configSchemas,
|
|
37
|
-
EvmCallDivinerConfigSchema
|
|
38
|
-
];
|
|
29
|
+
static configSchemas = [...super.configSchemas, EvmCallDivinerConfigSchema];
|
|
39
30
|
static defaultConfigSchema = EvmCallDivinerConfigSchema;
|
|
40
|
-
static labels = {
|
|
41
|
-
...super.labels,
|
|
42
|
-
...EvmCallDivinerLabels
|
|
43
|
-
};
|
|
31
|
+
static labels = { ...super.labels, ...EvmCallDivinerLabels };
|
|
44
32
|
static findCallResult(address, functionName, payloads) {
|
|
45
33
|
const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
|
|
46
34
|
return asEvmCallSuccess(foundPayload)?.result;
|
|
@@ -70,24 +58,23 @@ var EvmCallDiviner = class _EvmCallDiviner extends AbstractDiviner {
|
|
|
70
58
|
return prev;
|
|
71
59
|
}, {})
|
|
72
60
|
);
|
|
73
|
-
const result = await Promise.all(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
results
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
const result = await Promise.all(
|
|
62
|
+
addresses.map(async (address) => {
|
|
63
|
+
const foundCallResults = callResults.filter((callResult) => callResult.address === address);
|
|
64
|
+
const results = {
|
|
65
|
+
results: await this.reduceResults(foundCallResults),
|
|
66
|
+
...this.contractInfoRequiredFields(foundCallResults)
|
|
67
|
+
};
|
|
68
|
+
return results;
|
|
69
|
+
})
|
|
70
|
+
);
|
|
81
71
|
return result;
|
|
82
72
|
}
|
|
83
73
|
reduceResults(callResults) {
|
|
84
74
|
return callResults.reduce((prev, callResult) => {
|
|
85
75
|
const typedCallResult = asEvmCallSuccess(callResult);
|
|
86
76
|
if (typedCallResult) {
|
|
87
|
-
prev[callResult.functionName] = {
|
|
88
|
-
args: typedCallResult.args,
|
|
89
|
-
result: typedCallResult?.result
|
|
90
|
-
};
|
|
77
|
+
prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result };
|
|
91
78
|
}
|
|
92
79
|
return prev;
|
|
93
80
|
}, {});
|
|
@@ -106,13 +93,7 @@ import { isPayloadOfSchemaType as isPayloadOfSchemaType3 } from "@xyo-network/pa
|
|
|
106
93
|
import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
|
|
107
94
|
import { Contract } from "ethers";
|
|
108
95
|
var EvmCallWitness = class extends AbstractEvmWitness {
|
|
109
|
-
static
|
|
110
|
-
__name(this, "EvmCallWitness");
|
|
111
|
-
}
|
|
112
|
-
static configSchemas = [
|
|
113
|
-
...super.configSchemas,
|
|
114
|
-
EvmCallWitnessConfigSchema
|
|
115
|
-
];
|
|
96
|
+
static configSchemas = [...super.configSchemas, EvmCallWitnessConfigSchema];
|
|
116
97
|
static defaultConfigSchema = EvmCallWitnessConfigSchema;
|
|
117
98
|
get abi() {
|
|
118
99
|
return assertEx2(this.config.abi, () => "Missing abi");
|
|
@@ -121,38 +102,38 @@ var EvmCallWitness = class extends AbstractEvmWitness {
|
|
|
121
102
|
await this.started("throw");
|
|
122
103
|
await this.getProviders();
|
|
123
104
|
try {
|
|
124
|
-
const observations = await Promise.all(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
...args ?? this.config.args ?? []
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
105
|
+
const observations = await Promise.all(
|
|
106
|
+
inPayloads.filter(isPayloadOfSchemaType3(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {
|
|
107
|
+
const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
|
|
108
|
+
const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
|
|
109
|
+
const mergedArgs = [...args ?? this.config.args ?? []];
|
|
110
|
+
const provider = await this.getProvider(true, true);
|
|
111
|
+
const block = this.config.block ?? payloadBlock ?? await provider.getBlockNumber();
|
|
112
|
+
const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block);
|
|
113
|
+
const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block);
|
|
114
|
+
const implementation = isHexZero(erc1967Status.slots.implementation ?? "0x00") ? erc1822Status.implementation : erc1967Status.implementation;
|
|
115
|
+
const contract = new Contract(implementation, this.abi, provider);
|
|
116
|
+
let transformedResult;
|
|
117
|
+
try {
|
|
118
|
+
const result = await contract[validatedFunctionName](...mergedArgs);
|
|
119
|
+
transformedResult = typeof result === "bigint" ? `0x${result.toString(16)}` : result;
|
|
120
|
+
} catch {
|
|
121
|
+
}
|
|
122
|
+
const observation = {
|
|
123
|
+
address: validatedAddress,
|
|
124
|
+
args: mergedArgs,
|
|
125
|
+
block,
|
|
126
|
+
chainId: Number((await provider.getNetwork()).chainId),
|
|
127
|
+
functionName: validatedFunctionName,
|
|
128
|
+
result: transformedResult,
|
|
129
|
+
schema: EvmCallResultSchema
|
|
130
|
+
};
|
|
131
|
+
if (implementation !== validatedAddress) {
|
|
132
|
+
observation.implementation = implementation;
|
|
133
|
+
}
|
|
134
|
+
return observation;
|
|
135
|
+
})
|
|
136
|
+
);
|
|
156
137
|
return observations;
|
|
157
138
|
} catch (ex) {
|
|
158
139
|
const error = ex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/Labels.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\nimport { EvmCallDivinerLabels } from './Labels.ts'\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload.ts'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: number\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmCallDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmCallDivinerConfigSchema\n static override labels: EvmCallDivinerLabels = { ...super.labels, ...EvmCallDivinerLabels }\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const results: EvmCallResults = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Labels } from '@xyo-network/module-model'\n\n/**\n * Labels for Crypto Contract Diviner components\n */\nexport interface EvmCallDivinerLabels extends Labels {\n 'network.xyo.crypto.contract.info': 'diviner'\n}\n\n/**\n * Labels for Crypto Contract Diviner components\n */\nexport const EvmCallDivinerLabels: EvmCallDivinerLabels = {\n 'network.xyo.crypto.contract.info': 'diviner',\n}\n","import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const isEvmCallResult = isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema)\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model.ts'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload.ts'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmCallWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('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<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n // Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n // Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch {\n // const error = ex as Error & { code: string }\n // this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n // console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\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"],"mappings":"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","names":["assertEx","AbstractDiviner","isPayloadOfSchemaType","EvmCallDivinerLabels","isPayloadOfSchemaType","EvmCallSchema","EvmCallResultSchema","isEvmCallSuccess","payload","result","undefined","isEvmCallFailure","error","isEvmCallResult","isPayloadOfSchemaType","asEvmCallSuccess","asEvmCallFailure","EvmCallDivinerConfigSchema","EvmCallResultsSchema","EvmCallDiviner","AbstractDiviner","configSchemas","defaultConfigSchema","labels","EvmCallDivinerLabels","findCallResult","address","functionName","payloads","foundPayload","find","payload","asEvmCallSuccess","result","matchingExistingField","objs","field","expectedValue","at","didNotMatch","reduce","prev","obj","undefined","contractInfoRequiredFields","callResults","assertEx","chainId","schema","divineHandler","inPayloads","filter","isPayloadOfSchemaType","EvmCallResultSchema","addresses","Object","keys","Promise","all","map","foundCallResults","callResult","results","reduceResults","typedCallResult","args","EvmCallWitnessConfigSchema","assertEx","isHexZero","getErc1822SlotStatus","getErc1967SlotStatus","isPayloadOfSchemaType","AbstractEvmWitness","Contract","EvmCallWitness","AbstractEvmWitness","configSchemas","EvmCallWitnessConfigSchema","defaultConfigSchema","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmCallSchema","map","functionName","args","address","block","payloadBlock","validatedAddress","validatedFunctionName","mergedArgs","provider","getProvider","getBlockNumber","erc1967Status","getErc1967SlotStatus","erc1822Status","getErc1822SlotStatus","implementation","isHexZero","slots","contract","Contract","transformedResult","result","toString","observation","chainId","Number","getNetwork","schema","EvmCallResultSchema","ex","error","console","log","name","message"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/Labels.ts","../../src/Payload.ts","../../src/model.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\nimport { EvmCallDivinerLabels } from './Labels.ts'\nimport { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload.ts'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config'\nexport type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema\n\nexport type EvmCallDivinerConfig = DivinerConfig<{\n schema: EvmCallDivinerConfigSchema\n}>\nexport type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>\n\nexport const EvmCallResultsSchema = 'network.xyo.evm.call.results'\nexport type EvmCallResultsSchema = typeof EvmCallResultsSchema\n\nexport type EvmCallResults = Payload<\n {\n address: string\n chainId: number\n results?: Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n },\n EvmCallResultsSchema\n>\n\nexport class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmCallDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmCallDivinerConfigSchema\n static override labels: EvmCallDivinerLabels = { ...super.labels, ...EvmCallDivinerLabels }\n\n protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asEvmCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults {\n return {\n address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: EvmCallResultsSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise<EvmCallResults[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const results: EvmCallResults = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return results\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<\n Record<\n string,\n {\n args?: unknown[]\n result: unknown\n }\n >\n >((prev, callResult) => {\n const typedCallResult = asEvmCallSuccess(callResult)\n if (typedCallResult) {\n prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result }\n }\n return prev\n }, {})\n }\n}\n","import { Labels } from '@xyo-network/module-model'\n\n/**\n * Labels for Crypto Contract Diviner components\n */\nexport interface EvmCallDivinerLabels extends Labels {\n 'network.xyo.crypto.contract.info': 'diviner'\n}\n\n/**\n * Labels for Crypto Contract Diviner components\n */\nexport const EvmCallDivinerLabels: EvmCallDivinerLabels = {\n 'network.xyo.crypto.contract.info': 'diviner',\n}\n","import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport const EvmCallSchema = 'network.xyo.evm.call'\nexport type EvmCallSchema = typeof EvmCallSchema\n\nexport type EvmCall = Payload<\n {\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallSchema\n>\n\nexport const EvmCallResultSchema = 'network.xyo.evm.call.result'\nexport type EvmCallResultSchema = typeof EvmCallResultSchema\n\nexport type EvmCallResultBase = Payload<\n {\n address: string\n args: unknown[]\n block?: number\n chainId: number\n functionName: string\n implementation?: string\n },\n EvmCallResultSchema\n>\n\nexport type EvmCallSuccess = EvmCallResultBase & {\n result: unknown\n}\n\nexport type EvmCallFailure = EvmCallResultBase & {\n error: string\n}\n\nexport type EvmCallResult = EvmCallSuccess | EvmCallFailure\n\nexport const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => {\n return (payload as EvmCallSuccess | undefined)?.result !== undefined\n}\n\nexport const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => {\n return (payload as EvmCallFailure | undefined)?.error !== undefined\n}\n\nexport const isEvmCallResult = isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema)\n\nexport const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined)\n\nexport const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined)\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config'\nexport type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema\n\nexport type EvmCallWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n args?: unknown[]\n block?: number\n functionName?: string\n },\n EvmCallWitnessConfigSchema\n>\n\nexport type EvmCallWitnessParams = EvmWitnessParams<EvmCallWitnessConfig>\n","import { assertEx } from '@xylabs/assert'\nimport { isHexZero } from '@xylabs/hex'\nimport { getErc1822SlotStatus } from '@xyo-network/erc1822-witness'\nimport { getErc1967SlotStatus } from '@xyo-network/erc1967-witness'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract } from 'ethers'\n\nimport { EvmCallWitnessConfigSchema, EvmCallWitnessParams } from './model.ts'\nimport { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload.ts'\n\nexport class EvmCallWitness<TParams extends EvmCallWitnessParams = EvmCallWitnessParams> extends AbstractEvmWitness<TParams, EvmCall, EvmCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmCallWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmCallWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmCall[] = []): Promise<EvmCallResult[]> {\n await this.started('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<EvmCall>(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const provider = await this.getProvider(true, true)\n\n const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber())\n\n // Check if ERC-1967 Upgradeable\n const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block)\n\n // Check if ERC-1822 Upgradeable\n const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block)\n\n const implementation = isHexZero(erc1967Status.slots.implementation ?? '0x00') ? erc1822Status.implementation : erc1967Status.implementation\n\n const contract = new Contract(implementation, this.abi, provider)\n let transformedResult: unknown\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n transformedResult = typeof result === 'bigint' ? `0x${result.toString(16)}` : result\n } catch {\n // const error = ex as Error & { code: string }\n // this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`)\n }\n const observation: EvmCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n block,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: EvmCallResultSchema,\n }\n if (implementation !== validatedAddress) {\n observation.implementation = implementation\n }\n // console.log(`observation: ${JSON.stringify(observation, null, 2)}`)\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"],"mappings":"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","names":["isPayloadOfSchemaType","isPayloadOfSchemaType","result","assertEx","isPayloadOfSchemaType","assertEx","isPayloadOfSchemaType"]}
|
package/package.json
CHANGED
|
@@ -10,79 +10,60 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/plugins/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^
|
|
14
|
-
"@xylabs/hex": "^
|
|
15
|
-
"@xylabs/promise": "^
|
|
16
|
-
"@xyo-network/diviner-abstract": "^
|
|
17
|
-
"@xyo-network/diviner-model": "^
|
|
18
|
-
"@xyo-network/erc1822-witness": "^
|
|
19
|
-
"@xyo-network/erc1967-witness": "^
|
|
20
|
-
"@xyo-network/module-model": "^
|
|
21
|
-
"@xyo-network/payload-model": "^
|
|
22
|
-
"@xyo-network/witness-evm-abstract": "^
|
|
13
|
+
"@xylabs/assert": "^4.0.0",
|
|
14
|
+
"@xylabs/hex": "^4.0.0",
|
|
15
|
+
"@xylabs/promise": "^4.0.0",
|
|
16
|
+
"@xyo-network/diviner-abstract": "^3.0.1",
|
|
17
|
+
"@xyo-network/diviner-model": "^3.0.1",
|
|
18
|
+
"@xyo-network/erc1822-witness": "^3.0.0",
|
|
19
|
+
"@xyo-network/erc1967-witness": "^3.0.0",
|
|
20
|
+
"@xyo-network/module-model": "^3.0.1",
|
|
21
|
+
"@xyo-network/payload-model": "^3.0.1",
|
|
22
|
+
"@xyo-network/witness-evm-abstract": "^3.0.1",
|
|
23
23
|
"ethers": "^6.13.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@xylabs/delay": "^
|
|
27
|
-
"@xylabs/jest-helpers": "^
|
|
28
|
-
"@xylabs/profile": "^
|
|
29
|
-
"@xylabs/ts-scripts-yarn3": "^
|
|
30
|
-
"@xylabs/tsconfig": "^
|
|
31
|
-
"@xyo-network/account": "^
|
|
32
|
-
"@xyo-network/archivist-memory": "^
|
|
33
|
-
"@xyo-network/crypto-contract-function-read-payload-plugin": "^
|
|
34
|
-
"@xyo-network/diviner-boundwitness-memory": "^
|
|
35
|
-
"@xyo-network/diviner-jsonpatch": "^
|
|
36
|
-
"@xyo-network/diviner-jsonpatch-memory": "^
|
|
37
|
-
"@xyo-network/diviner-jsonpath-aggregate-memory": "^
|
|
38
|
-
"@xyo-network/diviner-payload-memory": "^
|
|
39
|
-
"@xyo-network/diviner-payload-model": "^
|
|
40
|
-
"@xyo-network/diviner-range": "^
|
|
41
|
-
"@xyo-network/diviner-temporal-indexing": "^
|
|
42
|
-
"@xyo-network/evm-contract-witness": "^
|
|
43
|
-
"@xyo-network/evm-nft-id-payload-plugin": "^
|
|
44
|
-
"@xyo-network/evm-token-interface-diviner": "^
|
|
45
|
-
"@xyo-network/manifest": "^
|
|
46
|
-
"@xyo-network/module-factory-locator": "^
|
|
47
|
-
"@xyo-network/node-memory": "^
|
|
48
|
-
"@xyo-network/open-zeppelin-typechain": "^3.0
|
|
49
|
-
"@xyo-network/sentinel-model": "^
|
|
50
|
-
"@xyo-network/witness-adhoc": "^
|
|
51
|
-
"@xyo-network/witness-model": "^
|
|
52
|
-
"@xyo-network/witness-timestamp": "^
|
|
26
|
+
"@xylabs/delay": "^4.0.0",
|
|
27
|
+
"@xylabs/jest-helpers": "^4.0.0",
|
|
28
|
+
"@xylabs/profile": "^4.0.0",
|
|
29
|
+
"@xylabs/ts-scripts-yarn3": "^4.0.0-rc.15",
|
|
30
|
+
"@xylabs/tsconfig": "^4.0.0-rc.15",
|
|
31
|
+
"@xyo-network/account": "^3.0.1",
|
|
32
|
+
"@xyo-network/archivist-memory": "^3.0.1",
|
|
33
|
+
"@xyo-network/crypto-contract-function-read-payload-plugin": "^3.0.0",
|
|
34
|
+
"@xyo-network/diviner-boundwitness-memory": "^3.0.1",
|
|
35
|
+
"@xyo-network/diviner-jsonpatch": "^3.0.1",
|
|
36
|
+
"@xyo-network/diviner-jsonpatch-memory": "^3.0.1",
|
|
37
|
+
"@xyo-network/diviner-jsonpath-aggregate-memory": "^3.0.1",
|
|
38
|
+
"@xyo-network/diviner-payload-memory": "^3.0.1",
|
|
39
|
+
"@xyo-network/diviner-payload-model": "^3.0.1",
|
|
40
|
+
"@xyo-network/diviner-range": "^3.0.1",
|
|
41
|
+
"@xyo-network/diviner-temporal-indexing": "^3.0.1",
|
|
42
|
+
"@xyo-network/evm-contract-witness": "^3.0.0",
|
|
43
|
+
"@xyo-network/evm-nft-id-payload-plugin": "^3.0.0",
|
|
44
|
+
"@xyo-network/evm-token-interface-diviner": "^3.0.0",
|
|
45
|
+
"@xyo-network/manifest": "^3.0.1",
|
|
46
|
+
"@xyo-network/module-factory-locator": "^3.0.1",
|
|
47
|
+
"@xyo-network/node-memory": "^3.0.1",
|
|
48
|
+
"@xyo-network/open-zeppelin-typechain": "^3.1.0",
|
|
49
|
+
"@xyo-network/sentinel-model": "^3.0.1",
|
|
50
|
+
"@xyo-network/witness-adhoc": "^3.0.1",
|
|
51
|
+
"@xyo-network/witness-model": "^3.0.1",
|
|
52
|
+
"@xyo-network/witness-timestamp": "^3.0.1",
|
|
53
53
|
"async-mutex": "^0.5.0",
|
|
54
54
|
"jest": "^29.7.0",
|
|
55
55
|
"typescript": "^5.5.4"
|
|
56
56
|
},
|
|
57
57
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
58
|
-
"types": "dist/
|
|
58
|
+
"types": "dist/neutral/index.d.ts",
|
|
59
59
|
"exports": {
|
|
60
60
|
".": {
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
"types": "./dist/browser/index.d.cts",
|
|
64
|
-
"default": "./dist/browser/index.cjs"
|
|
65
|
-
},
|
|
66
|
-
"import": {
|
|
67
|
-
"types": "./dist/browser/index.d.mts",
|
|
68
|
-
"default": "./dist/browser/index.mjs"
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
"node": {
|
|
72
|
-
"require": {
|
|
73
|
-
"types": "./dist/node/index.d.cts",
|
|
74
|
-
"default": "./dist/node/index.cjs"
|
|
75
|
-
},
|
|
76
|
-
"import": {
|
|
77
|
-
"types": "./dist/node/index.d.mts",
|
|
78
|
-
"default": "./dist/node/index.mjs"
|
|
79
|
-
}
|
|
80
|
-
}
|
|
61
|
+
"types": "./dist/neutral/index.d.ts",
|
|
62
|
+
"default": "./dist/neutral/index.mjs"
|
|
81
63
|
},
|
|
82
64
|
"./package.json": "./package.json"
|
|
83
65
|
},
|
|
84
|
-
"
|
|
85
|
-
"module": "dist/node/index.mjs",
|
|
66
|
+
"module": "dist/neutral/index.mjs",
|
|
86
67
|
"homepage": "https://xyo.network",
|
|
87
68
|
"license": "LGPL-3.0-only",
|
|
88
69
|
"publishConfig": {
|
|
@@ -93,6 +74,6 @@
|
|
|
93
74
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
94
75
|
},
|
|
95
76
|
"sideEffects": false,
|
|
96
|
-
"version": "
|
|
77
|
+
"version": "3.0.0",
|
|
97
78
|
"type": "module"
|
|
98
79
|
}
|
package/xy.config.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
|
|
2
2
|
const config: XyTsupConfig = {
|
|
3
3
|
compile: {
|
|
4
|
-
browser: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
node: {
|
|
4
|
+
browser: {},
|
|
5
|
+
node: {},
|
|
6
|
+
neutral: {
|
|
8
7
|
src: true,
|
|
9
8
|
},
|
|
10
9
|
},
|
|
11
10
|
}
|
|
12
11
|
|
|
13
|
-
// eslint-disable-next-line import/no-default-export
|
|
12
|
+
// eslint-disable-next-line import-x/no-default-export
|
|
14
13
|
export default config
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
5
|
-
import { EvmCallDivinerLabels } from './Labels.ts';
|
|
6
|
-
import { EvmCallResult } from './Payload.ts';
|
|
7
|
-
export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
|
|
8
|
-
export declare const EvmCallDivinerConfigSchema = "network.xyo.evm.call.diviner.config";
|
|
9
|
-
export type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema;
|
|
10
|
-
export type EvmCallDivinerConfig = DivinerConfig<{
|
|
11
|
-
schema: EvmCallDivinerConfigSchema;
|
|
12
|
-
}>;
|
|
13
|
-
export type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>;
|
|
14
|
-
export declare const EvmCallResultsSchema = "network.xyo.evm.call.results";
|
|
15
|
-
export type EvmCallResultsSchema = typeof EvmCallResultsSchema;
|
|
16
|
-
export type EvmCallResults = Payload<{
|
|
17
|
-
address: string;
|
|
18
|
-
chainId: number;
|
|
19
|
-
results?: Record<string, {
|
|
20
|
-
args?: unknown[];
|
|
21
|
-
result: unknown;
|
|
22
|
-
}>;
|
|
23
|
-
}, EvmCallResultsSchema>;
|
|
24
|
-
export declare class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {
|
|
25
|
-
static readonly configSchemas: Schema[];
|
|
26
|
-
static readonly defaultConfigSchema: Schema;
|
|
27
|
-
static labels: EvmCallDivinerLabels;
|
|
28
|
-
protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined;
|
|
29
|
-
protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
|
|
30
|
-
protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults;
|
|
31
|
-
protected divineHandler(inPayloads?: EvmCallResult[]): Promise<EvmCallResults[]>;
|
|
32
|
-
protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAyB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAoB,aAAa,EAAuB,MAAM,cAAc,CAAA;AAEnF,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC/C,MAAM,EAAE,0BAA0B,CAAA;CACnC,CAAC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAA;AAEtE,eAAO,MAAM,oBAAoB,iCAAiC,CAAA;AAClE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;QACE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;QAChB,MAAM,EAAE,OAAO,CAAA;KAChB,CACF,CAAA;CACF,EACD,oBAAoB,CACrB,CAAA;AAED,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IACvH,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;IACjF,OAAgB,MAAM,EAAE,oBAAoB,CAA+C;IAE3F,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,GAAG,SAAS;IAKxI,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IASzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,cAAc;cAQzD,aAAa,CAAC,UAAU,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyBnG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;CAkB7F"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
5
|
-
import { EvmCallDivinerLabels } from './Labels.ts';
|
|
6
|
-
import { EvmCallResult } from './Payload.ts';
|
|
7
|
-
export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
|
|
8
|
-
export declare const EvmCallDivinerConfigSchema = "network.xyo.evm.call.diviner.config";
|
|
9
|
-
export type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema;
|
|
10
|
-
export type EvmCallDivinerConfig = DivinerConfig<{
|
|
11
|
-
schema: EvmCallDivinerConfigSchema;
|
|
12
|
-
}>;
|
|
13
|
-
export type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>;
|
|
14
|
-
export declare const EvmCallResultsSchema = "network.xyo.evm.call.results";
|
|
15
|
-
export type EvmCallResultsSchema = typeof EvmCallResultsSchema;
|
|
16
|
-
export type EvmCallResults = Payload<{
|
|
17
|
-
address: string;
|
|
18
|
-
chainId: number;
|
|
19
|
-
results?: Record<string, {
|
|
20
|
-
args?: unknown[];
|
|
21
|
-
result: unknown;
|
|
22
|
-
}>;
|
|
23
|
-
}, EvmCallResultsSchema>;
|
|
24
|
-
export declare class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {
|
|
25
|
-
static readonly configSchemas: Schema[];
|
|
26
|
-
static readonly defaultConfigSchema: Schema;
|
|
27
|
-
static labels: EvmCallDivinerLabels;
|
|
28
|
-
protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined;
|
|
29
|
-
protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
|
|
30
|
-
protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults;
|
|
31
|
-
protected divineHandler(inPayloads?: EvmCallResult[]): Promise<EvmCallResults[]>;
|
|
32
|
-
protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAyB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAoB,aAAa,EAAuB,MAAM,cAAc,CAAA;AAEnF,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC/C,MAAM,EAAE,0BAA0B,CAAA;CACnC,CAAC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAA;AAEtE,eAAO,MAAM,oBAAoB,iCAAiC,CAAA;AAClE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;QACE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;QAChB,MAAM,EAAE,OAAO,CAAA;KAChB,CACF,CAAA;CACF,EACD,oBAAoB,CACrB,CAAA;AAED,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IACvH,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;IACjF,OAAgB,MAAM,EAAE,oBAAoB,CAA+C;IAE3F,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,GAAG,SAAS;IAKxI,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IASzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,cAAc;cAQzD,aAAa,CAAC,UAAU,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyBnG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;CAkB7F"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
5
|
-
import { EvmCallDivinerLabels } from './Labels.ts';
|
|
6
|
-
import { EvmCallResult } from './Payload.ts';
|
|
7
|
-
export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined];
|
|
8
|
-
export declare const EvmCallDivinerConfigSchema = "network.xyo.evm.call.diviner.config";
|
|
9
|
-
export type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema;
|
|
10
|
-
export type EvmCallDivinerConfig = DivinerConfig<{
|
|
11
|
-
schema: EvmCallDivinerConfigSchema;
|
|
12
|
-
}>;
|
|
13
|
-
export type EvmCallDivinerParams = DivinerParams<EvmCallDivinerConfig>;
|
|
14
|
-
export declare const EvmCallResultsSchema = "network.xyo.evm.call.results";
|
|
15
|
-
export type EvmCallResultsSchema = typeof EvmCallResultsSchema;
|
|
16
|
-
export type EvmCallResults = Payload<{
|
|
17
|
-
address: string;
|
|
18
|
-
chainId: number;
|
|
19
|
-
results?: Record<string, {
|
|
20
|
-
args?: unknown[];
|
|
21
|
-
result: unknown;
|
|
22
|
-
}>;
|
|
23
|
-
}, EvmCallResultsSchema>;
|
|
24
|
-
export declare class EvmCallDiviner<TParams extends EvmCallDivinerParams = EvmCallDivinerParams> extends AbstractDiviner<TParams> {
|
|
25
|
-
static readonly configSchemas: Schema[];
|
|
26
|
-
static readonly defaultConfigSchema: Schema;
|
|
27
|
-
static labels: EvmCallDivinerLabels;
|
|
28
|
-
protected static findCallResult<TResult = string>(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined;
|
|
29
|
-
protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined;
|
|
30
|
-
protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults;
|
|
31
|
-
protected divineHandler(inPayloads?: EvmCallResult[]): Promise<EvmCallResults[]>;
|
|
32
|
-
protected reduceResults(callResults: EvmCallResult[]): Promisable<EvmCallResults['results']>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAyB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAoB,aAAa,EAAuB,MAAM,cAAc,CAAA;AAEnF,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEvI,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAC/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC/C,MAAM,EAAE,0BAA0B,CAAA;CACnC,CAAC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAA;AAEtE,eAAO,MAAM,oBAAoB,iCAAiC,CAAA;AAClE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC;IACE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;QACE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;QAChB,MAAM,EAAE,OAAO,CAAA;KAChB,CACF,CAAA;CACF,EACD,oBAAoB,CACrB,CAAA;AAED,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IACvH,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAuD;IACvG,gBAAyB,mBAAmB,EAAE,MAAM,CAA6B;IACjF,OAAgB,MAAM,EAAE,oBAAoB,CAA+C;IAE3F,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,GAAG,SAAS;IAKxI,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IASzH,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,cAAc;cAQzD,aAAa,CAAC,UAAU,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyBnG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;CAkB7F"}
|