/// <reference types="node" />
/// <reference types="bn.js" />
import { DLOB } from './DLOB';
import { EventEmitter } from 'events';
import StrictEventEmitter from 'strict-event-emitter-types';
import { DLOBSource, DLOBSubscriberEvents, DLOBSubscriptionConfig, ProtectMakerParamsMap, SlotSource } from './types';
import { DriftClient } from '../driftClient';
import { MarketType } from '../types';
import { L2OrderBook, L2OrderBookGenerator, L3OrderBook } from './orderBookLevels';
import { BN } from '../isomorphic/anchor';
export declare class DLOBSubscriber {
    driftClient: DriftClient;
    dlobSource: DLOBSource;
    slotSource: SlotSource;
    updateFrequency: number;
    intervalId?: ReturnType<typeof setTimeout>;
    dlob: DLOB;
    eventEmitter: StrictEventEmitter<EventEmitter, DLOBSubscriberEvents>;
    protectedMakerView: boolean;
    constructor(config: DLOBSubscriptionConfig);
    subscribe(): Promise<void>;
    getProtectedMakerParamsMap(): ProtectMakerParamsMap | undefined;
    updateDLOB(): Promise<void>;
    getDLOB(): DLOB;
    /**
     * Get the L2 order book for a given market.
     *
     * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
     * @param marketIndex
     * @param marketType
     * @param depth Number of orders to include in the order book. Defaults to 10.
     * @param includeVamm Whether to include the VAMM orders in the order book. Defaults to false. If true, creates vAMM generator {@link getVammL2Generator} and adds it to fallbackL2Generators.
     * @param fallbackL2Generators L2 generators for fallback liquidity e.g. vAMM {@link getVammL2Generator}, openbook {@link SerumSubscriber}
     * @param latestSlot Latest slot observed via slot subscriber or similar for accuarate vamm quotes (if including the vAMM).
     */
    getL2({ marketName, marketIndex, marketType, depth, includeVamm, numVammOrders, fallbackL2Generators, latestSlot, }: {
        marketName?: string;
        marketIndex?: number;
        marketType?: MarketType;
        depth?: number;
        includeVamm?: boolean;
        numVammOrders?: number;
        fallbackL2Generators?: L2OrderBookGenerator[];
        latestSlot?: BN;
    }): L2OrderBook;
    /**
     * Get the L3 order book for a given market.
     *
     * @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
     * @param marketIndex
     * @param marketType
     */
    getL3({ marketName, marketIndex, marketType, }: {
        marketName?: string;
        marketIndex?: number;
        marketType?: MarketType;
    }): L3OrderBook;
    unsubscribe(): Promise<void>;
}
//# sourceMappingURL=DLOBSubscriber.d.ts.map