import { BookChange, BookTicker, Exchange, Trade } from '../types';
import { Mapper } from './mapper';
export declare class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade> {
    private readonly _exchange;
    constructor(_exchange: Exchange);
    canHandle(message: SerumVialTrade): boolean;
    getFilters(symbols?: string[]): {
        readonly channel: "trade";
        readonly symbols: string[] | undefined;
    }[];
    map(message: SerumVialTrade, localTimestamp: Date): IterableIterator<Trade>;
}
export declare class SerumBookChangeMapper implements Mapper<'serum' | 'star-atlas', BookChange> {
    private readonly _exchange;
    constructor(_exchange: Exchange);
    canHandle(message: SerumVialL2Snapshot | SerumVialL2Update): boolean;
    getFilters(symbols?: string[]): ({
        readonly channel: "l2snapshot";
        readonly symbols: string[] | undefined;
    } | {
        readonly channel: "l2update";
        readonly symbols: string[] | undefined;
    })[];
    map(message: SerumVialL2Snapshot | SerumVialL2Update, localTimestamp: Date): IterableIterator<BookChange>;
    protected mapBookLevel(level: SerumVialPriceLevel): {
        price: number;
        amount: number;
    };
}
export declare class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', BookTicker> {
    private readonly _exchange;
    constructor(_exchange: Exchange);
    canHandle(message: SerumVialQuote): boolean;
    getFilters(symbols?: string[]): {
        readonly channel: "quote";
        readonly symbols: string[] | undefined;
    }[];
    map(message: SerumVialQuote, localTimestamp: Date): IterableIterator<BookTicker>;
}
type SerumVialTrade = {
    type: 'trade';
    market: 'RAY/USDT';
    timestamp: '2021-05-22T00:00:59.448Z';
    slot: 79469377;
    version: 3;
    id: '96845406386975144808722|185.8|1621641659448';
    side: 'buy';
    price: '5.235';
    size: '185.8';
    eventTimestamp: undefined;
} | {
    type: 'trade';
    market: string;
    timestamp: string;
    slot: number;
    version: number;
    id: string;
    side: 'buy' | 'sell';
    price: string;
    size: string;
    eventTimestamp: string;
};
type SerumVialPriceLevel = [string, string];
type SerumVialL2Snapshot = {
    type: 'l2snapshot';
    market: 'RAY/USDT';
    timestamp: '2021-05-21T23:58:56.899Z';
    slot: 79469186;
    version: 3;
    asks: SerumVialPriceLevel[];
    bids: SerumVialPriceLevel[];
};
type SerumVialL2Update = {
    type: 'l2update';
    market: 'RAY/USDT';
    timestamp: '2021-05-22T00:00:20.959Z';
    slot: 79469318;
    version: 3;
    asks: SerumVialPriceLevel[];
    bids: SerumVialPriceLevel[];
};
type SerumVialQuote = {
    type: 'quote';
    market: string;
    timestamp: string;
    slot: number;
    version: number;
    bestAsk: [price: string, size: string] | undefined;
    bestBid: [price: string, size: string] | undefined;
};
export {};
//# sourceMappingURL=serum.d.ts.map