import { BookChange, BookTicker, DerivativeTicker, Liquidation, Trade } from '../types.ts';
import { Mapper } from './mapper.ts';
export declare class LighterTradesMapper implements Mapper<'lighter', Trade> {
    canHandle(message: LighterTradeMessage): boolean;
    getFilters(symbols?: string[]): {
        channel: "trade";
        symbols: string[] | undefined;
    }[];
    map(message: LighterTradeMessage, localTimestamp: Date): IterableIterator<Trade>;
}
export declare class LighterLiquidationMapper implements Mapper<'lighter', Liquidation> {
    canHandle(message: LighterTradeMessage): boolean;
    getFilters(symbols?: string[]): {
        channel: "trade";
        symbols: string[] | undefined;
    }[];
    map(message: LighterTradeMessage, localTimestamp: Date): IterableIterator<Liquidation>;
}
export declare class LighterBookChangeMapper implements Mapper<'lighter', BookChange> {
    canHandle(message: LighterOrderBookMessage): boolean;
    getFilters(symbols?: string[]): {
        channel: "order_book";
        symbols: string[] | undefined;
    }[];
    map(message: LighterOrderBookMessage, localTimestamp: Date): IterableIterator<BookChange>;
    private mapLevel;
}
export declare class LighterBookTickerMapper implements Mapper<'lighter', BookTicker> {
    canHandle(message: LighterTickerMessage): boolean;
    getFilters(symbols?: string[]): {
        channel: "ticker";
        symbols: string[] | undefined;
    }[];
    map(message: LighterTickerMessage, localTimestamp: Date): IterableIterator<BookTicker>;
}
export declare class LighterDerivativeTickerMapper implements Mapper<'lighter', DerivativeTicker> {
    private readonly pendingTickerInfoHelper;
    canHandle(message: LighterMarketStatsMessage): boolean;
    getFilters(_symbols?: string[]): {
        channel: "market_stats";
        symbols: never[];
    }[];
    map(message: LighterMarketStatsMessage, localTimestamp: Date): IterableIterator<DerivativeTicker>;
    private iterateMarketStats;
}
type LighterLevel = {
    price: string;
    size: string;
};
type LighterOrderBook = {
    asks: LighterLevel[];
    bids: LighterLevel[];
    code: number;
    nonce: number;
    begin_nonce: number;
    offset: number;
    last_updated_at: number;
};
type LighterOrderBookMessage = {
    type: 'subscribed/order_book' | 'update/order_book';
    channel: `order_book:${number}`;
    last_updated_at: number;
    offset: number;
    timestamp: number;
    order_book: LighterOrderBook;
};
type LighterTicker = {
    s: string;
    a?: Partial<LighterLevel>;
    b?: Partial<LighterLevel>;
    last_updated_at: number;
};
type LighterTickerMessage = {
    type: 'subscribed/ticker' | 'update/ticker';
    channel: `ticker:${number}`;
    last_updated_at: number;
    nonce: number;
    ticker: LighterTicker;
    timestamp: number;
};
type LighterTrade = {
    trade_id: number;
    trade_id_str: string;
    tx_hash: string;
    type: 'trade' | 'liquidation' | 'deleverage' | 'market-settlement';
    market_id: number;
    size: string;
    price: string;
    usd_amount: string;
    ask_id: number;
    ask_id_str: string;
    bid_id: number;
    bid_id_str: string;
    ask_client_id: number;
    ask_client_id_str: string;
    bid_client_id: number;
    bid_client_id_str: string;
    ask_account_id: number;
    bid_account_id: number;
    is_maker_ask: boolean;
    block_height: number;
    timestamp: number;
    taker_fee?: number;
    taker_position_size_before?: string;
    taker_entry_quote_before?: string;
    taker_initial_margin_fraction_before?: number;
    taker_position_sign_changed?: boolean;
    taker_allocated_margin_usdc_before?: number;
    maker_fee?: number;
    maker_position_size_before?: string;
    maker_entry_quote_before?: string;
    maker_initial_margin_fraction_before?: number;
    maker_position_sign_changed?: boolean;
    transaction_time: number;
    ask_account_pnl?: string;
    bid_account_pnl?: string;
};
type LighterTradeMessage = {
    type: 'subscribed/trade' | 'update/trade';
    channel: `trade:${number}`;
    nonce: number;
    trades: LighterTrade[];
    liquidation_trades?: LighterTrade[];
};
type LighterMarketStats = {
    symbol: string;
    market_id: number;
    index_price: string;
    mark_price: string;
    mid_price: string;
    open_interest: string;
    open_interest_limit: string;
    funding_clamp_small: string;
    funding_clamp_big: string;
    last_trade_price: string;
    current_funding_rate: string;
    funding_rate: string;
    funding_timestamp: number;
    daily_base_token_volume: number;
    daily_quote_token_volume: number;
    daily_price_low: number;
    daily_price_high: number;
    daily_price_change: number;
};
type LighterMarketStatsAllMessage = {
    type: 'subscribed/market_stats' | 'update/market_stats';
    channel: 'market_stats:all';
    timestamp: number;
    market_stats: Record<string, LighterMarketStats>;
};
type LighterMarketStatsMarketIdMessage = {
    type: 'subscribed/market_stats' | 'update/market_stats';
    channel: `market_stats:${number}`;
    timestamp: number;
    market_stats: LighterMarketStats;
};
type LighterMarketStatsMessage = LighterMarketStatsAllMessage | LighterMarketStatsMarketIdMessage;
export {};
//# sourceMappingURL=lighter.d.ts.map