import { PresenceDetails, PresenceLevel, PresencePhone, PresenceShow, PresenceStatus } from "./common/models/PresenceRainbow.js";
import { TasksService } from "./services/TasksService.js";
import { Core } from "./Core";
import { Appreciation } from "./common/models/Channel";
import { ImsService } from "./services/ImsService";
import { ChannelsService } from "./services/ChannelsService";
import { S2SService } from "./services/S2SService";
import { InvitationsService } from "./services/InvitationsService";
import { FavoritesService } from "./services/FavoritesService";
import { CallLogService } from "./services/CallLogService";
import { TelephonyService } from "./services/TelephonyService";
import { SDKSTATUSENUM } from "./common/StateManager";
import { SettingsService } from "./services/SettingsService";
import { RESTService } from "./connection/RESTService";
import { AdminService, CLOUDPBXCLIOPTIONPOLICY } from "./services/AdminService";
import { FileStorageService } from "./services/FileStorageService";
import { FileServerService } from "./services/FileServerService";
import { Events } from "./common/Events";
import { GroupsService } from "./services/GroupsService";
import { BubblesService } from "./services/BubblesService";
import { PresenceService } from "./services/PresenceService";
import { ConversationsService } from "./services/ConversationsService";
import { ContactsService } from "./services/ContactsService";
import { AlertsService } from "./services/AlertsService";
import { ProfilesService } from "./services/ProfilesService";
import { DataStoreType, UrgencyType } from "./config/config";
import { WebinarsService } from "./services/WebinarsService";
import { RBVoiceService } from "./services/RBVoiceService";
import { HTTPoverXMPP } from "./services/HTTPoverXMPPService";
import { RPCoverXMPPService } from "./services/RPCoverXMPPService.js";
import { LEVELS, LEVELSCOLORS, LEVELSNAMES, LogLevelAreas } from "./common/LevelLogs.js";
import { CalendarManager } from "./common/CalendarManager.js";
import { AutoReplyManager } from "./common/AutoReplyManager.js";
/**
 * @public
 * @name NodeSDK
 * @class
 * @description
 * NodeSDK Class
 */
