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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.networking.connectivity
import winsdk.windows.security.credentials

class WiFiAccessStatus(enum.IntEnum):
    UNSPECIFIED = 0
    ALLOWED = 1
    DENIED_BY_USER = 2
    DENIED_BY_SYSTEM = 3

class WiFiConnectionMethod(enum.IntEnum):
    DEFAULT = 0
    WPS_PIN = 1
    WPS_PUSH_BUTTON = 2

class WiFiConnectionStatus(enum.IntEnum):
    UNSPECIFIED_FAILURE = 0
    SUCCESS = 1
    ACCESS_REVOKED = 2
    INVALID_CREDENTIAL = 3
    NETWORK_NOT_AVAILABLE = 4
    TIMEOUT = 5
    UNSUPPORTED_AUTHENTICATION_PROTOCOL = 6

class WiFiNetworkKind(enum.IntEnum):
    ANY = 0
    INFRASTRUCTURE = 1
    ADHOC = 2

class WiFiOnDemandHotspotAvailability(enum.IntEnum):
    AVAILABLE = 0
    UNAVAILABLE = 1

class WiFiOnDemandHotspotCellularBars(enum.IntEnum):
    ZERO_BARS = 0
    ONE_BAR = 1
    TWO_BARS = 2
    THREE_BARS = 3
    FOUR_BARS = 4
    FIVE_BARS = 5

class WiFiOnDemandHotspotConnectStatus(enum.IntEnum):
    UNSPECIFIED_FAILURE = 0
    SUCCESS = 1
    APP_TIMED_OUT = 2
    INVALID_CREDENTIAL = 3
    NETWORK_NOT_AVAILABLE = 4
    UNSUPPORTED_AUTHENTICATION_PROTOCOL = 5
    BLUETOOTH_CONNECT_FAILED = 6
    BLUETOOTH_TRANSMISSION_ERROR = 7
    OPERATION_CANCELED_BY_USER = 8
    ENTITLEMENT_CHECK_FAILED = 9
    NO_CELLULAR_SIGNAL = 10
    CELLULAR_DATA_TURNED_OFF = 11
    WLAN_CONNECT_FAILED = 12
    WLAN_NOT_VISIBLE = 13
    ACCESS_POINT_CANNOT_CONNECT = 14
    CELLULAR_CONNECT_TIMED_OUT = 15
    ROAMING_NOT_ALLOWED = 16
    PAIRING_REQUIRED = 17
    DATA_LIMIT_REACHED = 18

class WiFiPhyKind(enum.IntEnum):
    UNKNOWN = 0
    FHSS = 1
    DSSS = 2
    I_R_BASEBAND = 3
    OFDM = 4
    HRDSSS = 5
    ERP = 6
    H_T = 7
    VHT = 8
    DMG = 9
    H_E = 10
    EHT = 11

class WiFiReconnectionKind(enum.IntEnum):
    AUTOMATIC = 0
    MANUAL = 1

class WiFiWpsConfigurationStatus(enum.IntEnum):
    UNSPECIFIED_FAILURE = 0
    SUCCESS = 1
    TIMEOUT = 2

class WiFiWpsKind(enum.IntEnum):
    UNKNOWN = 0
    PIN = 1
    PUSH_BUTTON = 2
    NFC = 3
    ETHERNET = 4
    USB = 5

Self = typing.TypeVar('Self')

