import { Contact } from "./Contact";
export {};
interface CallbackOneParam<T1, T2 = any> {
    (param1: T1): T2;
}
declare class InitialPresence {
    private _initPresencePromise;
    private _initPresencePromiseResolve;
    private _initPresenceAck;
    private _initPresenceInterval;
    constructor();
    get initPresencePromise(): Promise<any>;
    set initPresencePromise(value: Promise<any>);
    get initPresencePromiseResolve(): CallbackOneParam<any>;
    set initPresencePromiseResolve(value: CallbackOneParam<any>);
    get initPresenceAck(): boolean;
    set initPresenceAck(value: boolean);
    get initPresenceInterval(): any;
    set initPresenceInterval(value: any);
}
/**
 * @class
 * @name Bubble
 * @public
 * @description
 *      This class represents a Bubble. <br>
 *		A bubble is an interaction between several participants based on IM media. A bubble is described by a name and a description.<br>
 *		Like for one-to-one conversation, A conversation within a bubble never ends and all interactions done can be retrieved. <br>
 */
declare class Bubble {
    get initialPresence(): InitialPresence;
    set initialPresence(value: InitialPresence);
    id: any;
    name: any;
    nameForLogs: string;
    topic: any;
    jid: any;
    creator: any;
    history: any;
    users: any;
    creationDate: any;
    visibility: any;
    customData: any;
    isActive: any;
    conference: any;
    disableNotifications: boolean;
    lastAvatarUpdateDate: null;
    guestEmails: any[];
    activeUsersCounter: number;
    avatar: string;
    organizers: Array<any>;
    members: Array<any>;
    containerId: string;
    containerName: string;
    status: string;
    private _initialPresence;
    isAlertNotificationEnabled: boolean;
    isOwnedByGroup: boolean;
    isActiveLastChange: boolean;
    processId: any;
    confEndpoints: string;
    allNames: Array<string>;
    participantNames: Array<string>;
    hasLobby: boolean;
    isOwnedByRoomAdmin: boolean;
    managedRoomPolicy: any;
    companyId: string;
    static RoomUserStatus: {
        INVITED: string;
        ACCEPTED: string;
        UNSUBSCRIBED: string;
        REJECTED: string;
        DELETED: string;
    };
    autoRegister: any;
    lastActivityDate: any;
    /**
     * @private
     * @readonly
     * @enum {number}
     */
    static Type: {
        PRIVATE: number;
        PUBLIC: number;
    };
    /**
     * The privilege of the Contact in the Bubble.
     * @public
     * @readonly
     * @enum {String}
     */
    static Privilege: {
        /** User level */
        USER: string;
        /** Moderator level */
        MODERATOR: string;
        /** Guest level */
        GUEST: string;
    };
    /**
     * Behaviour of the Bubble's History
     * @public
     * @readonly
     * @enum {String}
     */
    static History: {
        /** Full bubble history is accessible for newcomers */
        ALL: string;
        /** No history is accessible for newcomers, only new messages posted */
        NONE: string;
    };
    /**
     * @description the creator (owner ) of the bubble.
     */
    ownerContact: Contact;
    owner: boolean;
    autoAcceptInvitation: boolean;
    tags: Array<any>;
    constructor(_id: any, _name: any, _topic: any, _jid: any, _creator: any, _history: any, _users: any, _creationDate: any, _visibility: any, _customData: any, _isActive: any, _conference: any, _disableNotifications: boolean, _lastAvatarUpdateDate: any, _guestEmails: [], _activeUsersCounter: number, _autoRegister: boolean, _lastActivityDate: any, _autoAcceptInvitation: boolean, _tags: Array<any>, _avatarDomain: string, _containerId: string, _containerName: string, _isAlertNotificationEnabled: boolean, _isOwnedByGroup: boolean, _isActiveLastChange: boolean, _processId: any, _confEndpoints: string, _allNames: Array<string>, _participantNames: Array<string>);
    /**
     * Method helper to know if room is a meeting
     * @private
     */
    isMeetingBubble(): boolean;
    getStatusForUser(userId: any): any;
    setUsers(_users: any): void;
    get getNameForLogs(): string;
    updateBubble(data: any, contactsService: any): Promise<this>;
    /**
     * @function
     * @public
     * @name BubbleFactory
     * @description
     * This class is used to create a bubble from data object
     */
    static BubbleFactory(avatarDomain: any, contactsService: any): (data: any) => Promise<Bubble>;
    getBubbleLogInfos(): string;
}
declare function getBubbleLogInfos(bubble: Bubble): string;
export { Bubble, InitialPresence, getBubbleLogInfos };
declare const _default: {
    Bubble: typeof Bubble;
    InitialPresence: typeof InitialPresence;
    getBubbleLogInfos: typeof getBubbleLogInfos;
};
export default _default;
