///
import { ApplicationCall } from "../ApplicationCall";
import { CameraOrientation } from "../options/CameraOrientation";
import { CallStatus } from "../CallStatus";
import { EventEmitter } from "events";
import { InfobipGateway } from "../../gateway/InfobipGateway";
import { Logger } from "../../log/Logger";
import { Device } from "../../device/Device";
import MonitoredPeerConnection from "../../log/monitor/MonitoredPeerConnection";
import LocalMedia from "../../util/LocalMedia";
import { EmptyAudioStream } from "./EmptyAudioStream";
import { VideoFilter } from "../options/filters/video/VideoFilter";
import { AudioFilter } from "../options/filters/audio/AudioFilter";
import { CustomData } from "../CustomDataType";
import { AnyCallsApiEvent } from "../event/CallsApiEvents";
import { CallsEventHandlers } from "../event/CallsEventHandlers";
import { ApplicationCallOptions } from "../options/ApplicationCallOptions";
import { LocalCapturer } from "../LocalCapturer";
import { ServerCapturer } from "../ServerCapturer";
import { TotalMediaStats } from "../stats/TotalMediaStats";
import { DataChannel } from "../DataChannel";
import { AudioQualityMode } from "../options/AudioQualityMode";
import { DisplayOptions } from "../options/DisplayOptions";
import { RecordingState } from "../RecordingState";
import { ManagedEventEmitter } from "../../util/ManagedEventEmitter";
import { ErrorCode } from '../event/ErrorCode';
export declare abstract class DefaultApplicationCall implements ApplicationCall {
protected gateway: InfobipGateway;
protected logger: Logger;
protected rtcConfig: any;
private device;
protected _callsConfigurationId: string;
protected applicationCallOptions: ApplicationCallOptions;
currentUserIdentity: string;
private token;
private apiUrl;
protected callId: string;
protected conferenceId: string;
protected dialogId: string;
protected audioPC: MonitoredPeerConnection;
protected localAudio: LocalMedia;
protected emptyAudioStream: EmptyAudioStream;
protected localCameraVideo: LocalMedia;
protected localAudioStream?: MediaStream;
protected callStatus: CallStatus;
protected defaultLocalCaputuer: LocalCapturer;
protected defaultServerCapturer: ServerCapturer;
protected eventEmitter: ManagedEventEmitter;
private videoPublisherPC;
private videoSubscriberPC;
private localScreenShare;
private remoteAudioStream?;
private localCameraVideoStream?;
private localScreenShareStream?;
private hasRemoteDescription;
private mediaUpdateStatus;
private remoteCandidates;
private apiEventEmitter;
private isEarlyMedia;
private callStartTime;
private callEstablishTime;
private callEndTime;
private joinedConference;
private joinedDialog;
private participants;
private remoteVideos;
private videoFilterManager;
private audioFilterManager;
private networkQualityMonitor;
private _dataChannel;
private reconnecting;
private _audioQualityMode;
private _recordingState;
private cameraVideoRemovalReason;
private screenShareRemovalReason;
private cameraVideoEncodings;
private updateCameraStreamLock;
private audioStreamEnergyMonitor;
protected constructor(eventEmitter: EventEmitter, gateway: InfobipGateway, logger: Logger, rtcConfig: any, device: Device, _callsConfigurationId: string, applicationCallOptions: ApplicationCallOptions, currentUserIdentity: string, token: string, apiUrl: string, callId?: string);
on(name: AnyCallsApiEvent, handler: CallsEventHandlers.Any): void;
id(): string;
options(): ApplicationCallOptions;
customData(): CustomData;
callsConfigurationId(): string;
duration(): number;
endTime(): Date;
establishTime(): Date;
hangup(): void;
startTime(): Date;
status(): CallStatus;
mute(shouldMute: boolean): Promise;
muted(): boolean;
sendDTMF(dtmf: string): Promise;
pauseIncomingVideo(): void;
resumeIncomingVideo(): void;
setAudioInputDevice(deviceId: string): Promise;
audioFilter(): AudioFilter;
setAudioFilter(audioFilter: AudioFilter): Promise;
clearAudioFilter(): Promise;
videoFilter(): VideoFilter;
setVideoFilter(videoFilter: VideoFilter): Promise;
clearVideoFilter(): Promise;
setVideoInputDevice(deviceId: string): Promise;
cameraOrientation(): CameraOrientation;
setCameraOrientation(cameraOrientation: CameraOrientation): Promise;
localCapturer(): LocalCapturer;
serverCapturer(): ServerCapturer;
dataChannel(): DataChannel;
setAudioQualityMode(audioQualityMode: AudioQualityMode): void;
audioQualityMode(): AudioQualityMode;
hasCameraVideo(): boolean;
hasScreenShare(): boolean;
stopVideo(): Promise;
cameraVideo(localVideo: boolean): Promise;
screenShare(screenShare: boolean): Promise;
startScreenShare(displayOptions?: DisplayOptions): Promise;
stopScreenShare(): Promise;
recordingState(): RecordingState;
protected createDataChannel(): void;
protected createAudioPeerConnection(): void;
protected setLocalAudioStream(audioStream: MediaStream): void;
protected setLocalVideoStream(videoStream: MediaStream): Promise;
protected createAudioTransceiver(): void;
protected setLocalDescription(pc: RTCPeerConnection, localDescription: RTCSessionDescriptionInit): Promise;
protected abstract negotiateAudio(options: ApplicationCallOptions): Promise;
protected setRemoteCandidates(): void;
protected addCameraVideo(): Promise;
protected addScreenShareVideo(displayOptions?: DisplayOptions): Promise;
protected handleCallFlowError(error: string, sendHangup?: boolean): void;
protected validateMediaUpdateStatus(): void;
protected getLocalMediaStream(audio: boolean, video: boolean, cameraOrientation?: CameraOrientation, cameraVideoFrameRate?: number): Promise;
protected isFinished(): boolean;
protected stopAllTracks(mediaStream: MediaStream): void;
protected createAudioStreamEnergyMonitor(): void;
protected audioStreamEnergyMonitorCleanup(): void;
protected dataChannelCleanup(): void;
protected audioCleanup(): TotalMediaStats;
protected emitErrorEvent(errorCode: ErrorCode): void;
private getMidByIdentityAndVideoType;
private validateMediaActionAllowed;
private validateRoleMediaAllowed;
private muteInternal;
private stopVideoInternal;
private replaceAudioStream;
private getAudioStream;
private sendMute;
private removeScreenShareVideoWithReason;
private initEventHandlers;
private handleDeviceChange;
private switchToDefaultDevice;
private updateVideoBitrate;
private onVideoPublisherConnectionStateChanged;
private onAudioConnectionStateChanged;
private ringingHandler;
private responseHandler;
private acceptedHandler;
private videoCallJoinedHandler;
private changeMonitorConferenceId;
private handleSetupDataChannel;
private handleJoinedApplicationConference;
private handleDialogCreated;
private createParticipantMap;
private handleDialogEstablished;
private handleParticipantJoining;
private handleParticipantJoined;
private handleParticipantMediaChanged;
private handleRoleChanged;
private isRoleMediaAllowed;
private disableMedia;
private handleParticipantRoleChanged;
private emitDeafEvent;
private emitMutedEvent;
private emitBlindEvent;
private emitDisconnectedEvent;
private emitParticipantRoleChanged;
private handleStartedTalking;
private handleStoppedTalking;
private handleParticipantStartedTalking;
private handleParticipantStoppedTalking;
private emitTalkingEvent;
private emitParticipantTalkingEvent;
private handleParticipantLeft;
private handleJoinedVideoConference;
private subscribedVideoHandler;
private handleSubscribeVideoFlowError;
private updatedVideoHandler;
private emitParticipantVideoRemovedEvent;
private updateCameraStream;
private handleLeftApplicationConference;
private handleDialogFinished;
private handleReconnecting;
private handleReconnected;
private handleCallReconnected;
private handleDialogFailed;
private videoSubscriberCleanup;
private handleJoinVideoCallError;
private handleJoinVideoConferenceError;
private handleCallRecordingStarted;
private handleCallRecordingStopped;
private handleDialogRecordingStarted;
private handleDialogRecordingStopped;
private handleConferenceRecordingStarted;
private handleConferenceRecordingStopped;
private subscribeVideoConferenceError;
private setupDataChannelError;
private handleParticipantNetworkQuality;
private handleParticipantDisconnected;
private handleParticipantReconnected;
private updateParticipant;
private mapStreamEvent;
private createVideoSubscriberPC;
private onVideoPcTrack;
private videoMediaReceivingHandler;
private videoCallPublishedHandler;
private videoConferencePublishedHandler;
private publishVideoCallErrorHandler;
private publishVideoConferenceErrorHandler;
private videoCallUnpublishedHandler;
private videoConferenceUnpublishedHandler;
private hangupHandler;
private errorHandler;
private cleanup;
private handleTrickleIce;
private addIceCandidate;
private publishVideo;
private updateTransceiver;
private migrateLocalVideos;
private addTransceiver;
private negotiateVideoPublisher;
private removeCameraVideo;
private removeCameraAndScreenShare;
private removeScreenShareVideo;
private disableVideoMedia;
private disableLocalMedia;
private unpublishVideo;
private disableTransceiver;
private replaceTrack;
private throwMediaError;
private getDurationInSeconds;
private onIceCandidate;
private emitEstablished;
private emitEarlyMedia;
private onAudioPcTrack;
private scheduleHangup;
private createVideoPublisherPC;
private handlePublishVideoFlowError;
private handleGetUserMediaError;
private getCameraVideoStream;
private getScreenShareVideoStream;
private checkAllowedDisplaySurface;
private checkDisplaySurfaceSupported;
private setScreenShareInactive;
private onNetworkQualityStatisticsChanged;
private emitNetworkQualityChanged;
private currentNetworkQuality;
private videoPublisherCleanup;
private loadParticipant;
private getEndpoint;
private getRole;
private sendDTMFInfo;
private emitVideoRemovedEvent;
private emitVideoAddedEvent;
private resolveCurrentCallState;
private resolveCallStateAfterReconnect;
private handleApplicationCallChanges;
private handleCallReconnectedToSameState;
private handleCallReconnectedToNewState;
private handleCallRecordingTypeChangeOnCallReconnected;
private handleDialogRecordingTypeChangeOnCallReconnected;
private handleConferenceRecordingTypeChangeOnCallReconnected;
private handleParticipantChangesOnCallReconnected;
private renegotiateMedia;
private handleParticipantLeftDuringReconnect;
private handleParticipantJoinedDuringReconnect;
private handleParticipantChangesDuringReconnect;
private handleLocalParticipantChangesDuringReconnect;
private emitTalkingWhileMutedEvent;
private handleMessageReceived;
private handleMachineDetectionFinished;
private handleMachineDetectionFailed;
private updateCustomData;
}