import { CallStatus } from "./CallStatus";
import { CameraOrientation } from "./options/CameraOrientation";
import { VideoFilter } from "./options/filters/video/VideoFilter";
import { AudioFilter } from "./options/filters/audio/AudioFilter";
import { CustomData } from "./CustomDataType";
import { CallsApiEvent } from "./event/CallsApiEvents";
import { CallsEventHandlers } from "./event/CallsEventHandlers";
import { ApplicationCallOptions } from "./options/ApplicationCallOptions";
import { LocalCapturer } from "./LocalCapturer";
import { ServerCapturer } from "./ServerCapturer";
import { DataChannel } from "./DataChannel";
import { AudioQualityMode } from "./options/AudioQualityMode";
import { DisplayOptions } from "./options/DisplayOptions";
import { RecordingState } from "./RecordingState";
export interface ApplicationCall {
    id(): string;
    options(): ApplicationCallOptions;
    customData(): CustomData;
    status(): CallStatus;
    duration(): number;
    startTime(): Date;
    establishTime(): Date;
    endTime(): Date;
    callsConfigurationId(): string;
    mute(shouldMute: boolean): Promise<void>;
    muted(): boolean;
    pauseIncomingVideo(): void;
    resumeIncomingVideo(): void;
    sendDTMF(dtmf: string): Promise<void>;
    cameraVideo(cameraVideo: boolean): Promise<void>;
    hasCameraVideo(): boolean;
    screenShare(screenShare: boolean): Promise<void>;
    startScreenShare(displayOptions?: DisplayOptions): Promise<void>;
    stopScreenShare(): Promise<void>;
    hasScreenShare(): boolean;
    setAudioInputDevice(deviceId: string): Promise<void>;
    setVideoInputDevice(deviceId: string): Promise<void>;
    audioFilter(): AudioFilter;
    setAudioFilter(audioFilter: AudioFilter): Promise<void>;
    clearAudioFilter(): Promise<void>;
    videoFilter(): VideoFilter;
    setVideoFilter(videoFilter: VideoFilter): Promise<void>;
    clearVideoFilter(): Promise<void>;
    cameraOrientation(): CameraOrientation;
    setCameraOrientation(cameraOrientation: CameraOrientation): Promise<void>;
    localCapturer(): LocalCapturer;
    serverCapturer(): ServerCapturer;
    dataChannel(): DataChannel;
    setAudioQualityMode(audioQualityMode: AudioQualityMode): void;
    audioQualityMode(): AudioQualityMode;
    hangup(): void;
    recordingState(): RecordingState;
    on(name: CallsApiEvent.RINGING, handler: CallsEventHandlers.Ringing): void;
    on(name: CallsApiEvent.EARLY_MEDIA, handler: CallsEventHandlers.EarlyMedia): void;
    on(name: CallsApiEvent.ESTABLISHED, handler: CallsEventHandlers.Established): void;
    on(name: CallsApiEvent.HANGUP, handler: CallsEventHandlers.Hangup): void;
    on(name: CallsApiEvent.ERROR, handler: CallsEventHandlers.Error): void;
    on(name: CallsApiEvent.CAMERA_VIDEO_ADDED, handler: CallsEventHandlers.CameraVideoAdded): void;
    on(name: CallsApiEvent.CAMERA_VIDEO_UPDATED, handler: CallsEventHandlers.CameraVideoUpdated): void;
    on(name: CallsApiEvent.CAMERA_VIDEO_REMOVED, handler: CallsEventHandlers.CameraVideoRemoved): void;
    on(name: CallsApiEvent.SCREEN_SHARE_ADDED, handler: CallsEventHandlers.ScreenShareAdded): void;
    on(name: CallsApiEvent.SCREEN_SHARE_REMOVED, handler: CallsEventHandlers.ScreenShareRemoved): void;
    on(name: CallsApiEvent.CONFERENCE_JOINED, handler: CallsEventHandlers.ConferenceJoined): void;
    on(name: CallsApiEvent.CONFERENCE_LEFT, handler: CallsEventHandlers.ConferenceLeft): void;
    on(name: CallsApiEvent.PARTICIPANT_JOINING, handler: CallsEventHandlers.ParticipantJoining): void;
    on(name: CallsApiEvent.PARTICIPANT_JOINED, handler: CallsEventHandlers.ParticipantJoined): void;
    on(name: CallsApiEvent.PARTICIPANT_MUTED, handler: CallsEventHandlers.ParticipantMuted): void;
    on(name: CallsApiEvent.PARTICIPANT_UNMUTED, handler: CallsEventHandlers.ParticipantUnmuted): void;
    on(name: CallsApiEvent.PARTICIPANT_DEAF, handler: CallsEventHandlers.ParticipantDeaf): void;
    on(name: CallsApiEvent.PARTICIPANT_UNDEAF, handler: CallsEventHandlers.ParticipantUndeaf): void;
    on(name: CallsApiEvent.PARTICIPANT_STARTED_TALKING, handler: CallsEventHandlers.ParticipantStartedTalking): void;
    on(name: CallsApiEvent.PARTICIPANT_STOPPED_TALKING, handler: CallsEventHandlers.ParticipantStoppedTalking): void;
    on(name: CallsApiEvent.PARTICIPANT_CAMERA_VIDEO_ADDED, handler: CallsEventHandlers.ParticipantCameraVideoAdded): void;
    on(name: CallsApiEvent.PARTICIPANT_CAMERA_VIDEO_REMOVED, handler: CallsEventHandlers.ParticipantCameraVideoRemoved): void;
    on(name: CallsApiEvent.PARTICIPANT_SCREEN_SHARE_ADDED, handler: CallsEventHandlers.ParticipantScreenShareAdded): void;
    on(name: CallsApiEvent.PARTICIPANT_SCREEN_SHARE_REMOVED, handler: CallsEventHandlers.ParticipantCameraVideoRemoved): void;
    on(name: CallsApiEvent.PARTICIPANT_LEFT, handler: CallsEventHandlers.ParticipantRemoved): void;
    on(name: CallsApiEvent.NETWORK_QUALITY_CHANGED, handler: CallsEventHandlers.NetworkQualityChanged): void;
    on(name: CallsApiEvent.PARTICIPANT_NETWORK_QUALITY_CHANGED, handler: CallsEventHandlers.ParticipantNetworkQualityChanged): void;
    on(name: CallsApiEvent.PARTICIPANT_DISCONNECTED, handler: CallsEventHandlers.ParticipantDisconnected): void;
    on(name: CallsApiEvent.PARTICIPANT_RECONNECTED, handler: CallsEventHandlers.ParticipantReconnected): void;
    on(name: CallsApiEvent.DIALOG_JOINED, handler: CallsEventHandlers.DialogJoined): void;
    on(name: CallsApiEvent.DIALOG_LEFT, handler: CallsEventHandlers.DialogLeft): void;
    on(name: CallsApiEvent.RECONNECTING, handler: CallsEventHandlers.Reconnecting): void;
    on(name: CallsApiEvent.RECONNECTED, handler: CallsEventHandlers.Reconnected): void;
    on(name: CallsApiEvent.CALL_RECORDING_STARTED, handler: CallsEventHandlers.CallRecordingStartedEvent): void;
    on(name: CallsApiEvent.CALL_RECORDING_STOPPED, handler: CallsEventHandlers.CallRecordingStoppedEvent): void;
    on(name: CallsApiEvent.DIALOG_RECORDING_STARTED, handler: CallsEventHandlers.DialogRecordingStartedEvent): void;
    on(name: CallsApiEvent.DIALOG_RECORDING_STOPPED, handler: CallsEventHandlers.DialogRecordingStoppedEvent): void;
    on(name: CallsApiEvent.CONFERENCE_RECORDING_STARTED, handler: CallsEventHandlers.ConferenceRecordingStartedEvent): void;
    on(name: CallsApiEvent.CONFERENCE_RECORDING_STOPPED, handler: CallsEventHandlers.ConferenceRecordingStoppedEvent): void;
}
