// MediaStream Image Capture // Specification: https://w3c.github.io/mediacapture-image/ // Repository: https://github.com/w3c/mediacapture-image /// declare class ImageCapture { constructor(videoTrack: MediaStreamTrack); takePhoto(photoSettings?: PhotoSettings): Promise; getPhotoCapabilities(): Promise; getPhotoSettings(): Promise; grabFrame(): Promise; readonly track: MediaStreamTrack; } interface PhotoCapabilities { redEyeReduction?: RedEyeReduction; imageHeight?: MediaSettingsRange; imageWidth?: MediaSettingsRange; fillLightMode?: FillLightMode[]; } interface PhotoSettings { fillLightMode?: FillLightMode; imageHeight?: number; imageWidth?: number; redEyeReduction?: boolean; } interface MediaSettingsRange { max?: number; min?: number; step?: number; } type RedEyeReduction = ( | "never" | "always" | "controllable" ); type FillLightMode = ( | "auto" | "off" | "flash" ); interface MediaTrackSupportedConstraints { whiteBalanceMode?: boolean; exposureMode?: boolean; focusMode?: boolean; pointsOfInterest?: boolean; exposureCompensation?: boolean; exposureTime?: boolean; colorTemperature?: boolean; iso?: boolean; brightness?: boolean; contrast?: boolean; pan?: boolean; saturation?: boolean; sharpness?: boolean; focusDistance?: boolean; tilt?: boolean; zoom?: boolean; torch?: boolean; } interface MediaTrackCapabilities { whiteBalanceMode?: string[]; exposureMode?: string[]; focusMode?: string[]; exposureCompensation?: MediaSettingsRange; exposureTime?: MediaSettingsRange; colorTemperature?: MediaSettingsRange; iso?: MediaSettingsRange; brightness?: MediaSettingsRange; contrast?: MediaSettingsRange; saturation?: MediaSettingsRange; sharpness?: MediaSettingsRange; focusDistance?: MediaSettingsRange; pan?: MediaSettingsRange; tilt?: MediaSettingsRange; zoom?: MediaSettingsRange; torch?: boolean; } interface MediaTrackConstraintSet { whiteBalanceMode?: ConstrainDOMString; exposureMode?: ConstrainDOMString; focusMode?: ConstrainDOMString; pointsOfInterest?: ConstrainPoint2D; exposureCompensation?: ConstrainDouble; exposureTime?: ConstrainDouble; colorTemperature?: ConstrainDouble; iso?: ConstrainDouble; brightness?: ConstrainDouble; contrast?: ConstrainDouble; saturation?: ConstrainDouble; sharpness?: ConstrainDouble; focusDistance?: ConstrainDouble; pan?: boolean | ConstrainDouble; tilt?: boolean | ConstrainDouble; zoom?: boolean | ConstrainDouble; torch?: ConstrainBoolean; } interface MediaTrackSettings { whiteBalanceMode?: string; exposureMode?: string; focusMode?: string; pointsOfInterest?: Point2D[]; exposureCompensation?: number; exposureTime?: number; colorTemperature?: number; iso?: number; brightness?: number; contrast?: number; saturation?: number; sharpness?: number; focusDistance?: number; pan?: number; tilt?: number; zoom?: number; torch?: boolean; } interface ConstrainPoint2DParameters { exact?: Point2D[]; ideal?: Point2D[]; } type ConstrainPoint2D = Point2D[] | ConstrainPoint2DParameters; type MeteringMode = ( | "none" | "manual" | "single-shot" | "continuous" );