import { Device } from "@twilio/voice-sdk"; import { Store } from "redux"; import { Client } from "twilio-chat"; import { Worker, Workspace } from "twilio-taskrouter"; import { FlexError } from "../FlexError"; import { FlexEventEmitter } from "../FlexEvents"; import { Strings } from "../localization"; import { LocalizationType } from "../localization/LocaleManager/LocaleManager.definitions"; import { Config, ServiceConfiguration } from "../state/AppConfig"; import { EnhancedStore, FlexState } from "../store"; import defaultConfiguration from "./ContactCenter.conf"; import { Permissions } from "./TokenStorage"; export { defaultConfiguration }; /** * User Info * @typedef {object} UserInfo * @property {string} identity identity * @property {Array} roles roles * @property {string} token access token * @property {Date} tokenExpirationDate token expiration date * @property {Permissions} permissions all permissions user have * @memberof Manager */ export interface UserInfo { identity: string; roles: Array; token: string; tokenExpirationDate: Date; permissions: Permissions; } /** * @class Manager * @classdesc The Flex Manager is the access point for controlling your Flex instance and all of the underlying Twilio products used for communications and assigning tasks. This means that within your Flex project, you can access the TaskRouter or Chat client directly through the Flex manager. * Aside from Flex itself, Manager also gives you access to the * [Conversations](https://www.twilio.com/docs/conversations/javascript/exploring-conversations-javascript-quickstart), * [Sync](https://twilio.com/docs/sync), [Voice](https://www.twilio.com/docs/voice/client/javascript), * and [TaskRouter](https://www.twilio.com/docs/taskrouter) SDKs. * @menuorder 100 * @hideconstructor * @category Overview */ export declare class Manager { private _store; private _strings; private _initialized; private _serviceConfiguration; private static _instance; protected static _proxiedInstance: Manager; /** * Gets the instance of Manager * @static * @returns {Manager} instance * @example * import { Manager } from "@twilio/flex-ui"; * Manager.getInstance() */ static getInstance(): Manager; constructor(config: Config, store: Store); private static updateChatManager; private static createProxiedInstance; /** * Creates an instance of Flex Manager * @static * @param {Config} config Configuration * @param {Store} [store] Custom Redux store * @throws FlexError * @returns {Promise} New instance of manager * @example * import * as React from "react"; * import * as ReactDOM from "react-dom"; * import { Manager, ContextProvider, RootContainer } from "@twilio/flex-ui"; * Manager.create(configuration) * .then((manager) => { * ReactDOM.render( * * * , * document.getElementById("container") * ); * }) * .catch((e) => { * console.log("Failed to run Flex", e); * }); */ static create(config: Config, store?: Store, _deprecated3rdParam?: any): Promise; private static applySDKLogLevels; /** * Updates current configuration by merging provided configuration objects deeply with the current configuration. * @param {Config} configs configuration objects to merge in * @returns {void} * @instance * @example * import { Manager } from "@twilio/flex-ui"; * Manager.getInstance().updateConfig({ * logLevel: "debug" * }); */ updateConfig(...configs: Array): void; set configuration(value: Config); /** * Current configuration * @type {Config} Configuration * @readonly * @instance * @example * import { Manager } from "@twilio/flex-ui"; * Manager.getInstance().configuration; */ get configuration(): Config; /** * Service configuration * @type {ServiceConfiguration} Service configuration object * @readonly * @instance * @example * import { Manager } from "@twilio/flex-ui"; * const accountSid = Manager.getInstance().serviceConfiguration.account_sid; */ get serviceConfiguration(): ServiceConfiguration; /** * Instance of Flex [Redux store](https://redux.js.org/api/store). * @type {EnhancedStore} Flex store * @readonly * @instance * @example * import { Manager } from "@twilio/flex-ui"; * Manager.getInstance().store */ get store(): EnhancedStore; /** * Flex event emitter. Use to subscribe to Flex events. * @readonly * @type {FlexEventEmitter} Flex event emitter * @instance */ static get events(): FlexEventEmitter; /** * Flex event emitter. Use to subscribe to Flex events. * @type {FlexEventEmitter} Flex event emitter * @readonly * @example * import { Manager } from "@twilio/flex-ui"; * Manager.events.removeAllListeners(); */ get events(): FlexEventEmitter; get strings(): Strings; /** * Get or set strings / templates for Flex. Add or updates existing ones. * @type {Strings} * @instance */ set strings(value: Strings); /** * Current user information * @readonly * @type {UserInfo} * @instance */ get user(): UserInfo; /** * Instance of Twilio [Chat Client](https://media.twiliocdn.com/sdk/js/chat/releases/3.4.0/docs). Deprecated. Use manager.conversationsClient instead. * * @instance * @readonly * @deprecated * @deprecatedSince 2.0.0 * @altRecommendation Use `manager.conversationsClient` instead * @altRecommendationExample * import { Manager } from "@twilio/flex-ui"; * const conversationsClient = Manager.getInstance().conversationsClient; * @altRecommendationLink https://assets.flex.twilio.com/docs/releases/flex-ui/latest/overview/Manager/ * @private * @type {twilio-chat:Client} */ get chatClient(): Client; /** * Instance of [Twilio Conversation Client](https://media.twiliocdn.com/sdk/js/conversations/releases/1.1.0/docs/Client.html). * @instance * @readonly * @type {@twilio/conversation:Client} */ get conversationsClient(): import("@twilio/conversations").Client; /** * Returns an instance of [Twilio.Device](https://www.twilio.com/docs/voice/sdks/javascript/twiliodevice) which is used to handle calls. * @readonly * @type {twilio-client:Device} * @instance */ get voiceClient(): Device; /** * Returns an instance of [Twilio TaskRouter](https://twilio.github.io/twilio-taskrouter.js) Worker Client. * @readonly * @type {twilio-taskrouter:Worker} * @instance */ get workerClient(): Worker | undefined; /** * Returns an instance of [Twilio TaskRouter](https://twilio.github.io/twilio-taskrouter.js) Workspace Client. * @see {@link https://twilio.github.io/twilio-taskrouter.js} * @readonly * @type {twilio-taskrouter:Workspace} * @instance */ get workspaceClient(): Workspace | undefined; /** * Returns an instance of [Twilio Sync](https://media.twiliocdn.com/sdk/js/sync/v0.9/docs) Client. * @readonly * @type {twilio-sync:Client} * @instance */ get insightsClient(): import("twilio-sync").SyncClient; /** * @private */ loadInitialData(): Promise; /** * @private */ reportPluginInteraction(payload: Record): void; /** * @private * * @description This should only be used by the plugins in plugins library */ reportErrorEvent(error: FlexError): void; /** * Fetches Flex configuration from the service. * @instance * @returns {Promise} Flex configuration * @example * import { Manager } from "@twilio/flex-ui"; * const config = await Manager.getInstance().fetchConfiguration(); */ fetchConfiguration(): Promise; /** * A function which fetches and returns the LocalizationType object. * @instance * @type {LocalizationType} * @category Localization * @example * import { Manager } from "@twilio/flex-ui"; * const localization = Manager.getInstance().localization; */ get localization(): LocalizationType; private validateServiceVersion; private configureReduxStore; private setStringsFromConfig; } export declare class ManagerForOutside extends Manager { static getInstance(): Manager; }