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

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

import winrt._winrt
import winrt.system
import winrt.windows.devices.perception as windows_devices_perception
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.graphics.imaging as windows_graphics_imaging
import winrt.windows.media as windows_media

from winrt.windows.devices.perception.provider import PerceptionStartFaceAuthenticationHandler, PerceptionStopFaceAuthenticationHandler

Self = typing.TypeVar('Self')

@typing.final
class KnownPerceptionFrameKind_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Devices.Perception.Provider.KnownPerceptionFrameKind::get_Color()
    @_property
    def color(cls) -> str: ...
    # System.String Windows.Devices.Perception.Provider.KnownPerceptionFrameKind::get_Depth()
    @_property
    def depth(cls) -> str: ...
    # System.String Windows.Devices.Perception.Provider.KnownPerceptionFrameKind::get_Infrared()
    @_property
    def infrared(cls) -> str: ...

@typing.final
class KnownPerceptionFrameKind(winrt.system.Object, metaclass=KnownPerceptionFrameKind_Static):
    pass

@typing.final
class PerceptionControlGroup(winrt.system.Object):
    def __new__(cls: typing.Type[Self], ids: typing.Iterable[str]) -> Self: ...
    # Windows.Foundation.Collections.IVectorView`1<System.String> Windows.Devices.Perception.Provider.PerceptionControlGroup::get_FrameProviderIds()
    @_property
    def frame_provider_ids(self) -> typing.Sequence[str]: ...

@typing.final
class PerceptionCorrelation(winrt.system.Object):
    def __new__(cls: typing.Type[Self], target_id: str, position: typing.Union[windows_foundation_numerics.Vector3, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single]], orientation: typing.Union[windows_foundation_numerics.Quaternion, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]]) -> Self: ...
    # Windows.Foundation.Numerics.Quaternion Windows.Devices.Perception.Provider.PerceptionCorrelation::get_Orientation()
    @_property
    def orientation(self) -> windows_foundation_numerics.Quaternion: ...
    # Windows.Foundation.Numerics.Vector3 Windows.Devices.Perception.Provider.PerceptionCorrelation::get_Position()
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionCorrelation::get_TargetId()
    @_property
    def target_id(self) -> str: ...

@typing.final
class PerceptionCorrelationGroup(winrt.system.Object):
    def __new__(cls: typing.Type[Self], relative_locations: typing.Iterable[PerceptionCorrelation]) -> Self: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Devices.Perception.Provider.PerceptionCorrelation> Windows.Devices.Perception.Provider.PerceptionCorrelationGroup::get_RelativeLocations()
    @_property
    def relative_locations(self) -> typing.Sequence[PerceptionCorrelation]: ...

@typing.final
class PerceptionFaceAuthenticationGroup(winrt.system.Object):
    def __new__(cls: typing.Type[Self], ids: typing.Iterable[str], start_handler: PerceptionStartFaceAuthenticationHandler, stop_handler: PerceptionStopFaceAuthenticationHandler) -> Self: ...
    # Windows.Foundation.Collections.IVectorView`1<System.String> Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup::get_FrameProviderIds()
    @_property
    def frame_provider_ids(self) -> typing.Sequence[str]: ...

@typing.final
class PerceptionFrame(winrt.system.Object):
    # Windows.Foundation.TimeSpan Windows.Devices.Perception.Provider.PerceptionFrame::get_RelativeTime()
    @_property
    def relative_time(self) -> datetime.timedelta: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrame::put_RelativeTime(Windows.Foundation.TimeSpan)
    @relative_time.setter
    def relative_time(self, value: datetime.timedelta) -> None: ...
    # Windows.Foundation.IMemoryBuffer Windows.Devices.Perception.Provider.PerceptionFrame::get_FrameData()
    @_property
    def frame_data(self) -> windows_foundation.IMemoryBuffer: ...
    # Windows.Foundation.Collections.ValueSet Windows.Devices.Perception.Provider.PerceptionFrame::get_Properties()
    @_property
    def properties(self) -> windows_foundation_collections.ValueSet: ...

