# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.2

import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.devices.perception
except Exception:
    pass

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.foundation.numerics
except Exception:
    pass

try:
    import winsdk.windows.graphics.imaging
except Exception:
    pass

try:
    import winsdk.windows.media
except Exception:
    pass

class KnownPerceptionFrameKind(_winrt.Object):
    color: str
    depth: str
    infrared: str
    @staticmethod
    def _from(obj: _winrt.Object) -> KnownPerceptionFrameKind: ...

class PerceptionControlGroup(_winrt.Object):
    frame_provider_ids: winsdk.windows.foundation.collections.IVectorView[str]
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionControlGroup: ...
    @typing.overload
    def __init__(self, ids: typing.Iterable[str]) -> None: ...

class PerceptionCorrelation(_winrt.Object):
    orientation: winsdk.windows.foundation.numerics.Quaternion
    position: winsdk.windows.foundation.numerics.Vector3
    target_id: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionCorrelation: ...
    @typing.overload
    def __init__(self, target_id: str, position: winsdk.windows.foundation.numerics.Vector3, orientation: winsdk.windows.foundation.numerics.Quaternion) -> None: ...

class PerceptionCorrelationGroup(_winrt.Object):
    relative_locations: winsdk.windows.foundation.collections.IVectorView[PerceptionCorrelation]
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionCorrelationGroup: ...
    @typing.overload
    def __init__(self, relative_locations: typing.Iterable[PerceptionCorrelation]) -> None: ...

class PerceptionFaceAuthenticationGroup(_winrt.Object):
    frame_provider_ids: winsdk.windows.foundation.collections.IVectorView[str]
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionFaceAuthenticationGroup: ...
    @typing.overload
    def __init__(self, ids: typing.Iterable[str], start_handler: PerceptionStartFaceAuthenticationHandler, stop_handler: PerceptionStopFaceAuthenticationHandler) -> None: ...

class PerceptionFrame(_winrt.Object):
    relative_time: winsdk.windows.foundation.TimeSpan
    frame_data: winsdk.windows.foundation.IMemoryBuffer
    properties: winsdk.windows.foundation.collections.ValueSet
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionFrame: ...

class PerceptionFrameProviderInfo(_winrt.Object):
    id: str
    hidden: _winrt.Boolean
    frame_kind: str
    display_name: str
    device_kind: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionFrameProviderInfo: ...
    @typing.overload
    def __init__(self) -> None: ...

class PerceptionFrameProviderManagerService(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionFrameProviderManagerService: ...
    @typing.overload
    @staticmethod
    def publish_frame_for_provider(provider: IPerceptionFrameProvider, frame: PerceptionFrame) -> None: ...
    @typing.overload
    @staticmethod
    def register_control_group(manager: IPerceptionFrameProviderManager, control_group: PerceptionControlGroup) -> None: ...
    @typing.overload
    @staticmethod
    def register_correlation_group(manager: IPerceptionFrameProviderManager, correlation_group: PerceptionCorrelationGroup) -> None: ...
    @typing.overload
    @staticmethod
    def register_face_authentication_group(manager: IPerceptionFrameProviderManager, face_authentication_group: PerceptionFaceAuthenticationGroup) -> None: ...
    @typing.overload
    @staticmethod
    def register_frame_provider_info(manager: IPerceptionFrameProviderManager, frame_provider_info: PerceptionFrameProviderInfo) -> None: ...
    @typing.overload
    @staticmethod
    def unregister_control_group(manager: IPerceptionFrameProviderManager, control_group: PerceptionControlGroup) -> None: ...
    @typing.overload
    @staticmethod
    def unregister_correlation_group(manager: IPerceptionFrameProviderManager, correlation_group: PerceptionCorrelationGroup) -> None: ...
    @typing.overload
    @staticmethod
    def unregister_face_authentication_group(manager: IPerceptionFrameProviderManager, face_authentication_group: PerceptionFaceAuthenticationGroup) -> None: ...
    @typing.overload
    @staticmethod
    def unregister_frame_provider_info(manager: IPerceptionFrameProviderManager, frame_provider_info: PerceptionFrameProviderInfo) -> None: ...
    @typing.overload
    @staticmethod
    def update_availability_for_provider(provider: IPerceptionFrameProvider, available: _winrt.Boolean) -> None: ...

class PerceptionPropertyChangeRequest(_winrt.Object):
    status: winsdk.windows.devices.perception.PerceptionFrameSourcePropertyChangeStatus
    name: str
    value: _winrt.Object
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionPropertyChangeRequest: ...
    @typing.overload
    def get_deferral(self) -> winsdk.windows.foundation.Deferral: ...

class PerceptionVideoFrameAllocator(winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> PerceptionVideoFrameAllocator: ...
    @typing.overload
    def __init__(self, max_outstanding_frame_count_for_write: _winrt.UInt32, format: winsdk.windows.graphics.imaging.BitmapPixelFormat, resolution: winsdk.windows.foundation.Size, alpha: winsdk.windows.graphics.imaging.BitmapAlphaMode) -> None: ...
    @typing.overload
    def allocate_frame(self) -> PerceptionFrame: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def copy_from_video_frame(self, frame: winsdk.windows.media.VideoFrame) -> PerceptionFrame: ...

class IPerceptionFrameProvider(winsdk.windows.foundation.IClosable, _winrt.Object):
    available: _winrt.Boolean
    frame_provider_info: PerceptionFrameProviderInfo
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> IPerceptionFrameProvider: ...
    @typing.overload
    def set_property(self, value: PerceptionPropertyChangeRequest) -> None: ...
    @typing.overload
    def start(self) -> None: ...
    @typing.overload
    def stop(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...

class IPerceptionFrameProviderManager(winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IPerceptionFrameProviderManager: ...
    @typing.overload
    def get_frame_provider(self, frame_provider_info: PerceptionFrameProviderInfo) -> IPerceptionFrameProvider: ...
    @typing.overload
    def close(self) -> None: ...

PerceptionStartFaceAuthenticationHandler = typing.Callable[[PerceptionFaceAuthenticationGroup], _winrt.Boolean]

PerceptionStopFaceAuthenticationHandler = typing.Callable[[PerceptionFaceAuthenticationGroup], None]

