import type { DepthMarketDataField } from "@napi-ctp/types";
import { CTPProvider } from "./provider.js";
import type { InstrumentData, OrderBook } from "./typedef.js";
import type { IErrorReceiver, ILifecycleListener, IMarketProvider, IMarketRecorderProvider, IMarketRecorderReceiver, IMarketRecorderSymbols, ITickReceiver } from "./interfaces.js";
export interface IMarketListener {
    onSubscribed: (symbol: string) => void;
    onUnsubscribed: (symbol: string) => void;
}
export type MarketOptions = {
    listener?: IMarketListener;
};
export declare class Market extends CTPProvider implements IMarketProvider, IMarketRecorderProvider {
    private marketApi?;
    private recorder?;
    private recorderSymbols?;
    private tradingDay;
    private readonly listener?;
    private readonly recordings;
    private readonly symbols;
    private readonly lastTicks;
    private readonly subscribers;
    constructor(flowMdPath: string, frontMdAddrs: string | string[], options?: MarketOptions);
    getDepthMarketDataRaw(): DepthMarketDataField[];
    getRecorderProvider(): this;
    isRecorderReady(): boolean;
    setRecorder(receiver: IMarketRecorderReceiver, symbols: IMarketRecorderSymbols): void;
    getLastTick(instrumentId: string): Readonly<{
        symbol: string;
        date: number;
        time: number;
        tradingDay: number;
        preOpenInterest: number;
        preClose: number;
        openInterest: number;
        openPrice: number;
        highPrice: number;
        lowPrice: number;
        lastPrice: number;
        volume: number;
        amount: number;
        limits: import("./typedef.js").PriceRange;
        bandings: import("./typedef.js").PriceRange;
        orderBook: OrderBook;
    }> | undefined;
    open(lifecycle: ILifecycleListener, errorReceiver: IErrorReceiver): boolean;
    close(lifecycle: ILifecycleListener, _errorReceiver: IErrorReceiver): void;
    startRecorder(instrument: InstrumentData[]): void;
    stopRecorder(): void;
    subscribe(symbols: string[], receiver: ITickReceiver): void;
    unsubscribe(symbols: string[], receiver: ITickReceiver): void;
}
export declare const createMarket: (flowMdPath: string, frontMdAddrs: string | string[], options?: MarketOptions) => Market;
