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

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 as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.media.mediaproperties as windows_media_mediaproperties
import winrt.windows.perception.spatial as windows_perception_spatial

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

Self = typing.TypeVar('Self')

@typing.final
class CameraIntrinsics(winrt.system.Object):
    def __new__(cls: typing.Type[Self], focal_length: typing.Union[windows_foundation_numerics.Vector2, typing.Tuple[winrt.system.Single, winrt.system.Single]], principal_point: typing.Union[windows_foundation_numerics.Vector2, typing.Tuple[winrt.system.Single, winrt.system.Single]], radial_distortion: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]], tangential_distortion: typing.Union[windows_foundation_numerics.Vector2, typing.Tuple[winrt.system.Single, winrt.system.Single]], image_width: winrt.system.UInt32, image_height: winrt.system.UInt32) -> Self: ...
    # Windows.Foundation.Point Windows.Media.Devices.Core.CameraIntrinsics::DistortPoint(Windows.Foundation.Point)
    def distort_point(self, input: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> windows_foundation.Point: ...
    # System.Void Windows.Media.Devices.Core.CameraIntrinsics::DistortPoints(Windows.Foundation.Point[],Windows.Foundation.Point[])
    def distort_points(self, inputs: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.ReadableBuffer], results: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.WriteableBuffer], /) -> None: ...
    # System.Void Windows.Media.Devices.Core.CameraIntrinsics::ProjectManyOntoFrame(Windows.Foundation.Numerics.Vector3[],Windows.Foundation.Point[])
    def project_many_onto_frame(self, coordinates: typing.Union[winrt.system.Array[windows_foundation_numerics.Vector3], winrt.system.ReadableBuffer], results: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.Point Windows.Media.Devices.Core.CameraIntrinsics::ProjectOntoFrame(Windows.Foundation.Numerics.Vector3)
    def project_onto_frame(self, coordinate: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]], /) -> windows_foundation.Point: ...
    # Windows.Foundation.Point Windows.Media.Devices.Core.CameraIntrinsics::UndistortPoint(Windows.Foundation.Point)
    def undistort_point(self, input: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> windows_foundation.Point: ...
    # System.Void Windows.Media.Devices.Core.CameraIntrinsics::UndistortPoints(Windows.Foundation.Point[],Windows.Foundation.Point[])
    def undistort_points(self, inputs: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.ReadableBuffer], results: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.Numerics.Vector2 Windows.Media.Devices.Core.CameraIntrinsics::UnprojectAtUnitDepth(Windows.Foundation.Point)
    def unproject_at_unit_depth(self, pixel_coordinate: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> windows_foundation_numerics.Vector2: ...
    # System.Void Windows.Media.Devices.Core.CameraIntrinsics::UnprojectPixelsAtUnitDepth(Windows.Foundation.Point[],Windows.Foundation.Numerics.Vector2[])
    def unproject_pixels_at_unit_depth(self, pixel_coordinates: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.ReadableBuffer], results: typing.Union[winrt.system.Array[windows_foundation_numerics.Vector2], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.Numerics.Vector2 Windows.Media.Devices.Core.CameraIntrinsics::get_FocalLength()
    @_property
    def focal_length(self) -> windows_foundation_numerics.Vector2: ...
    # System.UInt32 Windows.Media.Devices.Core.CameraIntrinsics::get_ImageHeight()
    @_property
    def image_height(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Devices.Core.CameraIntrinsics::get_ImageWidth()
    @_property
    def image_width(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.Numerics.Vector2 Windows.Media.Devices.Core.CameraIntrinsics::get_PrincipalPoint()
    @_property
    def principal_point(self) -> windows_foundation_numerics.Vector2: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Devices.Core.CameraIntrinsics::get_RadialDistortion()
    @_property
    def radial_distortion(self) -> windows_foundation_numerics.Vector3: ...
    # Windows.Foundation.Numerics.Vector2 Windows.Media.Devices.Core.CameraIntrinsics::get_TangentialDistortion()
    @_property
    def tangential_distortion(self) -> windows_foundation_numerics.Vector2: ...
    # Windows.Foundation.Numerics.Matrix4x4 Windows.Media.Devices.Core.CameraIntrinsics::get_UndistortedProjectionTransform()
    @_property
    def undistorted_projection_transform(self) -> windows_foundation_numerics.Matrix4x4: ...

@typing.final
class DepthCorrelatedCoordinateMapper(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper::Close()
    def close(self) -> None: ...
    # Windows.Foundation.Point Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper::MapPoint(Windows.Foundation.Point,Windows.Perception.Spatial.SpatialCoordinateSystem,Windows.Media.Devices.Core.CameraIntrinsics)
    def map_point(self, source_point: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], target_coordinate_system: windows_perception_spatial.SpatialCoordinateSystem, target_camera_intrinsics: CameraIntrinsics, /) -> windows_foundation.Point: ...
    # System.Void Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper::MapPoints(Windows.Foundation.Point[],Windows.Perception.Spatial.SpatialCoordinateSystem,Windows.Media.Devices.Core.CameraIntrinsics,Windows.Foundation.Point[])
    def map_points(self, source_points: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.ReadableBuffer], target_coordinate_system: windows_perception_spatial.SpatialCoordinateSystem, target_camera_intrinsics: CameraIntrinsics, results: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper::UnprojectPoint(Windows.Foundation.Point,Windows.Perception.Spatial.SpatialCoordinateSystem)
    def unproject_point(self, source_point: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], target_coordinate_system: windows_perception_spatial.SpatialCoordinateSystem, /) -> windows_foundation_numerics.Vector3: ...
    # System.Void Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper::UnprojectPoints(Windows.Foundation.Point[],Windows.Perception.Spatial.SpatialCoordinateSystem,Windows.Foundation.Numerics.Vector3[])
    def unproject_points(self, source_points: typing.Union[winrt.system.Array[windows_foundation.Point], winrt.system.ReadableBuffer], target_coordinate_system: windows_perception_spatial.SpatialCoordinateSystem, results: typing.Union[winrt.system.Array[windows_foundation_numerics.Vector3], winrt.system.WriteableBuffer], /) -> None: ...

@typing.final
class FrameControlCapabilities(winrt.system.Object):
    # Windows.Media.Devices.Core.FrameExposureCapabilities Windows.Media.Devices.Core.FrameControlCapabilities::get_Exposure()
    @_property
    def exposure(self) -> FrameExposureCapabilities: ...
    # Windows.Media.Devices.Core.FrameExposureCompensationCapabilities Windows.Media.Devices.Core.FrameControlCapabilities::get_ExposureCompensation()
    @_property
    def exposure_compensation(self) -> FrameExposureCompensationCapabilities: ...
    # Windows.Media.Devices.Core.FrameFocusCapabilities Windows.Media.Devices.Core.FrameControlCapabilities::get_Focus()
    @_property
    def focus(self) -> FrameFocusCapabilities: ...
    # Windows.Media.Devices.Core.FrameIsoSpeedCapabilities Windows.Media.Devices.Core.FrameControlCapabilities::get_IsoSpeed()
    @_property
    def iso_speed(self) -> FrameIsoSpeedCapabilities: ...
    # System.Boolean Windows.Media.Devices.Core.FrameControlCapabilities::get_PhotoConfirmationSupported()
    @_property
    def photo_confirmation_supported(self) -> bool: ...
    # Windows.Media.Devices.Core.FrameFlashCapabilities Windows.Media.Devices.Core.FrameControlCapabilities::get_Flash()
    @_property
    def flash(self) -> FrameFlashCapabilities: ...

@typing.final
class FrameController(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Foundation.IReference`1<System.Boolean> Windows.Media.Devices.Core.FrameController::get_PhotoConfirmationEnabled()
    @_property
    def photo_confirmation_enabled(self) -> typing.Optional[bool]: ...
    # System.Void Windows.Media.Devices.Core.FrameController::put_PhotoConfirmationEnabled(Windows.Foundation.IReference`1<System.Boolean>)
    @photo_confirmation_enabled.setter
    def photo_confirmation_enabled(self, value: typing.Optional[bool]) -> None: ...
    # Windows.Media.Devices.Core.FrameExposureCompensationControl Windows.Media.Devices.Core.FrameController::get_ExposureCompensationControl()
    @_property
    def exposure_compensation_control(self) -> FrameExposureCompensationControl: ...
    # Windows.Media.Devices.Core.FrameExposureControl Windows.Media.Devices.Core.FrameController::get_ExposureControl()
    @_property
    def exposure_control(self) -> FrameExposureControl: ...
    # Windows.Media.Devices.Core.FrameFocusControl Windows.Media.Devices.Core.FrameController::get_FocusControl()
    @_property
    def focus_control(self) -> FrameFocusControl: ...
    # Windows.Media.Devices.Core.FrameIsoSpeedControl Windows.Media.Devices.Core.FrameController::get_IsoSpeedControl()
    @_property
    def iso_speed_control(self) -> FrameIsoSpeedControl: ...
    # Windows.Media.Devices.Core.FrameFlashControl Windows.Media.Devices.Core.FrameController::get_FlashControl()
    @_property
    def flash_control(self) -> FrameFlashControl: ...

@typing.final
class FrameExposureCapabilities(winrt.system.Object):
    # Windows.Foundation.TimeSpan Windows.Media.Devices.Core.FrameExposureCapabilities::get_Max()
    @_property
    def max(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Devices.Core.FrameExposureCapabilities::get_Min()
    @_property
    def min(self) -> datetime.timedelta: ...
    # Windows.Foundation.TimeSpan Windows.Media.Devices.Core.FrameExposureCapabilities::get_Step()
    @_property
    def step(self) -> datetime.timedelta: ...
    # System.Boolean Windows.Media.Devices.Core.FrameExposureCapabilities::get_Supported()
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameExposureCompensationCapabilities(winrt.system.Object):
    # System.Single Windows.Media.Devices.Core.FrameExposureCompensationCapabilities::get_Max()
    @_property
    def max(self) -> winrt.system.Single: ...
    # System.Single Windows.Media.Devices.Core.FrameExposureCompensationCapabilities::get_Min()
    @_property
    def min(self) -> winrt.system.Single: ...
    # System.Single Windows.Media.Devices.Core.FrameExposureCompensationCapabilities::get_Step()
    @_property
    def step(self) -> winrt.system.Single: ...
    # System.Boolean Windows.Media.Devices.Core.FrameExposureCompensationCapabilities::get_Supported()
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameExposureCompensationControl(winrt.system.Object):
    # Windows.Foundation.IReference`1<System.Single> Windows.Media.Devices.Core.FrameExposureCompensationControl::get_Value()
    @_property
    def value(self) -> typing.Optional[winrt.system.Single]: ...
    # System.Void Windows.Media.Devices.Core.FrameExposureCompensationControl::put_Value(Windows.Foundation.IReference`1<System.Single>)
    @value.setter
    def value(self, value: typing.Optional[winrt.system.Single]) -> None: ...

@typing.final
class FrameExposureControl(winrt.system.Object):
    # Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan> Windows.Media.Devices.Core.FrameExposureControl::get_Value()
    @_property
    def value(self) -> typing.Optional[datetime.timedelta]: ...
    # System.Void Windows.Media.Devices.Core.FrameExposureControl::put_Value(Windows.Foundation.IReference`1<Windows.Foundation.TimeSpan>)
    @value.setter
    def value(self, value: typing.Optional[datetime.timedelta]) -> None: ...
    # System.Boolean Windows.Media.Devices.Core.FrameExposureControl::get_Auto()
    @_property
    def auto(self) -> bool: ...
    # System.Void Windows.Media.Devices.Core.FrameExposureControl::put_Auto(System.Boolean)
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class FrameFlashCapabilities(winrt.system.Object):
    # System.Boolean Windows.Media.Devices.Core.FrameFlashCapabilities::get_PowerSupported()
    @_property
    def power_supported(self) -> bool: ...
    # System.Boolean Windows.Media.Devices.Core.FrameFlashCapabilities::get_RedEyeReductionSupported()
    @_property
    def red_eye_reduction_supported(self) -> bool: ...
    # System.Boolean Windows.Media.Devices.Core.FrameFlashCapabilities::get_Supported()
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameFlashControl(winrt.system.Object):
    # System.Boolean Windows.Media.Devices.Core.FrameFlashControl::get_RedEyeReduction()
    @_property
    def red_eye_reduction(self) -> bool: ...
    # System.Void Windows.Media.Devices.Core.FrameFlashControl::put_RedEyeReduction(System.Boolean)
    @red_eye_reduction.setter
    def red_eye_reduction(self, value: bool) -> None: ...
    # System.Single Windows.Media.Devices.Core.FrameFlashControl::get_PowerPercent()
    @_property
    def power_percent(self) -> winrt.system.Single: ...
    # System.Void Windows.Media.Devices.Core.FrameFlashControl::put_PowerPercent(System.Single)
    @power_percent.setter
    def power_percent(self, value: winrt.system.Single) -> None: ...
    # Windows.Media.Devices.Core.FrameFlashMode Windows.Media.Devices.Core.FrameFlashControl::get_Mode()
    @_property
    def mode(self) -> FrameFlashMode: ...
    # System.Void Windows.Media.Devices.Core.FrameFlashControl::put_Mode(Windows.Media.Devices.Core.FrameFlashMode)
    @mode.setter
    def mode(self, value: FrameFlashMode) -> None: ...
    # System.Boolean Windows.Media.Devices.Core.FrameFlashControl::get_Auto()
    @_property
    def auto(self) -> bool: ...
    # System.Void Windows.Media.Devices.Core.FrameFlashControl::put_Auto(System.Boolean)
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class FrameFocusCapabilities(winrt.system.Object):
    # System.UInt32 Windows.Media.Devices.Core.FrameFocusCapabilities::get_Max()
    @_property
    def max(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Devices.Core.FrameFocusCapabilities::get_Min()
    @_property
    def min(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Devices.Core.FrameFocusCapabilities::get_Step()
    @_property
    def step(self) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Media.Devices.Core.FrameFocusCapabilities::get_Supported()
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameFocusControl(winrt.system.Object):
    # Windows.Foundation.IReference`1<System.UInt32> Windows.Media.Devices.Core.FrameFocusControl::get_Value()
    @_property
    def value(self) -> typing.Optional[winrt.system.UInt32]: ...
    # System.Void Windows.Media.Devices.Core.FrameFocusControl::put_Value(Windows.Foundation.IReference`1<System.UInt32>)
    @value.setter
    def value(self, value: typing.Optional[winrt.system.UInt32]) -> None: ...

@typing.final
class FrameIsoSpeedCapabilities(winrt.system.Object):
    # System.UInt32 Windows.Media.Devices.Core.FrameIsoSpeedCapabilities::get_Max()
    @_property
    def max(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Devices.Core.FrameIsoSpeedCapabilities::get_Min()
    @_property
    def min(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Media.Devices.Core.FrameIsoSpeedCapabilities::get_Step()
    @_property
    def step(self) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Media.Devices.Core.FrameIsoSpeedCapabilities::get_Supported()
    @_property
    def supported(self) -> bool: ...

@typing.final
class FrameIsoSpeedControl(winrt.system.Object):
    # Windows.Foundation.IReference`1<System.UInt32> Windows.Media.Devices.Core.FrameIsoSpeedControl::get_Value()
    @_property
    def value(self) -> typing.Optional[winrt.system.UInt32]: ...
    # System.Void Windows.Media.Devices.Core.FrameIsoSpeedControl::put_Value(Windows.Foundation.IReference`1<System.UInt32>)
    @value.setter
    def value(self, value: typing.Optional[winrt.system.UInt32]) -> None: ...
    # System.Boolean Windows.Media.Devices.Core.FrameIsoSpeedControl::get_Auto()
    @_property
    def auto(self) -> bool: ...
    # System.Void Windows.Media.Devices.Core.FrameIsoSpeedControl::put_Auto(System.Boolean)
    @auto.setter
    def auto(self, value: bool) -> None: ...

@typing.final
class VariablePhotoSequenceController(winrt.system.Object):
    # Windows.Media.MediaProperties.MediaRatio Windows.Media.Devices.Core.VariablePhotoSequenceController::GetCurrentFrameRate()
    def get_current_frame_rate(self) -> windows_media_mediaproperties.MediaRatio: ...
    # Windows.Media.MediaProperties.MediaRatio Windows.Media.Devices.Core.VariablePhotoSequenceController::GetHighestConcurrentFrameRate(Windows.Media.MediaProperties.IMediaEncodingProperties)
    def get_highest_concurrent_frame_rate(self, capture_properties: windows_media_mediaproperties.IMediaEncodingProperties, /) -> windows_media_mediaproperties.MediaRatio: ...
    # System.Single Windows.Media.Devices.Core.VariablePhotoSequenceController::get_PhotosPerSecondLimit()
    @_property
    def photos_per_second_limit(self) -> winrt.system.Single: ...
    # System.Void Windows.Media.Devices.Core.VariablePhotoSequenceController::put_PhotosPerSecondLimit(System.Single)
    @photos_per_second_limit.setter
    def photos_per_second_limit(self, value: winrt.system.Single) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Media.Devices.Core.FrameController> Windows.Media.Devices.Core.VariablePhotoSequenceController::get_DesiredFrameControllers()
    @_property
    def desired_frame_controllers(self) -> typing.MutableSequence[FrameController]: ...
    # Windows.Media.Devices.Core.FrameControlCapabilities Windows.Media.Devices.Core.VariablePhotoSequenceController::get_FrameCapabilities()
    @_property
    def frame_capabilities(self) -> FrameControlCapabilities: ...
    # System.Single Windows.Media.Devices.Core.VariablePhotoSequenceController::get_MaxPhotosPerSecond()
    @_property
    def max_photos_per_second(self) -> winrt.system.Single: ...
    # System.Boolean Windows.Media.Devices.Core.VariablePhotoSequenceController::get_Supported()
    @_property
    def supported(self) -> bool: ...

