import { ApplicationCall } from "./call/ApplicationCall";
import { RoomCall } from "./call/RoomCall";
import { PhoneCall } from "./call/PhoneCall";
import { PhoneCallOptions } from "./call/options/PhoneCallOptions";
import { WebrtcCall } from "./call/WebrtcCall";
import { WebrtcCallOptions } from "./call/options/WebrtcCallOptions";
import { ViberCallOptions } from "./call/options/ViberCallOptions";
import { ViberCall } from "./call/ViberCall";
import { RoomCallOptions } from "./call/options/RoomCallOptions";
import { ApplicationCallOptions } from "./call/options/ApplicationCallOptions";
import { InfobipRTC } from "./InfobipRTC";
import { User } from "./call/User";
import { AnyInfobipRTCEvent } from "./event/InfobipRTCEvents";
import { InfobipRTCEventHandlers } from "./event/InfobipRTCEventHandlers";
export declare class DefaultInfobipRTC implements InfobipRTC {
    private token;
    private rtcOptions;
    private static IDENTITY_PATTERN;
    private static CONFERENCE_ID_PATTERN;
    private static PHONE_NUMBER_PATTERN;
    private readonly gateway;
    private readonly eventEmitter;
    private readonly apiEventEmitter;
    private readonly device;
    private readonly rtcConfig;
    private readonly currentUser;
    private readonly logger;
    private apiUrl;
    private callActive;
    constructor(token: string, rtcOptions?: any);
    connect(): void;
    disconnect(): void;
    connectedUser(): User;
    on(name: AnyInfobipRTCEvent, handler: InfobipRTCEventHandlers.Any): void;
    callApplication(callsConfigurationId: string, options?: ApplicationCallOptions): ApplicationCall;
    callWebrtc(identity: string, options?: WebrtcCallOptions): WebrtcCall;
    callPhone(phoneNumber: string, phoneCallOptions?: PhoneCallOptions): PhoneCall;
    callViber(phoneNumber: string, from: string, viberCallOptions?: ViberCallOptions): ViberCall;
    joinRoom(roomName: string, options?: RoomCallOptions): RoomCall;
    debug(debug: boolean): void;
    getAudioInputDevices(): Promise<MediaDeviceInfo[]>;
    setAudioInputDevice(deviceId: string): void;
    unsetAudioInputDevice(deviceId: string): void;
    getAudioOutputDevices(): Promise<MediaDeviceInfo[]>;
    getVideoInputDevices(): Promise<MediaDeviceInfo[]>;
    setVideoInputDevice(deviceId: string): void;
    unsetVideoInputDevice(deviceId: string): void;
    private validateCallsConfigurationId;
    private validateStatus;
    private configureEventHandlers;
    private handleRegistered;
    private handleIncomingApplicationCall;
    private hasRemoteVideo;
    private handleHangup;
    private handleReconnecting;
    private handleReconnected;
    private handleConnectionClosed;
    private handleDisconnect;
    private isWebRTCSupported;
    private getUserFromToken;
    private checkIfAnythingIsActive;
}
