import { BookChange, BookTicker, DerivativeTicker, FilterForExchange, Liquidation, Trade } from '../types';
import { Mapper } from './mapper';
export declare const bitmexTradesMapper: Mapper<'bitmex', Trade>;
export declare class BitmexBookChangeMapper implements Mapper<'bitmex', BookChange> {
    private readonly _idToPriceLevelMap;
    canHandle(message: BitmexDataMessage): boolean;
    getFilters(symbols?: string[]): {
        readonly channel: "orderBookL2";
        readonly symbols: string[] | undefined;
    }[];
    map(bitmexOrderBookL2Message: BitmexOrderBookL2Message, localTimestamp: Date): IterableIterator<BookChange>;
}
export declare class BitmexDerivativeTickerMapper implements Mapper<'bitmex', DerivativeTicker> {
    private readonly pendingTickerInfoHelper;
    canHandle(message: BitmexDataMessage): boolean;
    getFilters(symbols?: string[]): {
        readonly channel: "instrument";
        readonly symbols: string[] | undefined;
    }[];
    map(message: BitmexInstrumentsMessage, localTimestamp: Date): IterableIterator<DerivativeTicker>;
}
export declare const bitmexLiquidationsMapper: Mapper<'bitmex', Liquidation>;
export declare const bitmexBookTickerMapper: Mapper<'bitmex', BookTicker>;
type BitmexDataMessage = {
    table: FilterForExchange['bitmex']['channel'];
    action: 'partial' | 'update' | 'insert' | 'delete';
};
type BitmexInstrument = {
    symbol: string;
    state?: 'Open' | 'Closed' | 'Unlisted' | 'Settled';
    openInterest?: number | null;
    fundingRate?: number | null;
    markPrice?: number | null;
    lastPrice?: number | null;
    indicativeSettlePrice?: number | null;
    indicativeFundingRate?: number | null;
    fundingTimestamp?: string | null;
    timestamp?: string;
};
type BitmexInstrumentsMessage = BitmexDataMessage & {
    table: 'instrument';
    data: BitmexInstrument[];
};
type BitmexOrderBookL2Message = BitmexDataMessage & {
    table: 'orderBookL2';
    filter?: {
        symbol?: string;
    };
    data: {
        symbol: string;
        id: number;
        side: 'Buy' | 'Sell';
        size?: number;
        price?: number;
        timestamp?: string;
    }[];
};
export {};
//# sourceMappingURL=bitmex.d.ts.map