import { IBApiNext, OpenOrder, Order, Contract, OrderCancel } from '@stoqey/ib';
import { Trade as SSTrade } from '../interfaces';
import { ContractInstrument } from '../marketdata/MarketDataManager';
import { Mutex } from 'async-mutex';
export declare class Orders {
    ib: IBApiNext;
    private GetOrders;
    private openOrders;
    private cancelledOrders;
    private completedTrades;
    private openOrderQueue;
    mutex: Mutex;
    private static _instance;
    static get Instance(): Orders;
    private constructor();
    get orders(): OpenOrder[];
    get trades(): SSTrade[];
    /**
     * getOrders
     */
    getOrders: () => Promise<OpenOrder[]>;
    logOpenOrder: (title: string, openOrder: OpenOrder) => void;
    processOrderQueue: () => Promise<void>;
    /**
     * getOpenOrders
     */
    asyncOpenOrders: () => Promise<OpenOrder[]>;
    syncOpenOrders: () => void;
    /**
     * init
     */
    init: () => Promise<void>;
    parseOrder: (orderPlaced: Order, contractDetails: ContractInstrument) => {
        order: Order;
        contract: Contract;
    };
    /**
     * placeOrder
     */
    placeOrder: (contractDetails: ContractInstrument, orderToPlace: Order) => Promise<boolean>;
    /**
     * modifyOrder
     */
    modifyOrder: (id: number, contractDetails: ContractInstrument, orderToPlace: Order) => Promise<boolean>;
    cancelOrder: (orderId: number, orderCancel?: string | OrderCancel) => Promise<boolean>;
    cancelAllOrders: (orderCancel: OrderCancel) => Promise<boolean>;
}
export default Orders;
