import { BasicTransactionOptions, PriceTokenAmount, Web3Public } from '../../../../core';
import { GasData } from '../../models/gas-data';
import BigNumber from 'bignumber.js';
import { EncodeTransactionOptions, SwapTransactionOptions } from '../../..';
import { TransactionReceipt } from 'web3-eth';
import { ContractParams } from '../../models/contract-params';
import { TransactionConfig } from 'web3-core';
export declare abstract class CrossChainTrade {
    protected readonly providerAddress: string;
    abstract readonly to: PriceTokenAmount;
    abstract readonly from: PriceTokenAmount;
    protected abstract readonly gasData: GasData | null;
    protected abstract readonly fromWeb3Public: Web3Public;
    protected abstract get fromContractAddress(): string;
    protected get walletAddress(): string;
    get estimatedGas(): BigNumber | null;
    protected constructor(providerAddress: string);
    abstract swap(options?: SwapTransactionOptions): Promise<string | never>;
    protected abstract getContractParams(fromAddress?: string): Promise<ContractParams>;
    needApprove(): Promise<boolean>;
    approve(options: BasicTransactionOptions): Promise<TransactionReceipt>;
    protected checkAllowanceAndApprove(options?: Omit<SwapTransactionOptions, 'onConfirm'>): Promise<void>;
    encode(options: EncodeTransactionOptions): Promise<TransactionConfig>;
    protected checkWalletConnected(): never | void;
    protected checkBlockchainCorrect(): never | void;
    protected checkUserBalance(): Promise<void | never>;
}
