export {};
import { EventEmitter } from "events";
import { Core } from "../Core";
import { Logger } from "./Logger";
/**
 * @class
 * @name Events
 * @description
 *      This module fires every events that come from Rainbow.<br>
 *      To receive them, you need to subscribe individually to each of the following events<br>
 * @fires Events#rainbow_onxmmpeventreceived
 * @fires Events#rainbow_onxmmprequestsent
 * @fires Events#rainbow_onrainbowversionwarning
 * @fires Events#rainbow_onmessageserverreceiptreceived
 * @fires Events#rainbow_onmessagereceiptreceived
 * @fires Events#rainbow_onmessagereceiptreadreceived
 * @fires Events#rainbow_onmessagereceived
 * @fires Events#rainbow_onsendmessagefailed
 * @fires Events#rainbow_oncontactpresencechanged
 * @fires Events#rainbow_onpresencechanged
 * @fires Events#rainbow_onconversationremoved
 * @fires Events#rainbow_onconversationchanged
 * @fires Events#rainbow_onloadConversationHistoryCompleted
 * @fires Events#rainbow_onallmessagedremovedfromconversationreceived
 * @fires Events#rainbow_onchatstate
 * @fires Events#rainbow_oncontactinformationchanged
 * @fires Events#rainbow_onuserinformationchanged
 * @fires Events#rainbow_onuserpasswordconfig
 * @fires Events#rainbow_onuserinvitereceived
 * @fires Events#rainbow_onuserinviteaccepted
 * @fires Events#rainbow_onuserinvitecanceled
 * @fires Events#rainbow_oncontactremovedfromnetwork
 * @fires Events#rainbow_onbubbleaffiliationchanged
 * @fires Events#rainbow_onbubblepresencechanged
 * @fires Events#rainbow_onbubbleownaffiliationchanged
 * @fires Events#rainbow_onbubbledeleted
 * @fires Events#rainbow_onbubbleinvitationreceived
 * @fires Events#rainbow_onbubblecontactinvitationreceived
 * @fires Events#rainbow_onbubbleconferencestartedreceived
 * @fires Events#rainbow_onbubbleconferencestoppedreceived
 * @fires Events#rainbow_onbubbleconferencedelegatereceived
 * @fires Events#rainbow_onbubbleconferenceupdated
 * @fires Events#rainbow_onbubblecustomdatachanged
 * @fires Events#rainbow_onbubblecontactchanged
 * @fires Events#rainbow_onbubbletopicchanged
 * @fires Events#rainbow_onbubbleprivilegechanged
 * @fires Events#rainbow_onbubbleavatarchanged
 * @fires Events#rainbow_onbubblenamechanged
 * @fires Events#rainbow_onopeninvitationupdate
 * @fires Events#rainbow_ongroupcreated
 * @fires Events#rainbow_ongroupdeleted
 * @fires Events#rainbow_ongroupupdated
 * @fires Events#rainbow_onuseraddedingroup
 * @fires Events#rainbow_onuserremovedfromgroup
 * @fires Events#rainbow_onstarted
 * @fires Events#rainbow_onstopped
 * @fires Events#rainbow_onready
 * @fires Events#rainbow_onerror
 * @fires Events#rainbow_onconnected
 * @fires Events#rainbow_onconnectionerror
 * @fires Events#rainbow_ondisconnected
 * @fires Events#rainbow_onreconnecting
 * @fires Events#rainbow_onfailed
 * @fires Events#rainbow_oncallupdated
 * @fires Events#rainbow_onconferenced
 * @fires Events#rainbow_ontelephonystatuschanged
 * @fires Events#rainbow_onnomadicstatusevent
 * @fires Events#rainbow_onvoicemessageupdated
 * @fires Events#rainbow_onvoicemessagesinfo
 * @fires Events#rainbow_oncallforwarded
 * @fires Events#rainbow_onchannelmessagereceived
 * @fires Events#rainbow_onchannelmyappreciationreceived
 * @fires Events#rainbow_onchannelmessagedeletedreceived
 * @fires Events#rainbow_onprofilefeatureupdated
 * @fires Events#rainbow_onfilecreated
 * @fires Events#rainbow_onfileupdated
 * @fires Events#rainbow_onfiledeleted
 * @fires Events#rainbow_onthumbnailcreated
 * @fires Events#rainbow_onwebinarupdated
 * @fires Events#rainbow_onchannelupdated
 * @fires Events#rainbow_onchannelusersubscription
 * @fires Events#rainbow_onmediapropose
 * @fires Events#rainbow_onmediaretract
 * @fires Events#rainbow_oncalllogupdated
 * @fires Events#rainbow_oncalllogackupdated
 * @fires Events#rainbow_onfavoritecreated
 * @fires Events#rainbow_onfavoriteupdated
 * @fires Events#rainbow_onfavoritedeleted
 * @fires Events#rainbow_onxmpperror
 * @fires Events#rainbow_onalertmessagereceived
 * @fires Events#rainbow_onbubblescontainercreated
 * @fires Events#rainbow_onbubblescontainerupdated
 * @fires Events#rainbow_onbubblescontainerdeleted
 * @fires Events#rainbow_onusertokenrenewfailed
 * @fires Events#rainbow_onusertokenwillexpire
 * @fires Events#rainbow_onbubblepollcreated
 * @fires Events#rainbow_onbubblepolldeleted
 * @fires Events#rainbow_onbubblepollpublished
 * @fires Events#rainbow_onbubblepollunpublished
 * @fires Events#rainbow_onbubblepollterminated
 * @fires Events#rainbow_onbubblepollupdated
 * @fires Events#rainbow_onbubblepollvoted
 * @fires Events#rainbow_onconnectorcommand
 * @fires Events#rainbow_onconnectorconfig
 * @fires Events#rainbow_onconnectorcommandended
 * @fires Events#rainbow_onconnectorimportstatus
 * @fires Events#rainbow_onEWSgetevents
 * @fires Events#rainbow_onEWSgetautoreply
 * @fires Events#rainbow_onrbvoicerawevent
 * @fires Events#rainbow_onjoincompanyinvitereceived
 * @fires Events#rainbow_onjoincompanyrequestreceived
 * @fires Events#rainbow_onlogsconfig
 * @fires Events#rainbow_ontaskcreated
 * @fires Events#rainbow_ontaskupdated
 * @fires Events#rainbow_ontaskdeleted
 * @fires Events#rainbow_on429BackoffError
 * @fires Events#rainbow_onrainbowcpaasreceived
 * @fires Events#rainbow_ontelephonyrvcp
 * @fires Events#rainbow_ontelephonyrvcppresence
 * @fires Events#rainbow_ontelephonypcg
 * @fires Events#rainbow_ontelephonypcgpresence
 * @fires Events#rainbow_onconference
 * @fires Events#rainbow_onpinmanagement
 * @fires Events#rainbow_onvoicemailreceived
 */
