/**
 * Subscription manager to handle account subscription logic
 */
export default class SubscriptionManager {
    private _websocketClient;
    private _latencyService;
    private _metaApi;
    private _subscriptions;
    private _awaitingResubscribe;
    private _subscriptionState;
    private _logger;
    private _timeoutErrorCounter;
    private _recentlyDeletedAccounts;
    /**
     * Constructs the subscription manager
     * @param {MetaApiWebsocketClient} websocketClient websocket client to use for sending requests
     * @param {MetaApi} metaApi metaApi instance
     */
    constructor(websocketClient: any, metaApi: any);
    /**
     * Returns whether an account is currently subscribing
     * @param {String} accountId account id
     * @param {Number} instanceNumber instance index number
     * @returns {Boolean} whether an account is currently subscribing
     */
    isAccountSubscribing(accountId: any, instanceNumber: any): boolean;
    /**
     * Returns whether an instance is in disconnected retry mode
     * @param {String} accountId account id
     * @param {Number} instanceNumber instance index number
     * @returns {Boolean} whether an account is currently subscribing
     */
    isDisconnectedRetryMode(accountId: any, instanceNumber: any): any;
    /**
     * Returns whether an account subscription is active
     * @param {String} accountId account id
     * @returns {Boolean} instance actual subscribe state
     */
    isSubscriptionActive(accountId: any): boolean;
    /**
     * Subscribes to the Metatrader terminal events
     * @param {String} accountId id of the MetaTrader account to subscribe to
     * @param {Number} instanceNumber instance index number
     * @returns {Promise} promise which resolves when subscription started
     */
    subscribe(accountId: any, instanceNumber: any): Promise<any>;
    /**
     * Schedules to send subscribe requests to an account until cancelled
     * @param {String} accountId id of the MetaTrader account
     * @param {Number} instanceNumber instance index number
     * @param {Boolean} isDisconnectedRetryMode whether to start subscription in disconnected retry
     * mode. Subscription task in disconnected mode will be immediately replaced when the status packet is received
     */
    scheduleSubscribe(accountId: any, instanceNumber: any, isDisconnectedRetryMode?: boolean): Promise<void>;
    /**
     * Unsubscribe from account
     * @param {String} accountId id of the MetaTrader account to unsubscribe
     * @param {Number} instanceNumber instance index number
     * @returns {Promise} promise which resolves when socket unsubscribed
     */
    unsubscribe(accountId: any, instanceNumber: any): Promise<any>;
    /**
     * Cancels active subscription tasks for an instance id
     * @param {String} instanceId instance id to cancel subscription task for
     */
    cancelSubscribe(instanceId: any): void;
    /**
     * Cancels active subscription tasks for an account
     * @param {String} accountId account id to cancel subscription tasks for
     */
    cancelAccount(accountId: any): void;
    /**
     * Invoked on account timeout.
     * @param {String} accountId id of the MetaTrader account
     * @param {Number} instanceNumber instance index number
     */
    onTimeout(accountId: any, instanceNumber: any): void;
    /**
     * Invoked when connection to MetaTrader terminal terminated
     * @param {String} accountId id of the MetaTrader account
     * @param {Number} instanceNumber instance index number
     */
    onDisconnected(accountId: any, instanceNumber: any): Promise<void>;
    /**
     * Invoked when connection to MetaApi websocket API restored after a disconnect.
     * @param {Number} instanceNumber instance index number
     * @param {Number} socketInstanceIndex socket instance index
     * @param {String[]} reconnectAccountIds account ids to reconnect
     */
    onReconnected(instanceNumber: any, socketInstanceIndex: any, reconnectAccountIds: any): void;
    /**
     * Schedules a task to refresh the account data
     * @param {string} accountId account id
     */
    refreshAccount(accountId: any): void;
    _logSubscriptionError(accountId: any, message: any, error: any): void;
}
