import BigNumber from 'bignumber.js';
import { PriceTokenAmount } from "../../../../../../common/tokens";
import { BitcoinBlockchainName } from "../../../../../../core/blockchain/models/blockchain-name";
import { BitcoinWeb3Private } from "../../../../../../core/blockchain/web3-private-service/web3-private/bitcoin-web3-private/bitcoin-web3-private";
import { BitcoinEncodedConfig } from "../../../../../../core/blockchain/web3-private-service/web3-private/bitcoin-web3-private/models/bitcoin-encoded-config";
import { EvmBasicTransactionOptions } from "../../../../../../core/blockchain/web3-private-service/web3-private/evm-web3-private/models/evm-basic-transaction-options";
import { EvmTransactionOptions } from "../../../../../../core/blockchain/web3-private-service/web3-private/evm-web3-private/models/evm-transaction-options";
import { BitcoinWeb3Public } from "../../../../../../core/blockchain/web3-public-service/web3-public/bitcoin-web3-public/bitcoin-web3-public";
import { ContractParams } from "../../../../../common/models/contract-params";
import { SwapTransactionOptions } from "../../../../../common/models/swap-transaction-options";
import { CrossChainTrade } from "../cross-chain-trade";
import { TransactionConfig } from 'web3-core';
import { TransactionReceipt } from 'web3-eth';
export declare abstract class BitcoinCrossChainTrade extends CrossChainTrade<BitcoinEncodedConfig> {
    abstract readonly from: PriceTokenAmount<BitcoinBlockchainName>;
    abstract readonly memo: string;
    protected get fromWeb3Public(): BitcoinWeb3Public;
    protected get web3Private(): BitcoinWeb3Private;
    /**
     * Gets gas fee in source blockchain.
     */
    get estimatedGas(): BigNumber | null;
    approve(_options: EvmBasicTransactionOptions, _checkNeedApprove?: boolean, _amount?: BigNumber | 'infinity'): Promise<TransactionReceipt>;
    protected checkAllowanceAndApprove(): Promise<void>;
    /**
     *
     * @returns txHash(srcTxHash) | never
     */
    swap(options?: SwapTransactionOptions): Promise<string | never>;
    encode(): Promise<TransactionConfig>;
    encodeApprove(_tokenAddress: string, _spenderAddress: string, _value: BigNumber | 'infinity', _options?: EvmTransactionOptions): Promise<TransactionConfig>;
    protected getContractParams(): Promise<ContractParams>;
    getUsdPrice(providerFeeToken?: BigNumber): BigNumber;
}
