import { Bubble } from "./models/Bubble";
import { Logger } from "./Logger";
import { EventEmitter } from "events";
import { Core } from "../Core";
import { LevelLogs } from "./LevelLogs.js";
export {};
declare class BubblesManager extends LevelLogs {
    private _xmpp;
    private _logger;
    private _eventEmitter;
    private _imOptions;
    private _rest;
    private _presence;
    private _bubblesservice;
    private _options;
    private _s2s;
    private _useXMPP;
    private _useS2S;
    private fibonacciStrategy;
    private poolBubbleToJoin;
    private poolBubbleJoinInProgress;
    private poolBubbleAlreadyJoined;
    private lockEngine;
    private lockKey;
    private nbBubbleAdded;
    private delay;
    private MAXBUBBLEJOJNINPROGRESS;
    private maxBubbleJoinInProgress;
    private allbubbleserror;
    static getClassName(): string;
    getClassName(): string;
    static getAccessorName(): string;
    getAccessorName(): string;
    constructor(_eventEmitter: EventEmitter, _logger: Logger);
    init(_options: any, _core: Core): Promise<unknown>;
    reset(): Promise<any>;
    lock(fn: any): any;
    addBubbleToJoin(bubble: any): Promise<any>;
    removeBubbleToJoin(bubble: any): Promise<any>;
    getBubbleToJoin(): Promise<Bubble>;
    treatAllBubblesToJoin(bulkSendPresence?: boolean): Promise<unknown>;
    /**
     * @private
     * @method _onBubbleaffiliationchanged
     * @instance
     * @param {Object} bubble contains information about bubble and user's jid
     * @description
     *      Method called when affilitation (presence) to a bubble changed
     */
    _onBubbleaffiliationchanged(bubble: any): Promise<void>;
    /**
     * @private
     * @method _onOwnAffiliationChanged
     * @instance
     * @param {Object} bubble contains information about bubble and user's jid
     * @description
     *      Method called when affilitation (presence) to a bubble changed
     */
    _onOwnAffiliationChanged(bubble: any): Promise<void>;
    /**
     * @private
     * @method _onbubblepresencechanged
     * @instance
     * @param {Object} bubblepresenceinfo contains information about presence in bubble
     * @description
     *      Method called when affilitation (presence) to a bubble changed
     */
    _onbubblepresencechanged(bubblepresenceinfo: any): Promise<void>;
    _onallbubbleserror(error: Error): Promise<void>;
    addBubbleToJoinInProgress(bubble: any): Promise<any>;
    removeBubbleToJoinInProgress(bubble: any): Promise<any>;
    resetBubbleFromJoinInProgressToBubbleToJoin(): Promise<any>;
    addBubbleAlreadyJoined(bubble: any): Promise<any>;
    removeBubbleAlreadyJoined(bubble: any): Promise<any>;
}
export { BubblesManager };
