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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

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

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

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

class AppCapabilityAccessStatus(enum.IntEnum):
    DENIED_BY_SYSTEM = 0
    NOT_DECLARED_BY_APP = 1
    DENIED_BY_USER = 2
    USER_PROMPT_REQUIRED = 3
    ALLOWED = 4

class AppCapability(_winrt.Object):
    capability_name: str
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> AppCapability: ...
    @typing.overload
    def check_access(self) -> AppCapabilityAccessStatus: ...
    @typing.overload
    @staticmethod
    def create(capability_name: str) -> AppCapability: ...
    @typing.overload
    @staticmethod
    def create_with_process_id_for_user(user: winsdk.windows.system.User, capability_name: str, pid: _winrt.UInt32) -> AppCapability: ...
    @typing.overload
    def request_access_async(self) -> winsdk.windows.foundation.IAsyncOperation[AppCapabilityAccessStatus]: ...
    @typing.overload
    @staticmethod
    def request_access_for_capabilities_async(capability_names: typing.Iterable[str]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMapView[str, AppCapabilityAccessStatus]]: ...
    @typing.overload
    @staticmethod
    def request_access_for_capabilities_for_user_async(user: winsdk.windows.system.User, capability_names: typing.Iterable[str]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMapView[str, AppCapabilityAccessStatus]]: ...
    @typing.overload
    def add_access_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[AppCapability, AppCapabilityAccessChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_access_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class AppCapabilityAccessChangedEventArgs(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> AppCapabilityAccessChangedEventArgs: ...

