import { GenericService } from "./GenericService";
export {};
import { EventEmitter } from "events";
import { Logger } from "../common/Logger";
import { Core } from "../Core.js";
declare const FeaturesEnum: {
    COMPANY_ADMIN_COUNT: string;
    COMPANY_LOGO_MODIFICATION: string;
    COMPANY_DOMAIN_NAME_MODIFICATION: string;
    COMPANY_DETAILS_MODIFICATION: string;
    WEBRTC_FOR_MOBILE: string;
    BUBBLE_PARTICIPANT_COUNT: string;
    TELEPHONY_BASIC_CALL: string;
    TELEPHONY_SECOND_CALL: string;
    TELEPHONY_TRANSFER_CALL: string;
    TELEPHONY_CONFERENCE_CALL: string;
    TELEPHONY_DEFLECT_CALL: string;
    TELEPHONY_PHONE_BOOK: string;
    TELEPHONY_VOICE_MAIL: string;
    TELEPHONY_CALL_FORWARD: string;
    TELEPHONY_NOMADIC: string;
    CONFERENCE_PARTICIPANT_COUNT: string;
    CONFERENCE_PARTICIPANT_ALLOWED: string;
    WEBRTC_CONFERENCE_ALLOWED: string;
    WEBRTC_CONFERENCE_PARTICIPANT_COUNT: string;
    WEBRTC_PARTICIPANT_ALLOWED: string;
    CONFERENCE_ALLOWED: string;
    CONFERENCE_DIAL_OUT: string;
    CONFERENCE_RECORDING: string;
    MSO365_CALENDAR_PRESENCE: string;
    MSO365_DIRECTORY_SEARCH: string;
    MS_OUTLOOK_PLUGIN: string;
    MS_SKYPE_PLUGIN: string;
    FILE_SHARING_QUOTA_GB: string;
    GOOGLE_CALENDAR_PRESENCE: string;
    WEBRTC_P2P_RECORDING: string;
    BUBBLE_PROMOTE_MEMBER: string;
    BUBBLE_GUESTS_ALLOWED: string;
    TELEPHONY_WEBRTC_GATEWAY: string;
    TELEPHONY_WEBRTC_PSTN_CALLING: string;
    ANALYTICS_DASHBOARD_EC: string;
    ANALYTICS_DASHBOARD_BP: string;
    TELEPHONY_CALL_SUBJECT: string;
    CHANNEL_CREATE: string;
    CHANNEL_CREATE_ADMIN_ROLE_BYPASS: string;
    CHANNEL_ACTIVATED: string;
    PERSONAL_CONFERENCE_ALLOWED: string;
    ALERT_NOTIFICATIONS_ALLOWED: string;
};
declare class ProfilesService extends GenericService {
    private stats;
    features: any;
    profiles: any;
    mainOffers: any;
    private thirdPartyApps;
    private startDate;
    private timer;
    static getClassName(): string;
    getClassName(): string;
    static getAccessorName(): string;
    getAccessorName(): string;
    constructor(_core: Core, _eventEmitter: EventEmitter, _logger: Logger, _startConfig: {
        start_up: boolean;
        optional: boolean;
    });
    /*********************************************************************/
    /** LIFECYCLE STUFF                                                 **/
    /*********************************************************************/
    start(_options: any, stats: any): void;
    stop(): Promise<any>;
    restart(): void;
    init(useRest: boolean): Promise<unknown>;
    onUserUpdateNeeded(): void;
    /*********************************************************************/
    /** PROFILE API STUFF                                          **/
    /*********************************************************************/
    /**
     * @public
     * @nodered true
     * @method getServerProfile
     * @async
     * @category Profiles PROFILES
     * @description
     * This API can be used to get user profiles and features.<br>
     * @return {Promise<any>}
     */
    getServerProfile(): Promise<[unknown, unknown]>;
    /**
     * @public
     * @nodered true
     * @method getServerProfiles
     * @async
     * @category Profiles PROFILES
     * @description
     * This API can be used to get user profiles.<br>
     * This API can only be used by user himself
     * @return {Promise<any>}
     */
    getServerProfiles(): Promise<unknown>;
    /**
     * @public
     * @nodered true
     * @method getMyProfileOffer
     * @category Profiles PROFILES
     * @description
     * This API can be used to get user profile offer.<br>
     * Returns the profile "Enterprise", "Business", "Essential" or null (if none of them)
     * @return {any}
     */
    getMyProfileOffer(): any;
    /**
     * @public
     * @nodered true
     * @method getMyProfileName
     * @category Profiles PROFILES
     * @description
     * This API can be used to get user profile offer name.<br>
     * Returns the profile "Enterprise", "Business", "Essential" or null (if none of them)
     * @return {any}
     */
    getMyProfileName(): any;
    /**
     * @public
     * @nodered true
     * @method getMyProfiles
     * @category Profiles PROFILES
     * @description
     * This API can be used to get user profiles.<br>
     * @return {any}
     */
    getMyProfiles(): any[];
    /**
     * @public
     * @nodered true
     * @method getThirdPartyApps
     * @async
     * @category Profiles PROFILES
     * @param {boolean} force=false Parameter force in order to refresh the list
     * @description
     *  Get The list of the Third Party Application that have access to this Rainbow Account.
     * @return {Promise<any>}
     */
    getThirdPartyApps(force?: boolean): Promise<unknown>;
    /**
     * @public
     * @nodered true
     * @method revokeThirdPartyAccess
     * @async
     * @category Profiles PROFILES
     * @param {string} tokenId The tokenId should be sent as a parameter
     * @description
     * Revoke the access of a third-party application from Rainbow
     * @return {Promise<any>}
     */
    revokeThirdPartyAccess(tokenId: string): Promise<unknown>;
    /**
     * @public
     * @nodered true
     * @method getServerProfilesFeatures
     * @async
     * @category Profiles FEATURES
     * @description
     * This API can be used to get user profile features.<br>
     * @return {Promise<any>}
     */
    getServerProfilesFeatures(): Promise<unknown>;
    /*********************************************************************/
    /** USER DATA API STUFF                                             **/
    /*********************************************************************/
    /**
     * @public
     * @nodered true
     * @method isFeatureEnabled
     * @category Profiles FEATURES
     * @description
     * This API can be used to know if a feature is enabled.<br>
     * @return {any}
     */
    isFeatureEnabled(featureUniqueRef: string): any;
    /**
     * @public
     * @nodered true
     * @method getFeatureLimitMax
     * @category Profiles FEATURES
     * @description
     * This API can be used to get Max limit of feature.<br>
     * @return {any}
     */
    getFeatureLimitMax(featureUniqueRef: string): any;
    /**
     * @public
     * @nodered true
     * @method getFeatureLimitMin
     * @category Profiles FEATURES
     * @description
     * This API can be used to get Min limit of feature.<br>
     * @return {any}
     */
    getFeatureLimitMin(featureUniqueRef: string): any;
    /**
     * @public
     * @nodered true
     * @method getMyProfileFeatures
     * @category Profiles FEATURES
     * @description
     * This API can be used to get features of the profile of connected user.<br>
     * @return {any}
     */
    getMyProfileFeatures(): {};
    getFeaturesEnum(): {
        COMPANY_ADMIN_COUNT: string;
        COMPANY_LOGO_MODIFICATION: string;
        COMPANY_DOMAIN_NAME_MODIFICATION: string;
        COMPANY_DETAILS_MODIFICATION: string;
        WEBRTC_FOR_MOBILE: string;
        BUBBLE_PARTICIPANT_COUNT: string;
        TELEPHONY_BASIC_CALL: string;
        TELEPHONY_SECOND_CALL: string;
        TELEPHONY_TRANSFER_CALL: string;
        TELEPHONY_CONFERENCE_CALL: string;
        TELEPHONY_DEFLECT_CALL: string;
        TELEPHONY_PHONE_BOOK: string;
        TELEPHONY_VOICE_MAIL: string;
        TELEPHONY_CALL_FORWARD: string;
        TELEPHONY_NOMADIC: string;
        CONFERENCE_PARTICIPANT_COUNT: string;
        CONFERENCE_PARTICIPANT_ALLOWED: string;
        WEBRTC_CONFERENCE_ALLOWED: string;
        WEBRTC_CONFERENCE_PARTICIPANT_COUNT: string;
        WEBRTC_PARTICIPANT_ALLOWED: string;
        CONFERENCE_ALLOWED: string;
        CONFERENCE_DIAL_OUT: string;
        CONFERENCE_RECORDING: string;
        MSO365_CALENDAR_PRESENCE: string;
        MSO365_DIRECTORY_SEARCH: string;
        MS_OUTLOOK_PLUGIN: string;
        MS_SKYPE_PLUGIN: string;
        FILE_SHARING_QUOTA_GB: string;
        GOOGLE_CALENDAR_PRESENCE: string;
        WEBRTC_P2P_RECORDING: string;
        BUBBLE_PROMOTE_MEMBER: string;
        BUBBLE_GUESTS_ALLOWED: string;
        TELEPHONY_WEBRTC_GATEWAY: string;
        TELEPHONY_WEBRTC_PSTN_CALLING: string;
        ANALYTICS_DASHBOARD_EC: string;
        ANALYTICS_DASHBOARD_BP: string;
        TELEPHONY_CALL_SUBJECT: string;
        CHANNEL_CREATE: string;
        CHANNEL_CREATE_ADMIN_ROLE_BYPASS: string;
        CHANNEL_ACTIVATED: string;
        PERSONAL_CONFERENCE_ALLOWED: string;
        ALERT_NOTIFICATIONS_ALLOWED: string;
    };
}
export { ProfilesService, FeaturesEnum };
