@hyperlane-xyz/sdk 1.4.2-beta69 → 1.4.2-beta70
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/app/HyperlaneApp.d.ts +14 -0
- package/dist/app/HyperlaneApp.d.ts.map +1 -0
- package/dist/app/HyperlaneApp.js +27 -0
- package/dist/app/HyperlaneApp.js.map +1 -0
- package/dist/app/MultiProtocolApp.d.ts +51 -0
- package/dist/app/MultiProtocolApp.d.ts.map +1 -0
- package/dist/app/MultiProtocolApp.js +80 -0
- package/dist/app/MultiProtocolApp.js.map +1 -0
- package/dist/app/MultiProtocolApp.test.d.ts +2 -0
- package/dist/app/MultiProtocolApp.test.d.ts.map +1 -0
- package/dist/app/MultiProtocolApp.test.js +19 -0
- package/dist/app/MultiProtocolApp.test.js.map +1 -0
- package/dist/consts/defaultMultisigIsm.d.ts +4 -0
- package/dist/consts/defaultMultisigIsm.d.ts.map +1 -0
- package/dist/consts/defaultMultisigIsm.js +194 -0
- package/dist/consts/defaultMultisigIsm.js.map +1 -0
- package/dist/consts/rcMultisigIsm.d.ts +4 -0
- package/dist/consts/rcMultisigIsm.d.ts.map +1 -0
- package/dist/consts/rcMultisigIsm.js +117 -0
- package/dist/consts/rcMultisigIsm.js.map +1 -0
- package/dist/contracts/contracts.d.ts +19 -0
- package/dist/contracts/contracts.d.ts.map +1 -0
- package/dist/contracts/contracts.js +80 -0
- package/dist/contracts/contracts.js.map +1 -0
- package/dist/contracts/types.d.ts +18 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +3 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/metadata/ChainMetadataManager.d.ts +130 -0
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -0
- package/dist/metadata/ChainMetadataManager.js +240 -0
- package/dist/metadata/ChainMetadataManager.js.map +1 -0
- package/dist/metadata/agentConfig.d.ts +3 -3
- package/dist/metadata/agentConfig.test.d.ts +2 -0
- package/dist/metadata/agentConfig.test.d.ts.map +1 -0
- package/dist/metadata/agentConfig.test.js +33 -0
- package/dist/metadata/agentConfig.test.js.map +1 -0
- package/dist/metadata/deploymentArtifacts.d.ts +4 -4
- package/dist/providers/MultiProtocolProvider.d.ts +39 -0
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -0
- package/dist/providers/MultiProtocolProvider.js +105 -0
- package/dist/providers/MultiProtocolProvider.js.map +1 -0
- package/dist/providers/MultiProtocolProvider.test.d.ts +2 -0
- package/dist/providers/MultiProtocolProvider.test.d.ts.map +1 -0
- package/dist/providers/MultiProtocolProvider.test.js +24 -0
- package/dist/providers/MultiProtocolProvider.test.js.map +1 -0
- package/dist/providers/ProviderType.d.ts +71 -0
- package/dist/providers/ProviderType.d.ts.map +1 -0
- package/dist/providers/ProviderType.js +11 -0
- package/dist/providers/ProviderType.js.map +1 -0
- package/dist/providers/providerBuilders.d.ts +17 -0
- package/dist/providers/providerBuilders.d.ts.map +1 -0
- package/dist/providers/providerBuilders.js +97 -0
- package/dist/providers/providerBuilders.js.map +1 -0
- package/dist/router/MultiProtocolRouterApps.d.ts +29 -0
- package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -0
- package/dist/router/MultiProtocolRouterApps.js +43 -0
- package/dist/router/MultiProtocolRouterApps.js.map +1 -0
- package/dist/router/MultiProtocolRouterApps.test.d.ts +2 -0
- package/dist/router/MultiProtocolRouterApps.test.d.ts.map +1 -0
- package/dist/router/MultiProtocolRouterApps.test.js +20 -0
- package/dist/router/MultiProtocolRouterApps.test.js.map +1 -0
- package/dist/router/adapters/EvmRouterAdapter.d.ts +25 -0
- package/dist/router/adapters/EvmRouterAdapter.d.ts.map +1 -0
- package/dist/router/adapters/EvmRouterAdapter.js +50 -0
- package/dist/router/adapters/EvmRouterAdapter.js.map +1 -0
- package/dist/router/adapters/SealevelRouterAdapter.d.ts +50 -0
- package/dist/router/adapters/SealevelRouterAdapter.d.ts.map +1 -0
- package/dist/router/adapters/SealevelRouterAdapter.js +132 -0
- package/dist/router/adapters/SealevelRouterAdapter.js.map +1 -0
- package/dist/router/adapters/SealevelRouterAdapter.test.d.ts +2 -0
- package/dist/router/adapters/SealevelRouterAdapter.test.d.ts.map +1 -0
- package/dist/router/adapters/SealevelRouterAdapter.test.js +21 -0
- package/dist/router/adapters/SealevelRouterAdapter.test.js.map +1 -0
- package/dist/router/adapters/types.d.ts +18 -0
- package/dist/router/adapters/types.d.ts.map +1 -0
- package/dist/router/adapters/types.js +3 -0
- package/dist/router/adapters/types.js.map +1 -0
- package/dist/utils/filter.d.ts +3 -0
- package/dist/utils/filter.d.ts.map +1 -0
- package/dist/utils/filter.js +13 -0
- package/dist/utils/filter.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appFromAddressesMapHelper = exports.filterOwnableContracts = exports.connectContractsMap = exports.connectContracts = exports.attachContractsMap = exports.attachContracts = exports.filterAddressesMap = exports.serializeContracts = exports.serializeContractsMap = void 0;
|
|
4
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
5
|
+
function serializeContractsMap(contractsMap) {
|
|
6
|
+
return (0, utils_1.objMap)(contractsMap, (_, contracts) => {
|
|
7
|
+
return serializeContracts(contracts);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
exports.serializeContractsMap = serializeContractsMap;
|
|
11
|
+
function serializeContracts(contracts) {
|
|
12
|
+
return (0, utils_1.objMap)(contracts, (_, contract) => contract.address);
|
|
13
|
+
}
|
|
14
|
+
exports.serializeContracts = serializeContracts;
|
|
15
|
+
function getFactory(key, factories) {
|
|
16
|
+
if (!(key in factories)) {
|
|
17
|
+
throw new Error(`Factories entry missing for ${key.toString()}`);
|
|
18
|
+
}
|
|
19
|
+
return factories[key];
|
|
20
|
+
}
|
|
21
|
+
function filterAddressesMap(addressesMap, factories) {
|
|
22
|
+
const factoryKeys = Object.keys(factories);
|
|
23
|
+
// Filter out addresses that we do not have factories for
|
|
24
|
+
const pickedAddressesMap = (0, utils_1.objMap)(addressesMap, (_, addresses) => (0, utils_1.pick)(addresses, factoryKeys));
|
|
25
|
+
// Filter out chains for which we do not have a complete set of addresses
|
|
26
|
+
return (0, utils_1.objFilter)(pickedAddressesMap, (_, addresses) => {
|
|
27
|
+
return Object.keys(addresses).every((a) => factoryKeys.includes(a));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
exports.filterAddressesMap = filterAddressesMap;
|
|
31
|
+
function attachContracts(addresses, factories) {
|
|
32
|
+
return (0, utils_1.objMap)(addresses, (key, address) => {
|
|
33
|
+
const factory = getFactory(key, factories);
|
|
34
|
+
return factory.attach(address);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.attachContracts = attachContracts;
|
|
38
|
+
function attachContractsMap(addressesMap, factories) {
|
|
39
|
+
const filteredAddressesMap = filterAddressesMap(addressesMap, factories);
|
|
40
|
+
return (0, utils_1.objMap)(filteredAddressesMap, (_, addresses) => attachContracts(addresses, factories));
|
|
41
|
+
}
|
|
42
|
+
exports.attachContractsMap = attachContractsMap;
|
|
43
|
+
function connectContracts(contracts, connection) {
|
|
44
|
+
return (0, utils_1.objMap)(contracts, (_, contract) => contract.connect(connection));
|
|
45
|
+
}
|
|
46
|
+
exports.connectContracts = connectContracts;
|
|
47
|
+
function connectContractsMap(contractsMap, multiProvider) {
|
|
48
|
+
return (0, utils_1.objMap)(contractsMap, (chain, contracts) => connectContracts(contracts, multiProvider.getSignerOrProvider(chain)));
|
|
49
|
+
}
|
|
50
|
+
exports.connectContractsMap = connectContractsMap;
|
|
51
|
+
async function filterOwnableContracts(contracts) {
|
|
52
|
+
const isOwnable = async (_, contract) => {
|
|
53
|
+
try {
|
|
54
|
+
await contract.owner();
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch (_) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const isOwnableContracts = await (0, utils_1.promiseObjAll)((0, utils_1.objMap)(contracts, isOwnable));
|
|
62
|
+
return (0, utils_1.objFilter)(contracts, (name, contract) => isOwnableContracts[name]);
|
|
63
|
+
}
|
|
64
|
+
exports.filterOwnableContracts = filterOwnableContracts;
|
|
65
|
+
function appFromAddressesMapHelper(addressesMap, factories, multiProvider) {
|
|
66
|
+
// Attaches contracts for each chain for which we have a complete set of
|
|
67
|
+
// addresses
|
|
68
|
+
const contractsMap = attachContractsMap(addressesMap, factories);
|
|
69
|
+
// Filters out providers for chains for which we don't have a complete set
|
|
70
|
+
// of addresses
|
|
71
|
+
const intersection = multiProvider.intersect(Object.keys(contractsMap));
|
|
72
|
+
// Filters out contracts for chains for which we don't have a provider
|
|
73
|
+
const filteredContractsMap = (0, utils_1.pick)(contractsMap, intersection.intersection);
|
|
74
|
+
return {
|
|
75
|
+
contractsMap: filteredContractsMap,
|
|
76
|
+
multiProvider: intersection.multiProvider,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.appFromAddressesMapHelper = appFromAddressesMapHelper;
|
|
80
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/contracts/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ethers } from 'ethers';
|
|
2
|
+
import type { Address } from '@hyperlane-xyz/utils';
|
|
3
|
+
import type { ChainMap } from '../types';
|
|
4
|
+
export type AddressesMap = {
|
|
5
|
+
[key: string]: Address;
|
|
6
|
+
};
|
|
7
|
+
export type HyperlaneFactories = {
|
|
8
|
+
[key: string]: ethers.ContractFactory;
|
|
9
|
+
};
|
|
10
|
+
export type HyperlaneContracts<F extends HyperlaneFactories> = {
|
|
11
|
+
[P in keyof F]: Awaited<ReturnType<F[P]['deploy']>>;
|
|
12
|
+
};
|
|
13
|
+
export type HyperlaneContractsMap<F extends HyperlaneFactories> = ChainMap<HyperlaneContracts<F>>;
|
|
14
|
+
export type HyperlaneAddresses<F extends HyperlaneFactories> = {
|
|
15
|
+
[P in keyof F]: Address;
|
|
16
|
+
};
|
|
17
|
+
export type HyperlaneAddressesMap<F extends HyperlaneFactories> = ChainMap<HyperlaneAddresses<F>>;
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,IAAI;KAC5D,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,IAAI,QAAQ,CACxE,kBAAkB,CAAC,CAAC,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,IAAI;KAC5D,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,IAAI,QAAQ,CACxE,kBAAkB,CAAC,CAAC,CAAC,CACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Debugger } from 'debug';
|
|
2
|
+
import { ChainMap, ChainName } from '../types';
|
|
3
|
+
import { ChainMetadata } from './chainMetadataTypes';
|
|
4
|
+
export interface ChainMetadataManagerOptions {
|
|
5
|
+
loggerName?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A set of utilities to manage chain metadata
|
|
9
|
+
* Validates metadata on construction and provides useful methods
|
|
10
|
+
* for interacting with the data
|
|
11
|
+
*/
|
|
12
|
+
export declare class ChainMetadataManager<MetaExt = {}> {
|
|
13
|
+
readonly metadata: ChainMap<ChainMetadata<MetaExt>>;
|
|
14
|
+
protected readonly logger: Debugger;
|
|
15
|
+
/**
|
|
16
|
+
* Create a new ChainMetadataManager with the given chainMetadata,
|
|
17
|
+
* or the SDK's default metadata if not provided
|
|
18
|
+
*/
|
|
19
|
+
constructor(chainMetadata?: ChainMap<ChainMetadata<MetaExt>>, options?: ChainMetadataManagerOptions);
|
|
20
|
+
/**
|
|
21
|
+
* Add a chain to the MultiProvider
|
|
22
|
+
* @throws if chain's name or domain/chain ID collide
|
|
23
|
+
*/
|
|
24
|
+
addChain(metadata: ChainMetadata<MetaExt>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Get the metadata for a given chain name, chain id, or domain id
|
|
27
|
+
* @throws if chain's metadata has not been set
|
|
28
|
+
*/
|
|
29
|
+
tryGetChainMetadata(chainNameOrId: ChainName | number): ChainMetadata<MetaExt> | null;
|
|
30
|
+
/**
|
|
31
|
+
* Get the metadata for a given chain name, chain id, or domain id
|
|
32
|
+
* @throws if chain's metadata has not been set
|
|
33
|
+
*/
|
|
34
|
+
getChainMetadata(chainNameOrId: ChainName | number): ChainMetadata<MetaExt>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the name for a given chain name, chain id, or domain id
|
|
37
|
+
*/
|
|
38
|
+
tryGetChainName(chainNameOrId: ChainName | number): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Get the name for a given chain name, chain id, or domain id
|
|
41
|
+
* @throws if chain's metadata has not been set
|
|
42
|
+
*/
|
|
43
|
+
getChainName(chainNameOrId: ChainName | number): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get the names for all chains known to this MultiProvider
|
|
46
|
+
*/
|
|
47
|
+
getKnownChainNames(): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Get the id for a given chain name, chain id, or domain id
|
|
50
|
+
*/
|
|
51
|
+
tryGetChainId(chainNameOrId: ChainName | number): number | null;
|
|
52
|
+
/**
|
|
53
|
+
* Get the id for a given chain name, chain id, or domain id
|
|
54
|
+
* @throws if chain's metadata has not been set
|
|
55
|
+
*/
|
|
56
|
+
getChainId(chainNameOrId: ChainName | number): number;
|
|
57
|
+
/**
|
|
58
|
+
* Get the ids for all chains known to this MultiProvider
|
|
59
|
+
*/
|
|
60
|
+
getKnownChainIds(): number[];
|
|
61
|
+
/**
|
|
62
|
+
* Get the domain id for a given chain name, chain id, or domain id
|
|
63
|
+
*/
|
|
64
|
+
tryGetDomainId(chainNameOrId: ChainName | number): number | null;
|
|
65
|
+
/**
|
|
66
|
+
* Get the domain id for a given chain name, chain id, or domain id
|
|
67
|
+
* @throws if chain's metadata has not been set
|
|
68
|
+
*/
|
|
69
|
+
getDomainId(chainNameOrId: ChainName | number): number;
|
|
70
|
+
/**
|
|
71
|
+
* Get the domain ids for a list of chain names, chain ids, or domain ids
|
|
72
|
+
* @throws if any chain's metadata has not been set
|
|
73
|
+
*/
|
|
74
|
+
getDomainIds(chainNamesOrIds: Array<ChainName | number>): number[];
|
|
75
|
+
/**
|
|
76
|
+
* Get the ids for all chains known to this MultiProvider
|
|
77
|
+
*/
|
|
78
|
+
getKnownDomainIds(): number[];
|
|
79
|
+
/**
|
|
80
|
+
* Get chain names excluding given chain name
|
|
81
|
+
*/
|
|
82
|
+
getRemoteChains(name: ChainName): ChainName[];
|
|
83
|
+
/**
|
|
84
|
+
* Run given function on all known chains
|
|
85
|
+
*/
|
|
86
|
+
mapKnownChains<Output>(fn: (n: ChainName) => Output): ChainMap<Output>;
|
|
87
|
+
/**
|
|
88
|
+
* Get an RPC URL for a given chain name, chain id, or domain id
|
|
89
|
+
* @throws if chain's metadata has not been set
|
|
90
|
+
*/
|
|
91
|
+
getRpcUrl(chainNameOrId: ChainName | number): string;
|
|
92
|
+
/**
|
|
93
|
+
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
94
|
+
*/
|
|
95
|
+
tryGetExplorerUrl(chainNameOrId: ChainName | number): string | null;
|
|
96
|
+
/**
|
|
97
|
+
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
98
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
99
|
+
*/
|
|
100
|
+
getExplorerUrl(chainNameOrId: ChainName | number): string;
|
|
101
|
+
/**
|
|
102
|
+
* Get a block explorer's API URL for a given chain name, chain id, or domain id
|
|
103
|
+
*/
|
|
104
|
+
tryGetExplorerApiUrl(chainNameOrId: ChainName | number): string | null;
|
|
105
|
+
/**
|
|
106
|
+
* Get a block explorer API URL for a given chain name, chain id, or domain id
|
|
107
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
108
|
+
*/
|
|
109
|
+
getExplorerApiUrl(chainNameOrId: ChainName | number): string;
|
|
110
|
+
/**
|
|
111
|
+
* Get a block explorer URL for given chain's tx
|
|
112
|
+
*/
|
|
113
|
+
tryGetExplorerTxUrl(chainNameOrId: ChainName | number, response: {
|
|
114
|
+
hash: string;
|
|
115
|
+
}): string | null;
|
|
116
|
+
/**
|
|
117
|
+
* Get a block explorer URL for given chain's tx
|
|
118
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
119
|
+
*/
|
|
120
|
+
getExplorerTxUrl(chainNameOrId: ChainName | number, response: {
|
|
121
|
+
hash: string;
|
|
122
|
+
}): string;
|
|
123
|
+
/**
|
|
124
|
+
* Creates a new ChainMetadataManager with the extended metadata
|
|
125
|
+
* @param additionalMetadata extra fields to add to the metadata for each chain
|
|
126
|
+
* @returns a new ChainMetadataManager
|
|
127
|
+
*/
|
|
128
|
+
extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): ChainMetadataManager<MetaExt & NewExt>;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=ChainMetadataManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainMetadataManager.d.ts","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,OAAO,CAAC;AAKxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EACL,aAAa,EAGd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,oBAAoB,CAAC,OAAO,GAAG,EAAE;IAC5C,SAAgB,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAM;IAChE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAEpC;;;OAGG;gBAED,aAAa,GAAE,QAAQ,CACrB,aAAa,CAAC,OAAO,CAAC,CACoC,EAC5D,OAAO,GAAE,2BAAgC;IAY3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;IAsBhD;;;OAGG;IACH,mBAAmB,CACjB,aAAa,EAAE,SAAS,GAAG,MAAM,GAChC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;IAchC;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;IAO3E;;OAEG;IACH,eAAe,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAIjE;;;OAGG;IACH,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAIvD;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,aAAa,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAI/D;;;OAGG;IACH,UAAU,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAIrD;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;OAEG;IACH,cAAc,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAKhE;;;OAGG;IACH,WAAW,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAKtD;;;OAGG;IACH,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,EAAE;IAIlE;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE;IAI7C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAQtE;;;OAGG;IACH,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAOpD;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAMnE;;;OAGG;IACH,cAAc,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAMzD;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAUtE;;;OAGG;IACH,iBAAiB,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;IAM5D;;OAEG;IACH,mBAAmB,CACjB,aAAa,EAAE,SAAS,GAAG,MAAM,EACjC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACzB,MAAM,GAAG,IAAI;IAKhB;;;OAGG;IACH,gBAAgB,CACd,aAAa,EAAE,SAAS,GAAG,MAAM,EACjC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACzB,MAAM;IAIT;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,GAAG,EAAE,EAC7B,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACnC,oBAAoB,CAAC,OAAO,GAAG,MAAM,CAAC;CAS1C"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainMetadataManager = void 0;
|
|
4
|
+
const debug_1 = require("debug");
|
|
5
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
6
|
+
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
7
|
+
const chainMetadataTypes_1 = require("./chainMetadataTypes");
|
|
8
|
+
/**
|
|
9
|
+
* A set of utilities to manage chain metadata
|
|
10
|
+
* Validates metadata on construction and provides useful methods
|
|
11
|
+
* for interacting with the data
|
|
12
|
+
*/
|
|
13
|
+
class ChainMetadataManager {
|
|
14
|
+
/**
|
|
15
|
+
* Create a new ChainMetadataManager with the given chainMetadata,
|
|
16
|
+
* or the SDK's default metadata if not provided
|
|
17
|
+
*/
|
|
18
|
+
constructor(chainMetadata = chainMetadata_1.chainMetadata, options = {}) {
|
|
19
|
+
this.metadata = {};
|
|
20
|
+
Object.entries(chainMetadata).forEach(([key, cm]) => {
|
|
21
|
+
if (key !== cm.name)
|
|
22
|
+
throw new Error(`Chain name mismatch: Key was ${key}, but name is ${cm.name}`);
|
|
23
|
+
this.addChain(cm);
|
|
24
|
+
});
|
|
25
|
+
this.logger = (0, debug_1.debug)(options?.loggerName || 'hyperlane:MetadataManager');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add a chain to the MultiProvider
|
|
29
|
+
* @throws if chain's name or domain/chain ID collide
|
|
30
|
+
*/
|
|
31
|
+
addChain(metadata) {
|
|
32
|
+
if (!(0, chainMetadataTypes_1.isValidChainMetadata)(metadata))
|
|
33
|
+
throw new Error(`Invalid chain metadata for ${metadata.name}`);
|
|
34
|
+
// Ensure no two chains have overlapping names/domainIds/chainIds
|
|
35
|
+
for (const chainMetadata of Object.values(this.metadata)) {
|
|
36
|
+
const { name, chainId, domainId } = chainMetadata;
|
|
37
|
+
if (name == metadata.name)
|
|
38
|
+
throw new Error(`Duplicate chain name: ${name}`);
|
|
39
|
+
// Chain and Domain Ids should be globally unique
|
|
40
|
+
const idCollision = chainId == metadata.chainId ||
|
|
41
|
+
domainId == metadata.chainId ||
|
|
42
|
+
(metadata.domainId &&
|
|
43
|
+
(chainId == metadata.domainId || domainId === metadata.domainId));
|
|
44
|
+
if (idCollision)
|
|
45
|
+
throw new Error(`Chain/Domain id collision: ${name} and ${metadata.name}`);
|
|
46
|
+
}
|
|
47
|
+
this.metadata[metadata.name] = metadata;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the metadata for a given chain name, chain id, or domain id
|
|
51
|
+
* @throws if chain's metadata has not been set
|
|
52
|
+
*/
|
|
53
|
+
tryGetChainMetadata(chainNameOrId) {
|
|
54
|
+
let chainMetadata;
|
|
55
|
+
if ((0, utils_1.isNumeric)(chainNameOrId)) {
|
|
56
|
+
// Should be chain id or domain id
|
|
57
|
+
chainMetadata = Object.values(this.metadata).find((m) => m.chainId == chainNameOrId || m.domainId == chainNameOrId);
|
|
58
|
+
}
|
|
59
|
+
else if (typeof chainNameOrId === 'string') {
|
|
60
|
+
// Should be chain name
|
|
61
|
+
chainMetadata = this.metadata[chainNameOrId];
|
|
62
|
+
}
|
|
63
|
+
return chainMetadata || null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the metadata for a given chain name, chain id, or domain id
|
|
67
|
+
* @throws if chain's metadata has not been set
|
|
68
|
+
*/
|
|
69
|
+
getChainMetadata(chainNameOrId) {
|
|
70
|
+
const chainMetadata = this.tryGetChainMetadata(chainNameOrId);
|
|
71
|
+
if (!chainMetadata)
|
|
72
|
+
throw new Error(`No chain metadata set for ${chainNameOrId}`);
|
|
73
|
+
return chainMetadata;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the name for a given chain name, chain id, or domain id
|
|
77
|
+
*/
|
|
78
|
+
tryGetChainName(chainNameOrId) {
|
|
79
|
+
return this.tryGetChainMetadata(chainNameOrId)?.name ?? null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the name for a given chain name, chain id, or domain id
|
|
83
|
+
* @throws if chain's metadata has not been set
|
|
84
|
+
*/
|
|
85
|
+
getChainName(chainNameOrId) {
|
|
86
|
+
return this.getChainMetadata(chainNameOrId).name;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the names for all chains known to this MultiProvider
|
|
90
|
+
*/
|
|
91
|
+
getKnownChainNames() {
|
|
92
|
+
return Object.keys(this.metadata);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the id for a given chain name, chain id, or domain id
|
|
96
|
+
*/
|
|
97
|
+
tryGetChainId(chainNameOrId) {
|
|
98
|
+
return this.tryGetChainMetadata(chainNameOrId)?.chainId ?? null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the id for a given chain name, chain id, or domain id
|
|
102
|
+
* @throws if chain's metadata has not been set
|
|
103
|
+
*/
|
|
104
|
+
getChainId(chainNameOrId) {
|
|
105
|
+
return this.getChainMetadata(chainNameOrId).chainId;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get the ids for all chains known to this MultiProvider
|
|
109
|
+
*/
|
|
110
|
+
getKnownChainIds() {
|
|
111
|
+
return Object.values(this.metadata).map((c) => c.chainId);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get the domain id for a given chain name, chain id, or domain id
|
|
115
|
+
*/
|
|
116
|
+
tryGetDomainId(chainNameOrId) {
|
|
117
|
+
const metadata = this.tryGetChainMetadata(chainNameOrId);
|
|
118
|
+
return metadata?.domainId ?? metadata?.chainId ?? null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get the domain id for a given chain name, chain id, or domain id
|
|
122
|
+
* @throws if chain's metadata has not been set
|
|
123
|
+
*/
|
|
124
|
+
getDomainId(chainNameOrId) {
|
|
125
|
+
const metadata = this.getChainMetadata(chainNameOrId);
|
|
126
|
+
return (0, chainMetadataTypes_1.getDomainId)(metadata);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the domain ids for a list of chain names, chain ids, or domain ids
|
|
130
|
+
* @throws if any chain's metadata has not been set
|
|
131
|
+
*/
|
|
132
|
+
getDomainIds(chainNamesOrIds) {
|
|
133
|
+
return chainNamesOrIds.map((c) => this.getDomainId(c));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get the ids for all chains known to this MultiProvider
|
|
137
|
+
*/
|
|
138
|
+
getKnownDomainIds() {
|
|
139
|
+
return this.getKnownChainNames().map(this.getDomainId);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get chain names excluding given chain name
|
|
143
|
+
*/
|
|
144
|
+
getRemoteChains(name) {
|
|
145
|
+
return (0, utils_1.exclude)(name, this.getKnownChainNames());
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Run given function on all known chains
|
|
149
|
+
*/
|
|
150
|
+
mapKnownChains(fn) {
|
|
151
|
+
const result = {};
|
|
152
|
+
for (const chain of this.getKnownChainNames()) {
|
|
153
|
+
result[chain] = fn(chain);
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get an RPC URL for a given chain name, chain id, or domain id
|
|
159
|
+
* @throws if chain's metadata has not been set
|
|
160
|
+
*/
|
|
161
|
+
getRpcUrl(chainNameOrId) {
|
|
162
|
+
const { rpcUrls } = this.getChainMetadata(chainNameOrId);
|
|
163
|
+
if (!rpcUrls?.length || !rpcUrls[0].http)
|
|
164
|
+
throw new Error(`No RPC URl configured for ${chainNameOrId}`);
|
|
165
|
+
return rpcUrls[0].http;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
169
|
+
*/
|
|
170
|
+
tryGetExplorerUrl(chainNameOrId) {
|
|
171
|
+
const explorers = this.tryGetChainMetadata(chainNameOrId)?.blockExplorers;
|
|
172
|
+
if (!explorers?.length)
|
|
173
|
+
return null;
|
|
174
|
+
return explorers[0].url;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
178
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
179
|
+
*/
|
|
180
|
+
getExplorerUrl(chainNameOrId) {
|
|
181
|
+
const url = this.tryGetExplorerUrl(chainNameOrId);
|
|
182
|
+
if (!url)
|
|
183
|
+
throw new Error(`No explorer url set for ${chainNameOrId}`);
|
|
184
|
+
return url;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get a block explorer's API URL for a given chain name, chain id, or domain id
|
|
188
|
+
*/
|
|
189
|
+
tryGetExplorerApiUrl(chainNameOrId) {
|
|
190
|
+
const explorers = this.tryGetChainMetadata(chainNameOrId)?.blockExplorers;
|
|
191
|
+
if (!explorers?.length || !explorers[0].apiUrl)
|
|
192
|
+
return null;
|
|
193
|
+
const { apiUrl, apiKey } = explorers[0];
|
|
194
|
+
if (!apiKey)
|
|
195
|
+
return apiUrl;
|
|
196
|
+
const url = new URL(apiUrl);
|
|
197
|
+
url.searchParams.set('apikey', apiKey);
|
|
198
|
+
return url.toString();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get a block explorer API URL for a given chain name, chain id, or domain id
|
|
202
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
203
|
+
*/
|
|
204
|
+
getExplorerApiUrl(chainNameOrId) {
|
|
205
|
+
const url = this.tryGetExplorerApiUrl(chainNameOrId);
|
|
206
|
+
if (!url)
|
|
207
|
+
throw new Error(`No explorer api url set for ${chainNameOrId}`);
|
|
208
|
+
return url;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get a block explorer URL for given chain's tx
|
|
212
|
+
*/
|
|
213
|
+
tryGetExplorerTxUrl(chainNameOrId, response) {
|
|
214
|
+
const baseUrl = this.tryGetExplorerUrl(chainNameOrId);
|
|
215
|
+
return baseUrl ? `${baseUrl}/tx/${response.hash}` : null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get a block explorer URL for given chain's tx
|
|
219
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
220
|
+
*/
|
|
221
|
+
getExplorerTxUrl(chainNameOrId, response) {
|
|
222
|
+
return `${this.getExplorerUrl(chainNameOrId)}/tx/${response.hash}`;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Creates a new ChainMetadataManager with the extended metadata
|
|
226
|
+
* @param additionalMetadata extra fields to add to the metadata for each chain
|
|
227
|
+
* @returns a new ChainMetadataManager
|
|
228
|
+
*/
|
|
229
|
+
extendChainMetadata(additionalMetadata) {
|
|
230
|
+
const newMetadata = {};
|
|
231
|
+
for (const [name, meta] of Object.entries(this.metadata)) {
|
|
232
|
+
if (!additionalMetadata[name])
|
|
233
|
+
throw new Error(`No additional data provided for chain ${name}`);
|
|
234
|
+
newMetadata[name] = { ...meta, ...additionalMetadata[name] };
|
|
235
|
+
}
|
|
236
|
+
return new ChainMetadataManager(newMetadata);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.ChainMetadataManager = ChainMetadataManager;
|
|
240
|
+
//# sourceMappingURL=ChainMetadataManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainMetadataManager.js","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,9 +45,9 @@ export declare const ChainMetadataForAgentSchema: z.ZodObject<{
|
|
|
45
45
|
name: z.ZodString;
|
|
46
46
|
chainId: z.ZodNumber;
|
|
47
47
|
protocol: z.ZodNativeEnum<typeof ProtocolType>;
|
|
48
|
+
mailbox: z.ZodString;
|
|
48
49
|
interchainSecurityModule: z.ZodOptional<z.ZodString>;
|
|
49
50
|
interchainGasPaymaster: z.ZodString;
|
|
50
|
-
mailbox: z.ZodString;
|
|
51
51
|
domainId: z.ZodOptional<z.ZodNumber>;
|
|
52
52
|
displayName: z.ZodOptional<z.ZodString>;
|
|
53
53
|
displayNameShort: z.ZodOptional<z.ZodString>;
|
|
@@ -173,8 +173,8 @@ export declare const ChainMetadataForAgentSchema: z.ZodObject<{
|
|
|
173
173
|
name: string;
|
|
174
174
|
chainId: number;
|
|
175
175
|
protocol: ProtocolType;
|
|
176
|
-
interchainGasPaymaster: string;
|
|
177
176
|
mailbox: string;
|
|
177
|
+
interchainGasPaymaster: string;
|
|
178
178
|
rpcUrls: [{
|
|
179
179
|
http: string;
|
|
180
180
|
webSocket?: string | undefined;
|
|
@@ -237,8 +237,8 @@ export declare const ChainMetadataForAgentSchema: z.ZodObject<{
|
|
|
237
237
|
name: string;
|
|
238
238
|
chainId: number;
|
|
239
239
|
protocol: ProtocolType;
|
|
240
|
-
interchainGasPaymaster: string;
|
|
241
240
|
mailbox: string;
|
|
241
|
+
interchainGasPaymaster: string;
|
|
242
242
|
rpcUrls: [{
|
|
243
243
|
http: string;
|
|
244
244
|
webSocket?: string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentConfig.test.d.ts","sourceRoot":"","sources":["../../src/metadata/agentConfig.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const chains_1 = require("../consts/chains");
|
|
5
|
+
const MultiProvider_1 = require("../providers/MultiProvider");
|
|
6
|
+
const agentConfig_1 = require("./agentConfig");
|
|
7
|
+
describe('Agent config', () => {
|
|
8
|
+
const args = [
|
|
9
|
+
[chains_1.Chains.ethereum],
|
|
10
|
+
new MultiProvider_1.MultiProvider(),
|
|
11
|
+
{
|
|
12
|
+
ethereum: {
|
|
13
|
+
mailbox: '0xmailbox',
|
|
14
|
+
interchainGasPaymaster: '0xgas',
|
|
15
|
+
validatorAnnounce: '0xannounce',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{ ethereum: 0 },
|
|
19
|
+
];
|
|
20
|
+
it('Should generate a deprecated agent config', () => {
|
|
21
|
+
const result = (0, agentConfig_1.buildAgentConfigDeprecated)(...args);
|
|
22
|
+
(0, chai_1.expect)(Object.keys(result)).to.deep.equal(['chains']);
|
|
23
|
+
});
|
|
24
|
+
it('Should generate a new agent config', () => {
|
|
25
|
+
const result = (0, agentConfig_1.buildAgentConfigNew)(...args);
|
|
26
|
+
(0, chai_1.expect)(Object.keys(result)).to.deep.equal([chains_1.Chains.ethereum]);
|
|
27
|
+
});
|
|
28
|
+
it('Should generate a combined agent config', () => {
|
|
29
|
+
const result = (0, agentConfig_1.buildAgentConfig)(...args);
|
|
30
|
+
(0, chai_1.expect)(Object.keys(result)).to.deep.equal([chains_1.Chains.ethereum, 'chains']);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=agentConfig.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentConfig.test.js","sourceRoot":"","sources":["../../src/metadata/agentConfig.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,6CAA0C;AAC1C,8DAA2D;AAE3D,+CAIuB;AAEvB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAwC;QAChD,CAAC,eAAM,CAAC,QAAQ,CAAC;QACjB,IAAI,6BAAa,EAAE;QACnB;YACE,QAAQ,EAAE;gBACR,OAAO,EAAE,WAAW;gBACpB,sBAAsB,EAAE,OAAO;gBAC/B,iBAAiB,EAAE,YAAY;aAChC;SACF;QACD,EAAE,QAAQ,EAAE,CAAC,EAAE;KAChB,CAAC;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,wCAA0B,EAAC,GAAG,IAAI,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAA,iCAAmB,EAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,GAAG,IAAI,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -5,13 +5,13 @@ export declare const HyperlaneDeploymentArtifactsSchema: z.ZodObject<{
|
|
|
5
5
|
validatorAnnounce: z.ZodString;
|
|
6
6
|
interchainSecurityModule: z.ZodOptional<z.ZodString>;
|
|
7
7
|
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
interchainGasPaymaster: string;
|
|
9
8
|
mailbox: string;
|
|
9
|
+
interchainGasPaymaster: string;
|
|
10
10
|
validatorAnnounce: string;
|
|
11
11
|
interchainSecurityModule?: string | undefined;
|
|
12
12
|
}, {
|
|
13
|
-
interchainGasPaymaster: string;
|
|
14
13
|
mailbox: string;
|
|
14
|
+
interchainGasPaymaster: string;
|
|
15
15
|
validatorAnnounce: string;
|
|
16
16
|
interchainSecurityModule?: string | undefined;
|
|
17
17
|
}>;
|
|
@@ -132,8 +132,8 @@ export declare const ChainMetadataWithArtifactsSchema: z.ZodObject<{
|
|
|
132
132
|
name: string;
|
|
133
133
|
chainId: number;
|
|
134
134
|
protocol: import("./chainMetadataTypes").ProtocolType;
|
|
135
|
-
interchainGasPaymaster: string;
|
|
136
135
|
mailbox: string;
|
|
136
|
+
interchainGasPaymaster: string;
|
|
137
137
|
rpcUrls: [{
|
|
138
138
|
http: string;
|
|
139
139
|
webSocket?: string | undefined;
|
|
@@ -190,8 +190,8 @@ export declare const ChainMetadataWithArtifactsSchema: z.ZodObject<{
|
|
|
190
190
|
name: string;
|
|
191
191
|
chainId: number;
|
|
192
192
|
protocol: import("./chainMetadataTypes").ProtocolType;
|
|
193
|
-
interchainGasPaymaster: string;
|
|
194
193
|
mailbox: string;
|
|
194
|
+
interchainGasPaymaster: string;
|
|
195
195
|
rpcUrls: [{
|
|
196
196
|
http: string;
|
|
197
197
|
webSocket?: string | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Debugger } from 'debug';
|
|
2
|
+
import { ChainMetadataManager } from '../metadata/ChainMetadataManager';
|
|
3
|
+
import type { ChainMetadata } from '../metadata/chainMetadataTypes';
|
|
4
|
+
import type { ChainMap, ChainName } from '../types';
|
|
5
|
+
import type { MultiProvider } from './MultiProvider';
|
|
6
|
+
import { EthersV5Provider, ProviderMap, ProviderType, SolanaWeb3Provider, TypedProvider, ViemProvider } from './ProviderType';
|
|
7
|
+
import { ProviderBuilderMap } from './providerBuilders';
|
|
8
|
+
export interface MultiProtocolProviderOptions {
|
|
9
|
+
loggerName?: string;
|
|
10
|
+
providerBuilders?: Partial<ProviderBuilderMap>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A version of MultiProvider that can support different
|
|
14
|
+
* provider types across different protocol types.
|
|
15
|
+
*
|
|
16
|
+
* This uses a different interface for provider/signer related methods
|
|
17
|
+
* so it isn't strictly backwards compatible with MultiProvider.
|
|
18
|
+
*
|
|
19
|
+
* Unlike MultiProvider, this class does not support signer/signing methods (yet).
|
|
20
|
+
* @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses)
|
|
21
|
+
*/
|
|
22
|
+
export declare class MultiProtocolProvider<MetaExt = {}> extends ChainMetadataManager<MetaExt> {
|
|
23
|
+
protected readonly options: MultiProtocolProviderOptions;
|
|
24
|
+
protected readonly providers: ChainMap<ProviderMap<TypedProvider>>;
|
|
25
|
+
protected signers: ChainMap<ProviderMap<never>>;
|
|
26
|
+
protected readonly logger: Debugger;
|
|
27
|
+
protected readonly providerBuilders: Partial<ProviderBuilderMap>;
|
|
28
|
+
constructor(chainMetadata?: ChainMap<ChainMetadata<MetaExt>>, options?: MultiProtocolProviderOptions);
|
|
29
|
+
static fromMultiProvider<MetaExt = {}>(mp: MultiProvider<MetaExt>, options?: MultiProtocolProviderOptions): MultiProtocolProvider<MetaExt>;
|
|
30
|
+
extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): MultiProtocolProvider<MetaExt & NewExt>;
|
|
31
|
+
tryGetProvider(chainNameOrId: ChainName | number, type: ProviderType): TypedProvider | null;
|
|
32
|
+
getProvider(chainNameOrId: ChainName | number, type: ProviderType): TypedProvider;
|
|
33
|
+
getEthersV5Provider(chainNameOrId: ChainName | number): EthersV5Provider['provider'];
|
|
34
|
+
getViemProvider(chainNameOrId: ChainName | number): ViemProvider['provider'];
|
|
35
|
+
getSolanaWeb3Provider(chainNameOrId: ChainName | number): SolanaWeb3Provider['provider'];
|
|
36
|
+
setProvider(chainNameOrId: ChainName | number, provider: TypedProvider): TypedProvider;
|
|
37
|
+
setProviders(providers: ChainMap<TypedProvider>): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=MultiProtocolProvider.d.ts.map
|