/// <reference types="socket.io-client" />
import { OrderSide, PlainDexOrder } from '@nexex/types';
import { DownstreamPayload, Market, MarketConfig, OrderAggregate, Orderbook, OrderbookAggregate, OrderbookOrder } from '@nexex/types/orderbook';
import { Subject } from 'rxjs';
import { OrderbookWsClientConfig } from './';
import Socket = SocketIOClient.Socket;
declare type PlaceOrderResult = {
    success: boolean;
    error?: string;
};
export declare class OrderbookWsClient {
    socket: Socket;
    events$: Subject<DownstreamPayload>;
    private config;
    private lastSub;
    constructor(config: OrderbookWsClientConfig);
    /**
     * internally will subscribe two order sequence from ob service
     * @param baseTokenAddr
     * @param quoteTokenAddr
     * @return subscribeId
     * @throws error if not connected
     */
    subscribe(baseTokenAddr: any, quoteTokenAddr: any): void;
    topOrders(marketId: string, limit?: number, decimals?: number): Promise<OrderbookAggregate>;
    queryOrderAggregate(marketId: string, side: OrderSide, price: string): Promise<OrderAggregate>;
    snapshot(marketId: string, limit?: number): Promise<Orderbook>;
    reqSnapshot(marketId: string, limit?: number): void;
    markets(): Promise<Market[]>;
    queryOrder(orderHash: string): Promise<OrderbookOrder>;
    queryOrderBatch(marketId: string, side: OrderSide, orderHashs: string[]): Promise<PlainDexOrder[]>;
    marketConfig(marketId: string): Promise<MarketConfig>;
    placeOrder(orderHash: string, order: PlainDexOrder): Promise<PlaceOrderResult>;
    private parse;
}
export {};
