@xyo-network/evm-token-interface-diviner 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/Diviner.d.ts +28 -0
- package/dist/neutral/Diviner.d.ts.map +1 -0
- package/dist/neutral/Payload.d.ts +22 -0
- package/dist/neutral/Payload.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +3 -50
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.mjs +5 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +49 -49
- package/src/Diviner.ts +12 -7
- package/src/Payload.ts +2 -1
- package/xy.config.ts +2 -4
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
2
|
+
import type { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model';
|
|
3
|
+
import type { EvmContract } from '@xyo-network/evm-contract-witness';
|
|
4
|
+
import type { AnyConfigSchema } from '@xyo-network/module-model';
|
|
5
|
+
import type { Schema } from '@xyo-network/payload-model';
|
|
6
|
+
import type { JsonFragment } from 'ethers';
|
|
7
|
+
import type { EvmTokenInterfaceImplemented, TokenInterface } from './Payload.ts';
|
|
8
|
+
export declare const EvmTokenInterfaceImplementedDivinerConfigSchema = "network.xyo.evm.token.interface.implemented.diviner.config";
|
|
9
|
+
export type EvmTokenInterfaceImplementedDivinerConfigSchema = typeof EvmTokenInterfaceImplementedDivinerConfigSchema;
|
|
10
|
+
export type EvmTokenInterfaceImplementedDivinerConfig = DivinerConfig<{
|
|
11
|
+
schema: EvmTokenInterfaceImplementedDivinerConfigSchema;
|
|
12
|
+
tokenInterfaces?: TokenInterface[];
|
|
13
|
+
}>;
|
|
14
|
+
export type EvmTokenInterfaceImplementedDivinerParams = DivinerParams<AnyConfigSchema<EvmTokenInterfaceImplementedDivinerConfig>>;
|
|
15
|
+
type DistributiveMappedType<T> = T extends string ? {
|
|
16
|
+
[K in T]: readonly JsonFragment[];
|
|
17
|
+
} : never;
|
|
18
|
+
type TokenInterfaceDictionary = DistributiveMappedType<TokenInterface>;
|
|
19
|
+
export declare class EvmTokenInterfaceImplementedDiviner<TParams extends EvmTokenInterfaceImplementedDivinerParams = EvmTokenInterfaceImplementedDivinerParams> extends AbstractDiviner<TParams, EvmContract, EvmTokenInterfaceImplemented> {
|
|
20
|
+
static readonly SupportedTokenInterfaces: Readonly<Record<TokenInterface, readonly JsonFragment[]>>;
|
|
21
|
+
static readonly configSchemas: Schema[];
|
|
22
|
+
static readonly defaultConfigSchema: Schema;
|
|
23
|
+
private _tokenInterfaces?;
|
|
24
|
+
get tokenInterfaces(): TokenInterfaceDictionary;
|
|
25
|
+
protected divineHandler(inPayloads?: EvmContract[]): Promise<EvmTokenInterfaceImplemented[]>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAWhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C,OAAO,KAAK,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAGhF,eAAO,MAAM,+CAA+C,+DAAyD,CAAA;AACrH,MAAM,MAAM,+CAA+C,GAAG,OAAO,+CAA+C,CAAA;AAEpH,MAAM,MAAM,yCAAyC,GAAG,aAAa,CAAC;IACpE,MAAM,EAAE,+CAA+C,CAAA;IACvD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;CACnC,CAAC,CAAA;AAEF,MAAM,MAAM,yCAAyC,GAAG,aAAa,CAAC,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAA;AAEjI,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG;KAAG,CAAC,IAAI,CAAC,GAAG,SAAS,YAAY,EAAE;CAAE,GAAG,KAAK,CAAA;AACjG,KAAK,wBAAwB,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAKtE,qBAAa,mCAAmC,CAC9C,OAAO,SAAS,yCAAyC,GAAG,yCAAyC,CACrG,SAAQ,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,4BAA4B,CAAC;IAI3E,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC,CASlG;IAED,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA4E;IAC5H,gBAAyB,mBAAmB,EAAE,MAAM,CAAkD;IAEtG,OAAO,CAAC,gBAAgB,CAAC,CAA0B;IAKnD,IAAI,eAAe,6BAYlB;cAEwB,aAAa,CAAC,UAAU,GAAE,WAAW,EAAO,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;CAwChH"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
2
|
+
export type ERC20TokenInterfaces = 'ERC20';
|
|
3
|
+
export type ERC721TokenInterfaces = 'ERC721' | 'ERC721TokenReceiver' | 'ERC721Metadata' | 'ERC721Enumerable';
|
|
4
|
+
export type ERC1155TokenInterfaces = 'ERC1155' | 'ERC1155TokenReceiver' | 'ERC1155Metadata_URI';
|
|
5
|
+
export type TokenInterface = ERC20TokenInterfaces | ERC721TokenInterfaces | ERC1155TokenInterfaces;
|
|
6
|
+
export declare const EvmTokenInterfaceImplementedSchema = "network.xyo.evm.token.interface.implemented";
|
|
7
|
+
export type EvmTokenInterfaceImplementedSchema = typeof EvmTokenInterfaceImplementedSchema;
|
|
8
|
+
export type EvmTokenInterfaceImplemented = Payload<{
|
|
9
|
+
address: string;
|
|
10
|
+
chainId: number;
|
|
11
|
+
implemented: boolean;
|
|
12
|
+
tokenInterface: TokenInterface;
|
|
13
|
+
}, EvmTokenInterfaceImplementedSchema>;
|
|
14
|
+
export declare const isEvmTokenInterfaceImplemented: (x?: unknown | null) => x is import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
15
|
+
address: string;
|
|
16
|
+
chainId: number;
|
|
17
|
+
implemented: boolean;
|
|
18
|
+
tokenInterface: TokenInterface;
|
|
19
|
+
} & {
|
|
20
|
+
schema: "network.xyo.evm.token.interface.implemented";
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=Payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAMzD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAK1C,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,kBAAkB,CAAA;AAK5G,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,sBAAsB,GAAG,qBAAqB,CAAA;AAK/F,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,sBAAsB,CAAA;AAKlG,eAAO,MAAM,kCAAkC,gDAAgD,CAAA;AAI/F,MAAM,MAAM,kCAAkC,GAAG,OAAO,kCAAkC,CAAA;AAK1F,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD;IAIE,OAAO,EAAE,MAAM,CAAA;IAIf,OAAO,EAAE,MAAM,CAAA;IAIf,WAAW,EAAE,OAAO,CAAA;IAIpB,cAAc,EAAE,cAAc,CAAA;CAC/B,EACD,kCAAkC,CACnC,CAAA;AAKD,eAAO,MAAM,8BAA8B;aApB9B,MAAM;aAIN,MAAM;iBAIF,OAAO;oBAIJ,cAAc;;;CAQmG,CAAA"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,50 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
5
|
-
import * as _xyo_network_payload_model from '@xyo-network/payload-model';
|
|
6
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
7
|
-
import { JsonFragment } from 'ethers';
|
|
8
|
-
|
|
9
|
-
type ERC20TokenInterfaces = 'ERC20';
|
|
10
|
-
type ERC721TokenInterfaces = 'ERC721' | 'ERC721TokenReceiver' | 'ERC721Metadata' | 'ERC721Enumerable';
|
|
11
|
-
type ERC1155TokenInterfaces = 'ERC1155' | 'ERC1155TokenReceiver' | 'ERC1155Metadata_URI';
|
|
12
|
-
type TokenInterface = ERC20TokenInterfaces | ERC721TokenInterfaces | ERC1155TokenInterfaces;
|
|
13
|
-
declare const EvmTokenInterfaceImplementedSchema = "network.xyo.evm.token.interface.implemented";
|
|
14
|
-
type EvmTokenInterfaceImplementedSchema = typeof EvmTokenInterfaceImplementedSchema;
|
|
15
|
-
type EvmTokenInterfaceImplemented = Payload<{
|
|
16
|
-
address: string;
|
|
17
|
-
chainId: number;
|
|
18
|
-
implemented: boolean;
|
|
19
|
-
tokenInterface: TokenInterface;
|
|
20
|
-
}, EvmTokenInterfaceImplementedSchema>;
|
|
21
|
-
declare const isEvmTokenInterfaceImplemented: (x?: unknown | null) => x is _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & {
|
|
22
|
-
address: string;
|
|
23
|
-
chainId: number;
|
|
24
|
-
implemented: boolean;
|
|
25
|
-
tokenInterface: TokenInterface;
|
|
26
|
-
} & {
|
|
27
|
-
schema: "network.xyo.evm.token.interface.implemented";
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
declare const EvmTokenInterfaceImplementedDivinerConfigSchema = "network.xyo.evm.token.interface.implemented.diviner.config";
|
|
31
|
-
type EvmTokenInterfaceImplementedDivinerConfigSchema = typeof EvmTokenInterfaceImplementedDivinerConfigSchema;
|
|
32
|
-
type EvmTokenInterfaceImplementedDivinerConfig = DivinerConfig<{
|
|
33
|
-
schema: EvmTokenInterfaceImplementedDivinerConfigSchema;
|
|
34
|
-
tokenInterfaces?: TokenInterface[];
|
|
35
|
-
}>;
|
|
36
|
-
type EvmTokenInterfaceImplementedDivinerParams = DivinerParams<AnyConfigSchema<EvmTokenInterfaceImplementedDivinerConfig>>;
|
|
37
|
-
type DistributiveMappedType<T> = T extends string ? {
|
|
38
|
-
[K in T]: readonly JsonFragment[];
|
|
39
|
-
} : never;
|
|
40
|
-
type TokenInterfaceDictionary = DistributiveMappedType<TokenInterface>;
|
|
41
|
-
declare class EvmTokenInterfaceImplementedDiviner<TParams extends EvmTokenInterfaceImplementedDivinerParams = EvmTokenInterfaceImplementedDivinerParams> extends AbstractDiviner<TParams, EvmContract, EvmTokenInterfaceImplemented> {
|
|
42
|
-
static readonly SupportedTokenInterfaces: Readonly<Record<TokenInterface, readonly JsonFragment[]>>;
|
|
43
|
-
static readonly configSchemas: Schema[];
|
|
44
|
-
static readonly defaultConfigSchema: Schema;
|
|
45
|
-
private _tokenInterfaces?;
|
|
46
|
-
get tokenInterfaces(): TokenInterfaceDictionary;
|
|
47
|
-
protected divineHandler(inPayloads?: EvmContract[]): Promise<EvmTokenInterfaceImplemented[]>;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { type ERC1155TokenInterfaces, type ERC20TokenInterfaces, type ERC721TokenInterfaces, type EvmTokenInterfaceImplemented, EvmTokenInterfaceImplementedDiviner, type EvmTokenInterfaceImplementedDivinerConfig, EvmTokenInterfaceImplementedDivinerConfigSchema, type EvmTokenInterfaceImplementedDivinerParams, EvmTokenInterfaceImplementedSchema, type TokenInterface, isEvmTokenInterfaceImplemented };
|
|
1
|
+
export * from './Diviner.ts';
|
|
2
|
+
export * from './Payload.ts';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -56,7 +56,11 @@ var EvmTokenInterfaceImplementedDiviner = class _EvmTokenInterfaceImplementedDiv
|
|
|
56
56
|
try {
|
|
57
57
|
const allResults = await Promise.all(
|
|
58
58
|
// Iterate over each contract passed in
|
|
59
|
-
inPayloads.filter(isEvmContract).map(({
|
|
59
|
+
inPayloads.filter(isEvmContract).map(({
|
|
60
|
+
address,
|
|
61
|
+
code,
|
|
62
|
+
chainId
|
|
63
|
+
}) => {
|
|
60
64
|
const byteCode = assertEx(code, () => "Missing code");
|
|
61
65
|
const results = [];
|
|
62
66
|
for (const [tokenInterface, abi] of Object.entries(this.tokenInterfaces)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { EvmContract
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/Payload.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport type { EvmContract } from '@xyo-network/evm-contract-witness'\nimport { isEvmContract } from '@xyo-network/evm-contract-witness'\nimport type { AnyConfigSchema } from '@xyo-network/module-model'\nimport {\n ERC20__factory,\n ERC721__factory,\n ERC1155__factory,\n IERC721Enumerable__factory,\n IERC721Metadata__factory,\n IERC721Receiver__factory,\n IERC1155MetadataURI__factory,\n IERC1155Receiver__factory,\n} from '@xyo-network/open-zeppelin-typechain'\nimport type { Schema } from '@xyo-network/payload-model'\nimport type { JsonFragment } from 'ethers'\nimport { Interface } from 'ethers'\n\nimport type { EvmTokenInterfaceImplemented, TokenInterface } from './Payload.ts'\nimport { EvmTokenInterfaceImplementedSchema } from './Payload.ts'\n\nexport const EvmTokenInterfaceImplementedDivinerConfigSchema = `${EvmTokenInterfaceImplementedSchema}.diviner.config`\nexport type EvmTokenInterfaceImplementedDivinerConfigSchema = typeof EvmTokenInterfaceImplementedDivinerConfigSchema\n\nexport type EvmTokenInterfaceImplementedDivinerConfig = DivinerConfig<{\n schema: EvmTokenInterfaceImplementedDivinerConfigSchema\n tokenInterfaces?: TokenInterface[]\n}>\n\nexport type EvmTokenInterfaceImplementedDivinerParams = DivinerParams<AnyConfigSchema<EvmTokenInterfaceImplementedDivinerConfig>>\n\ntype DistributiveMappedType<T> = T extends string ? { [K in T]: readonly JsonFragment[] } : never\ntype TokenInterfaceDictionary = DistributiveMappedType<TokenInterface>\n\n/**\n * A diviner that checks if a contract implements a token interface\n */\nexport class EvmTokenInterfaceImplementedDiviner<\n TParams extends EvmTokenInterfaceImplementedDivinerParams = EvmTokenInterfaceImplementedDivinerParams,\n> extends AbstractDiviner<TParams, EvmContract, EvmTokenInterfaceImplemented> {\n /**\n * The list of supported token interfaces\n */\n static readonly SupportedTokenInterfaces: Readonly<Record<TokenInterface, readonly JsonFragment[]>> = {\n ERC1155: ERC1155__factory.abi,\n ERC1155Metadata_URI: IERC1155MetadataURI__factory.abi,\n ERC1155TokenReceiver: IERC1155Receiver__factory.abi,\n ERC20: ERC20__factory.abi,\n ERC721: ERC721__factory.abi,\n ERC721Enumerable: IERC721Enumerable__factory.abi,\n ERC721Metadata: IERC721Metadata__factory.abi,\n ERC721TokenReceiver: IERC721Receiver__factory.abi,\n }\n\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmTokenInterfaceImplementedDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmTokenInterfaceImplementedDivinerConfigSchema\n\n private _tokenInterfaces?: TokenInterfaceDictionary\n\n /**\n * The list of token interfaces to check against the contract\n */\n get tokenInterfaces() {\n if (!this._tokenInterfaces) {\n this._tokenInterfaces\n = this.config?.tokenInterfaces\n ? ((Object.fromEntries(\n this.config?.tokenInterfaces.map((tokenInterface) => {\n return [tokenInterface, EvmTokenInterfaceImplementedDiviner.SupportedTokenInterfaces[tokenInterface]] as const\n }),\n ) as TokenInterfaceDictionary) ?? {})\n : EvmTokenInterfaceImplementedDiviner.SupportedTokenInterfaces\n }\n return this._tokenInterfaces\n }\n\n protected override async divineHandler(inPayloads: EvmContract[] = []): Promise<EvmTokenInterfaceImplemented[]> {\n await this.started('throw')\n try {\n const allResults = await Promise.all(\n // Iterate over each contract passed in\n inPayloads.filter(isEvmContract).map(({\n address, code, chainId,\n }) => {\n // Ensure we have the contract code\n const byteCode = assertEx(code, () => 'Missing code')\n const results: EvmTokenInterfaceImplemented[] = []\n // Iterate over each token interface\n for (const [tokenInterface, abi] of Object.entries(this.tokenInterfaces)) {\n // Check if the contract implements the interface abi\n const contractInterface = new Interface(abi)\n const implementations: boolean[] = []\n contractInterface.forEachFunction(({ selector }) => {\n implementations.push(byteCode.includes(BigInt(selector).toString(16)))\n })\n const implemented = implementations.every(Boolean)\n const result: EvmTokenInterfaceImplemented = {\n address,\n chainId,\n implemented,\n schema: EvmTokenInterfaceImplementedSchema,\n tokenInterface: tokenInterface as TokenInterface,\n }\n results.push(result)\n }\n\n return results\n }),\n )\n return allResults.flat()\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","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\n/**\n * ERC20 Token Interfaces\n */\nexport type ERC20TokenInterfaces = 'ERC20'\n\n/**\n * ERC721 Token Interfaces\n */\nexport type ERC721TokenInterfaces = 'ERC721' | 'ERC721TokenReceiver' | 'ERC721Metadata' | 'ERC721Enumerable'\n\n/**\n * ERC1155 Token Interfaces\n */\nexport type ERC1155TokenInterfaces = 'ERC1155' | 'ERC1155TokenReceiver' | 'ERC1155Metadata_URI'\n\n/**\n * All Token Interfaces\n */\nexport type TokenInterface = ERC20TokenInterfaces | ERC721TokenInterfaces | ERC1155TokenInterfaces\n\n/**\n * The schema for the EVM Token Interface Implemented payload\n */\nexport const EvmTokenInterfaceImplementedSchema = 'network.xyo.evm.token.interface.implemented'\n/**\n * The schema for the EVM Token Interface Implemented payload\n */\nexport type EvmTokenInterfaceImplementedSchema = typeof EvmTokenInterfaceImplementedSchema\n\n/**\n * The EVM Token Interface Implemented payload\n */\nexport type EvmTokenInterfaceImplemented = Payload<\n {\n /**\n * The contract address\n */\n address: string\n /**\n * The chain id\n */\n chainId: number\n /**\n * True if the contract implements the interface\n */\n implemented: boolean\n /**\n * The specific token interface\n */\n tokenInterface: TokenInterface\n },\n EvmTokenInterfaceImplementedSchema\n>\n\n/**\n * Identity function for EvmTokenInterfaceImplemented payload\n */\nexport const isEvmTokenInterfaceImplemented = isPayloadOfSchemaType<EvmTokenInterfaceImplemented>(EvmTokenInterfaceImplementedSchema)\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAGhC,SAAS,qBAAqB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB;;;ACjB1B,SAAS,6BAA6B;AAyB/B,IAAM,qCAAqC;AAkC3C,IAAM,iCAAiC,sBAAoD,kCAAkC;;;ADrC7H,IAAM,kDAAkD,GAAG,kCAAkC;AAgB7F,IAAM,sCAAN,MAAM,6CAEH,gBAAoE;AAAA;AAAA;AAAA;AAAA,EAI5E,OAAgB,2BAAsF;AAAA,IACpG,SAAS,iBAAiB;AAAA,IAC1B,qBAAqB,6BAA6B;AAAA,IAClD,sBAAsB,0BAA0B;AAAA,IAChD,OAAO,eAAe;AAAA,IACtB,QAAQ,gBAAgB;AAAA,IACxB,kBAAkB,2BAA2B;AAAA,IAC7C,gBAAgB,yBAAyB;AAAA,IACzC,qBAAqB,yBAAyB;AAAA,EAChD;AAAA,EAEA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,+CAA+C;AAAA,EAC3H,OAAyB,sBAA8B;AAAA,EAE/C;AAAA;AAAA;AAAA;AAAA,EAKR,IAAI,kBAAkB;AACpB,QAAI,CAAC,KAAK,kBAAkB;AAC1B,WAAK,mBACD,KAAK,QAAQ,kBACT,OAAO;AAAA,QACP,KAAK,QAAQ,gBAAgB,IAAI,CAAC,mBAAmB;AACnD,iBAAO,CAAC,gBAAgB,qCAAoC,yBAAyB,cAAc,CAAC;AAAA,QACtG,CAAC;AAAA,MACH,KAAkC,CAAC,IACnC,qCAAoC;AAAA,IAC5C;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAyB,cAAc,aAA4B,CAAC,GAA4C;AAC9G,UAAM,KAAK,QAAQ,OAAO;AAC1B,QAAI;AACF,YAAM,aAAa,MAAM,QAAQ;AAAA;AAAA,QAE/B,WAAW,OAAO,aAAa,EAAE,IAAI,CAAC;AAAA,UACpC;AAAA,UAAS;AAAA,UAAM;AAAA,QACjB,MAAM;AAEJ,gBAAM,WAAW,SAAS,MAAM,MAAM,cAAc;AACpD,gBAAM,UAA0C,CAAC;AAEjD,qBAAW,CAAC,gBAAgB,GAAG,KAAK,OAAO,QAAQ,KAAK,eAAe,GAAG;AAExE,kBAAM,oBAAoB,IAAI,UAAU,GAAG;AAC3C,kBAAM,kBAA6B,CAAC;AACpC,8BAAkB,gBAAgB,CAAC,EAAE,SAAS,MAAM;AAClD,8BAAgB,KAAK,SAAS,SAAS,OAAO,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAAA,YACvE,CAAC;AACD,kBAAM,cAAc,gBAAgB,MAAM,OAAO;AACjD,kBAAM,SAAuC;AAAA,cAC3C;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,YACF;AACA,oBAAQ,KAAK,MAAM;AAAA,UACrB;AAEA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,aAAO,WAAW,KAAK;AAAA,IACzB,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/evm-token-interface-diviner",
|
|
3
|
+
"version": "3.0.4",
|
|
4
|
+
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
5
|
+
"homepage": "https://xyo.network",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "git+https://github.com/XYOracleNetwork/plugins/issues",
|
|
8
|
+
"email": "support@xyo.network"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/XYOracleNetwork/plugins.git"
|
|
13
|
+
},
|
|
14
|
+
"license": "LGPL-3.0-only",
|
|
3
15
|
"author": {
|
|
4
|
-
"email": "support@xyo.network",
|
|
5
16
|
"name": "XYO Development Team",
|
|
17
|
+
"email": "support@xyo.network",
|
|
6
18
|
"url": "https://xyo.network"
|
|
7
19
|
},
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"type": "module",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/neutral/index.d.ts",
|
|
25
|
+
"default": "./dist/neutral/index.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
11
28
|
},
|
|
29
|
+
"module": "dist/neutral/index.mjs",
|
|
30
|
+
"types": "dist/neutral/index.d.ts",
|
|
12
31
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^4.0.
|
|
14
|
-
"@xyo-network/diviner-abstract": "^3.0.
|
|
15
|
-
"@xyo-network/diviner-model": "^3.0.
|
|
16
|
-
"@xyo-network/evm-contract-witness": "^3.0.
|
|
17
|
-
"@xyo-network/module-model": "^3.0.
|
|
32
|
+
"@xylabs/assert": "^4.0.4",
|
|
33
|
+
"@xyo-network/diviner-abstract": "^3.0.10",
|
|
34
|
+
"@xyo-network/diviner-model": "^3.0.10",
|
|
35
|
+
"@xyo-network/evm-contract-witness": "^3.0.4",
|
|
36
|
+
"@xyo-network/module-model": "^3.0.10",
|
|
18
37
|
"@xyo-network/open-zeppelin-typechain": "^3.1.0",
|
|
19
|
-
"@xyo-network/payload-model": "^3.0.
|
|
38
|
+
"@xyo-network/payload-model": "^3.0.10",
|
|
20
39
|
"ethers": "^6.13.2"
|
|
21
40
|
},
|
|
22
41
|
"devDependencies": {
|
|
23
|
-
"@xylabs/delay": "^4.0.
|
|
24
|
-
"@xylabs/jest-helpers": "^4.0.
|
|
25
|
-
"@xylabs/ts-scripts-yarn3": "^4.0.
|
|
26
|
-
"@xylabs/tsconfig": "^4.0.
|
|
27
|
-
"@xyo-network/account": "^3.0.
|
|
28
|
-
"@xyo-network/archivist-memory": "^3.0.
|
|
29
|
-
"@xyo-network/boundwitness-model": "^3.0.
|
|
30
|
-
"@xyo-network/diviner-boundwitness-memory": "^3.0.
|
|
31
|
-
"@xyo-network/diviner-jsonpatch": "^3.0.
|
|
32
|
-
"@xyo-network/diviner-payload-memory": "^3.0.
|
|
33
|
-
"@xyo-network/diviner-payload-model": "^3.0.
|
|
34
|
-
"@xyo-network/diviner-stateful": "^3.0.
|
|
35
|
-
"@xyo-network/diviner-temporal-indexing": "^3.0.
|
|
36
|
-
"@xyo-network/manifest": "^3.0.
|
|
37
|
-
"@xyo-network/module-factory-locator": "^3.0.
|
|
38
|
-
"@xyo-network/node-memory": "^3.0.
|
|
42
|
+
"@xylabs/delay": "^4.0.4",
|
|
43
|
+
"@xylabs/jest-helpers": "^4.0.4",
|
|
44
|
+
"@xylabs/ts-scripts-yarn3": "^4.0.7",
|
|
45
|
+
"@xylabs/tsconfig": "^4.0.7",
|
|
46
|
+
"@xyo-network/account": "^3.0.10",
|
|
47
|
+
"@xyo-network/archivist-memory": "^3.0.10",
|
|
48
|
+
"@xyo-network/boundwitness-model": "^3.0.10",
|
|
49
|
+
"@xyo-network/diviner-boundwitness-memory": "^3.0.10",
|
|
50
|
+
"@xyo-network/diviner-jsonpatch": "^3.0.10",
|
|
51
|
+
"@xyo-network/diviner-payload-memory": "^3.0.10",
|
|
52
|
+
"@xyo-network/diviner-payload-model": "^3.0.10",
|
|
53
|
+
"@xyo-network/diviner-stateful": "^3.0.10",
|
|
54
|
+
"@xyo-network/diviner-temporal-indexing": "^3.0.10",
|
|
55
|
+
"@xyo-network/manifest": "^3.0.10",
|
|
56
|
+
"@xyo-network/module-factory-locator": "^3.0.10",
|
|
57
|
+
"@xyo-network/node-memory": "^3.0.10",
|
|
39
58
|
"@xyo-network/open-zeppelin-typechain": "^3.1.0",
|
|
40
|
-
"@xyo-network/sentinel-model": "^3.0.
|
|
41
|
-
"@xyo-network/witness-evm-abstract": "^3.0.
|
|
42
|
-
"@xyo-network/witness-timestamp": "^3.0.
|
|
59
|
+
"@xyo-network/sentinel-model": "^3.0.10",
|
|
60
|
+
"@xyo-network/witness-evm-abstract": "^3.0.10",
|
|
61
|
+
"@xyo-network/witness-timestamp": "^3.0.10",
|
|
43
62
|
"jest": "^29.7.0",
|
|
44
63
|
"typescript": "^5.5.4"
|
|
45
64
|
},
|
|
46
|
-
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
47
|
-
"types": "dist/neutral/index.d.ts",
|
|
48
|
-
"exports": {
|
|
49
|
-
".": {
|
|
50
|
-
"types": "./dist/neutral/index.d.ts",
|
|
51
|
-
"default": "./dist/neutral/index.mjs"
|
|
52
|
-
},
|
|
53
|
-
"./package.json": "./package.json"
|
|
54
|
-
},
|
|
55
|
-
"module": "dist/neutral/index.mjs",
|
|
56
|
-
"homepage": "https://xyo.network",
|
|
57
|
-
"license": "LGPL-3.0-only",
|
|
58
65
|
"publishConfig": {
|
|
59
66
|
"access": "public"
|
|
60
|
-
}
|
|
61
|
-
"repository": {
|
|
62
|
-
"type": "git",
|
|
63
|
-
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
64
|
-
},
|
|
65
|
-
"sideEffects": false,
|
|
66
|
-
"version": "3.0.2",
|
|
67
|
-
"type": "module"
|
|
67
|
+
}
|
|
68
68
|
}
|
package/src/Diviner.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { AbstractDiviner } from '@xyo-network/diviner-abstract'
|
|
3
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'
|
|
4
|
-
import { EvmContract
|
|
5
|
-
import {
|
|
3
|
+
import type { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'
|
|
4
|
+
import type { EvmContract } from '@xyo-network/evm-contract-witness'
|
|
5
|
+
import { isEvmContract } from '@xyo-network/evm-contract-witness'
|
|
6
|
+
import type { AnyConfigSchema } from '@xyo-network/module-model'
|
|
6
7
|
import {
|
|
7
8
|
ERC20__factory,
|
|
8
9
|
ERC721__factory,
|
|
@@ -13,10 +14,12 @@ import {
|
|
|
13
14
|
IERC1155MetadataURI__factory,
|
|
14
15
|
IERC1155Receiver__factory,
|
|
15
16
|
} from '@xyo-network/open-zeppelin-typechain'
|
|
16
|
-
import { Schema } from '@xyo-network/payload-model'
|
|
17
|
-
import {
|
|
17
|
+
import type { Schema } from '@xyo-network/payload-model'
|
|
18
|
+
import type { JsonFragment } from 'ethers'
|
|
19
|
+
import { Interface } from 'ethers'
|
|
18
20
|
|
|
19
|
-
import { EvmTokenInterfaceImplemented,
|
|
21
|
+
import type { EvmTokenInterfaceImplemented, TokenInterface } from './Payload.ts'
|
|
22
|
+
import { EvmTokenInterfaceImplementedSchema } from './Payload.ts'
|
|
20
23
|
|
|
21
24
|
export const EvmTokenInterfaceImplementedDivinerConfigSchema = `${EvmTokenInterfaceImplementedSchema}.diviner.config`
|
|
22
25
|
export type EvmTokenInterfaceImplementedDivinerConfigSchema = typeof EvmTokenInterfaceImplementedDivinerConfigSchema
|
|
@@ -78,7 +81,9 @@ export class EvmTokenInterfaceImplementedDiviner<
|
|
|
78
81
|
try {
|
|
79
82
|
const allResults = await Promise.all(
|
|
80
83
|
// Iterate over each contract passed in
|
|
81
|
-
inPayloads.filter(isEvmContract).map(({
|
|
84
|
+
inPayloads.filter(isEvmContract).map(({
|
|
85
|
+
address, code, chainId,
|
|
86
|
+
}) => {
|
|
82
87
|
// Ensure we have the contract code
|
|
83
88
|
const byteCode = assertEx(code, () => 'Missing code')
|
|
84
89
|
const results: EvmTokenInterfaceImplemented[] = []
|
package/src/Payload.ts
CHANGED
package/xy.config.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
|
|
1
|
+
import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
|
|
2
2
|
const config: XyTsupConfig = {
|
|
3
3
|
compile: {
|
|
4
4
|
browser: {},
|
|
5
5
|
node: {},
|
|
6
|
-
neutral: {
|
|
7
|
-
src: true,
|
|
8
|
-
},
|
|
6
|
+
neutral: { src: true },
|
|
9
7
|
},
|
|
10
8
|
}
|
|
11
9
|
|