import BaseConnection, { Transaction, Order } from "./base";
import * as ccxt from "ccxt";
interface ExchangeCredentials {
    apiKey: string;
    secret: string;
    password?: string;
}
/**
 * Create ccxt exchange object
 *
 * @param {string} name      - Name of exchange
 * @param {string} creds     - User's exchange credentials
 * @param {number} rateLimit - API request rate limit
 * @return {ccxt.Exchange} ccxt exchange instance
 */
export declare function getExchange(name: string, creds?: ExchangeCredentials, rateLimit?: number): ccxt.Exchange;
/**
 * A base class to support general ccxt exchange operations
 */
export default class ccxtConnection extends BaseConnection {
    quoteCurrency: string;
    markets: Array<string>;
    fallbackMarketConnection: ccxtConnection | null;
    access: string;
    /**
     * Create BaseConnection instance
     * @param {string} name - Name of exchange (Ex: coinbase)
     * @param {any} credentials - API creds of exchange
     * @param {any} params - (Optional) Additional paramaters
     */
    constructor(name: string, credentials?: any, params?: any);
    /**
     * HELPER: Format transaction
     *
     * @param {any} transaction - Unformatted cctx unified transaction
     * @param {string} forceType - (Optional) Type to assign to transaction
     * @return {Transaction} Formatted transaction
     */
    _formatTransaction(transaction: any, forceType?: string): Transaction;
    /**
     * HELPER: Format orders
     *
     * @param {any} order - Unformatted cctx unified transaction
     * @return {Transaction} Formatted transaction
     */
    _formatOrder(order: any): Order;
    /**
     * HELPER
     * @description Check if params are satified for call
     * @param {string} method CCXT exchange method name
     * @param {string} symbol Currency symbol
     * @return {void}
     */
    _paramCheck(method: string, symbol?: string): void;
    /**
     * @description Initialize exchange by fetching balances and loading markets
     * @override BaseConnection.initialize
     * @param {boolean} forceReload - (Optional) Additional paramaters
     * @return {Promise<void>}
     */
    initialize(forceReload?: boolean): Promise<void>;
    /**
     * @description Fetch Account Balances
     * @override BaseConnection.getBalances
     * @return {Promise<any>} Account balance object
     */
    getBalances(): Promise<any>;
    /**
     * @description Fetch Account Withdrawals
     * @override BaseConnection.getWithdrawals
     * @param {string} symbol Currency symbol
     * @param {string} key (Default=Send) Transaction type key
     * @param {number} since (Optional) Timestamp to get transactions since
     * @param {number} limit (Optional) Max number of entries per request
     * @return {Promise<Array<any>>} Array of withdrawal objects
     */
    getWithdrawals(symbol?: string, key?: string, since?: number, limit?: number): Promise<Array<any>>;
    /**
     * @description Fetch Account Deposits
     * @override BaseConnection.getDeposits
     * @param {string} symbol Currency symbol
     * @param {string} key (Default=Receive) Transaction type key
     * @param {number} since (Optional) Timestamp to get transactions since
     * @param {number} limit (Optional) Max number of entries per request
     * @return {Promise<Array<any>>} Array of deposit objects
     */
    getDeposits(symbol?: string, key?: string, since?: number, limit?: number): Promise<Array<any>>;
    /**
     * @description Fetch Account Orders
     * @override BaseConnection.getOrders
     * @param {string} symbol Currency symbol
     * @param {number} since (Optional) Timestamp to get transactions since
     * @param {number} limit (Optional) Max number of entries per request
     * @return {Promise<Array<any>>} Array of order objects
     */
    getOrders(symbol?: string, since?: number, limit?: number): Promise<Array<any>>;
    /**
     * @description Fetch all account transactions (withdrawals, deposits, and orders)
     * @override BaseConnection.getLedger
     * @param {string} symbol Currency symbol
     * @param {number} since (Optional) Timestamp to get transactions since
     * @param {number} limit (Optional) Max number of entries per request
     * @return {Promise<any>} Array of withdrawal objects
     */
    getLedger(symbol?: string, since?: number, limit?: number): Promise<any>;
    /**
     * @description Fetch account transactions (withdrawals, deposits, and orders)
     * @override BaseConnection.getTransactions
     * @param {string} symbol Currency symbol
     * @param {number} since (Optional) Timestamp to get transactions since
     * @return {Promise<Array<any>>} Array of withdrawal objects
     */
    getTransactions(symbol?: string, since?: number): Promise<Array<any>>;
    /**
     * @description Fetch all transactions (withdrawals, deposits, and orders) for all symbols
     * @override BaseConnection.getAllTransactions
     * @param {number} since (Optional) Timestamp to get transactions since
     * @return {Array<any>} Array of withdrawal objects
     */
    getAllTransactions(since?: number): Promise<any>;
    /**
     * @description Get preferred market(s) to convert asset to USD (or stablecoin)
     * @param {string} symbol Currency Symbol
     * @param {Array<string>} exclude Currency Symbol
     * @return {Promise<Array<string>>} Ex: ["USDC"] or ["BTC", "USD"]
     */
    getQuoteConversion(symbol: string, exclude?: Array<string>): Promise<Array<string>>;
    /**
     * @description Get price of an asset at a given time (only public access required)
     * @param {string} symbol Currency symbol
     * @param {number} timestamp Timestamp to get price at
     * @return {Promise<number>} Price of asset in USD
     */
    getQuote(symbol: string, timestamp: number): Promise<number>;
    /**
     * @description Get price of an asset at a given time (only public access required)
     * @param {number} timestamp Timestamp to get price at
     * @param {string} baseCurrency Base currency symbol
     * @param {string} feeCurrency (Optional) Fee currency symbol - will default to base or quote if not specifed
     * @param {string} quoteCurrency (Optional) Quote currency symbol
     * @param {number} quotePrice Price of base currency denominated in quote currency
     * @return {Promise<any>} Price of asset in USD
     */
    getCommonPrices(timestamp: number, baseCurrency: string, feeCurrency?: string, quoteCurrency?: string, quotePrice?: number): Promise<number>;
    /**
     * @description Update USD quote values for a transaction (only public access required)
     * @param {Transaction} tx Transaction object
     * @param {any} prices Transaction prices
     * @return {Promise<Transaction>} Transaction with updated pricing data
     */
    quoteTransaction(tx: Transaction, prices?: any): Promise<Transaction>;
    /**
     * @description Update USD quote values for an order (only public access required)
     * @param {Order} order Order object
     * @param {any} prices Order prices
     * @return {Promise<Order>} Order with updated pricing data
     */
    quoteOrder(order: Order, prices?: any): Promise<Order>;
}
export {};
