import { providers } from 'ethers';
import { Provider as ZKProvider } from 'zksync-ethers';
import { ChainMetadata, RpcUrl } from '../metadata/chainMetadataTypes.js';
import { AleoProvider, CosmJsNativeProvider, CosmJsProvider, CosmJsWasmProvider, EthersV5Provider, KnownProtocolType, ProviderType, RadixProvider, SolanaWeb3Provider, StarknetJsProvider, TronProvider, TypedProvider, ViemProvider, ZKSyncProvider } from './ProviderType.js';
import { ProviderRetryOptions } from './SmartProvider/types.js';
export type ProviderBuilderFn
= (rpcUrls: ChainMetadata['rpcUrls'], network: number | string, retryOverride?: ProviderRetryOptions) => P;
export type TypedProviderBuilderFn = ProviderBuilderFn;
export declare function defaultEthersV5ProviderBuilder(rpcUrls: RpcUrl[], network: number | string, retryOverride?: ProviderRetryOptions): EthersV5Provider;
export declare function defaultViemProviderBuilder(rpcUrls: RpcUrl[], network: number | string): ViemProvider;
export declare function defaultSolProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): SolanaWeb3Provider;
export declare function defaultFuelProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): EthersV5Provider;
export declare function defaultCosmJsProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): CosmJsProvider;
export declare function defaultCosmJsWasmProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): CosmJsWasmProvider;
export declare function defaultCosmJsNativeProviderBuilder(rpcUrls: RpcUrl[], network: number | string): CosmJsNativeProvider;
export declare function defaultStarknetJsProviderBuilder(rpcUrls: RpcUrl[]): StarknetJsProvider;
export declare function defaultZKSyncProviderBuilder(rpcUrls: RpcUrl[], network: providers.Networkish): ZKSyncProvider;
export declare function defaultRadixProviderBuilder(rpcUrls: RpcUrl[], network: string | number): RadixProvider;
export declare function defaultAleoProviderBuilder(rpcUrls: RpcUrl[], network: string | number): AleoProvider;
/**
* Returns an ethers-compatible TronJsonRpcProvider for use in MultiProvider.
* This handles Tron's missing eth_getTransactionCount and returns the raw provider.
*/
export declare function defaultTronEthersProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): providers.Provider;
export declare function defaultTronProviderBuilder(rpcUrls: RpcUrl[], _network: string | number): TronProvider;
export declare function defaultProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): providers.Provider;
export declare function defaultZKProviderBuilder(rpcUrls: RpcUrl[], _network: number | string): ZKProvider;
export type ProviderBuilderMap = Record>;
export declare const defaultProviderBuilderMap: ProviderBuilderMap;
export declare const protocolToDefaultProviderBuilder: Record>;
//# sourceMappingURL=providerBuilders.d.ts.map