import type { EthereumProvider } from "../../../../../../types/providers.js";
/**
 * The fraction of the observed block gas limit that gets cached and used as the
 * gas limit ceiling. The cached value is deliberately lower than what the
 * latest block reported, to leave room for the block gas limit varying
 * slightly between blocks after we cached it.
 */
export declare const BLOCK_GAS_LIMIT_SAFETY_FACTOR = 0.95;
/**
 * This class handles gas estimation for transactions by applying a multiplier to the estimated gas value.
 * It requests a gas estimation from the provider and multiplies it by a predefined gas multiplier, ensuring the gas does not exceed the block's gas limit.
 * If the estimation fails because an internal call runs out of gas regardless of the gas limit, the method returns the fallback gas limit, capped to the current block gas limit on networks that enforce one, or rethrows when no fallback gas limit is known.
 * If any other error whose message contains "execution error" occurs, the method returns the capped block gas limit instead. Every other error is rethrown.
 * The capped block gas limit is the latest block's gas limit scaled by `BLOCK_GAS_LIMIT_SAFETY_FACTOR`, cached after the first retrieval to optimize performance, except when capping the fallback gas limit, which reads the pending block's unscaled one.
 */
export declare abstract class MultipliedGasEstimation {
    #private;
    constructor(provider: EthereumProvider, gasMultiplier: number, fallbackGas?: bigint, isBlockGasLimitEnforced?: () => boolean);
    protected getMultipliedGasEstimation(params: any[]): Promise<string>;
}
//# sourceMappingURL=multiplied-gas-estimation.d.ts.map