import { HookTarget, StateRef } from '@siberiacancode/reactuse'; import { MediaTrackConstraintsOptions } from '@webcam/core'; export interface UseWebcamParams extends MediaTrackConstraintsOptions { audioConstraints?: MediaTrackConstraints; requestTimeLimit?: number; stream?: MediaStream; videoConstraints?: MediaTrackConstraints; onError?: (error: Error) => void; onRequest?: () => void; onStart?: (stream: MediaStream) => void; onStop?: (stream?: MediaStream) => void; } export interface UseWebcamReturn { stream?: MediaStream; apply: (constraints: MediaStreamConstraints) => Promise; start: (constraints?: MediaStreamConstraints) => Promise; stop: () => void; } export interface UseWebcam { (target: HookTarget, params?: UseWebcamParams): UseWebcamReturn; (params?: UseWebcamParams): UseWebcamReturn & { ref: StateRef; }; } /** * @name useWebcam * @description - Hook that manages a webcam media stream for a video element * * @overload * @param {HookTarget} target The target video element the stream will be attached to * @param {UseWebcamParams} [params] The webcam parameters * @returns {UseWebcamReturn} An object containing the stream and controls * * @overload * @param {UseWebcamParams} [params] The webcam parameters * @returns {UseWebcamReturn & { ref: StateRef }} An object containing the stream, controls and ref */ export declare const useWebcam: UseWebcam;