import { DeepMaybeObservable, Supportable, ReadonlyObservable } from '@usels/core'; interface UseDevicesListOptions { /** Request permissions on mount */ requestPermissions?: boolean; /** Constraints for getUserMedia when requesting permissions */ constraints?: MediaStreamConstraints; /** Callback when device list is updated */ onUpdated?: (devices: MediaDeviceInfo[]) => void; } interface UseDevicesListReturn extends Supportable { /** All enumerated media devices */ devices$: ReadonlyObservable; /** Video input devices (cameras) */ videoInputs$: ReadonlyObservable; /** Audio input devices (microphones) */ audioInputs$: ReadonlyObservable; /** Audio output devices (speakers) */ audioOutputs$: ReadonlyObservable; /** Whether media permissions have been granted */ permissionGranted$: ReadonlyObservable; /** Request media device permissions */ ensurePermissions: () => Promise; } /** * Framework-agnostic reactive wrapper around * [MediaDevices.enumerateDevices()](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices). * * Lists available media input/output devices and tracks changes via the * `devicechange` event on `navigator.mediaDevices`. Optionally requests * permissions on mount. */ declare function createDevicesList(options?: DeepMaybeObservable): UseDevicesListReturn; export { type UseDevicesListOptions, type UseDevicesListReturn, createDevicesList };