# 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.storage.streams

from winrt.windows.security.authentication.identity.provider import SecondaryAuthenticationFactorAuthenticationMessage, SecondaryAuthenticationFactorAuthenticationScenario, SecondaryAuthenticationFactorAuthenticationStage, SecondaryAuthenticationFactorAuthenticationStatus, SecondaryAuthenticationFactorDeviceCapabilities, SecondaryAuthenticationFactorDeviceFindScope, SecondaryAuthenticationFactorDevicePresence, SecondaryAuthenticationFactorDevicePresenceMonitoringMode, SecondaryAuthenticationFactorDevicePresenceMonitoringRegistrationStatus, SecondaryAuthenticationFactorFinishAuthenticationStatus, SecondaryAuthenticationFactorRegistrationStatus

Self = typing.TypeVar('Self')

@typing.final
class SecondaryAuthenticationFactorAuthentication_Static(type):
    def get_authentication_stage_info_async(cls) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorAuthenticationStageInfo]: ...
    def show_notification_message_async(cls, device_name: str, message: SecondaryAuthenticationFactorAuthenticationMessage, /) -> winrt.windows.foundation.IAsyncAction: ...
    def start_authentication_async(cls, device_id: str, service_authentication_nonce: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorAuthenticationResult]: ...
    def add_authentication_stage_changed(cls, handler: winrt.windows.foundation.EventHandler[SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_authentication_stage_changed(cls, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class SecondaryAuthenticationFactorAuthentication(winrt.system.Object, metaclass=SecondaryAuthenticationFactorAuthentication_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorAuthentication: ...
    def abort_authentication_async(self, error_log_message: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def finish_authentication_async(self, device_hmac: typing.Optional[winrt.windows.storage.streams.IBuffer], session_hmac: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorFinishAuthenticationStatus]: ...
    @_property
    def device_configuration_data(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @_property
    def device_nonce(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @_property
    def service_authentication_hmac(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @_property
    def session_nonce(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...

@typing.final
class SecondaryAuthenticationFactorAuthenticationResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorAuthenticationResult: ...
    @_property
    def authentication(self) -> typing.Optional[SecondaryAuthenticationFactorAuthentication]: ...
    @_property
    def status(self) -> SecondaryAuthenticationFactorAuthenticationStatus: ...

@typing.final
class SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs: ...
    @_property
    def stage_info(self) -> typing.Optional[SecondaryAuthenticationFactorAuthenticationStageInfo]: ...

@typing.final
class SecondaryAuthenticationFactorAuthenticationStageInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorAuthenticationStageInfo: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def scenario(self) -> SecondaryAuthenticationFactorAuthenticationScenario: ...
    @_property
    def stage(self) -> SecondaryAuthenticationFactorAuthenticationStage: ...

@typing.final
class SecondaryAuthenticationFactorInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorInfo: ...
    def update_device_presence_async(self, presence_state: SecondaryAuthenticationFactorDevicePresence, /) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def device_configuration_data(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @_property
    def device_friendly_name(self) -> str: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def device_model_number(self) -> str: ...
    @_property
    def is_authentication_supported(self) -> bool: ...
    @_property
    def presence_monitoring_mode(self) -> SecondaryAuthenticationFactorDevicePresenceMonitoringMode: ...

@typing.final
class SecondaryAuthenticationFactorRegistration_Static(type):
    def find_all_registered_device_info_async(cls, query_type: SecondaryAuthenticationFactorDeviceFindScope, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IVectorView[SecondaryAuthenticationFactorInfo]]: ...
    def is_device_presence_monitoring_supported(cls) -> bool: ...
    @typing.overload
    def register_device_presence_monitoring_async(cls, device_id: str, device_instance_path: str, monitoring_mode: SecondaryAuthenticationFactorDevicePresenceMonitoringMode, /) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorDevicePresenceMonitoringRegistrationStatus]: ...
    @typing.overload
    def register_device_presence_monitoring_async(cls, device_id: str, device_instance_path: str, monitoring_mode: SecondaryAuthenticationFactorDevicePresenceMonitoringMode, device_friendly_name: str, device_model_number: str, device_configuration_data: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorDevicePresenceMonitoringRegistrationStatus]: ...
    def request_start_registering_device_async(cls, device_id: str, capabilities: SecondaryAuthenticationFactorDeviceCapabilities, device_friendly_name: str, device_model_number: str, device_key: typing.Optional[winrt.windows.storage.streams.IBuffer], mutual_authentication_key: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncOperation[SecondaryAuthenticationFactorRegistrationResult]: ...
    def unregister_device_async(cls, device_id: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def unregister_device_presence_monitoring_async(cls, device_id: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def update_device_configuration_data_async(cls, device_id: str, device_configuration_data: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncAction: ...

@typing.final
class SecondaryAuthenticationFactorRegistration(winrt.system.Object, metaclass=SecondaryAuthenticationFactorRegistration_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorRegistration: ...
    def abort_registering_device_async(self, error_log_message: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def finish_registering_device_async(self, device_configuration_data: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> winrt.windows.foundation.IAsyncAction: ...

@typing.final
class SecondaryAuthenticationFactorRegistrationResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SecondaryAuthenticationFactorRegistrationResult: ...
    @_property
    def registration(self) -> typing.Optional[SecondaryAuthenticationFactorRegistration]: ...
    @_property
    def status(self) -> SecondaryAuthenticationFactorRegistrationStatus: ...

