# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.foundation.numerics
import winrt.windows.media.mediaproperties
import winrt.windows.perception.spatial

from winrt.windows.media.devices.core import FrameFlashMode

Self = typing.TypeVar('Self')

@typing.final
class CameraIntrinsics(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CameraIntrinsics: ...
    def __new__(cls: typing.Type[CameraIntrinsics], focal_length: winrt.windows.foundation.numerics.Vector2, principal_point: winrt.windows.foundation.numerics.Vector2, radial_distortion: winrt.windows.foundation.numerics.Vector3, tangential_distortion: winrt.windows.foundation.numerics.Vector2, image_width: winrt.system.UInt32, image_height: winrt.system.UInt32) -> CameraIntrinsics:...
    def distort_point(self, input: winrt.windows.foundation.Point, /) -> winrt.windows.foundation.Point: ...
    def distort_points(self, inputs: winrt.system.Array[winrt.windows.foundation.Point], results: winrt.system.Array[winrt.windows.foundation.Point], /) -> None: ...
    def project_many_onto_frame(self, coordinates: winrt.system.Array[winrt.windows.foundation.numerics.Vector3], results: winrt.system.Array[winrt.windows.foundation.Point], /) -> None: ...
    def project_onto_frame(self, coordinate: winrt.windows.foundation.numerics.Vector3, /) -> winrt.windows.foundation.Point: ...
    def undistort_point(self, input: winrt.windows.foundation.Point, /) -> winrt.windows.foundation.Point: ...
    def undistort_points(self, inputs: winrt.system.Array[winrt.windows.foundation.Point], results: winrt.system.Array[winrt.windows.foundation.Point], /) -> None: ...
    def unproject_at_unit_depth(self, pixel_coordinate: winrt.windows.foundation.Point, /) -> winrt.windows.foundation.numerics.Vector2: ...
    def unproject_pixels_at_unit_depth(self, pixel_coordinates: winrt.system.Array[winrt.windows.foundation.Point], results: winrt.system.Array[winrt.windows.foundation.numerics.Vector2], /) -> None: ...
    @_property
    def focal_length(self) -> winrt.windows.foundation.numerics.Vector2: ...
    @_property
    def image_height(self) -> winrt.system.UInt32: ...
    @_property
    def image_width(self) -> winrt.system.UInt32: ...
    @_property
    def principal_point(self) -> winrt.windows.foundation.numerics.Vector2: ...
    @_property
    def radial_distortion(self) -> winrt.windows.foundation.numerics.Vector3: ...
    @_property
    def tangential_distortion(self) -> winrt.windows.foundation.numerics.Vector2: ...
    @_property
    def undistorted_projection_transform(self) -> winrt.windows.foundation.numerics.Matrix4x4: ...

@typing.final
class DepthCorrelatedCoordinateMapper(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DepthCorrelatedCoordinateMapper: ...
    def close(self) -> None: ...
    def map_point(self, source_point: winrt.windows.foundation.Point, target_coordinate_system: typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem], target_camera_intrinsics: typing.Optional[CameraIntrinsics], /) -> winrt.windows.foundation.Point: ...
    def map_points(self, source_points: winrt.system.Array[winrt.windows.foundation.Point], target_coordinate_system: typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem], target_camera_intrinsics: typing.Optional[CameraIntrinsics], results: winrt.system.Array[winrt.windows.foundation.Point], /) -> None: ...
    def unproject_point(self, source_point: winrt.windows.foundation.Point, target_coordinate_system: typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem], /) -> winrt.windows.foundation.numerics.Vector3: ...
    def unproject_points(self, source_points: winrt.system.Array[winrt.windows.foundation.Point], target_coordinate_system: typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem], results: winrt.system.Array[winrt.windows.foundation.numerics.Vector3], /) -> None: ...

@typing.final
class FrameControlCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameControlCapabilities: ...
    @_property
    def exposure(self) -> typing.Optional[FrameExposureCapabilities]: ...
    @_property
    def exposure_compensation(self) -> typing.Optional[FrameExposureCompensationCapabilities]: ...
    @_property
    def focus(self) -> typing.Optional[FrameFocusCapabilities]: ...
    @_property
    def iso_speed(self) -> typing.Optional[FrameIsoSpeedCapabilities]: ...
    @_property
    def photo_confirmation_supported(self) -> bool: ...
    @_property
    def flash(self) -> typing.Optional[FrameFlashCapabilities]: ...

