import { NewMetrics } from "@webex/internal-plugin-metrics"; import { PresenceStatus, WebexUserStatusResponse } from "./webex-service-types"; type WebexValueType = string | number | boolean | object | string[]; export interface WebExSettingObject { key: string; value?: WebexValueType; settingGroup?: string; } export type WebExSetting = WebExSettingObject | string | number | boolean | string[]; export interface WebExDevice { url: string; registered: boolean; orgId: string; on(event: string, callback: () => void): void; register(): Promise; unregister(): Promise; settings: Record; } export interface WebExPresence { get(agentId: string): Promise; setStatus(status: PresenceStatus, ttl: number): Promise; on(event: string, callback: (envelope: object) => void): void; enqueue(contactId: string): void; dequeue(contactId: string): void; } export type ServiceGroup = "discovery" | "override" | "preauth" | "postauth" | "signin"; export interface WebexServices { waitForCatalog(serviceGroup: ServiceGroup, timeout?: number): Promise; get(serviceName: string): string | undefined; } export interface WebexInstance { refresh: () => Promise; authorization: { ready: Promise; }; credentials: { supertoken: { access_token?: string; refresh_token?: string; }; }; config: { credentials?: { client_id?: string; client_secret?: string; }; }; ready: boolean; once: (eventName: string, callback: () => void) => void; request(options: object): Promise; logout(options: { noRedirect: boolean; }): Promise; meetings: { register(): Promise; unregister(): Promise; on(event: string, callback: (meetingEvent: unknown) => void): void; getAllMeetings(): Record; }; people: { get(personId: string): Promise; list(options: { email: string; }): Promise; }; messages: { listen(): Promise; on(event: string, callback: (message: object) => void): void; create(options: { toPersonEmail: string; text: string; }): Promise; }; rooms: { listWithReadStatus(): Promise; }; memberships: { listen(): Promise; on(event: string, callback: () => void): void; }; internal: { feature: { getFeature(type: string, name: string): Promise; }; device: WebExDevice; mercury: { connected: boolean; mercuryTimeOffset?: number; connect(): Promise; logout(): Promise; on(event: string, callback: (data: object) => void): void; }; dss: { registered: boolean; register(): Promise; unregister(): Promise; lookup(options: { id: string; }): Promise; lookupByEmail(options: { email: string; }): Promise; search(options: { requestedTypes: string[]; queryString: string; resultSize: number; }): Promise; }; presence: WebExPresence; services: WebexServices; support: { submitLogs(options: object, logs: string): Promise; }; newMetrics: NewMetrics; }; } export interface WebexCoreInstance { refresh: () => Promise; authorization?: { ready: Promise; }; credentials: { supertoken: { access_token?: string; refresh_token?: string; }; }; config?: { credentials?: { client_id?: string; client_secret?: string; }; }; ready: boolean; once(event: string, callback: () => void): void; } export interface WebexWithModules extends WebexCoreInstance { ready: boolean; once(event: string, callback: () => void): void; refresh(): Promise; request(options: object): Promise; logout(options: { noRedirect: boolean; }): Promise; meetings: { register(): Promise; unregister(): Promise; on(event: string, callback: (meetingEvent: unknown) => void): void; getAllMeetings(): Record; }; people: { get(personId: string): Promise; list(options: { email: string; }): Promise; }; messages: { listen(): Promise; on(event: string, callback: (message: object) => void): void; create(options: { toPersonEmail: string; text: string; }): Promise; }; rooms: { listWithReadStatus(): Promise; }; memberships: { listen(): Promise; on(event: string, callback: () => void): void; }; internal: { feature: { getFeature(type: string, name: string): Promise; }; device: WebExDevice; mercury: { connected: boolean; mercuryTimeOffset?: number; connect(): Promise; logout(): Promise; on(event: string, callback: (data: object) => void): void; }; dss: { registered: boolean; register(): Promise; unregister(): Promise; lookup(options: { id: string; }): Promise; lookupByEmail(options: { email: string; }): Promise; search(options: { requestedTypes: string[]; queryString: string; resultSize: number; }): Promise; }; presence: WebExPresence; support: { submitLogs(options: object, logs: string): Promise; }; }; } export {}; //# sourceMappingURL=webex-sdk-api.d.ts.map