import { OpaqueObject } from '@legendapp/state'; import { DeepMaybeObservable, Supportable, ReadonlyObservable } from '@usels/core'; interface UseDisplayMediaOptions { /** Video constraint. Default: true */ video?: boolean | MediaTrackConstraints; /** Audio constraint. Default: false */ audio?: boolean | MediaTrackConstraints; /** Auto-start on mount. Default: false */ immediate?: boolean; } interface UseDisplayMediaReturn extends Supportable { /** Current display media stream */ stream$: ReadonlyObservable | null>; /** Whether stream is currently active */ enabled$: ReadonlyObservable; /** Start screen sharing. Throws if getDisplayMedia fails. */ start: () => Promise; /** Stop screen sharing */ stop: () => void; } /** * Framework-agnostic reactive wrapper around * [MediaDevices.getDisplayMedia()](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia). * * Provides start/stop controls and automatically handles the browser's * "Stop sharing" button via a per-track `ended` listener. */ declare function createDisplayMedia(options?: DeepMaybeObservable): UseDisplayMediaReturn; export { type UseDisplayMediaOptions, type UseDisplayMediaReturn, createDisplayMedia };