import { CrossChainContractTrade } from '@features/cross-chain/cross-chain-contract-trade/cross-chain-contract-trade';
import { PriceTokenAmount } from '@core/blockchain/tokens/price-token-amount';
import { GasData } from '@features/cross-chain/models/gas-data';
import { SwapTransactionOptions } from '@features/instant-trades/models/swap-transaction-options';
import BigNumber from 'bignumber.js';
import { TransactionReceipt } from 'web3-eth';
import { BasicTransactionOptions } from 'src/core';
import { EncodeTransactionOptions } from 'src/features';
import { TransactionConfig } from 'web3-core';
export declare class CrossChainTrade {
    private readonly providerAddress;
    static getGasData(fromTrade: CrossChainContractTrade, toTrade: CrossChainContractTrade, cryptoFeeToken: PriceTokenAmount): Promise<GasData | null>;
    private readonly fromTrade;
    private readonly toTrade;
    readonly cryptoFeeToken: PriceTokenAmount;
    readonly transitFeeToken: PriceTokenAmount;
    private readonly gasData;
    private readonly fromWeb3Public;
    private readonly toWeb3Public;
    readonly from: PriceTokenAmount;
    readonly to: PriceTokenAmount;
    readonly toTokenAmountMin: BigNumber;
    private get walletAddress();
    get estimatedGas(): BigNumber | null;
    get priceImpactData(): {
        priceImpactFrom: number | null;
        priceImpactTo: number | null;
    };
    constructor(crossChainTrade: {
        fromTrade: CrossChainContractTrade;
        toTrade: CrossChainContractTrade;
        cryptoFeeToken: PriceTokenAmount;
        transitFeeToken: PriceTokenAmount;
        gasData: GasData | null;
    }, providerAddress: string);
    needApprove(): Promise<boolean>;
    approve(options: BasicTransactionOptions): Promise<TransactionReceipt>;
    protected checkAllowanceAndApprove(options?: Omit<SwapTransactionOptions, 'onConfirm'>): Promise<void>;
    private checkWalletConnected;
    private checkBlockchainCorrect;
    private checkContractsState;
    private checkToBlockchainGasPrice;
    private checkToContractBalance;
    private checkUserBalance;
    private checkTradeErrors;
    private getContractParams;
    swap(options?: SwapTransactionOptions): Promise<string | never>;
    private parseSwapErrors;
    encode(options?: EncodeTransactionOptions): Promise<TransactionConfig>;
}
