///
import { EventEmitter } from 'events';
import { SDK as RingCentralSDK } from '@ringcentral/sdk';
import { Session, SessionData } from './Session';
export interface SessionsMap {
[key: string]: any;
}
export interface SessionMessage {
event: string;
body: any;
}
export interface Device {
id: string;
linePooling: string;
name: string;
uri: string;
type: 'SoftPhone' | 'OtherPhone' | 'HardPhone';
serial: string;
computerName: string;
boxBillingId: Number;
useAsCommonPhone: boolean;
inCompanyNet: boolean;
model: any;
extension: any;
emergencyServiceAddress: any;
phoneLines: any[];
shipping: any;
sku: any;
status: 'Initial' | 'Offline' | 'Online';
site: any;
lastLocationReportTime: string;
}
export interface EventSequenceData {
sequence: number;
updatedAt: number;
telephonySessionId: string;
}
export interface EventSequenceMap {
[key: string]: EventSequenceData;
}
export interface Account {
id: string;
}
export interface Extension {
id: string;
uri: string;
account: Account;
contact: any;
departments: any[];
extensionNumber: string;
name: string;
partnerId: string;
permissions: any[];
profileImage: any;
references: any[];
roles: any[];
regionalSettings: any;
serviceFeatures: any[];
setupWizardState: string;
status: string;
statusInfo: string;
type: string;
callQueueExtensionInfo: any;
hidden: boolean;
}
export interface CallOutToParams {
phoneNumber?: string;
extensionNumber?: string;
}
export declare class RingCentralCallControl extends EventEmitter {
private _sdk;
private _sessionsMap;
private _devices;
private _currentExtension;
private _accountLevel;
private _ready;
private _initializePromise;
private _preloadSessions;
private _preloadDevices;
private _userAgent;
private _eventSequenceMap;
constructor({ sdk, accountLevel, preloadSessions, preloadDevices, extensionInfo, userAgent, }: {
sdk: RingCentralSDK;
accountLevel?: boolean;
preloadSessions?: boolean;
preloadDevices?: boolean;
extensionInfo?: Extension;
userAgent?: string;
});
initialize(): Promise;
private _initialize;
onNotificationEvent(message: SessionMessage): void;
private checkSequence;
private cleanExpiredSequenceData;
get sessions(): Session[];
get sessionsMap(): SessionsMap;
private loadCurrentExtension;
private preloadSessions;
private loadActiveCalls;
loadSessions(activeCalls: any): Promise;
restoreSessions(sessionDatas: SessionData[]): void;
private loadDevices;
private onSessionStatusUpdated;
refreshDevices(): Promise;
createCall(deviceId: string, to: CallOutToParams): Promise;
createConference(): Promise;
get accountId(): string;
get extensionId(): string;
get devices(): Device[];
get ready(): boolean;
get requestOptions(): {
userAgent: string;
};
get eventSequenceMap(): EventSequenceMap;
}