import { Logger } from 'pino'; import { Address, HexString, ProtocolType } from '@hyperlane-xyz/utils'; import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js'; import type { ChainMetadata } from '../metadata/chainMetadataTypes.js'; import type { ChainMap, ChainName, ChainNameOrId } from '../types.js'; import { MultiProvider, MultiProviderOptions } from './MultiProvider.js'; import { AleoProvider, CosmJsNativeProvider, CosmJsProvider, CosmJsWasmProvider, EthersV5Provider, ProviderMap, ProviderType, RadixProvider, SolanaWeb3Provider, StarknetJsProvider, TronProvider, TypedProvider, TypedTransaction, ViemProvider } from './ProviderType.js'; import { ProviderBuilderMap } from './providerBuilders.js'; import { TransactionFeeEstimate } from './transactionFeeEstimators.js'; export interface MultiProtocolProviderOptions { logger?: Logger; providers?: ChainMap>; providerBuilders?: Partial; } /** * A version of MultiProvider that can support different * provider types across different protocol types. * * This uses a different interface for provider/signer related methods * so it isn't strictly backwards compatible with MultiProvider. * * Unlike MultiProvider, this class does not support signer/signing methods (yet). * @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses) */ export declare class MultiProtocolProvider extends ChainMetadataManager { protected readonly options: MultiProtocolProviderOptions; protected readonly providers: ChainMap>; protected signers: ChainMap>; protected readonly providerBuilders: Partial; readonly logger: Logger; constructor(chainMetadata: ChainMap>, options?: MultiProtocolProviderOptions); static fromMultiProvider(mp: MultiProvider, options?: MultiProtocolProviderOptions): MultiProtocolProvider; toMultiProvider(options?: MultiProviderOptions): MultiProvider; extendChainMetadata(additionalMetadata: ChainMap): MultiProtocolProvider; tryGetProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider | null; getProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider; protected getSpecificProvider(chainNameOrId: ChainNameOrId, type: ProviderType): T; getEthersV5Provider(chainNameOrId: ChainNameOrId): EthersV5Provider['provider']; getViemProvider(chainNameOrId: ChainNameOrId): ViemProvider['provider']; getSolanaWeb3Provider(chainNameOrId: ChainNameOrId): SolanaWeb3Provider['provider']; getCosmJsProvider(chainNameOrId: ChainNameOrId): CosmJsProvider['provider']; getCosmJsWasmProvider(chainNameOrId: ChainNameOrId): CosmJsWasmProvider['provider']; getCosmJsNativeProvider(chainNameOrId: ChainNameOrId): CosmJsNativeProvider['provider']; getStarknetProvider(chainNameOrId: ChainNameOrId): StarknetJsProvider['provider']; getRadixProvider(chainNameOrId: ChainNameOrId): RadixProvider['provider']; getAleoProvider(chainNameOrId: ChainNameOrId): AleoProvider['provider']; getTronProvider(chainNameOrId: ChainNameOrId): TronProvider['provider']; setProvider(chainNameOrId: ChainNameOrId, provider: TypedProvider): TypedProvider; setProviders(providers: ChainMap): void; estimateTransactionFee({ chainNameOrId, transaction, sender, senderPubKey, }: { chainNameOrId: ChainNameOrId; transaction: TypedTransaction; sender: Address; senderPubKey?: HexString; }): Promise; intersect(chains: ChainName[], throwIfNotSubset?: boolean): { intersection: ChainName[]; result: MultiProtocolProvider; }; /** * Creates a MultiProvider for test networks */ static createTestMultiProtocolProvider(metadata?: ChainMap, providers?: Partial>): MultiProtocolProvider; } //# sourceMappingURL=MultiProtocolProvider.d.ts.map