import { BigNumber, PopulatedTransaction, providers } from 'ethers'; import { TransactionErrorHandler } from '../error-handler/error-handler'; import { TransactionManagerRequest } from '../transaction-inputs/transaction-manager-request'; import { AlchemyApiConfig, ContractMethodLastGasParams, GasOptimizationResult, TenderlyApiConfig, TransactionError, TransactionManagerQueueItem } from '../types'; export declare class TransactionGasOptimizer { private provider; private gasPrice; private gasOperations; private errorHandler; private maxFeePerGas; private maxPriorityFeePerGas; private baseFeePerGas; private transactionGasLimitTracker; private gasStation; private gasParams; private chainId; private gasMultiplier; private gasTracker; private alchemyConfig; constructor(provider: providers.Provider, gasMultiplier: number, tenderlyApiConfig: TenderlyApiConfig, alchemyConfig: AlchemyApiConfig); initialize(chainId: number): Promise; private updateStationParams; handleMaxRetryReached(transactionRequest: TransactionManagerRequest, transaction: PopulatedTransaction): Promise; updateTimeoutGasMultiplier(transactionRequest: TransactionManagerRequest, transaction: PopulatedTransaction): void; updateContractMethodGasUsed(contractAddress?: string, methodName?: string, gasUsed?: BigNumber, gasLimit?: BigNumber, trackingId?: string, isTransactionFailed?: boolean): void; getGasDetailsFromTracker(contractAddress?: string, methodName?: string, trackingId?: string): ContractMethodLastGasParams | undefined; private updateLatestType2GasLimits; updateTransactionErrorHandler(errorHandler: TransactionErrorHandler): void; increaseGasPrice(transaction: PopulatedTransaction): Promise; increaseMaxFeePerGas(transaction: PopulatedTransaction): Promise; optimizeGasLimit(transaction: PopulatedTransaction, incrementGasLimit: boolean, transactionRequest: TransactionManagerRequest, gasMultiplier: number): Promise; private optimizeGasParams; private handleGasErrors; optimize(transactionQueueItem: TransactionManagerQueueItem, transactionError?: TransactionError): Promise; }