declare class NodeSDK {
    private _option;
    get option(): {};
    _core: Core;
    startTime: Date;
    static NodeSDK: any;
    private _logger;
    /**
     * @method constructor
     * @public
     * @description
     *      The entry point of the Rainbow Node SDK.
     * @param {Object} options SDK Startup options of constructor.
     * @param {string} options.rainbow.host "official", Can be "sandbox" (developer platform), "official" or any other hostname when using dedicated AIO.
     * @param {string} options.rainbow.mode "xmpp", The event mode used to receive the events. Can be `xmpp` or `s2s` (default : `xmpp`).
     * @param {string} options.xmpp.timeBetweenXmppRequests the time between two xmpp request (avoid burst)
     * @param {string} options.xmpp.raiseLowLevelXmppInEvent enable the raise of event "rainbow_onxmmpeventreceived" when a data is received in xmpp pipe.
     * @param {string} options.xmpp.xmppRessourceName to define the name of the xmpp resource.
     * @param {string} options.xmpp.raiseLowLevelXmppOutReq enable the raise of event "rainbow_onxmmprequestsent" when a data is sent in xmpp pipe.
     * @param {string} options.xmpp.maxIdleTimer to define the delay without xmpp exchange after which a ping is sent to server.
     * @param {string} options.xmpp.maxPingAnswerTimer to define the time to wait the xmpp ping response.
     * @param {string} options.xmpp.maxPendingAsyncLockXmppQueue the number of xmpp requests waiting for sending.
     * @param {string} options.s2s.hostCallback "http://3d260881.ngrok.io", S2S Callback URL used to receive events on internet.
     * @param {string} options.s2s.locallistenningport "4000", Local port where the events must be forwarded from S2S Callback Web server.
     * @param {string} options.s2s.expressEngine Local instance for S2S Callback Web server.
     * @param {string} options.rest.useRestAtStartup enable the REST requests to the rainbow server at startup (used with startWSOnly method). default value is true.
     * @param {string} options.rest.useGotLibForHttp allows to enable the use of `got` lib for REST requests (esle the old Request lib is used). Default value is true.
     * @param {string} options.rest.gotOptions, allows to customize the `got` lib for REST requests options. Default value is : </BR>
     *  {</BR>
     *  agentOptions: { </BR>
     * //Keep sockets around in a pool to be used by other requests in the future. Default = false</BR>
     * keepAlive: true, // ?: boolean or undefined;</BR>
     * </BR>
     * //When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 4301.</BR>
     * //Only relevant if keepAlive is set to true.</BR>
     * keepAliveMsecs: 4301, // ?: number or undefined;</BR>
     * </BR>
     * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity</BR>
     * maxSockets: 26, // ?: number or undefined;</BR>
     * </BR>
     * Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity.</BR>
     * maxTotalSockets: Infinity, // ?: number or undefined;</BR>
     * </BR>
     * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.</BR>
     * maxFreeSockets: 1001, // ?: number or undefined;</BR>
     * </BR>
     * Socket timeout in milliseconds. This will set the timeout after the socket is connected.</BR>
     * timeout: 60001 , // ?: number or undefined;</BR>
     * rejectUnauthorized: true // If not false, the server certificate is verified against the list of supplied CAs. Default: true.
     * }</BR> ,
     * gotRequestOptions : {</BR>
     *  timeout: { // This object describes the maximum allowed time for particular events.</BR>
     *      lookup: 800, // Starts when a socket is assigned.  Ends when the hostname has been resolved.</BR>
     *      connect: 1250, // Starts when lookup completes.  Ends when the socket is fully connected.</BR>
     *      secureConnect: 1250, // Starts when connect completes. Ends when the handshake process completes.</BR>
     *      socket: 2000, // Starts when the socket is connected. Resets when new data is transferred.</BR>
     *      send: 90000, // Starts when the socket is connected. Ends when all data have been written to the socket.</BR>
     *      response: 2000 // Starts when request has been flushed. Ends when the headers are received.</BR>
     *   }</BR>
     *  }</BR>
     * }</BR>
     *
     * @param {string} options.credentials.login "user@xxxx.xxx", The Rainbow email account to use.
     * @param {string} options.credentials.password "XXXXX", The password.
     * @param {string} options.application.appID "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", The Rainbow Application Identifier.
     * @param {string} options.application.appSecret "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX", The Rainbow Application Secret.
     * @param {string} options.proxy.host "xxx.xxx.xxx.xxx", The proxy address.
     * @param {string} options.proxy.port xxxx, The proxy port.
     * @param {string} options.proxy.protocol "http", The proxy protocol (note http is used to https also).
     * @param {string} options.proxy.user "proxyuser", The proxy username.
     * @param {string} options.proxy.password "XXXXX", The proxy password.
     * @param {boolean} options.logs.enableConsoleLogs false, Activate logs on the console.
     * @param {boolean} options.logs.enableFileLogs false, Activate the logs in a file.
     * @param {boolean} options.logs.enableEventsLogs: false, Activate the logs to be raised from the events service (with `onLog` listener). Used for logs in connection node in red node contrib.
     * @param {boolean} options.logs.enableEncryptedLogs: true, Activate the encryption of stanza in logs.
     * @param {boolean} options.logs.color true, Activate the ansii color in the log (more humain readable, but need a term console or reader compatible (ex : vim + AnsiEsc module)).
     * @param {string} options.logs.level "info", The level of logs. The value can be "error", "warn", "info", "trace", "http", "xmpp", "debug", "internalerror", "internal". These Severities of levels are shown in an inclusive order, so "error" level only show "error" logs, "warn" level only show "error" and "warn" levels, and so on.
     * @param {LogLevelAreas} options.logs.areas Areas allow to override the log level for specifics limited area of code.
     * @param {string} options.logs.customLabel "MyRBProject", A label inserted in every lines of the logs. It is usefull if you use multiple SDK instances at a same time. It allows to separate logs in console.
     * @param {string} options.logs.file.path "c:/temp/", Path to the log file.
     * @param {string} options.logs.file.customFileName "R-SDK-Node-MyRBProject", A label inserted in the name of the log file.
     * @param {string} options.logs.file.zippedArchive false Can activate a zip of file. It needs CPU process, so avoid it.
     * @param {boolean} options.testOutdatedVersion true, Parameter to verify at startup if the current SDK Version is the lastest published on npmjs.com.
     * @param {boolean} options.testDNSentry true, Parameter to verify at startup/reconnection that the rainbow server DNS entry name is available.
     * @param {boolean} options.httpoverxmppserver false, Activate the treatment of Http over Xmpp requests (xep0332).
     * @param {number} options.intervalBetweenCleanMemoryCache 21600000 (6 hours), There is a cleannig process to reduce memory use and this option allow to modify the interval between it.
     * @param {string} options.requestsRate.useRequestRateLimiter true, // Allows to use the rate limit of the http requests to server.
     * @param {string} options.requestsRate.maxReqByIntervalForRequestRate 600, // nb requests during the interval of the rate limit of the http requests to server.
     * @param {string} options.requestsRate.intervalForRequestRate 60, // nb of seconds used for the calcul of the rate limit of the rate limit of the http requests to server.
     * @param {string} options.requestsRate.timeoutRequestForRequestRate 600 // nb seconds Request stay in queue before being rejected if queue is full of the rate limit of the http requests to server.
     * @param {boolean} options.im.sendReadReceipt true, Allow to automatically send back a 'read' status of the received message. Usefull for Bots.
     * @param {string} options.im.messageMaxLength 16384, Maximum size of messages send by rainbow. Note that this value should not be modified without ALE Agreement. Max stanza's size on server is 18432.
     * @param {boolean} options.im.sendMessageToConnectedUser false, Forbid the SDK to send a message to the connected user it self. This is to avoid bot loopback.
     * @param {string} options.im.conversationsRetrievedFormat "small", Set the size of the conversation's content retrieved from server. Can be `small`, `medium`, `full`.
     * @param {string} options.im.storeMessages false, Tell the server to store the message for delay distribution and also for history. Please avoid to set it to true for a bot which will not read anymore the messages. It is a better way to store it in your own CPaaS application.
     * @param {boolean} options.im.copyMessage to manage if the Messages hint should not be copied to others resources (https://xmpp.org/extensions/xep-0334.html#no-copy) . The default value is true.
     * @param {string} options.im.nbMaxConversations 15, Parameter to set the maximum number of conversations to keep (defaut value to 15). Old ones are remove from XMPP server with the new method `ConversationsService::removeOlderConversations`.
     * @param {number} options.im.rateLimitPerHour 1000, Parameter to set the maximum of "message" stanza sent to server by hour. Default value is 1000.
     * @param {string} options.im.messagesDataStore Parameter to override the storeMessages parameter of the SDK to define the behaviour of the storage of the messages (Enum DataStoreType in lib/config/config , default value "DataStoreType.UsestoreMessagesField" so it follows the storeMessages behaviour).<br>
     *                         DataStoreType.NoStore "no-store" Tell the server to NOT store the messages for delay distribution or for history of the bot and the contact.<br>
     *                          DataStoreType.NoPermanentStore "no-permanent-store" Tell the server to NOT store the messages for history of the bot and the contact. But being stored temporarily as a normal part of delivery (e.g. if the recipient is offline at the time of sending).<br>
     *                          DataStoreType.StoreTwinSide "storetwinside" The messages are fully stored.<br>
     *                          DataStoreType.UsestoreMessagesField "OldstoreMessagesUsed" to follow the storeMessages SDK's parameter behaviour.
     * @param {boolean} options.im.autoInitialGetBubbles to allow automatic opening of the bubbles the user is in. Default value is true.
     * @param {boolean} options.im.autoInitialBubblePresence to allow automatic opening of conversation to the bubbles with sending XMPP initial presence to the room. Default value is true.
     * @param {number} options.im.maxBubbleJoinInProgress to define the maximum of simultaneous "send initial presence of the bubbles".
     * @param {boolean} options.im.autoInitialBubbleFormat to allow modify format of data received at getting the bubbles. Default value is true.
     * @param {boolean} options.im.autoInitialBubbleUnsubscribed to allow get the bubbles when the user is unsubscribed form it. Default value is true.
     * @param {boolean} options.im.autoLoadConversations to activate the retrieve of conversations from the server. The default value is true.
     * @param {boolean} options.im.autoLoadConversationHistory to activate the retrieve of conversation's messages from the server. The default value is false.
     * @param {boolean} options.im.autoLoadContacts to activate the retrieve of contacts from roster from the server. The default value is true.
     * @param {boolean} options.im.autoLoadCallLog to activate the retrieve of calllog from the server. The default value is false.
     * @param {boolean} options.im.forceHistoryGetContactFromServer Allows to force to retrieve information about contacts when history messages are getted from server.
     * @param {boolean} options.im.enableCarbon to manage carbon copy of message (https://xmpp.org/extensions/xep-0280.html). The default value is true.     * @param {string} options.im.enablesendurgentpushmessages permit to add <retry-push xmlns='urn:xmpp:hints'/> tag to allows the server sending this messge in push with a small ttl (meaning urgent for apple/google backend) and retry sending it 10 times to increase probability that it is received by mobile device. The default value is false.
     * @param {boolean} options.im.enablesendurgentpushmessages permit to add <retry-push xmlns='urn:xmpp:hints'/> tag to allows the server sending this messge in push with a small ttl (meaning urgent for apple/google backend) and retry sending it 10 times to increase probability that it is received by mobile device. The default value is false.
     * @param {boolean} options.im.storeMessagesInConversation Allows to store messages in conversation cache if true else the conversation.messages property stay empty. The default value is true.
     * @param {number} options.im.maxMessagesStoredInConversation Allows to store messages in conversation with a maximum entries. The default value is 1000. Note: `storeMessagesInConversation` needs to be setted to true to be relevant.
     * @param {Object} options.servicesToStart <br>
     *    Services to start. This allows to start the SDK with restricted number of services, so there are less call to API.<br>
     *    Take care, severals services are linked, so disabling a service can disturb an other one.<br>
     *    By default all the services are started. Events received from server are not yet filtered.<br>
     *    So this feature is realy risky, and should be used with much more cautions.<br>
     *        {<br>
     *       "bubbles": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "telephony": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "channels": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "admin": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "fileServer": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "fileStorage": {<br>
     *           start_up: true,<br>
     *       },<br>
     *       "calllog": {<br>
     *           "start_up": true,<br>
     *       },<br>
     *       "favorites": {<br>
     *           "start_up": true,<br>
     *
     */
    constructor(options: Object);
    /**
     * @public
     * @method start
     * @instance
     * @param {String} token a valid token to login without login/password. <br>
     * if Oauth token is provided to the SDK then application MUST implement the refresh token and send it back to SDK with `setRenewedToken` API, while following event are raised : <br>
     * Events rainbow_onusertokenrenewfailed : fired when an oauth token is expired. <br>
     * Events rainbow_onusertokenwillexpire : fired when the duration of the current user token reaches half of the maximum time. <br>
     *      For instance, if the token is valid for 1 hour, this event will arrive at 30 minutes. <br>
     *      It is recommended to renew the token upon the arrival of this event. <br>
     * @description
     *    Start the SDK <br>
     *    Note :<br>
     *    The token must be empty to signin with credentials.<br>
     *    The SDK is disconnected when the renew of the token had expired (No initial signin possible with out credentials.)<br>
     *    There is a sample using the oauth and sdk at https://github.com/Rainbow-CPaaS/passport-rainbow-oauth2-with-rainbow-node-sdk-example <br>
     */
    start(token?: string): Promise<unknown>;
    /**
     * @public
     * @method startWSOnly
     * @instance
     * @description
     *    Start the SDK with only XMPP link<br>
     *
     */
    startWSOnly(token: any, userInfos: any): Promise<unknown>;
    /**
     * @public
     * @method startCLI
     * @instance
     * @description
     *      Start the SDK in CLI Mode
     */
    startCLI(): Promise<unknown>;
    /**
     * @public
     * @method siginCLI
     * @instance
     * @description
     *      Sign-in in CLI Mode (without the XMPP link)
     */
    signinCLI(): Promise<unknown>;
    /**
     * @public
     * @method setRenewedToken
     * @instance
     * @description
     *    Set the token renewed externaly of the SDK. This is for oauth authentication.</br>
     *   Note: An event #rainbow_onusertokenrenewfailed is fired when an oauth token is expired.</br>
     *      The application must refresh the token and send it back to SDK with `setRenewedToken` API.
     */
    setRenewedToken(strToken: any): Promise<void>;
    /**
     * @public
     * @method setCredentialPassword
     * @instance
     * @description
     *    Set the password credential of the Bot for the login.</br>
     *    Note: The SDK use this password in the next connection/reconnection.
     */
    setCredentialPassword(strPassword: any): Promise<void>;
    /**
     * @public
     * @method stop
     * @instance
     * @description
     *    Stop the SDK
     */
    stop(): Promise<unknown>;
    /**
     * @public
     * @method destroy
     * @instance
     * @description
     *    This method should be called before the bot to point to the SDK's instance to remove listener of "process" object. </br>
     *    And then avoid the error `MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added to [process]. Use emitter.setMaxListeners() to increase limit` when the SDK is instantiated and removed more than
     *    10 times.
     *
     */
    destroy(): void;
    stopProcess(): () => Promise<never>;
    setAreasLogs(areasLogs: LogLevelAreas): void;
    /**
     * @public
     * @method {LogLevelAreas} getAreasLogs
     * @instance
     * @nodered true
     * @description
     *    Get access to the Logs Areas
     * @return {ImsService}
     */
    getAreasLogs(): LogLevelAreas;
    /**
     * @public
     * @property {ImsService} im
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the IM module
     * @return {ImsService}
     */
    get im(): ImsService;
    /**
     * @public
     * @property {ChannelsService} channels
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Channels module
     * @return {ChannelsService}
     */
    get channels(): ChannelsService;
    /**
     * @public
     * @property {ContactsService} contacts
     * @nodered true
     * @service true
     * @instance
     * @description
     *    Get access to the Contacts module
     * @return {ContactsService}
     */
    get contacts(): ContactsService;
    /**
     * @public
     * @property {ConversationsService} conversations
     * @nodered true
     * @service true
     * @instance
     * @description
     *    Get access to the Conversations module
     * @return {ConversationsService}
     */
    get conversations(): ConversationsService;
    /**
     * @public
     * @property {PresenceService} presence
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Presence module
     * @return {PresenceService}
     */
    get presence(): PresenceService;
    /**
     * @public
     * @property {BubblesService} bubbles
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Bubbles module
     * @return {BubblesService}
     */
    get bubbles(): BubblesService;
    /**
     * @public
     * @property {GroupsService} groups
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Groups module
     * @return {GroupsService}
     */
    get groups(): GroupsService;
    /**
     * @public
     * @property {Events} events
     * @instance
     * @nodered true
     * @description
     *    Get access to the Events module
     * @return {Events}
     */
    get events(): Events;
    /**
     * @public
     * @property {FileServerService} fileServer
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the File Server module
     * @return {FileServerService}
     */
    get fileServer(): FileServerService;
    /**
     * @public
     * @property {FileStorageService} fileStorage
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the File Storage module
     * @return {FileStorageService}
     */
    get fileStorage(): FileStorageService;
    /**
     * @public
     * @property {AdminService} admin
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Admin module
     * @return {AdminService}
     */
    get admin(): AdminService;
    /**
     * @public
     * @property {Object} profiles
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Profiles module
     * @return {ProfilesService}
     */
    get profiles(): ProfilesService;
    /**
     * @private
     * @property {RESTService} rest
     * @instance
     * @description
     *    Get access to the REST module
     * @return {RESTService}
     */
    get rest(): RESTService;
    /**
     * @public
     * @property {SettingsService} settings
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the Settings module
     * @return {SettingsService}
     */
    get settings(): SettingsService;
    /**
     * @public
     * @property {SDKSTATUSENUM} state
     * @instance
     * @nodered true
     * @description
     *    Return the state of the SDK (eg: STOPPED, STARTED, CONNECTED, READY, DISCONNECTED, RECONNECTING, FAILED, ERROR)
     * @return {SDKSTATUSENUM}
     */
    get state(): SDKSTATUSENUM;
    /**
     * @public
     * @property {String} version
     * @instance
     * @nodered true
     * @description
     *      Return the version of the SDK
     * @return {String}
     */
    get version(): any;
    /**
     * @public
     * @property {ConnectedUser} connectedUser
     * @instance
     * @nodered true
     * @description
     *      Return the connected user information
     * @return {any}
     */
    get connectedUser(): any;
    /**
     * @public
     * @property {TelephonyService} telephony
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the telephony module
     * @return {TelephonyService}
     */
    get telephony(): TelephonyService;
    /**
     * @public
     * @property {TasksService} tasks
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the tasks module
     * @return {TasksService}
     */
    get tasks(): TasksService;
    /**
     * @public
     * @property {CallLogService} calllog
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the calllog module
     * @return {CallLogService}
     */
    get calllog(): CallLogService;
    /**
     * @public
     * @property {FavoritesService} favorites
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the favorite module
     * @return {FavoritesService}
     */
    get favorites(): FavoritesService;
    /**
     * @public
     * @property {InvitationsService} invitations
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the invitation module
     * @return {InvitationsService}
     */
    get invitations(): InvitationsService;
    /**
     * @public
     * @property {S2SService} s2s
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the s2s module
     * @return {S2SService}
     */
    get s2s(): S2SService;
    /**
     * @public
     * @property {AlertsService} alerts
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the alerts module
     * @return {AlertsService}
     */
    get alerts(): AlertsService;
    /**
     * @public
     * @property {RBVoiceService} alerts
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the webinar module
     * @return {RBVoiceService}
     */
    get rbvoice(): RBVoiceService;
    /**
     * @public
     * @property {WebinarsService} alerts
     * @intance
     * @nodered true
     * @service true
     * @description
     *    Get access to the webinar module
     * @return {WebinarsService}
     */
    get webinars(): WebinarsService;
    /**
     * @public
     * @property {HTTPoverXMPP} httpoverxmpp
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the httpoverxmpp module
     * @return {HTTPoverXMPP}
     */
    get httpoverxmpp(): HTTPoverXMPP;
    /**
     * @public
     * @property {RPCoverXMPPService} rpcoverxmpp
     * @instance
     * @nodered true
     * @service true
     * @description
     *    Get access to the rpcoverxmpp module
     * @return {RPCoverXMPPService}
     */
    get rpcoverxmpp(): RPCoverXMPPService;
    /**
     * @public
     * @property {Object} DataStoreType
     * @description
     *    Get access to the DataStoreType type
     * @return {DataStoreType}
     */
    static get DataStoreType(): typeof DataStoreType;
    /**
     * @public
     * @property {Object} UrgencyType
     * @description
     *    Get access to the UrgencyType type
     * @return {UrgencyType}
     */
    static get UrgencyType(): typeof UrgencyType;
    /**
     * @public
     * @property {Object} CLOUDPBXCLIOPTIONPOLICY
     * @description
     *    Get access to the CLOUDPBXCLIOPTIONPOLICY type
     * @return {CLOUDPBXCLIOPTIONPOLICY}
     */
    static get CLOUDPBXCLIOPTIONPOLICY(): typeof CLOUDPBXCLIOPTIONPOLICY;
    /**
     * @public
     * @property {Object} PresenceLevel
     * @description
     *    Get access to the PresenceLevel type
     * @return {PresenceLevel}
     */
    static get PresenceLevel(): typeof PresenceLevel;
    /**
     * @public
     * @property {Object} PresenceShow
     * @description
     *    Get access to the PresenceShow type
     * @return {PresenceShow}
     */
    static get PresenceShow(): typeof PresenceShow;
    /**
     * @public
     * @property {Object} PresenceStatus
     * @description
     *    Get access to the PresenceStatus type
     * @return {PresenceStatus}
     */
    static get PresenceStatus(): typeof PresenceStatus;
    /**
     * @public
     * @property {Object} PresenceDetails
     * @description
     *    Get access to the PresenceDetails type
     * @return {PresenceDetails}
     */
    static get PresenceDetails(): typeof PresenceDetails;
    /**
     * @public
     * @property {Object} PresencePhone
     * @description
     *    Get access to the PresencePhone type
     * @return {PresencePhone}
     */
    static get PresencePhone(): typeof PresencePhone;
    /**
     * @public
     * @property {Object} LEVELSNAMES
     * @description
     *    Get access to the LEVELSNAMES type
     * @return {LEVELSNAMES}
     */
    static get LEVELSNAMES(): typeof LEVELSNAMES;
    /**
     * @public
     * @property {Object} LEVELS
     * @description
     *    Get access to the LEVELS type
     * @return {LEVELS}
     */
    static get LEVELS(): typeof LEVELS;
    /**
     * @public
     * @property {Object} LEVELSCOLORS
     * @description
     *    Get access to the PresencePhone type
     * @return {LEVELSCOLORS}
     */
    static get LEVELSCOLORS(): typeof LEVELSCOLORS;
    get Utils(): any;
    /**
     * @public
     * @method getConnectionStatus
     * @instance
     * @nodered true
     * @description
     *    Get connections status of each low layer services, and also the full SDK state. <br>
     * <br>
     * { <br>
     * restStatus: boolean, The status of the REST connection authentication to rainbow server. <br>
     * xmppStatus: boolean, The status of the XMPP Connection to rainbow server. <br>
     * s2sStatus: boolean, The status of the S2S Connection to rainbow server. <br>
     * state: SDKSTATUSENUM The state of the SDK. <br>
     * nbHttpAdded: number, the number of HTTP requests (any verb GET, HEAD, POST, ...) added in the HttpManager queue. Note that it is reset to zero when it reaches Number.MAX_SAFE_INTEGER value. <br>
     * httpQueueSize: number, the number of requests stored in the Queue. Note that when a request is sent to server, it is already removed from the queue. <br>
     * nbRunningReq: number, the number of requests which has been poped from the queue and the SDK did not yet received an answer for it. <br>
     * maxSimultaneousRequests : number, the number of request which can be launch at a same time. <br>
     * nbReqInQueue : number, the number of requests waiting for being treated by the HttpManager.  <br>
     * } <br>
     * @return {Promise<{ restStatus: boolean, xmppStatus: boolean, s2sStatus: boolean, state: SDKSTATUSENUM, nbHttpAdded: number, httpQueueSize: number, nbRunningReq: number, maxSimultaneousRequests : number }>}
     * @category async
     */
    getConnectionStatus(): Promise<{
        restStatus: boolean;
        xmppStatus: boolean;
        s2sStatus: boolean;
        state: SDKSTATUSENUM;
        nbHttpAdded: number;
        httpQueueSize: number;
        nbRunningReq: number;
        maxSimultaneousRequests: number;
    }>;
    /**
     * @public
     * @property {Object} Appreciation
     * @static
     * @description
     *    Get connections Appreciation type. <br>
     * @return {Appreciation}
     */
    static get Appreciation(): typeof Appreciation;
    /**
     * @public
     * @property {Object} CalendarManager
     * @static
     * @description
     *    Get connections CalendarManager type. <br>
     * @return {CalendarManager}
     */
    static get CalendarManager(): typeof CalendarManager;
    /**
     * @public
     * @property {Object} AutoReplyManager
     * @static
     * @description
     *    Get connections AutoReplyManager type. <br>
     * @return {AutoReplyManager}
     */
    static get AutoReplyManager(): typeof AutoReplyManager;
}
export default NodeSDK;
export { NodeSDK as NodeSDK };
