import type { InstrumentCommissionRateField, InstrumentField, InstrumentMarginRateField, InvestorPositionDetailField, InvestorPositionField, OrderField, TradeField, TradingAccountField } from "@napi-ctp/types";
import { CTPProvider } from "./provider.js";
import type { OffsetType, OrderData, OrderFlag, ProductType, SideType, TickData } from "./typedef.js";
import type { ICancelOrderResultReceiver, ICommissionRateReceiver, IErrorReceiver, 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 type FastQueryLastTickFunc = (instrumentId: string) => TickData | undefined;
export type TraderOptions = {
    fastQueryLastTick?: FastQueryLastTickFunc;
};
export declare class Trader extends CTPProvider implements ITraderProvider {
    private traderApi?;
    private tradingDay;
    private frontId;
    private sessionId;
    private orderRef;
    private accountsQueryTime;
    private positionDetailsChanged;
    private readonly fastQueryLastTick?;
    private readonly userInfo;
    private readonly receivers;
    private readonly accounts;
    private readonly investorPositions;
    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 marketOrdersQueue;
    private readonly priceLimit;
    private readonly orderStatistics;
    private readonly marginRatesQueue;
    private readonly commRatesQueue;
    private readonly accountsQueue;
    private readonly positionDetailsQueue;
    constructor(flowTdPath: string, frontTdAddrs: string | string[], userInfo: CTPUserInfo, options?: TraderOptions);
    getTradingAccountsRaw(): TradingAccountField[];
    getInvestorPositionsRaw(): InvestorPositionField[];
    getInvestorPositionDetailsRaw(): InvestorPositionDetailField[];
    getInstrumentsRaw(): InstrumentField[];
    getOrdersRaw(): OrderField[];
    getTradesRaw(): TradeField[][];
    getInstrumentMarginRatesRaw(): InstrumentMarginRateField[];
    getInstrumentCommissionRatesRaw(): InstrumentCommissionRateField[];
    open(lifecycle: ILifecycleListener, errorReceiver: IErrorReceiver): boolean;
    close(lifecycle: ILifecycleListener, _errorReceiver: IErrorReceiver): void;
    addOrderReceiver(receiver: IOrderReceiver): void;
    removeOrderReceiver(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;
    private _placeLimitOrder;
    private _clearAllMarketOrders;
    private _placeMarketOrder;
    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 _calcOptionsType;
    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, options?: TraderOptions) => Trader;
