interface UseUserMediaOptions {
    preferEnvironmentCamera?: boolean;
}
interface PermissionResult {
    video: boolean;
    audio: boolean;
}
interface SwitchInputResult {
    oldVideoTrack: MediaStreamTrack;
    newVideoTrack: MediaStreamTrack;
    oldAudioTrack: MediaStreamTrack;
    newAudioTrack: MediaStreamTrack;
    newStream: MediaStream;
}
declare const useUserMedia: ({ preferEnvironmentCamera }?: UseUserMediaOptions) => {
    stream: MediaStream | undefined;
    activeStream: MediaStream | undefined;
    audioDevices: MediaDeviceInfo[];
    videoDevices: MediaDeviceInfo[];
    outputDevices: MediaDeviceInfo[];
    selectedAudioDevice: string | undefined;
    selectedVideoDevice: string | undefined;
    selectedOutputDevice: string | undefined;
    ready: boolean;
    accessGranted: boolean;
    switchInput: (deviceId: string, type: 'audio' | 'video') => Promise<SwitchInputResult | undefined>;
    stopStreaming: (_stream?: MediaStream) => void;
    stopAllStreaming: () => Promise<void>;
    toggleMute: () => void;
    toggleVideo: () => void;
    switchAudioOutput: (deviceId: string) => void;
    muted: boolean;
    videoOff: boolean;
    checkPermission: () => Promise<PermissionResult>;
};
export default useUserMedia;
