@hyperlane-xyz/sdk 31.0.0 → 31.1.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/README.md +1 -1
- package/dist/app/MultiProtocolApp.d.ts +7 -7
- package/dist/app/MultiProtocolApp.d.ts.map +1 -1
- package/dist/app/MultiProtocolApp.js +2 -2
- package/dist/app/MultiProtocolApp.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts +4 -4
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/adapters/AleoCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/AleoCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/AleoCoreAdapter.js.map +1 -1
- package/dist/core/adapters/CosmNativeCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/CosmNativeCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmNativeCoreAdapter.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/CosmWasmIgpAdapter.d.ts +3 -3
- package/dist/core/adapters/CosmWasmIgpAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmWasmIgpAdapter.js.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/RadixCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/RadixCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/RadixCoreAdapter.js.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/core/adapters/StarknetCoreAdapter.d.ts +3 -3
- package/dist/core/adapters/StarknetCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/StarknetCoreAdapter.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +12 -4
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/fork/types.d.ts +64 -64
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts +7 -7
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -1
- package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -1
- package/dist/gas/utils.d.ts +2 -2
- package/dist/gas/utils.d.ts.map +1 -1
- package/dist/gas/utils.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ism/adapters/CosmWasmMultisigAdapter.d.ts +3 -3
- package/dist/ism/adapters/CosmWasmMultisigAdapter.d.ts.map +1 -1
- package/dist/ism/adapters/CosmWasmMultisigAdapter.js.map +1 -1
- package/dist/ism/adapters/SealevelMultisigAdapter.d.ts +3 -3
- package/dist/ism/adapters/SealevelMultisigAdapter.d.ts.map +1 -1
- package/dist/ism/adapters/SealevelMultisigAdapter.js.map +1 -1
- package/dist/metadata/ChainMetadataResolver.d.ts +13 -0
- package/dist/metadata/ChainMetadataResolver.d.ts.map +1 -0
- package/dist/metadata/ChainMetadataResolver.js +68 -0
- package/dist/metadata/ChainMetadataResolver.js.map +1 -0
- package/dist/metadata/ChainMetadataResolver.test.d.ts +2 -0
- package/dist/metadata/ChainMetadataResolver.test.d.ts.map +1 -0
- package/dist/metadata/ChainMetadataResolver.test.js +83 -0
- package/dist/metadata/ChainMetadataResolver.test.js.map +1 -0
- package/dist/providers/MinimalProviderRegistry.d.ts +41 -0
- package/dist/providers/MinimalProviderRegistry.d.ts.map +1 -0
- package/dist/providers/MinimalProviderRegistry.js +122 -0
- package/dist/providers/MinimalProviderRegistry.js.map +1 -0
- package/dist/providers/MultiProtocolProvider.d.ts +13 -55
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +34 -152
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.test.js +48 -0
- package/dist/providers/MultiProtocolProvider.test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +1 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +3 -1
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/MultiProvider.test.js +3 -3
- package/dist/providers/MultiProvider.test.js.map +1 -1
- package/dist/providers/MultiProviderAdapter.d.ts +31 -0
- package/dist/providers/MultiProviderAdapter.d.ts.map +1 -0
- package/dist/providers/MultiProviderAdapter.js +116 -0
- package/dist/providers/MultiProviderAdapter.js.map +1 -0
- package/dist/providers/ProviderType.d.ts +12 -7
- package/dist/providers/ProviderType.d.ts.map +1 -1
- package/dist/providers/ProviderType.js +1 -1
- package/dist/providers/ProviderType.js.map +1 -1
- package/dist/providers/builders/aleo.d.ts +4 -0
- package/dist/providers/builders/aleo.d.ts.map +1 -0
- package/dist/providers/builders/aleo.js +7 -0
- package/dist/providers/builders/aleo.js.map +1 -0
- package/dist/providers/builders/cosmos.d.ts +6 -0
- package/dist/providers/builders/cosmos.d.ts.map +1 -0
- package/dist/providers/builders/cosmos.js +27 -0
- package/dist/providers/builders/cosmos.js.map +1 -0
- package/dist/providers/builders/ethersV5.d.ts +8 -0
- package/dist/providers/builders/ethersV5.d.ts.map +1 -0
- package/dist/providers/builders/ethersV5.js +25 -0
- package/dist/providers/builders/ethersV5.js.map +1 -0
- package/dist/providers/builders/radix.d.ts +4 -0
- package/dist/providers/builders/radix.d.ts.map +1 -0
- package/dist/providers/builders/radix.js +14 -0
- package/dist/providers/builders/radix.js.map +1 -0
- package/dist/providers/builders/solana.d.ts +4 -0
- package/dist/providers/builders/solana.d.ts.map +1 -0
- package/dist/providers/builders/solana.js +11 -0
- package/dist/providers/builders/solana.js.map +1 -0
- package/dist/providers/builders/starknet.d.ts +4 -0
- package/dist/providers/builders/starknet.d.ts.map +1 -0
- package/dist/providers/builders/starknet.js +14 -0
- package/dist/providers/builders/starknet.js.map +1 -0
- package/dist/providers/builders/tron.d.ts +10 -0
- package/dist/providers/builders/tron.d.ts.map +1 -0
- package/dist/providers/builders/tron.js +19 -0
- package/dist/providers/builders/tron.js.map +1 -0
- package/dist/providers/builders/types.d.ts +6 -0
- package/dist/providers/builders/types.d.ts.map +1 -0
- package/dist/providers/builders/types.js +2 -0
- package/dist/providers/builders/types.js.map +1 -0
- package/dist/providers/builders/viem.d.ts +4 -0
- package/dist/providers/builders/viem.d.ts.map +1 -0
- package/dist/providers/builders/viem.js +24 -0
- package/dist/providers/builders/viem.js.map +1 -0
- package/dist/providers/builders/zksync.d.ts +7 -0
- package/dist/providers/builders/zksync.d.ts.map +1 -0
- package/dist/providers/builders/zksync.js +13 -0
- package/dist/providers/builders/zksync.js.map +1 -0
- package/dist/providers/defaultProviderBuilderMaps.d.ts +7 -0
- package/dist/providers/defaultProviderBuilderMaps.d.ts.map +1 -0
- package/dist/providers/defaultProviderBuilderMaps.js +36 -0
- package/dist/providers/defaultProviderBuilderMaps.js.map +1 -0
- package/dist/providers/providerBuilders.d.ts +11 -29
- package/dist/providers/providerBuilders.d.ts.map +1 -1
- package/dist/providers/providerBuilders.js +10 -153
- package/dist/providers/providerBuilders.js.map +1 -1
- package/dist/providers/rpcHealthTest.js +1 -1
- package/dist/providers/rpcHealthTest.js.map +1 -1
- package/dist/providers/runtime/evm.d.ts +3 -0
- package/dist/providers/runtime/evm.d.ts.map +1 -0
- package/dist/providers/runtime/evm.js +11 -0
- package/dist/providers/runtime/evm.js.map +1 -0
- package/dist/router/MultiProtocolRouterApps.test.js.map +1 -1
- package/dist/router/adapters/EvmRouterAdapter.d.ts +3 -3
- package/dist/router/adapters/EvmRouterAdapter.d.ts.map +1 -1
- package/dist/router/adapters/EvmRouterAdapter.js.map +1 -1
- package/dist/router/adapters/SealevelRouterAdapter.d.ts +3 -3
- package/dist/router/adapters/SealevelRouterAdapter.d.ts.map +1 -1
- package/dist/router/adapters/SealevelRouterAdapter.js.map +1 -1
- package/dist/signers/cosmos/cosmjs.d.ts +2 -2
- package/dist/signers/cosmos/cosmjs.d.ts.map +1 -1
- package/dist/signers/cosmos/cosmjs.js.map +1 -1
- package/dist/signers/evm/ethersv5.d.ts +2 -2
- package/dist/signers/evm/ethersv5.d.ts.map +1 -1
- package/dist/signers/evm/ethersv5.js +1 -1
- package/dist/signers/evm/ethersv5.js.map +1 -1
- package/dist/signers/radix/radix-toolkit.d.ts +3 -3
- package/dist/signers/radix/radix-toolkit.d.ts.map +1 -1
- package/dist/signers/radix/radix-toolkit.js +1 -1
- package/dist/signers/radix/radix-toolkit.js.map +1 -1
- package/dist/signers/signers.d.ts +2 -2
- package/dist/signers/signers.d.ts.map +1 -1
- package/dist/signers/signers.js.map +1 -1
- package/dist/signers/starknet/starknetjs.d.ts +2 -2
- package/dist/signers/starknet/starknetjs.d.ts.map +1 -1
- package/dist/signers/starknet/starknetjs.js.map +1 -1
- package/dist/signers/svm/solana-web3js.d.ts +2 -2
- package/dist/signers/svm/solana-web3js.d.ts.map +1 -1
- package/dist/signers/svm/solana-web3js.js.map +1 -1
- package/dist/token/IToken.d.ts +14 -151
- package/dist/token/IToken.d.ts.map +1 -1
- package/dist/token/IToken.js +1 -43
- package/dist/token/IToken.js.map +1 -1
- package/dist/token/ITokenMetadata.d.ts +152 -0
- package/dist/token/ITokenMetadata.d.ts.map +1 -0
- package/dist/token/ITokenMetadata.js +45 -0
- package/dist/token/ITokenMetadata.js.map +1 -0
- package/dist/token/Token.d.ts +15 -49
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +48 -312
- package/dist/token/Token.js.map +1 -1
- package/dist/token/Token.test.js +52 -10
- package/dist/token/Token.test.js.map +1 -1
- package/dist/token/TokenAmount.d.ts +6 -6
- package/dist/token/TokenAmount.d.ts.map +1 -1
- package/dist/token/TokenConnection.d.ts +7 -7
- package/dist/token/TokenConnection.d.ts.map +1 -1
- package/dist/token/TokenConnection.js +1 -1
- package/dist/token/TokenConnection.js.map +1 -1
- package/dist/token/TokenConnection.test.d.ts +2 -0
- package/dist/token/TokenConnection.test.d.ts.map +1 -0
- package/dist/token/TokenConnection.test.js +17 -0
- package/dist/token/TokenConnection.test.js.map +1 -0
- package/dist/token/TokenMetadata.d.ts +42 -0
- package/dist/token/TokenMetadata.d.ts.map +1 -0
- package/dist/token/TokenMetadata.js +119 -0
- package/dist/token/TokenMetadata.js.map +1 -0
- package/dist/token/adapters/AleoTokenAdapter.d.ts +7 -6
- package/dist/token/adapters/AleoTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/AleoTokenAdapter.js +1 -1
- package/dist/token/adapters/AleoTokenAdapter.js.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +11 -11
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/CosmosModuleTokenAdapter.d.ts +6 -6
- package/dist/token/adapters/CosmosModuleTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmosModuleTokenAdapter.js.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.d.ts +7 -7
- package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
- package/dist/token/adapters/EvmCrossCollateralAdapter.d.ts +3 -3
- package/dist/token/adapters/EvmCrossCollateralAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmCrossCollateralAdapter.js.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts +21 -21
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/M0PortalLiteTokenAdapter.d.ts +2 -2
- package/dist/token/adapters/M0PortalLiteTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/M0PortalLiteTokenAdapter.js.map +1 -1
- package/dist/token/adapters/M0PortalTokenAdapter.d.ts +2 -2
- package/dist/token/adapters/M0PortalTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/M0PortalTokenAdapter.js.map +1 -1
- package/dist/token/adapters/RadixTokenAdapter.d.ts +7 -6
- package/dist/token/adapters/RadixTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/RadixTokenAdapter.js.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.d.ts +7 -7
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
- package/dist/token/adapters/StarknetTokenAdapter.d.ts +10 -10
- package/dist/token/adapters/StarknetTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/StarknetTokenAdapter.js.map +1 -1
- package/dist/token/adapters/aleoHyp.d.ts +7 -0
- package/dist/token/adapters/aleoHyp.d.ts.map +1 -0
- package/dist/token/adapters/aleoHyp.js +26 -0
- package/dist/token/adapters/aleoHyp.js.map +1 -0
- package/dist/token/adapters/cosmosHyp.d.ts +7 -0
- package/dist/token/adapters/cosmosHyp.d.ts.map +1 -0
- package/dist/token/adapters/cosmosHyp.js +40 -0
- package/dist/token/adapters/cosmosHyp.js.map +1 -0
- package/dist/token/adapters/evmHyp.d.ts +7 -0
- package/dist/token/adapters/evmHyp.d.ts.map +1 -0
- package/dist/token/adapters/evmHyp.js +23 -0
- package/dist/token/adapters/evmHyp.js.map +1 -0
- package/dist/token/adapters/evmLikeHyp.d.ts +19 -0
- package/dist/token/adapters/evmLikeHyp.d.ts.map +1 -0
- package/dist/token/adapters/evmLikeHyp.js +61 -0
- package/dist/token/adapters/evmLikeHyp.js.map +1 -0
- package/dist/token/adapters/hypTokenAdapterUtils.d.ts +15 -0
- package/dist/token/adapters/hypTokenAdapterUtils.d.ts.map +1 -0
- package/dist/token/adapters/hypTokenAdapterUtils.js +9 -0
- package/dist/token/adapters/hypTokenAdapterUtils.js.map +1 -0
- package/dist/token/adapters/radixHyp.d.ts +7 -0
- package/dist/token/adapters/radixHyp.d.ts.map +1 -0
- package/dist/token/adapters/radixHyp.js +22 -0
- package/dist/token/adapters/radixHyp.js.map +1 -0
- package/dist/token/adapters/sealevelHyp.d.ts +7 -0
- package/dist/token/adapters/sealevelHyp.d.ts.map +1 -0
- package/dist/token/adapters/sealevelHyp.js +38 -0
- package/dist/token/adapters/sealevelHyp.js.map +1 -0
- package/dist/token/adapters/starknetHyp.d.ts +7 -0
- package/dist/token/adapters/starknetHyp.d.ts.map +1 -0
- package/dist/token/adapters/starknetHyp.js +35 -0
- package/dist/token/adapters/starknetHyp.js.map +1 -0
- package/dist/token/adapters/tronHyp.d.ts +7 -0
- package/dist/token/adapters/tronHyp.d.ts.map +1 -0
- package/dist/token/adapters/tronHyp.js +23 -0
- package/dist/token/adapters/tronHyp.js.map +1 -0
- package/dist/utils/cosmos.d.ts +3 -3
- package/dist/warp/WarpCore.d.ts +43 -43
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +63 -68
- package/dist/warp/WarpCore.js.map +1 -1
- package/dist/warp/read.d.ts +19 -0
- package/dist/warp/read.d.ts.map +1 -0
- package/dist/warp/read.js +34 -0
- package/dist/warp/read.js.map +1 -0
- package/dist/warp/read.test.d.ts +2 -0
- package/dist/warp/read.test.d.ts.map +1 -0
- package/dist/warp/read.test.js +56 -0
- package/dist/warp/read.test.js.map +1 -0
- package/dist/warp/types.d.ts +3 -3
- package/dist/zksync/ZKSyncDeployer.js +1 -1
- package/dist/zksync/ZKSyncDeployer.js.map +1 -1
- package/package.json +98 -11
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js';
|
|
4
|
+
import type { ChainMetadata } from '../metadata/chainMetadataTypes.js';
|
|
5
|
+
import type { ChainMap, ChainName, ChainNameOrId } from '../types.js';
|
|
6
|
+
import { AleoProvider, CosmJsNativeProvider, CosmJsProvider, CosmJsWasmProvider, EthersV5Provider, ProviderMap, ProviderType, RadixProvider, SolanaWeb3Provider, StarknetJsProvider, TronProvider, TypedProvider, ViemProvider } from './ProviderType.js';
|
|
7
|
+
import type { ProviderBuilderFn, ProviderBuilderMap } from './providerBuilders.js';
|
|
8
|
+
export interface MinimalProviderRegistryOptions {
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
providers?: ChainMap<ProviderMap<TypedProvider>>;
|
|
11
|
+
providerBuilders?: Partial<ProviderBuilderMap>;
|
|
12
|
+
}
|
|
13
|
+
export declare class MinimalProviderRegistry<MetaExt = {}> extends ChainMetadataManager<MetaExt> {
|
|
14
|
+
protected readonly options: MinimalProviderRegistryOptions;
|
|
15
|
+
protected readonly providers: ChainMap<ProviderMap<TypedProvider>>;
|
|
16
|
+
protected readonly providerBuilders: Partial<ProviderBuilderMap>;
|
|
17
|
+
readonly logger: Logger;
|
|
18
|
+
constructor(chainMetadata: ChainMap<ChainMetadata<MetaExt>>, options?: MinimalProviderRegistryOptions);
|
|
19
|
+
extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): MinimalProviderRegistry<MetaExt & NewExt>;
|
|
20
|
+
protected getProviderBuilder(_protocol: ProtocolType, type: ProviderType): ProviderBuilderFn<TypedProvider> | undefined;
|
|
21
|
+
tryGetProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider | null;
|
|
22
|
+
getProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider;
|
|
23
|
+
protected getSpecificProvider<T>(chainNameOrId: ChainNameOrId, type: ProviderType): T;
|
|
24
|
+
getEthersV5Provider(chainNameOrId: ChainNameOrId): EthersV5Provider['provider'];
|
|
25
|
+
getViemProvider(chainNameOrId: ChainNameOrId): ViemProvider['provider'];
|
|
26
|
+
getSolanaWeb3Provider(chainNameOrId: ChainNameOrId): SolanaWeb3Provider['provider'];
|
|
27
|
+
getCosmJsProvider(chainNameOrId: ChainNameOrId): CosmJsProvider['provider'];
|
|
28
|
+
getCosmJsWasmProvider(chainNameOrId: ChainNameOrId): CosmJsWasmProvider['provider'];
|
|
29
|
+
getCosmJsNativeProvider(chainNameOrId: ChainNameOrId): CosmJsNativeProvider['provider'];
|
|
30
|
+
getStarknetProvider(chainNameOrId: ChainNameOrId): StarknetJsProvider['provider'];
|
|
31
|
+
getRadixProvider(chainNameOrId: ChainNameOrId): RadixProvider['provider'];
|
|
32
|
+
getAleoProvider(chainNameOrId: ChainNameOrId): AleoProvider['provider'];
|
|
33
|
+
getTronProvider(chainNameOrId: ChainNameOrId): TronProvider['provider'];
|
|
34
|
+
setProvider(chainNameOrId: ChainNameOrId, provider: TypedProvider): TypedProvider;
|
|
35
|
+
setProviders(providers: ChainMap<TypedProvider>): void;
|
|
36
|
+
intersect(chains: ChainName[], throwIfNotSubset?: boolean): {
|
|
37
|
+
intersection: ChainName[];
|
|
38
|
+
result: MinimalProviderRegistry<MetaExt>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=MinimalProviderRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MinimalProviderRegistry.d.ts","sourceRoot":"","sources":["../../src/providers/MinimalProviderRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ProtocolType, pick, rootLogger } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js';
|
|
3
|
+
import { PROTOCOL_TO_DEFAULT_PROVIDER_TYPE, ProviderType, } from './ProviderType.js';
|
|
4
|
+
// Lightweight provider registry for metadata-backed reads. It owns typed
|
|
5
|
+
// provider instances/builders, but intentionally does not carry the legacy
|
|
6
|
+
// MultiProvider bridge behavior layered on top by derived classes.
|
|
7
|
+
export class MinimalProviderRegistry extends ChainMetadataManager {
|
|
8
|
+
options;
|
|
9
|
+
providers;
|
|
10
|
+
providerBuilders;
|
|
11
|
+
logger;
|
|
12
|
+
constructor(chainMetadata, options = {}) {
|
|
13
|
+
super(chainMetadata, options);
|
|
14
|
+
this.options = options;
|
|
15
|
+
const loggerModule = new.target?.name || 'MinimalProviderRegistry';
|
|
16
|
+
this.logger =
|
|
17
|
+
options.logger ||
|
|
18
|
+
rootLogger.child({
|
|
19
|
+
module: loggerModule,
|
|
20
|
+
});
|
|
21
|
+
this.providers = options.providers ?? {};
|
|
22
|
+
this.providerBuilders = options.providerBuilders ?? {};
|
|
23
|
+
}
|
|
24
|
+
extendChainMetadata(additionalMetadata) {
|
|
25
|
+
const newMetadata = super.extendChainMetadata(additionalMetadata).metadata;
|
|
26
|
+
return new MinimalProviderRegistry(newMetadata, {
|
|
27
|
+
...this.options,
|
|
28
|
+
providers: this.providers,
|
|
29
|
+
providerBuilders: this.providerBuilders,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
getProviderBuilder(_protocol, type) {
|
|
33
|
+
return this.providerBuilders[type];
|
|
34
|
+
}
|
|
35
|
+
tryGetProvider(chainNameOrId, type) {
|
|
36
|
+
const metadata = this.tryGetChainMetadata(chainNameOrId);
|
|
37
|
+
if (!metadata)
|
|
38
|
+
return null;
|
|
39
|
+
const { protocol, name, chainId, rpcUrls } = metadata;
|
|
40
|
+
if (protocol === ProtocolType.Unknown)
|
|
41
|
+
return null;
|
|
42
|
+
type = type || PROTOCOL_TO_DEFAULT_PROVIDER_TYPE[protocol];
|
|
43
|
+
if (!type)
|
|
44
|
+
return null;
|
|
45
|
+
if (this.providers[name]?.[type])
|
|
46
|
+
return this.providers[name][type];
|
|
47
|
+
const builder = this.getProviderBuilder(protocol, type);
|
|
48
|
+
if (!rpcUrls.length || !builder)
|
|
49
|
+
return null;
|
|
50
|
+
const provider = builder(rpcUrls, chainId);
|
|
51
|
+
this.providers[name] ||= {};
|
|
52
|
+
this.providers[name][type] = provider;
|
|
53
|
+
return provider;
|
|
54
|
+
}
|
|
55
|
+
getProvider(chainNameOrId, type) {
|
|
56
|
+
const provider = this.tryGetProvider(chainNameOrId, type);
|
|
57
|
+
if (!provider)
|
|
58
|
+
throw new Error(`No provider available for ${chainNameOrId}`);
|
|
59
|
+
return provider;
|
|
60
|
+
}
|
|
61
|
+
getSpecificProvider(chainNameOrId, type) {
|
|
62
|
+
const provider = this.getProvider(chainNameOrId, type);
|
|
63
|
+
if (provider.type !== type)
|
|
64
|
+
throw new Error(`Invalid provider type, expected ${type} but found ${provider.type}`);
|
|
65
|
+
// CAST: provider.type is checked against `type` immediately above, so the
|
|
66
|
+
// wrapped provider payload matches the requested generic T.
|
|
67
|
+
return provider.provider;
|
|
68
|
+
}
|
|
69
|
+
getEthersV5Provider(chainNameOrId) {
|
|
70
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.EthersV5);
|
|
71
|
+
}
|
|
72
|
+
getViemProvider(chainNameOrId) {
|
|
73
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.Viem);
|
|
74
|
+
}
|
|
75
|
+
getSolanaWeb3Provider(chainNameOrId) {
|
|
76
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.SolanaWeb3);
|
|
77
|
+
}
|
|
78
|
+
getCosmJsProvider(chainNameOrId) {
|
|
79
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJs);
|
|
80
|
+
}
|
|
81
|
+
getCosmJsWasmProvider(chainNameOrId) {
|
|
82
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJsWasm);
|
|
83
|
+
}
|
|
84
|
+
getCosmJsNativeProvider(chainNameOrId) {
|
|
85
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJsNative);
|
|
86
|
+
}
|
|
87
|
+
getStarknetProvider(chainNameOrId) {
|
|
88
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.Starknet);
|
|
89
|
+
}
|
|
90
|
+
getRadixProvider(chainNameOrId) {
|
|
91
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.Radix);
|
|
92
|
+
}
|
|
93
|
+
getAleoProvider(chainNameOrId) {
|
|
94
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.Aleo);
|
|
95
|
+
}
|
|
96
|
+
getTronProvider(chainNameOrId) {
|
|
97
|
+
return this.getSpecificProvider(chainNameOrId, ProviderType.Tron);
|
|
98
|
+
}
|
|
99
|
+
setProvider(chainNameOrId, provider) {
|
|
100
|
+
const chainName = this.getChainName(chainNameOrId);
|
|
101
|
+
this.providers[chainName] ||= {};
|
|
102
|
+
this.providers[chainName][provider.type] = provider;
|
|
103
|
+
return provider;
|
|
104
|
+
}
|
|
105
|
+
setProviders(providers) {
|
|
106
|
+
for (const chain of Object.keys(providers)) {
|
|
107
|
+
this.setProvider(chain, providers[chain]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
intersect(chains, throwIfNotSubset = false) {
|
|
111
|
+
const { intersection, result } = super.intersect(chains, throwIfNotSubset);
|
|
112
|
+
return {
|
|
113
|
+
intersection,
|
|
114
|
+
result: new MinimalProviderRegistry(result.metadata, {
|
|
115
|
+
...this.options,
|
|
116
|
+
providers: pick(this.providers, intersection),
|
|
117
|
+
providerBuilders: this.providerBuilders,
|
|
118
|
+
}),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=MinimalProviderRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MinimalProviderRegistry.js","sourceRoot":"","sources":["../../src/providers/MinimalProviderRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js';
|
|
1
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { multiProtocolTestChainMetadata } from '../consts/testChains.js';
|
|
4
3
|
import type { ChainMetadata } from '../metadata/chainMetadataTypes.js';
|
|
5
|
-
import type { ChainMap, ChainName
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
export interface MultiProtocolProviderOptions {
|
|
11
|
-
logger?: Logger;
|
|
12
|
-
providers?: ChainMap<ProviderMap<TypedProvider>>;
|
|
13
|
-
providerBuilders?: Partial<ProviderBuilderMap>;
|
|
4
|
+
import type { ChainMap, ChainName } from '../types.js';
|
|
5
|
+
import { MultiProviderAdapter, MultiProviderAdapterOptions } from './MultiProviderAdapter.js';
|
|
6
|
+
import { MultiProvider } from './MultiProvider.js';
|
|
7
|
+
import { ProviderType, TypedProvider } from './ProviderType.js';
|
|
8
|
+
import type { ProviderBuilderFn } from './providerBuilders.js';
|
|
9
|
+
export interface MultiProtocolProviderOptions extends MultiProviderAdapterOptions {
|
|
14
10
|
}
|
|
15
|
-
|
|
16
|
-
* A version of MultiProvider that can support different
|
|
17
|
-
* provider types across different protocol types.
|
|
18
|
-
*
|
|
19
|
-
* This uses a different interface for provider/signer related methods
|
|
20
|
-
* so it isn't strictly backwards compatible with MultiProvider.
|
|
21
|
-
*
|
|
22
|
-
* Unlike MultiProvider, this class does not support signer/signing methods (yet).
|
|
23
|
-
* @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses)
|
|
24
|
-
*/
|
|
25
|
-
export declare class MultiProtocolProvider<MetaExt = {}> extends ChainMetadataManager<MetaExt> {
|
|
26
|
-
protected readonly options: MultiProtocolProviderOptions;
|
|
27
|
-
protected readonly providers: ChainMap<ProviderMap<TypedProvider>>;
|
|
28
|
-
protected signers: ChainMap<ProviderMap<never>>;
|
|
29
|
-
protected readonly providerBuilders: Partial<ProviderBuilderMap>;
|
|
30
|
-
readonly logger: Logger;
|
|
31
|
-
constructor(chainMetadata: ChainMap<ChainMetadata<MetaExt>>, options?: MultiProtocolProviderOptions);
|
|
11
|
+
export declare class MultiProtocolProvider<MetaExt = {}> extends MultiProviderAdapter<MetaExt> {
|
|
32
12
|
static fromMultiProvider<MetaExt = {}>(mp: MultiProvider<MetaExt>, options?: MultiProtocolProviderOptions): MultiProtocolProvider<MetaExt>;
|
|
33
|
-
|
|
13
|
+
constructor(chainMetadata: ChainMap<ChainMetadata<MetaExt>>, options?: MultiProtocolProviderOptions);
|
|
14
|
+
protected getProviderBuilder(protocol: ProtocolType, type: ProviderType): ProviderBuilderFn<TypedProvider> | undefined;
|
|
34
15
|
extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): MultiProtocolProvider<MetaExt & NewExt>;
|
|
35
|
-
tryGetProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider | null;
|
|
36
|
-
getProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider;
|
|
37
|
-
protected getSpecificProvider<T>(chainNameOrId: ChainNameOrId, type: ProviderType): T;
|
|
38
|
-
getEthersV5Provider(chainNameOrId: ChainNameOrId): EthersV5Provider['provider'];
|
|
39
|
-
getViemProvider(chainNameOrId: ChainNameOrId): ViemProvider['provider'];
|
|
40
|
-
getSolanaWeb3Provider(chainNameOrId: ChainNameOrId): SolanaWeb3Provider['provider'];
|
|
41
|
-
getCosmJsProvider(chainNameOrId: ChainNameOrId): CosmJsProvider['provider'];
|
|
42
|
-
getCosmJsWasmProvider(chainNameOrId: ChainNameOrId): CosmJsWasmProvider['provider'];
|
|
43
|
-
getCosmJsNativeProvider(chainNameOrId: ChainNameOrId): CosmJsNativeProvider['provider'];
|
|
44
|
-
getStarknetProvider(chainNameOrId: ChainNameOrId): StarknetJsProvider['provider'];
|
|
45
|
-
getRadixProvider(chainNameOrId: ChainNameOrId): RadixProvider['provider'];
|
|
46
|
-
getAleoProvider(chainNameOrId: ChainNameOrId): AleoProvider['provider'];
|
|
47
|
-
getTronProvider(chainNameOrId: ChainNameOrId): TronProvider['provider'];
|
|
48
|
-
setProvider(chainNameOrId: ChainNameOrId, provider: TypedProvider): TypedProvider;
|
|
49
|
-
setProviders(providers: ChainMap<TypedProvider>): void;
|
|
50
|
-
estimateTransactionFee({ chainNameOrId, transaction, sender, senderPubKey, }: {
|
|
51
|
-
chainNameOrId: ChainNameOrId;
|
|
52
|
-
transaction: TypedTransaction;
|
|
53
|
-
sender: Address;
|
|
54
|
-
senderPubKey?: HexString;
|
|
55
|
-
}): Promise<TransactionFeeEstimate>;
|
|
56
16
|
intersect(chains: ChainName[], throwIfNotSubset?: boolean): {
|
|
57
17
|
intersection: ChainName[];
|
|
58
18
|
result: MultiProtocolProvider<MetaExt>;
|
|
59
19
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*/
|
|
63
|
-
static createTestMultiProtocolProvider<MetaExt = {}>(metadata?: ChainMap<ChainMetadata>, providers?: Partial<Record<ProtocolType, TypedProvider>>): MultiProtocolProvider<MetaExt>;
|
|
20
|
+
static createTestMultiProtocolProvider(metadata?: typeof multiProtocolTestChainMetadata, providers?: Partial<Record<ProtocolType, TypedProvider>>): MultiProtocolProvider;
|
|
21
|
+
static createTestMultiProtocolProvider<MetaExt>(metadata: ChainMap<ChainMetadata<MetaExt>>, providers?: Partial<Record<ProtocolType, TypedProvider>>): MultiProtocolProvider<MetaExt>;
|
|
64
22
|
}
|
|
65
23
|
//# sourceMappingURL=MultiProtocolProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProtocolProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MultiProtocolProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAQ,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAEL,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,4BAA6B,SAAQ,2BAA2B;CAAG;AAEpF,qBAAa,qBAAqB,CAChC,OAAO,GAAG,EAAE,CACZ,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,MAAM,CAAC,iBAAiB,CAAC,OAAO,GAAG,EAAE,EACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAC1B,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAAC,OAAO,CAAC;gBAK/B,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAC/C,OAAO,GAAE,4BAAiC;cAWzB,kBAAkB,CACnC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,YAAY,GACjB,iBAAiB,CAAC,aAAa,CAAC,GAAG,SAAS;IAUtC,mBAAmB,CAAC,MAAM,GAAG,EAAE,EACtC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACnC,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC;IASjC,SAAS,CAChB,MAAM,EAAE,SAAS,EAAE,EACnB,gBAAgB,UAAQ,GACvB;QACD,YAAY,EAAE,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;KACxC;IAYD,MAAM,CAAC,+BAA+B,CACpC,QAAQ,CAAC,EAAE,OAAO,8BAA8B,EAChD,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GACvD,qBAAqB;IACxB,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAC5C,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAC1C,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GACvD,qBAAqB,CAAC,OAAO,CAAC;CAuBlC"}
|
|
@@ -1,172 +1,54 @@
|
|
|
1
|
-
import { ProtocolType,
|
|
1
|
+
import { ProtocolType, pick } from '@hyperlane-xyz/utils';
|
|
2
2
|
import { multiProtocolTestChainMetadata } from '../consts/testChains.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { defaultProviderBuilderMap
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* A version of MultiProvider that can support different
|
|
10
|
-
* provider types across different protocol types.
|
|
11
|
-
*
|
|
12
|
-
* This uses a different interface for provider/signer related methods
|
|
13
|
-
* so it isn't strictly backwards compatible with MultiProvider.
|
|
14
|
-
*
|
|
15
|
-
* Unlike MultiProvider, this class does not support signer/signing methods (yet).
|
|
16
|
-
* @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses)
|
|
17
|
-
*/
|
|
18
|
-
export class MultiProtocolProvider extends ChainMetadataManager {
|
|
19
|
-
options;
|
|
20
|
-
// Chain name -> provider type -> provider
|
|
21
|
-
providers;
|
|
22
|
-
// Chain name -> provider type -> signer
|
|
23
|
-
signers = {}; // TODO signer support
|
|
24
|
-
providerBuilders;
|
|
25
|
-
logger;
|
|
26
|
-
constructor(chainMetadata, options = {}) {
|
|
27
|
-
super(chainMetadata, options);
|
|
28
|
-
this.options = options;
|
|
29
|
-
this.logger =
|
|
30
|
-
options?.logger ||
|
|
31
|
-
rootLogger.child({
|
|
32
|
-
module: 'MultiProtocolProvider',
|
|
33
|
-
});
|
|
34
|
-
this.providers = options.providers || {};
|
|
35
|
-
this.providerBuilders =
|
|
36
|
-
options.providerBuilders || defaultProviderBuilderMap;
|
|
37
|
-
}
|
|
3
|
+
import { createAdapterFromMultiProvider, MultiProviderAdapter, } from './MultiProviderAdapter.js';
|
|
4
|
+
import { ProviderType } from './ProviderType.js';
|
|
5
|
+
import { defaultTronEthersProviderBuilder } from './providerBuilders.js';
|
|
6
|
+
import { defaultProviderBuilderMap } from './defaultProviderBuilderMaps.js';
|
|
7
|
+
export class MultiProtocolProvider extends MultiProviderAdapter {
|
|
38
8
|
static fromMultiProvider(mp, options = {}) {
|
|
39
|
-
|
|
40
|
-
const typedProviders = objMap(mp.providers, (_, provider) => ({
|
|
41
|
-
type: ProviderType.EthersV5,
|
|
42
|
-
provider,
|
|
43
|
-
}));
|
|
44
|
-
newMp.setProviders(typedProviders);
|
|
45
|
-
return newMp;
|
|
9
|
+
return createAdapterFromMultiProvider(MultiProtocolProvider, mp, options);
|
|
46
10
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
extendChainMetadata(additionalMetadata) {
|
|
55
|
-
const newMetadata = super.extendChainMetadata(additionalMetadata).metadata;
|
|
56
|
-
const newMp = new MultiProtocolProvider(newMetadata, {
|
|
57
|
-
...this.options,
|
|
58
|
-
providers: this.providers,
|
|
11
|
+
constructor(chainMetadata, options = {}) {
|
|
12
|
+
super(chainMetadata, {
|
|
13
|
+
...options,
|
|
14
|
+
providerBuilders: {
|
|
15
|
+
...defaultProviderBuilderMap,
|
|
16
|
+
...options.providerBuilders,
|
|
17
|
+
},
|
|
59
18
|
});
|
|
60
|
-
return newMp;
|
|
61
19
|
}
|
|
62
|
-
|
|
63
|
-
const metadata = this.tryGetChainMetadata(chainNameOrId);
|
|
64
|
-
if (!metadata)
|
|
65
|
-
return null;
|
|
66
|
-
const { protocol, name, chainId, rpcUrls } = metadata;
|
|
67
|
-
// Cannot build provider for unknown protocol types (forward compatibility)
|
|
68
|
-
if (protocol === ProtocolType.Unknown)
|
|
69
|
-
return null;
|
|
70
|
-
type = type || PROTOCOL_TO_DEFAULT_PROVIDER_TYPE[protocol];
|
|
71
|
-
if (!type)
|
|
72
|
-
return null;
|
|
73
|
-
if (this.providers[name]?.[type])
|
|
74
|
-
return this.providers[name][type];
|
|
75
|
-
// Tron chains requesting EthersV5 must use TronJsonRpcProvider instead of
|
|
76
|
-
// HyperlaneSmartProvider, which doesn't handle Tron's JSON-RPC quirks.
|
|
77
|
-
let builder;
|
|
20
|
+
getProviderBuilder(protocol, type) {
|
|
78
21
|
if (protocol === ProtocolType.Tron && type === ProviderType.EthersV5) {
|
|
79
|
-
|
|
22
|
+
return (urls, network) => ({
|
|
80
23
|
type: ProviderType.EthersV5,
|
|
81
24
|
provider: defaultTronEthersProviderBuilder(urls, network),
|
|
82
25
|
});
|
|
83
26
|
}
|
|
84
|
-
|
|
85
|
-
builder = this.providerBuilders[type];
|
|
86
|
-
}
|
|
87
|
-
if (!rpcUrls.length || !builder)
|
|
88
|
-
return null;
|
|
89
|
-
const provider = builder(rpcUrls, chainId);
|
|
90
|
-
this.providers[name] ||= {};
|
|
91
|
-
this.providers[name][type] = provider;
|
|
92
|
-
return provider;
|
|
93
|
-
}
|
|
94
|
-
getProvider(chainNameOrId, type) {
|
|
95
|
-
const provider = this.tryGetProvider(chainNameOrId, type);
|
|
96
|
-
if (!provider)
|
|
97
|
-
throw new Error(`No provider available for ${chainNameOrId}`);
|
|
98
|
-
return provider;
|
|
99
|
-
}
|
|
100
|
-
getSpecificProvider(chainNameOrId, type) {
|
|
101
|
-
const provider = this.getProvider(chainNameOrId, type);
|
|
102
|
-
if (provider.type !== type)
|
|
103
|
-
throw new Error(`Invalid provider type, expected ${type} but found ${provider.type}`);
|
|
104
|
-
return provider.provider;
|
|
105
|
-
}
|
|
106
|
-
getEthersV5Provider(chainNameOrId) {
|
|
107
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.EthersV5);
|
|
108
|
-
}
|
|
109
|
-
getViemProvider(chainNameOrId) {
|
|
110
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.Viem);
|
|
111
|
-
}
|
|
112
|
-
getSolanaWeb3Provider(chainNameOrId) {
|
|
113
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.SolanaWeb3);
|
|
114
|
-
}
|
|
115
|
-
getCosmJsProvider(chainNameOrId) {
|
|
116
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJs);
|
|
117
|
-
}
|
|
118
|
-
getCosmJsWasmProvider(chainNameOrId) {
|
|
119
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJsWasm);
|
|
120
|
-
}
|
|
121
|
-
getCosmJsNativeProvider(chainNameOrId) {
|
|
122
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.CosmJsNative);
|
|
123
|
-
}
|
|
124
|
-
getStarknetProvider(chainNameOrId) {
|
|
125
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.Starknet);
|
|
126
|
-
}
|
|
127
|
-
getRadixProvider(chainNameOrId) {
|
|
128
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.Radix);
|
|
129
|
-
}
|
|
130
|
-
getAleoProvider(chainNameOrId) {
|
|
131
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.Aleo);
|
|
132
|
-
}
|
|
133
|
-
getTronProvider(chainNameOrId) {
|
|
134
|
-
return this.getSpecificProvider(chainNameOrId, ProviderType.Tron);
|
|
135
|
-
}
|
|
136
|
-
setProvider(chainNameOrId, provider) {
|
|
137
|
-
const chainName = this.getChainName(chainNameOrId);
|
|
138
|
-
this.providers[chainName] ||= {};
|
|
139
|
-
this.providers[chainName][provider.type] = provider;
|
|
140
|
-
return provider;
|
|
141
|
-
}
|
|
142
|
-
setProviders(providers) {
|
|
143
|
-
for (const chain of Object.keys(providers)) {
|
|
144
|
-
this.setProvider(chain, providers[chain]);
|
|
145
|
-
}
|
|
27
|
+
return this.providerBuilders[type];
|
|
146
28
|
}
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
chainMetadata,
|
|
154
|
-
sender,
|
|
155
|
-
senderPubKey,
|
|
29
|
+
extendChainMetadata(additionalMetadata) {
|
|
30
|
+
const newMetadata = super.extendChainMetadata(additionalMetadata).metadata;
|
|
31
|
+
return new MultiProtocolProvider(newMetadata, {
|
|
32
|
+
...this.options,
|
|
33
|
+
providers: this.providers,
|
|
34
|
+
providerBuilders: this.providerBuilders,
|
|
156
35
|
});
|
|
157
36
|
}
|
|
158
37
|
intersect(chains, throwIfNotSubset = false) {
|
|
159
38
|
const { intersection, result } = super.intersect(chains, throwIfNotSubset);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
39
|
+
return {
|
|
40
|
+
intersection,
|
|
41
|
+
result: new MultiProtocolProvider(result.metadata, {
|
|
42
|
+
...this.options,
|
|
43
|
+
providers: pick(this.providers, intersection),
|
|
44
|
+
providerBuilders: this.providerBuilders,
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
165
47
|
}
|
|
166
|
-
/**
|
|
167
|
-
* Creates a MultiProvider for test networks
|
|
168
|
-
*/
|
|
169
48
|
static createTestMultiProtocolProvider(metadata = multiProtocolTestChainMetadata, providers = {}) {
|
|
49
|
+
// CAST: the generic overload now requires callers to supply matching
|
|
50
|
+
// metadata. The shared implementation still handles the non-generic
|
|
51
|
+
// default-fixture overload through the same code path.
|
|
170
52
|
const mp = new MultiProtocolProvider(metadata);
|
|
171
53
|
const providerMap = {};
|
|
172
54
|
for (const [protocol, provider] of Object.entries(providers)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProtocolProvider.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MultiProtocolProvider.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
+
import { Provider as ZKSyncProvider } from 'zksync-ethers';
|
|
2
3
|
import { TestChainName, test1 } from '../consts/testChains.js';
|
|
4
|
+
import { ChainTechnicalStack } from '../metadata/chainMetadataTypes.js';
|
|
5
|
+
import { defaultProviderBuilderMap } from '../providers/defaultProviderBuilderMaps.js';
|
|
6
|
+
import { MultiProvider } from '../providers/MultiProvider.js';
|
|
7
|
+
import { MultiProviderAdapter } from '../providers/MultiProviderAdapter.js';
|
|
3
8
|
import { MultiProtocolProvider } from '../providers/MultiProtocolProvider.js';
|
|
9
|
+
import { ProviderType } from '../providers/ProviderType.js';
|
|
4
10
|
describe('MultiProtocolProvider', () => {
|
|
5
11
|
describe('constructs', () => {
|
|
6
12
|
it('creates a multi protocol provider without type extension', async () => {
|
|
@@ -16,6 +22,48 @@ describe('MultiProtocolProvider', () => {
|
|
|
16
22
|
expect(metadata.foo).to.equal('0x123');
|
|
17
23
|
expect(metadata.bar).to.equal(1);
|
|
18
24
|
});
|
|
25
|
+
it('keeps distinct logger module names for base and derived providers', () => {
|
|
26
|
+
const adapter = new MultiProviderAdapter({
|
|
27
|
+
test1,
|
|
28
|
+
});
|
|
29
|
+
const multiProvider = new MultiProtocolProvider({ test1 });
|
|
30
|
+
expect(adapter.logger.bindings().module).to.equal('MultiProviderAdapter');
|
|
31
|
+
expect(multiProvider.logger.bindings().module).to.equal('MultiProtocolProvider');
|
|
32
|
+
});
|
|
33
|
+
it('preserves zksync provider typing when adapting a MultiProvider', () => {
|
|
34
|
+
const provider = new ZKSyncProvider('http://127.0.0.1:3050', 324);
|
|
35
|
+
const multiProvider = new MultiProvider({
|
|
36
|
+
zksync: {
|
|
37
|
+
...test1,
|
|
38
|
+
name: 'zksync',
|
|
39
|
+
domainId: 324,
|
|
40
|
+
chainId: 324,
|
|
41
|
+
technicalStack: ChainTechnicalStack.ZkSync,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
multiProvider.setProvider('zksync', provider);
|
|
45
|
+
const adapted = MultiProtocolProvider.fromMultiProvider(multiProvider);
|
|
46
|
+
expect(adapted.getProvider('zksync', ProviderType.ZkSync).type).to.equal(ProviderType.ZkSync);
|
|
47
|
+
});
|
|
48
|
+
it('preserves zksync lazy provider typing when adapting a MultiProvider', () => {
|
|
49
|
+
const multiProvider = new MultiProvider({
|
|
50
|
+
zksync: {
|
|
51
|
+
...test1,
|
|
52
|
+
name: 'zksync',
|
|
53
|
+
domainId: 324,
|
|
54
|
+
chainId: 324,
|
|
55
|
+
technicalStack: ChainTechnicalStack.ZkSync,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const adapter = MultiProviderAdapter.fromMultiProvider(multiProvider);
|
|
59
|
+
const adapted = MultiProtocolProvider.fromMultiProvider(multiProvider);
|
|
60
|
+
expect(adapter.getProvider('zksync').type).to.equal(ProviderType.ZkSync);
|
|
61
|
+
expect(adapted.getProvider('zksync').type).to.equal(ProviderType.ZkSync);
|
|
62
|
+
});
|
|
63
|
+
it('returns a gnosis-typed builder entry', () => {
|
|
64
|
+
const provider = defaultProviderBuilderMap[ProviderType.GnosisTxBuilder]([{ http: 'https://ethereum.example.com' }], 1);
|
|
65
|
+
expect(provider.type).to.equal(ProviderType.GnosisTxBuilder);
|
|
66
|
+
});
|
|
19
67
|
});
|
|
20
68
|
});
|
|
21
69
|
//# sourceMappingURL=MultiProtocolProvider.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProtocolProvider.test.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiProtocolProvider.test.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js';
|
|
|
7
7
|
import { ChainMetadata, EthJsonRpcBlockParameterTag } from '../metadata/chainMetadataTypes.js';
|
|
8
8
|
import { ChainMap, ChainName, ChainNameOrId } from '../types.js';
|
|
9
9
|
import { AnnotatedEV5Transaction } from './ProviderType.js';
|
|
10
|
-
import { ProviderBuilderFn } from './
|
|
10
|
+
import { ProviderBuilderFn } from './builders/types.js';
|
|
11
11
|
type Provider = providers.Provider | ZKSyncProvider;
|
|
12
12
|
export interface MultiProviderOptions {
|
|
13
13
|
logger?: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,EACN,SAAS,EACV,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EACL,eAAe,IAAI,qBAAqB,EACxC,QAAQ,IAAI,cAAc,EAE3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,OAAO,EAOR,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACL,aAAa,EAEb,2BAA2B,EAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"MultiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProvider.ts"],"names":[],"mappings":"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"}
|