export interface CameraDevice { id: string; label: string; } export interface CameraCapability { isSupported(): boolean; apply(value: T): Promise; value(): T | null; } export interface RangeCameraCapability extends CameraCapability { min(): number; max(): number; step(): number; } export interface BooleanCameraCapability extends CameraCapability { } export interface CameraCapabilities { zoomFeature(): RangeCameraCapability; torchFeature(): BooleanCameraCapability; } export type OnRenderSurfaceReady = (viewfinderWidth: number, viewfinderHeight: number) => void; export interface RenderingCallbacks { onRenderSurfaceReady: OnRenderSurfaceReady; } export interface RenderedCamera { getSurface(): HTMLVideoElement; pause(): void; resume(onResumeCallback: () => void): void; isPaused(): boolean; close(): Promise; getRunningTrackCapabilities(): MediaTrackCapabilities; getRunningTrackSettings(): MediaTrackSettings; applyVideoConstraints(constraints: MediaTrackConstraints): Promise; getCapabilities(): CameraCapabilities; } export interface CameraRenderingOptions { aspectRatio?: number; } export interface Camera { render(parentElement: HTMLElement, options: CameraRenderingOptions, callbacks: RenderingCallbacks): Promise; }