import type { providers as EV5Providers, PopulatedTransaction as EV5Transaction } from 'ethers';
import { Address, HexString, Numberish } from '@hyperlane-xyz/utils';
import { ChainMetadata } from '../metadata/chainMetadataTypes.js';
import { AleoProvider, AleoTransaction, CosmJsNativeProvider, CosmJsNativeTransaction, CosmJsProvider, CosmJsTransaction, CosmJsWasmProvider, CosmJsWasmTransaction, EthersV5Provider, RadixProvider, RadixTransaction, SolanaWeb3Provider, SolanaWeb3Transaction, StarknetJsProvider, StarknetJsTransaction, TypedProvider, TypedTransaction, ViemProvider, ViemTransaction } from './ProviderType.js';
export interface TransactionFeeEstimate {
    gasUnits: number | bigint;
    gasPrice: number | bigint;
    fee: number | bigint;
}
export declare function clearCachedStargateClients(): void;
export declare function estimateTransactionFeeEthersV5({ transaction, provider, sender, }: {
    transaction: EV5Transaction;
    provider: EV5Providers.Provider;
    sender: Address;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeEthersV5ForGasUnits({ provider, gasUnits, }: {
    provider: EthersV5Provider['provider'];
    gasUnits: bigint;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeViem({ transaction, provider, sender, }: {
    transaction: ViemTransaction;
    provider: ViemProvider;
    sender: Address;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeSolanaWeb3({ provider, transaction, }: {
    transaction: SolanaWeb3Transaction;
    provider: SolanaWeb3Provider;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeCosmJs({ transaction, provider, estimatedGasPrice, sender, senderPubKey, memo, }: {
    transaction: CosmJsTransaction;
    provider: CosmJsProvider;
    estimatedGasPrice: Numberish;
    sender: Address;
    senderPubKey: HexString;
    memo?: string;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeCosmJsWasm({ transaction, provider, estimatedGasPrice, sender, senderPubKey, memo, }: {
    transaction: CosmJsWasmTransaction;
    provider: CosmJsWasmProvider;
    estimatedGasPrice: Numberish;
    sender: Address;
    senderPubKey: HexString;
    memo?: string;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeCosmJsNative({ transaction, provider, estimatedGasPrice, senderAddress, senderPubKey, }: {
    transaction: CosmJsNativeTransaction;
    provider: CosmJsNativeProvider;
    estimatedGasPrice: Numberish;
    senderAddress: Address;
    senderPubKey: HexString;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeStarknet({ transaction: _transaction, provider: _provider, sender: _sender, }: {
    transaction: StarknetJsTransaction;
    provider: StarknetJsProvider;
    sender: Address;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeRadix({ transaction, provider, }: {
    transaction: RadixTransaction;
    provider: RadixProvider;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFeeAleo({ transaction, provider, }: {
    transaction: AleoTransaction;
    provider: AleoProvider;
}): Promise<TransactionFeeEstimate>;
export declare function estimateTransactionFee({ transaction, provider, chainMetadata, sender, senderPubKey, }: {
    transaction: TypedTransaction;
    provider: TypedProvider;
    chainMetadata: ChainMetadata;
    sender: Address;
    senderPubKey?: HexString;
}): Promise<TransactionFeeEstimate>;
//# sourceMappingURL=transactionFeeEstimators.d.ts.map