class WiFiAdapter(_winrt.Object):
    network_adapter: typing.Optional[winsdk.windows.networking.connectivity.NetworkAdapter]
    network_report: typing.Optional[WiFiNetworkReport]
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiAdapter: ...
    @typing.overload
    def connect_async(self, available_network: typing.Optional[WiFiAvailableNetwork], reconnection_kind: WiFiReconnectionKind) -> winsdk.windows.foundation.IAsyncOperation[WiFiConnectionResult]: ...
    @typing.overload
    def connect_async(self, available_network: typing.Optional[WiFiAvailableNetwork], reconnection_kind: WiFiReconnectionKind, password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]) -> winsdk.windows.foundation.IAsyncOperation[WiFiConnectionResult]: ...
    @typing.overload
    def connect_async(self, available_network: typing.Optional[WiFiAvailableNetwork], reconnection_kind: WiFiReconnectionKind, password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential], ssid: str) -> winsdk.windows.foundation.IAsyncOperation[WiFiConnectionResult]: ...
    @typing.overload
    def connect_async(self, available_network: typing.Optional[WiFiAvailableNetwork], reconnection_kind: WiFiReconnectionKind, password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential], ssid: str, connection_method: WiFiConnectionMethod) -> winsdk.windows.foundation.IAsyncOperation[WiFiConnectionResult]: ...
    def disconnect(self) -> None: ...
    @staticmethod
    def find_all_adapters_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[WiFiAdapter]]: ...
    @staticmethod
    def from_id_async(device_id: str) -> winsdk.windows.foundation.IAsyncOperation[WiFiAdapter]: ...
    @staticmethod
    def get_device_selector() -> str: ...
    def get_wps_configuration_async(self, available_network: typing.Optional[WiFiAvailableNetwork]) -> winsdk.windows.foundation.IAsyncOperation[WiFiWpsConfigurationResult]: ...
    @staticmethod
    def request_access_async() -> winsdk.windows.foundation.IAsyncOperation[WiFiAccessStatus]: ...
    def scan_async(self) -> typing.Optional[winsdk.windows.foundation.IAsyncAction]: ...
    def add_available_networks_changed(self, args: winsdk.windows.foundation.TypedEventHandler[WiFiAdapter, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_available_networks_changed(self, event_cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class WiFiAvailableNetwork(_winrt.Object):
    beacon_interval: datetime.timedelta
    bssid: str
    channel_center_frequency_in_kilohertz: _winrt.Int32
    is_wi_fi_direct: _winrt.Boolean
    network_kind: WiFiNetworkKind
    network_rssi_in_decibel_milliwatts: _winrt.Double
    phy_kind: WiFiPhyKind
    security_settings: typing.Optional[winsdk.windows.networking.connectivity.NetworkSecuritySettings]
    signal_bars: _winrt.UInt8
    ssid: str
    uptime: datetime.timedelta
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiAvailableNetwork: ...

class WiFiConnectionResult(_winrt.Object):
    connection_status: WiFiConnectionStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiConnectionResult: ...

class WiFiNetworkReport(_winrt.Object):
    available_networks: typing.Optional[winsdk.windows.foundation.collections.IVectorView[WiFiAvailableNetwork]]
    timestamp: datetime.datetime
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiNetworkReport: ...

class WiFiOnDemandHotspotConnectTriggerDetails(_winrt.Object):
    requested_network: typing.Optional[WiFiOnDemandHotspotNetwork]
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiOnDemandHotspotConnectTriggerDetails: ...
    def connect(self) -> typing.Optional[WiFiOnDemandHotspotConnectionResult]: ...
    def connect_async(self) -> winsdk.windows.foundation.IAsyncOperation[WiFiOnDemandHotspotConnectionResult]: ...
    def report_error(self, status: WiFiOnDemandHotspotConnectStatus) -> None: ...

class WiFiOnDemandHotspotConnectionResult(_winrt.Object):
    status: WiFiOnDemandHotspotConnectStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiOnDemandHotspotConnectionResult: ...

class WiFiOnDemandHotspotNetwork(_winrt.Object):
    id: _winrt.Guid
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiOnDemandHotspotNetwork: ...
    @staticmethod
    def get_or_create_by_id(network_id: _winrt.Guid) -> typing.Optional[WiFiOnDemandHotspotNetwork]: ...
    def get_properties(self) -> typing.Optional[WiFiOnDemandHotspotNetworkProperties]: ...
    def update_properties(self, new_properties: typing.Optional[WiFiOnDemandHotspotNetworkProperties]) -> None: ...

class WiFiOnDemandHotspotNetworkProperties(_winrt.Object):
    ssid: str
    remaining_battery_percent: typing.Optional[typing.Optional[_winrt.UInt32]]
    password: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    is_metered: _winrt.Boolean
    display_name: str
    cellular_bars: typing.Optional[typing.Optional[WiFiOnDemandHotspotCellularBars]]
    availability: WiFiOnDemandHotspotAvailability
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiOnDemandHotspotNetworkProperties: ...

class WiFiWpsConfigurationResult(_winrt.Object):
    status: WiFiWpsConfigurationStatus
    supported_wps_kinds: typing.Optional[winsdk.windows.foundation.collections.IVectorView[WiFiWpsKind]]
    @staticmethod
    def _from(obj: _winrt.Object) -> WiFiWpsConfigurationResult: ...

