import "webrtc-adapter";
import { CameraOrientation } from "../call/options/CameraOrientation";
import { Device } from "./Device";
import { Logger } from "../log/Logger";
import { DisplayOptions } from "../call/options/DisplayOptions";
declare global {
    interface MediaDevices {
        getDisplayMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;
    }
    interface MediaTrackConstraintSet {
        cursor?: "always" | "motion" | "never";
        displaySurface?: "browser" | "monitor" | "window";
        logicalSurface?: ConstrainBoolean;
    }
}
export declare class DefaultDevice implements Device {
    private logger;
    private deviceKindNames;
    private audioInputDevice;
    private videoInputDevice;
    private cameraOrientation;
    private static CAMERA_VIDEO_FPS_DEFAULT;
    private static SCREEN_SHARE_FPS_DEFAULT;
    constructor(logger: Logger);
    getAudioInputDevices(): Promise<MediaDeviceInfo[]>;
    getAudioOutputDevices(): Promise<MediaDeviceInfo[]>;
    getVideoInputDevices(): Promise<MediaDeviceInfo[]>;
    setAudioInputDevice(id: string): void;
    unsetAudioInputDevice(): void;
    getAudioInputDevice(): string;
    audioInputDeviceShouldChange(): Promise<boolean>;
    setVideoInputDevice(id: string): void;
    unsetVideoInputDevice(): void;
    getVideoInputDevice(): string;
    getCameraOrientation(): CameraOrientation;
    getLocalStream(audio?: boolean, video?: boolean, cameraOrientation?: CameraOrientation, hdResolution?: boolean, useExactDevice?: boolean, cameraVideoFrameRate?: number): Promise<MediaStream>;
    getDisplayMedia(displayOptions?: DisplayOptions, screenShareFrameRate?: number): Promise<MediaStream>;
    protected getMicrophoneDefaults: () => MediaTrackConstraintSet;
    protected getCameraDefaults: (hdResolution?: boolean, cameraVideoFrameRate?: number) => MediaTrackConstraintSet;
    protected getScreenShareDefaults: (screenShareFrameRate?: number) => MediaTrackConstraintSet;
    private getAudioConstraints;
    private getVideoConstraints;
    private getDeviceConstraint;
    private getDevices;
    private filterDevices;
    private getUserMediaDevices;
    private enumerateDevices;
    private stopTracks;
    private updateDevices;
    private generateCustomMediaDeviceInfo;
}
