import { BookChange, BookTicker, Trade } from '../types.ts';
import { Mapper } from './mapper.ts';
export declare const coinbaseTradesMapper: Mapper<'coinbase', Trade>;
export declare class CoinbaseBookChangMapper implements Mapper<'coinbase', BookChange> {
    private readonly _symbolLastTimestampMap;
    canHandle(message: CoinbaseTrade | CoinbaseLevel2Snapshot | CoinbaseLevel2Update): message is CoinbaseLevel2Snapshot | CoinbaseLevel2Update;
    getFilters(symbols?: string[]): ({
        readonly channel: "snapshot";
        readonly symbols: string[] | undefined;
    } | {
        readonly channel: "l2update";
        readonly symbols: string[] | undefined;
    })[];
    map(message: CoinbaseLevel2Update | CoinbaseLevel2Snapshot, localTimestamp: Date): IterableIterator<BookChange>;
}
export declare const coinbaseBookTickerMapper: Mapper<'coinbase', BookTicker>;
type CoinbaseTrade = {
    type: 'match';
    trade_id: number;
    time: string;
    product_id: string;
    size: string;
    price: string;
    side: 'sell' | 'buy';
};
type CoinbaseSnapshotBookLevel = [string, string];
type CoinbaseLevel2Snapshot = {
    type: 'snapshot';
    product_id: string;
    bids: CoinbaseSnapshotBookLevel[];
    asks: CoinbaseSnapshotBookLevel[];
    time?: string;
};
type CoinbaseUpdateBookLevel = ['buy' | 'sell', string, string];
type CoinbaseLevel2Update = {
    type: 'l2update';
    product_id: string;
    time: string;
    changes: CoinbaseUpdateBookLevel[];
};
export {};
//# sourceMappingURL=coinbase.d.ts.map