import { Logger } from 'pino';
import { 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 { AleoProvider, CosmJsNativeProvider, CosmJsProvider, CosmJsWasmProvider, EthersV5Provider, ProviderMap, ProviderType, RadixProvider, SolanaWeb3Provider, StarknetJsProvider, TronProvider, TypedProvider, ViemProvider } from './ProviderType.js';
import type { ProviderBuilderFn, ProviderBuilderMap } from './providerBuilders.js';
export interface MinimalProviderRegistryOptions {
    logger?: Logger;
    providers?: ChainMap<ProviderMap<TypedProvider>>;
    providerBuilders?: Partial<ProviderBuilderMap>;
}
export declare class MinimalProviderRegistry<MetaExt = {}> extends ChainMetadataManager<MetaExt> {
    protected readonly options: MinimalProviderRegistryOptions;
    protected readonly providers: ChainMap<ProviderMap<TypedProvider>>;
    protected readonly providerBuilders: Partial<ProviderBuilderMap>;
    readonly logger: Logger;
    constructor(chainMetadata: ChainMap<ChainMetadata<MetaExt>>, options?: MinimalProviderRegistryOptions);
    extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): MinimalProviderRegistry<MetaExt & NewExt>;
    protected getProviderBuilder(_protocol: ProtocolType, type: ProviderType): ProviderBuilderFn<TypedProvider> | undefined;
    tryGetProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider | null;
    getProvider(chainNameOrId: ChainNameOrId, type?: ProviderType): TypedProvider;
    protected getSpecificProvider<T>(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<TypedProvider>): void;
    intersect(chains: ChainName[], throwIfNotSubset?: boolean): {
        intersection: ChainName[];
        result: MinimalProviderRegistry<MetaExt>;
    };
}
//# sourceMappingURL=MinimalProviderRegistry.d.ts.map