///
import { EventEmitter } from "events";
import semaphore from "semaphore";
import { Market } from "./Market";
import { IClient } from "./IClient";
import { SubscriptionType } from "./SubscriptionType";
export declare abstract class BasicMultiClient extends EventEmitter {
name: string;
hasTickers: boolean;
hasTrades: boolean;
hasCandles: boolean;
hasLevel2Snapshots: boolean;
hasLevel2Updates: boolean;
hasLevel3Snapshots: boolean;
hasLevel3Updates: boolean;
throttleMs: number;
sem: semaphore.Semaphore;
auth: any;
protected _clients: Map>;
constructor();
reconnect(): Promise;
close(): Promise;
protected abstract _createBasicClient(clientArgs: any): IClient;
subscribeTicker(market: Market): void;
unsubscribeTicker(market: Market): Promise;
subscribeCandles(market: Market): void;
unsubscribeCandles(market: Market): Promise;
subscribeTrades(market: any): void;
unsubscribeTrades(market: Market): Promise;
subscribeLevel2Updates(market: Market): void;
unsubscribeLevel2Updates(market: Market): Promise;
subscribeLevel2Snapshots(market: Market): void;
unsubscribeLevel2Snapshots(market: Market): Promise;
subscribeLevel3Snapshots: (...args: any[]) => any;
unsubscribeLevel3Snapshots: (...args: any[]) => any;
subscribeLevel3Updates: (...args: any[]) => any;
unsubscribeLevel3Updates: (...args: any[]) => any;
protected _createBasicClientThrottled(clientArgs: any): Promise;
protected _subscribe(market: Market, map: Map>, subscriptionType: SubscriptionType): Promise;
}