import { Call } from "./Call";
import { WebrtcCallOptions } from "./options/WebrtcCallOptions";
import { CameraOrientation } from "./options/CameraOrientation";
import { VideoFilter } from "./options/filters/video/VideoFilter";
import { CallsApiEvent } from "./event/CallsApiEvents";
import { CallsEventHandlers } from "./event/CallsEventHandlers";
import { LocalWebrtcCapturer } from "./LocalWebrtcCapturer";
import { ServerWebrtcCapturer } from "./ServerWebrtcCapturer";
import { DataChannel } from "./DataChannel";
import { DisplayOptions } from "./options/DisplayOptions";
export interface WebrtcCall extends Call {
    options(): WebrtcCallOptions;
    pauseIncomingVideo(): void;
    resumeIncomingVideo(): void;
    cameraVideo(cameraVideo: boolean): Promise<void>;
    hasCameraVideo(): boolean;
    hasRemoteCameraVideo(): boolean;
    screenShare(screenShare: boolean): Promise<void>;
    startScreenShare(displayOptions?: DisplayOptions): Promise<void>;
    stopScreenShare(): Promise<void>;
    hasScreenShare(): boolean;
    hasRemoteScreenShare(): boolean;
    setVideoInputDevice(deviceId: string): Promise<void>;
    cameraOrientation(): CameraOrientation;
    setCameraOrientation(cameraOrientation: CameraOrientation): Promise<void>;
    videoFilter(): VideoFilter;
    setVideoFilter(videoFilter: VideoFilter): Promise<void>;
    clearVideoFilter(): Promise<void>;
    localCapturer(): LocalWebrtcCapturer;
    serverCapturer(): ServerWebrtcCapturer;
    dataChannel(): DataChannel;
    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.REMOTE_MUTED, handler: CallsEventHandlers.RemoteMuted): void;
    on(name: CallsApiEvent.REMOTE_UNMUTED, handler: CallsEventHandlers.RemoteUnmuted): void;
    on(name: CallsApiEvent.REMOTE_CAMERA_VIDEO_ADDED, handler: CallsEventHandlers.RemoteCameraVideoAdded): void;
    on(name: CallsApiEvent.REMOTE_CAMERA_VIDEO_REMOVED, handler: CallsEventHandlers.RemoteCameraVideoRemoved): void;
    on(name: CallsApiEvent.REMOTE_SCREEN_SHARE_ADDED, handler: CallsEventHandlers.RemoteScreenShareAdded): void;
    on(name: CallsApiEvent.REMOTE_SCREEN_SHARE_REMOVED, handler: CallsEventHandlers.RemoteScreenShareRemoved): void;
    on(name: CallsApiEvent.NETWORK_QUALITY_CHANGED, handler: CallsEventHandlers.NetworkQualityChanged): void;
    on(name: CallsApiEvent.REMOTE_NETWORK_QUALITY_CHANGED, handler: CallsEventHandlers.RemoteNetworkQualityChanged): void;
    on(name: CallsApiEvent.REMOTE_DISCONNECTED, handler: CallsEventHandlers.RemoteDisconnected): void;
    on(name: CallsApiEvent.REMOTE_RECONNECTED, handler: CallsEventHandlers.RemoteReconnected): void;
    on(name: CallsApiEvent.CALL_RECORDING_STARTED, handler: CallsEventHandlers.CallRecordingStartedEvent): void;
    on(name: CallsApiEvent.RECONNECTING, handler: CallsEventHandlers.Reconnecting): void;
    on(name: CallsApiEvent.RECONNECTED, handler: CallsEventHandlers.Reconnected): void;
}
