import { CallStatus } from "./CallStatus";
import { AudioFilter } from "./options/filters/audio/AudioFilter";
import { VideoFilter } from "./options/filters/video/VideoFilter";
import { CameraOrientation } from "./options/CameraOrientation";
import { CallsApiEvent } from "./event/CallsApiEvents";
import { CallsEventHandlers } from "./event/CallsEventHandlers";
import { RoomCallOptions } from "./options/RoomCallOptions";
import { LocalCapturer } from "./LocalCapturer";
import { ServerCapturer } from "./ServerCapturer";
import { CustomData } from "./CustomDataType";
import { DataChannel } from "./DataChannel";
import { AudioQualityMode } from "./options/AudioQualityMode";
import { DisplayOptions } from "./options/DisplayOptions";
export interface RoomCall {
    id(): string;
    options(): RoomCallOptions;
    customData(): CustomData;
    name(): string;
    status(): CallStatus;
    duration(): number;
    joinTime(): Date;
    leaveTime(): Date;
    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;
    leave(): void;
    on(name: CallsApiEvent.ROOM_JOINED, handler: CallsEventHandlers.RoomJoined): void;
    on(name: CallsApiEvent.ROOM_LEFT, handler: CallsEventHandlers.RoomLeft): 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.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.ROOM_RECORDING_STARTED, handler: CallsEventHandlers.RoomRecordingStartedEvent): void;
    on(name: CallsApiEvent.RECONNECTING, handler: CallsEventHandlers.Reconnecting): void;
    on(name: CallsApiEvent.RECONNECTED, handler: CallsEventHandlers.Reconnected): void;
    on(name: CallsApiEvent.PARTICIPANT_DISCONNECTED, handler: CallsEventHandlers.ParticipantDisconnected): void;
    on(name: CallsApiEvent.PARTICIPANT_RECONNECTED, handler: CallsEventHandlers.ParticipantReconnected): void;
}
