import { CTPProvider } from "./provider.js";
import { OffsetType, OrderData, OrderFlag, ProductType, SideType } from "./typedef.js";
import { ICancelOrderResultReceiver, ICommissionRateReceiver, IInstrumentReceiver, IInstrumentsReceiver, ILifecycleListener, IMarginRateReceiver, IOrderReceiver, IOrdersReceiver, IPlaceOrderResultReceiver, IPositionDetailsReceiver, IPositionReceiver, IPositionsReceiver, ITraderProvider, ITradingAccountsReceiver } from "./interfaces.js";
export type CTPUserInfo = {
    BrokerID: string;
    UserID: string;
    Password: string;
    InvestorID: string;
    UserProductInfo: string;
    AuthCode: string;
    AppID: string;
};
export declare class Trader extends CTPProvider implements ITraderProvider {
    private traderApi?;
    private tradingDay;
    private frontId;
    private sessionId;
    private orderRef;
    private accountsQueryTime;
    private positionDetailsChanged;
    private readonly userInfo;
    private readonly receivers;
    private readonly accounts;
    private readonly positionDetails;
    private readonly instruments;
    private readonly positions;
    private readonly orders;
    private readonly trades;
    private readonly marginRates;
    private readonly commRates;
    private readonly placeOrders;
    private readonly cancelOrders;
    private readonly orderStatistics;
    private readonly marginRatesQueue;
    private readonly commRatesQueue;
    private readonly accountsQueue;
    private readonly positionDetailsQueue;
    constructor(flowTdPath: string, frontTdAddrs: string | string[], userInfo: CTPUserInfo);
    open(lifecycle: ILifecycleListener): boolean;
    close(lifecycle: ILifecycleListener): void;
    addReceiver(receiver: IOrderReceiver): void;
    removeReceiver(receiver: IOrderReceiver): void;
    getTradingDay(): number;
    getOrderStatistics(): Readonly<{
        symbol: string;
        places: number;
        entrusts: number;
        filleds: number;
        cancels: number;
        rejects: number;
    }>[];
    getOrderStatistic(symbol: string): Readonly<{
        symbol: string;
        places: number;
        entrusts: number;
        filleds: number;
        cancels: number;
        rejects: number;
    }>;
    queryCommissionRate(symbol: string, receiver: ICommissionRateReceiver): void;
    queryMarginRate(symbol: string, receiver: IMarginRateReceiver): void;
    queryInstrument(symbol: string, receiver: IInstrumentReceiver): void;
    queryPosition(symbol: string, receiver: IPositionReceiver): void;
    queryInstruments(receiver: IInstrumentsReceiver, type?: ProductType): void;
    queryTradingAccounts(receiver: ITradingAccountsReceiver): void;
    queryPositionDetails(receiver: IPositionDetailsReceiver): void;
    queryPositions(receiver: IPositionsReceiver): void;
    queryOrders(receiver: IOrdersReceiver): void;
    placeOrder(symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver): void;
    cancelOrder(order: OrderData, receiver: ICancelOrderResultReceiver): void;
    private _toSymbol;
    private _calcOrderId;
    private _calcReceiptId;
    private _calcOrderStatus;
    private _calcOrderFlag;
    private _calcSideType;
    private _toDirection;
    private _calcOffsetType;
    private _toOffsetFlag;
    private _calcProductType;
    private _ensurePositionInfo;
    private _ensureOrderStatistic;
    private _calcPosition;
    private _recordPending;
    private _recoverPending;
    private _freezePosition;
    private _unfreezePosition;
    private _toTradeData;
    private _toOrderData;
    private _toInstrumentData;
    private _toCommissionRate;
    private _toMarginRate;
    private _toTradingAccount;
    private _toPositionDetail;
    private _toPositionData;
    private _processMarginRatesQueue;
    private _processCommissionRatesQueue;
}
export declare const createTrader: (flowTdPath: string, frontTdAddrs: string | string[], userInfo: CTPUserInfo) => Trader;
