import { Device } from "..";
import { Base } from "../base/Base";
import { TaskResponse } from "../model/TaskResponse";
import { TrackKind } from "../model/Track";
export declare enum GetDevicesType {
    AudioIn = "audioinput",
    VideoIn = "videoinput",
    AudioOut = "audiooutput"
}
export declare class UserMediaHandler extends Base {
    private isVideoAudioFetchInProgress;
    private isScreenShareFetchInProgress;
    private cameraFacingMode?;
    private videoPauseResumePromiseResolver?;
    private muteUmutePromiseResolver?;
    private tracks;
    private userMediaPayload?;
    switchCamera(): Promise<void>;
    startScreenShare(isAudioRequired?: boolean, shouldAddTrackImmediately?: boolean, screensharePayload?: any): Promise<void>;
    startLocalStream(isVideoRequired: boolean, isAudioRequired: boolean, shouldAddTrackImmediately: boolean, userMediaPayload?: any): Promise<void>;
    private getVideoDictionay;
    private getAudioDictionay;
    private startCapturingStream;
    private onStreamError;
    private onStreamGot;
    private onScreenShareStreamGot;
    private onTrack;
    getDevice(type: GetDevicesType): Promise<Device[]>;
    registerForDeviceChange: () => Promise<void>;
    stopScreenSharing(): Promise<void>;
    pauseCamera(userId?: string): Promise<TaskResponse>;
    muteUser(userId?: string): Promise<TaskResponse>;
    resumeCamera(userId?: string): Promise<TaskResponse>;
    unmute(userId?: string): Promise<TaskResponse>;
    pauseStreamWithoutStopping(streamKind: TrackKind): TaskResponse;
    resumeStreamWithoutAdding(streamKind: TrackKind): TaskResponse;
    cleanup(): void;
}