declare class Events {
    get logEmitter(): EventEmitter;
    set logEmitter(value: EventEmitter);
    _logger: Logger;
    _filterCallback: Function;
    _evReceiver: EventEmitter;
    _evPublisher: EventEmitter;
    _core: Core;
    private _logEmitter;
    sdkPublicEventsName: string[];
    waitBeforeBubblePresenceSend: boolean;
    constructor(_logger: Logger, _filterCallback: Function);
    listenerData(): {
        receiver: {
            listenerCount: number;
        };
        emitter: {
            listenerCount: number;
        };
    };
    get iee(): EventEmitter;
    get eee(): EventEmitter;
    /**
     * @method onLog
     * @public
     * @memberof Events
     * @instance
     * @param {string} event The event name to subscribe
     * @param {function} callback The function called when the even is fired
     * @return {Object} The events instance to be able to chain subscriptions
     * @description
     *      Subscribe to an event raised when a log is done.
     */
    onLog(event: any, callback: any): EventEmitter;
    /**
     * @method removeLogListener
     * @public
     * @memberof Events
     * @instance
     * @param {string} event The event name to unsubscribe
     * @param {function} callback The function called when the even is fired
     * @return {Object} The events instance to be able to chain subscriptions
     * @description
     *      Unsubscribe to an event raised when a log is done.
     */
    removeLogListener(event: any, callback: any): EventEmitter<[never]>;
    /**
     * @method on
     * @public
     * @memberof Events
     * @instance
     * @param {string} event The event name to subscribe
     * @param {function} callback The function called when the even is fired
     * @return {Object} The events instance to be able to chain subscriptions
     * @description
     *      Subscribe to an event
     */
    on(event: any, callback: any): EventEmitter;
    /**
     * @method emit
     * @private
     * @memberof Events
     * @instance
     * @param {string} eventName name for the event
     * @param {any} data arguments for the event
     * @return nothing
     * @description
     *      Emit an event.
     */
    emit(eventName: any, data: any): void;
    /**
     * @method removeListener
     * @public
     * @memberof Events
     * @instance
     * @param {string} eventName The event name to unsubscribe
     * @param {function} listener The listener called when the even is fired
     * @return {Object} The events instance to be able to remove a subscription from chain.
     * @description
     *      Unsubscribe to an event
     */
    removeListener(eventName: string | symbol, listener: (...args: any[]) => void): EventEmitter;
    /**
     * @method once
     * @public
     * @memberof Events
     * @instance
     * @param {string} event The event name to subscribe
     * @param {function} callback The function called when the even is fired
     * @return {Object} The events instance to be able to chain subscriptions
     * @description
     *      Subscribe to an event only one time (fired only the first time)
     */
    once(event: string, callback: (...args: any[]) => void): EventEmitter;
    publish(event: string, data: any): void;
    /**
     * @method publishEvent
     * @private
     * @memberof Events
     * @instance
     * @param {...*} args all arguments for the event
     * @return nothing
     * @description
     *      Add "rainbow_on" prefix to event name, print it human readable, and raises it.
     */
    publishEvent(...args: any[]): void;
    setCore(_core: Core): void;
}
export { Events };
