import { BasicTransactionOptions } from '../../core/blockchain/models/basic-transaction-options';
import { PriceTokenAmount } from '../../core/blockchain/tokens/price-token-amount';
import { EncodeTransactionOptions } from './models/encode-transaction-options';
import { GasFeeInfo } from './models/gas-fee-info';
import { SwapTransactionOptions } from './models/swap-transaction-options';
import { TransactionConfig } from 'web3-core';
import { TransactionReceipt } from 'web3-eth';
import { Web3Public } from '../../core/blockchain/web3-public/web3-public';
import { BlockchainName } from '../../core/blockchain/models/blockchain-name';
import { OptionsGasParams, TransactionGasParams } from './models/gas-params';
import { TradeType } from '..';
export declare abstract class InstantTrade {
    abstract readonly from: PriceTokenAmount;
    abstract readonly to: PriceTokenAmount;
    abstract gasFeeInfo: GasFeeInfo | null;
    abstract slippageTolerance: number;
    protected abstract contractAddress: string;
    protected readonly web3Public: Web3Public;
    abstract get type(): TradeType;
    get toTokenAmountMin(): PriceTokenAmount;
    protected get walletAddress(): string;
    get priceImpact(): number | null;
    protected constructor(blockchain: BlockchainName);
    needApprove(fromAddress?: string): Promise<boolean>;
    approve(options?: BasicTransactionOptions): Promise<TransactionReceipt>;
    protected checkAllowanceAndApprove(options?: Omit<SwapTransactionOptions, 'onConfirm'>): Promise<void>;
    abstract swap(options?: SwapTransactionOptions): Promise<TransactionReceipt>;
    abstract encode(options: EncodeTransactionOptions): Promise<TransactionConfig>;
    protected checkWalletState(): Promise<void>;
    protected checkWalletConnected(): never | void;
    private checkBlockchainCorrect;
    protected getGasParams(options: OptionsGasParams): TransactionGasParams;
}
