/// <reference types="bn.js" />
import { Connection, PublicKey } from '@solana/web3.js';
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
import { Client, Market } from '@ellipsis-labs/phoenix-sdk';
import { BN } from '@coral-xyz/anchor';
import { L2Level, L2OrderBookGenerator } from '../dlob/orderBookLevels';
export type PhoenixMarketSubscriberConfig = {
    connection: Connection;
    programId: PublicKey;
    marketAddress: PublicKey;
    accountSubscription: {
        type: 'polling';
        accountLoader: BulkAccountLoader;
    } | {
        type: 'websocket';
    };
    fastDecode?: boolean;
};
export declare class PhoenixSubscriber implements L2OrderBookGenerator {
    connection: Connection;
    client: Client;
    programId: PublicKey;
    marketAddress: PublicKey;
    subscriptionType: 'polling' | 'websocket';
    accountLoader: BulkAccountLoader | undefined;
    market: Market;
    marketCallbackId: string | number;
    clockCallbackId: string | number;
    fastDecode: boolean;
    subscribed: boolean;
    lastSlot: number;
    lastUnixTimestamp: number;
    constructor(config: PhoenixMarketSubscriberConfig);
    subscribe(): Promise<void>;
    getBestBid(): BN | undefined;
    getBestAsk(): BN | undefined;
    convertPriceInTicksToPricePrecision(priceInTicks: BN): BN;
    convertSizeInBaseLotsToMarketPrecision(sizeInBaseLots: BN): BN;
    getL2Bids(): Generator<L2Level>;
    getL2Asks(): Generator<L2Level>;
    getL2Levels(side: 'bids' | 'asks'): Generator<L2Level>;
    unsubscribe(): Promise<void>;
}
//# sourceMappingURL=phoenixSubscriber.d.ts.map