@typing.final
class FrameController(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameController: ...
    def __new__(cls: typing.Type[FrameController]) -> FrameController:...
    @_property
    def photo_confirmation_enabled(self) -> typing.Optional[typing.Optional[bool]]: ...
    @photo_confirmation_enabled.setter
    def photo_confirmation_enabled(self, value: typing.Optional[typing.Optional[bool]]) -> None: ...
    @_property
    def exposure_compensation_control(self) -> typing.Optional[FrameExposureCompensationControl]: ...
    @_property
    def exposure_control(self) -> typing.Optional[FrameExposureControl]: ...
    @_property
    def focus_control(self) -> typing.Optional[FrameFocusControl]: ...
    @_property
    def iso_speed_control(self) -> typing.Optional[FrameIsoSpeedControl]: ...
    @_property
    def flash_control(self) -> typing.Optional[FrameFlashControl]: ...

@typing.final
class FrameExposureCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameExposureCapabilities: ...
    @_property
    def max(self) -> datetime.timedelta: ...
    @_property
    def min(self) -> datetime.timedelta: ...
    @_property
    def step(self) -> datetime.timedelta: ...
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameExposureCompensationCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameExposureCompensationCapabilities: ...
    @_property
    def max(self) -> winrt.system.Single: ...
    @_property
    def min(self) -> winrt.system.Single: ...
    @_property
    def step(self) -> winrt.system.Single: ...
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameExposureCompensationControl(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameExposureCompensationControl: ...
    @_property
    def value(self) -> typing.Optional[typing.Optional[winrt.system.Single]]: ...
    @value.setter
    def value(self, value: typing.Optional[typing.Optional[winrt.system.Single]]) -> None: ...

@typing.final
class FrameExposureControl(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameExposureControl: ...
    @_property
    def value(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @value.setter
    def value(self, value: typing.Optional[typing.Optional[datetime.timedelta]]) -> None: ...
    @_property
    def auto(self) -> bool: ...
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class FrameFlashCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameFlashCapabilities: ...
    @_property
    def power_supported(self) -> bool: ...
    @_property
    def red_eye_reduction_supported(self) -> bool: ...
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameFlashControl(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameFlashControl: ...
    @_property
    def red_eye_reduction(self) -> bool: ...
    @red_eye_reduction.setter
    def red_eye_reduction(self, value: bool) -> None: ...
    @_property
    def power_percent(self) -> winrt.system.Single: ...
    @power_percent.setter
    def power_percent(self, value: winrt.system.Single) -> None: ...
    @_property
    def mode(self) -> FrameFlashMode: ...
    @mode.setter
    def mode(self, value: FrameFlashMode) -> None: ...
    @_property
    def auto(self) -> bool: ...
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class FrameFocusCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameFocusCapabilities: ...
    @_property
    def max(self) -> winrt.system.UInt32: ...
    @_property
    def min(self) -> winrt.system.UInt32: ...
    @_property
    def step(self) -> winrt.system.UInt32: ...
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameFocusControl(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameFocusControl: ...
    @_property
    def value(self) -> typing.Optional[typing.Optional[winrt.system.UInt32]]: ...
    @value.setter
    def value(self, value: typing.Optional[typing.Optional[winrt.system.UInt32]]) -> None: ...

@typing.final
class FrameIsoSpeedCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameIsoSpeedCapabilities: ...
    @_property
    def max(self) -> winrt.system.UInt32: ...
    @_property
    def min(self) -> winrt.system.UInt32: ...
    @_property
    def step(self) -> winrt.system.UInt32: ...
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameIsoSpeedControl(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FrameIsoSpeedControl: ...
    @_property
    def value(self) -> typing.Optional[typing.Optional[winrt.system.UInt32]]: ...
    @value.setter
    def value(self, value: typing.Optional[typing.Optional[winrt.system.UInt32]]) -> None: ...
    @_property
    def auto(self) -> bool: ...
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class VariablePhotoSequenceController(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VariablePhotoSequenceController: ...
    def get_current_frame_rate(self) -> typing.Optional[winrt.windows.media.mediaproperties.MediaRatio]: ...
    def get_highest_concurrent_frame_rate(self, capture_properties: typing.Optional[winrt.windows.media.mediaproperties.IMediaEncodingProperties], /) -> typing.Optional[winrt.windows.media.mediaproperties.MediaRatio]: ...
    @_property
    def photos_per_second_limit(self) -> winrt.system.Single: ...
    @photos_per_second_limit.setter
    def photos_per_second_limit(self, value: winrt.system.Single) -> None: ...
    @_property
    def desired_frame_controllers(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[FrameController]]: ...
    @_property
    def frame_capabilities(self) -> typing.Optional[FrameControlCapabilities]: ...
    @_property
    def max_photos_per_second(self) -> winrt.system.Single: ...
    @_property
    def supported(self) -> bool: ...

