/**
 * Service for managing account replicas based on region latency
 */
export default class LatencyService {
    private _websocketClient;
    private _token;
    private _connectTimeout;
    private _latencyCache;
    private _connectedInstancesCache;
    private _synchronizedInstancesCache;
    private _refreshPromisesByRegion;
    private _waitConnectPromises;
    private _logger;
    private _refreshRegionLatencyInterval;
    /**
     * Constructs latency service instance
     * @param {MetaApiWebsocketClient} websocketClient MetaApi websocket client
     * @param {String} token authorization token
     * @param {Number} connectTimeout websocket connect timeout in seconds
     */
    constructor(websocketClient: any, token: any, connectTimeout: any);
    /**
     * Stops the service
     */
    stop(): void;
    /**
     * Returns the list of regions sorted by latency
     * @returns {String[]} list of regions sorted by latency
     */
    get regionsSortedByLatency(): string[];
    /**
     * Invoked when an instance has been disconnected
     * @param {String} instanceId instance id
     */
    onDisconnected(instanceId: any): void;
    /**
     * Invoked when an account has been unsubscribed
     * @param {String} accountId account id
     */
    onUnsubscribe(accountId: any): void;
    /**
     * Invoked when an instance has been connected
     * @param {String} instanceId instance id
     */
    onConnected(instanceId: any): Promise<void>;
    /**
     * Invoked when an instance has been synchronized
     * @param {String} instanceId instance id
     */
    onDealsSynchronized(instanceId: any): Promise<void>;
    /**
     * Returns the list of currently connected account instances
     * @param {String} accountId account id
     * @returns {String[]} list of connected account instances
     */
    getActiveAccountInstances(accountId: any): string[];
    /**
     * Returns the list of currently synchronized account instances
     * @param {String} accountId account id
     * @returns {String[]} list of synchronized account instances
     */
    getSynchronizedAccountInstances(accountId: any): string[];
    /**
     * Waits for connected instance
     * @param {String} accountId account id
     * @returns {String} instance id
     */
    waitConnectedInstance(accountId: any): Promise<string>;
    _getAccountInstances(accountId: any): string[];
    _getAccountRegions(accountId: any): any[];
    _getAccountIdFromInstance(instanceId: any): any;
    _getRegionFromInstance(instanceId: any): any;
    _disconnectInstance(instanceId: any): void;
    _subscribeAccountReplica(accountId: any, region: any): void;
    _refreshRegionLatencyJob(): Promise<void>;
    _refreshLatency(region: any): Promise<any>;
}
