import { OffsetType, OrderData, OrderFlag, SideType } from "./typedef.js";
import { ICancelOrderResultReceiver, ICancelOrderRiskManager, ICommissionRateReceiver, IErrorReceiver, IInstrumentReceiver, IInstrumentsReceiver, IMarginRateReceiver, IMarketProvider, IOrdersReceiver, IPlaceOrderRiskManager, IPositionsReceiver, IRuntimeEngine, IStrategy, ITickReceiver, ITraderProvider, ITradingAccountsReceiver, IPlaceOrderResultReceiver, IPositionReceiver, IPositionDetailsReceiver, IBarReceiver } from "./interfaces.js";
export declare class Broker implements IRuntimeEngine {
    private readonly trader;
    private readonly market;
    private readonly traderLifecycle;
    private readonly marketLifecycle;
    private readonly strategies;
    private readonly placeOrderRiskManagers;
    private readonly cancelOrderRiskManagers;
    private readonly generators;
    constructor(trader: ITraderProvider, market: IMarketProvider, errorReceiver?: IErrorReceiver);
    start(): boolean;
    stop(): void;
    addStrategy(strategy: IStrategy): void;
    removeStrategy(strategy: IStrategy): void;
    addPlaceOrderRiskManager(riskMgr: IPlaceOrderRiskManager): void;
    addCancelOrderRiskManager(riskMgr: ICancelOrderRiskManager): void;
    subscribe(symbols: string[], receiver: ITickReceiver): void;
    unsubscribe(symbols: string[], receiver: ITickReceiver): void;
    subscribeBar(symbols: string[], receiver: IBarReceiver): void;
    unsubscribeBar(symbols: string[], receiver: IBarReceiver): void;
    placeOrder(strategy: IStrategy, symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver): void;
    cancelOrder(strategy: IStrategy, order: OrderData, receiver: ICancelOrderResultReceiver): void;
    buyOpen(strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver): void;
    buyClose(strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver): void;
    sellOpen(strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver): void;
    sellClose(strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver): 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): void;
    queryTradingAccounts(receiver: ITradingAccountsReceiver): void;
    queryPositions(receiver: IPositionsReceiver): void;
    queryPositionDetails(receiver: IPositionDetailsReceiver): void;
    queryOrders(receiver: IOrdersReceiver): void;
}
export declare const createBroker: (trader: ITraderProvider, market: IMarketProvider, errorReceiver?: IErrorReceiver) => Broker;