@typing.final
class PerceptionFrameProviderInfo(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::get_Id()
    @_property
    def id(self) -> str: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::put_Id(System.String)
    @id.setter
    def id(self, value: str) -> None: ...
    # System.Boolean Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::get_Hidden()
    @_property
    def hidden(self) -> bool: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::put_Hidden(System.Boolean)
    @hidden.setter
    def hidden(self, value: bool) -> None: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::get_FrameKind()
    @_property
    def frame_kind(self) -> str: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::put_FrameKind(System.String)
    @frame_kind.setter
    def frame_kind(self, value: str) -> None: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::put_DisplayName(System.String)
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::get_DeviceKind()
    @_property
    def device_kind(self) -> str: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo::put_DeviceKind(System.String)
    @device_kind.setter
    def device_kind(self, value: str) -> None: ...

@typing.final
class PerceptionFrameProviderManagerService_Static(winrt._winrt.IInspectable_Static):
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::PublishFrameForProvider(Windows.Devices.Perception.Provider.IPerceptionFrameProvider,Windows.Devices.Perception.Provider.PerceptionFrame)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def publish_frame_for_provider(cls, provider: IPerceptionFrameProvider, frame: PerceptionFrame, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::RegisterControlGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionControlGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def register_control_group(cls, manager: IPerceptionFrameProviderManager, control_group: PerceptionControlGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::RegisterCorrelationGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionCorrelationGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def register_correlation_group(cls, manager: IPerceptionFrameProviderManager, correlation_group: PerceptionCorrelationGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::RegisterFaceAuthenticationGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def register_face_authentication_group(cls, manager: IPerceptionFrameProviderManager, face_authentication_group: PerceptionFaceAuthenticationGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::RegisterFrameProviderInfo(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def register_frame_provider_info(cls, manager: IPerceptionFrameProviderManager, frame_provider_info: PerceptionFrameProviderInfo, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::UnregisterControlGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionControlGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def unregister_control_group(cls, manager: IPerceptionFrameProviderManager, control_group: PerceptionControlGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::UnregisterCorrelationGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionCorrelationGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def unregister_correlation_group(cls, manager: IPerceptionFrameProviderManager, correlation_group: PerceptionCorrelationGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::UnregisterFaceAuthenticationGroup(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def unregister_face_authentication_group(cls, manager: IPerceptionFrameProviderManager, face_authentication_group: PerceptionFaceAuthenticationGroup, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::UnregisterFrameProviderInfo(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager,Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def unregister_frame_provider_info(cls, manager: IPerceptionFrameProviderManager, frame_provider_info: PerceptionFrameProviderInfo, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService::UpdateAvailabilityForProvider(Windows.Devices.Perception.Provider.IPerceptionFrameProvider,System.Boolean)
    # @deprecated("PerceptionFrameProviderManagerService may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def update_availability_for_provider(cls, provider: IPerceptionFrameProvider, available: bool, /) -> None: ...

@typing.final
class PerceptionFrameProviderManagerService(winrt.system.Object, metaclass=PerceptionFrameProviderManagerService_Static):
    pass

@typing.final
class PerceptionPropertyChangeRequest(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest::GetDeferral()
    # @deprecated("PerceptionPropertyChangeRequest may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # Windows.Devices.Perception.PerceptionFrameSourcePropertyChangeStatus Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest::get_Status()
    @_property
    def status(self) -> windows_devices_perception.PerceptionFrameSourcePropertyChangeStatus: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest::put_Status(Windows.Devices.Perception.PerceptionFrameSourcePropertyChangeStatus)
    @status.setter
    def status(self, value: windows_devices_perception.PerceptionFrameSourcePropertyChangeStatus) -> None: ...
    # System.String Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest::get_Name()
    @_property
    def name(self) -> str: ...
    # System.Object Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest::get_Value()
    @_property
    def value(self) -> winrt.system.Object: ...

@typing.final
class PerceptionVideoFrameAllocator(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: ...
    def __new__(cls: typing.Type[Self], max_outstanding_frame_count_for_write: winrt.system.UInt32, format: windows_graphics_imaging.BitmapPixelFormat, resolution: typing.Union[windows_foundation.Size, typing.Tuple[winrt.system.Single, winrt.system.Single]], alpha: windows_graphics_imaging.BitmapAlphaMode) -> Self: ...
    # Windows.Devices.Perception.Provider.PerceptionFrame Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator::AllocateFrame()
    # @deprecated("PerceptionVideoFrameAllocator may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def allocate_frame(self) -> PerceptionFrame: ...
    # System.Void Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator::Close()
    def close(self) -> None: ...
    # Windows.Devices.Perception.Provider.PerceptionFrame Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator::CopyFromVideoFrame(Windows.Media.VideoFrame)
    # @deprecated("PerceptionVideoFrameAllocator may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    def copy_from_video_frame(self, frame: windows_media.VideoFrame, /) -> PerceptionFrame: ...

@typing.final
class _IPerceptionFrameProvider: ...

class IPerceptionFrameProvider(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # System.Void Windows.Devices.Perception.Provider.IPerceptionFrameProvider::SetProperty(Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest)
    # @deprecated("IPerceptionFrameProvider may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    @abstractmethod
    def set_property(self, value: PerceptionPropertyChangeRequest, /) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.IPerceptionFrameProvider::Start()
    # @deprecated("IPerceptionFrameProvider may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    @abstractmethod
    def start(self) -> None: ...
    # System.Void Windows.Devices.Perception.Provider.IPerceptionFrameProvider::Stop()
    # @deprecated("IPerceptionFrameProvider may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    @abstractmethod
    def stop(self) -> None: ...
    # System.Boolean Windows.Devices.Perception.Provider.IPerceptionFrameProvider::get_Available()
    @_property
    @abstractmethod
    def available(self) -> bool: ...
    # Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo Windows.Devices.Perception.Provider.IPerceptionFrameProvider::get_FrameProviderInfo()
    @_property
    @abstractmethod
    def frame_provider_info(self) -> PerceptionFrameProviderInfo: ...
    # Windows.Foundation.Collections.IPropertySet Windows.Devices.Perception.Provider.IPerceptionFrameProvider::get_Properties()
    @_property
    @abstractmethod
    def properties(self) -> windows_foundation_collections.IPropertySet: ...

@typing.final
class _IPerceptionFrameProviderManager: ...

class IPerceptionFrameProviderManager(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Devices.Perception.Provider.IPerceptionFrameProvider Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager::GetFrameProvider(Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo)
    # @deprecated("IPerceptionFrameProviderManager may be unavailable after Windows Creator Update. Please refer to AVStream on MSDN.")
    @abstractmethod
    def get_frame_provider(self, frame_provider_info: PerceptionFrameProviderInfo, /) -> IPerceptionFrameProvider: ...

