import * as Media from '@webex/internal-media-core';
import { LOGGER } from '../Logger/types';
import { ISDKConnector, WebexSDK } from '../SDKConnector/types';
import { Eventing } from '../Events/impl';
import { CallingClientEventTypes } from '../Events/types';
import { UploadLogsResponse, DeviceType } from '../common/types';
import { ICallingClient, CallingClientConfig } from './types';
import { ICall } from './calling/types';
import { ILine } from './line/types';
export declare class CallingClient extends Eventing<CallingClientEventTypes> implements ICallingClient {
    private sdkConnector;
    private webex;
    private mutex;
    private callManager;
    private metricManager;
    private sdkConfig?;
    private serviceData;
    private primaryMobiusUris;
    private backupMobiusUris;
    private primaryWssMobiusUris;
    private backupWssMobiusUris;
    private mobiusClusters;
    private mobiusHost;
    mediaEngine: typeof Media;
    private lineDict;
    private apiRequest;
    private isNetworkDown;
    private networkDownTimestamp;
    private networkUpTimestamp;
    private mercuryDownTimestamp;
    private mercuryUpTimestamp;
    constructor(webex: WebexSDK, config?: CallingClientConfig);
    init(): Promise<void>;
    private getRTMSDomain;
    private checkNetworkReachability;
    private checkCallStatus;
    private handleNetworkOffline;
    private handleNetworkOnline;
    private handleMercuryOffline;
    private handleMercuryOnline;
    private setupNetworkEventListeners;
    private getClientRegionInfo;
    private getMobiusServers;
    private connectToMobiusSocket;
    private handleMobiusAsyncEvent;
    private registerCallsClearedListener;
    private callsClearedHandler;
    getLoggingLevel(): LOGGER;
    getSDKConnector(): ISDKConnector;
    private registerSessionsListener;
    private createLine;
    getLines(): Record<string, ILine>;
    getDevices(userId?: string): Promise<DeviceType[]>;
    getActiveCalls(): Record<string, ICall[]>;
    getConnectedCall(): ICall | undefined;
    uploadLogs(): Promise<UploadLogsResponse>;
}
export declare const createClient: (webex: WebexSDK, config?: CallingClientConfig) => Promise<ICallingClient>;
//# sourceMappingURL=CallingClient.d.ts.map