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

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 as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.networking as windows_networking
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.networking.connectivity import CellularApnAuthenticationType, ConnectionProfileDeleteStatus, DataUsageGranularity, DomainAuthenticationKind, DomainConnectivityLevel, NetworkAuthenticationType, NetworkConnectivityLevel, NetworkCostType, NetworkEncryptionType, NetworkTypes, RoamingStates, TriStates, WwanDataClass, WwanNetworkIPKind, WwanNetworkRegistrationState
from winrt.windows.networking.connectivity import NetworkStatusChangedEventHandler

Self = typing.TypeVar('Self')

@typing.final
class NetworkUsageStates:
    roaming: TriStates
    shared: TriStates
    def __init__(self, roaming: TriStates, shared: TriStates) -> None: ...

@typing.final
class AttributedNetworkUsage(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AttributedNetworkUsage: ...
    @_property
    def attribution_id(self) -> str: ...
    @_property
    def attribution_name(self) -> str: ...
    @_property
    def attribution_thumbnail(self) -> typing.Optional[windows_storage_streams.IRandomAccessStreamReference]: ...
    @_property
    def bytes_received(self) -> winrt.system.UInt64: ...
    @_property
    def bytes_sent(self) -> winrt.system.UInt64: ...

@typing.final
class CellularApnContext(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CellularApnContext: ...
    def __new__(cls: typing.Type[CellularApnContext]) -> CellularApnContext: ...
    @_property
    def user_name(self) -> str: ...
    @user_name.setter
    def user_name(self, value: str) -> None: ...
    @_property
    def provider_id(self) -> str: ...
    @provider_id.setter
    def provider_id(self, value: str) -> None: ...
    @_property
    def password(self) -> str: ...
    @password.setter
    def password(self, value: str) -> None: ...
    @_property
    def is_compression_enabled(self) -> bool: ...
    @is_compression_enabled.setter
    def is_compression_enabled(self, value: bool) -> None: ...
    @_property
    def authentication_type(self) -> CellularApnAuthenticationType: ...
    @authentication_type.setter
    def authentication_type(self, value: CellularApnAuthenticationType) -> None: ...
    @_property
    def access_point_name(self) -> str: ...
    @access_point_name.setter
    def access_point_name(self, value: str) -> None: ...
    @_property
    def profile_name(self) -> str: ...
    @profile_name.setter
    def profile_name(self, value: str) -> None: ...

@typing.final
class ConnectionCost(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ConnectionCost: ...
    @_property
    def approaching_data_limit(self) -> bool: ...
    @_property
    def network_cost_type(self) -> NetworkCostType: ...
    @_property
    def over_data_limit(self) -> bool: ...
    @_property
    def roaming(self) -> bool: ...
    @_property
    def background_data_usage_restricted(self) -> bool: ...

@typing.final
class ConnectionProfile(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ConnectionProfile: ...
    def get_attributed_network_usage_async(self, start_time: datetime.datetime, end_time: datetime.datetime, states: NetworkUsageStates, /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[AttributedNetworkUsage]]: ...
    def get_connection_cost(self) -> typing.Optional[ConnectionCost]: ...
    def get_connectivity_intervals_async(self, start_time: datetime.datetime, end_time: datetime.datetime, states: NetworkUsageStates, /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[ConnectivityInterval]]: ...
    def get_data_plan_status(self) -> typing.Optional[DataPlanStatus]: ...
    def get_domain_connectivity_level(self) -> DomainConnectivityLevel: ...
    @typing.overload
    def get_local_usage(self, start_time: datetime.datetime, end_time: datetime.datetime, /) -> typing.Optional[DataUsage]: ...
    @typing.overload
    def get_local_usage(self, start_time: datetime.datetime, end_time: datetime.datetime, states: RoamingStates, /) -> typing.Optional[DataUsage]: ...
    def get_network_connectivity_level(self) -> NetworkConnectivityLevel: ...
    def get_network_names(self) -> typing.Optional[windows_foundation_collections.IVectorView[str]]: ...
    def get_network_usage_async(self, start_time: datetime.datetime, end_time: datetime.datetime, granularity: DataUsageGranularity, states: NetworkUsageStates, /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[NetworkUsage]]: ...
    def get_provider_network_usage_async(self, start_time: datetime.datetime, end_time: datetime.datetime, states: NetworkUsageStates, /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[ProviderNetworkUsage]]: ...
    def get_signal_bars(self) -> typing.Optional[typing.Optional[winrt.system.UInt8]]: ...
    def is_domain_authenticated_by(self, kind: DomainAuthenticationKind, /) -> bool: ...
    def try_delete_async(self) -> windows_foundation.IAsyncOperation[ConnectionProfileDeleteStatus]: ...
    @_property
    def network_adapter(self) -> typing.Optional[NetworkAdapter]: ...
    @_property
    def network_security_settings(self) -> typing.Optional[NetworkSecuritySettings]: ...
    @_property
    def profile_name(self) -> str: ...
    @_property
    def is_wlan_connection_profile(self) -> bool: ...
    @_property
    def is_wwan_connection_profile(self) -> bool: ...
    @_property
    def service_provider_guid(self) -> typing.Optional[typing.Optional[_uuid.UUID]]: ...
    @_property
    def wlan_connection_profile_details(self) -> typing.Optional[WlanConnectionProfileDetails]: ...
    @_property
    def wwan_connection_profile_details(self) -> typing.Optional[WwanConnectionProfileDetails]: ...
    @_property
    def can_delete(self) -> bool: ...

@typing.final
class ConnectionProfileFilter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ConnectionProfileFilter: ...
    def __new__(cls: typing.Type[ConnectionProfileFilter]) -> ConnectionProfileFilter: ...
    @_property
    def service_provider_guid(self) -> typing.Optional[typing.Optional[_uuid.UUID]]: ...
    @service_provider_guid.setter
    def service_provider_guid(self, value: typing.Optional[typing.Optional[_uuid.UUID]]) -> None: ...
    @_property
    def network_cost_type(self) -> NetworkCostType: ...
    @network_cost_type.setter
    def network_cost_type(self, value: NetworkCostType) -> None: ...
    @_property
    def is_wwan_connection_profile(self) -> bool: ...
    @is_wwan_connection_profile.setter
    def is_wwan_connection_profile(self, value: bool) -> None: ...
    @_property
    def is_wlan_connection_profile(self) -> bool: ...
    @is_wlan_connection_profile.setter
    def is_wlan_connection_profile(self, value: bool) -> None: ...
    @_property
    def is_connected(self) -> bool: ...
    @is_connected.setter
    def is_connected(self, value: bool) -> None: ...
    @_property
    def is_roaming(self) -> typing.Optional[typing.Optional[bool]]: ...
    @is_roaming.setter
    def is_roaming(self, value: typing.Optional[typing.Optional[bool]]) -> None: ...
    @_property
    def is_over_data_limit(self) -> typing.Optional[typing.Optional[bool]]: ...
    @is_over_data_limit.setter
    def is_over_data_limit(self, value: typing.Optional[typing.Optional[bool]]) -> None: ...
    @_property
    def is_background_data_usage_restricted(self) -> typing.Optional[typing.Optional[bool]]: ...
    @is_background_data_usage_restricted.setter
    def is_background_data_usage_restricted(self, value: typing.Optional[typing.Optional[bool]]) -> None: ...
    @_property
    def raw_data(self) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    @_property
    def purpose_guid(self) -> typing.Optional[typing.Optional[_uuid.UUID]]: ...
    @purpose_guid.setter
    def purpose_guid(self, value: typing.Optional[typing.Optional[_uuid.UUID]]) -> None: ...

@typing.final
class ConnectionSession(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ConnectionSession: ...
    def close(self) -> None: ...
    @_property
    def connection_profile(self) -> typing.Optional[ConnectionProfile]: ...

@typing.final
class ConnectivityInterval(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ConnectivityInterval: ...
    @_property
    def connection_duration(self) -> datetime.timedelta: ...
    @_property
    def start_time(self) -> datetime.datetime: ...

@typing.final
class ConnectivityManager_Static(type):
    def acquire_connection_async(cls, cellular_apn_context: typing.Optional[CellularApnContext], /) -> windows_foundation.IAsyncOperation[ConnectionSession]: ...
    def add_http_route_policy(cls, route_policy: typing.Optional[RoutePolicy], /) -> None: ...
    def remove_http_route_policy(cls, route_policy: typing.Optional[RoutePolicy], /) -> None: ...

@typing.final
class ConnectivityManager(winrt.system.Object, metaclass=ConnectivityManager_Static):
    pass

@typing.final
class DataPlanStatus(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DataPlanStatus: ...
    @_property
    def data_limit_in_megabytes(self) -> typing.Optional[typing.Optional[winrt.system.UInt32]]: ...
    @_property
    def data_plan_usage(self) -> typing.Optional[DataPlanUsage]: ...
    @_property
    def inbound_bits_per_second(self) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...
    @_property
    def max_transfer_size_in_megabytes(self) -> typing.Optional[typing.Optional[winrt.system.UInt32]]: ...
    @_property
    def next_billing_cycle(self) -> typing.Optional[typing.Optional[datetime.datetime]]: ...
    @_property
    def outbound_bits_per_second(self) -> typing.Optional[typing.Optional[winrt.system.UInt64]]: ...

@typing.final
class DataPlanUsage(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DataPlanUsage: ...
    @_property
    def last_sync_time(self) -> datetime.datetime: ...
    @_property
    def megabytes_used(self) -> winrt.system.UInt32: ...

@typing.final
class DataUsage(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DataUsage: ...
    @_property
    def bytes_received(self) -> winrt.system.UInt64: ...
    @_property
    def bytes_sent(self) -> winrt.system.UInt64: ...

@typing.final
class IPInformation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPInformation: ...
    @_property
    def network_adapter(self) -> typing.Optional[NetworkAdapter]: ...
    @_property
    def prefix_length(self) -> typing.Optional[typing.Optional[winrt.system.UInt8]]: ...

@typing.final
class LanIdentifier(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LanIdentifier: ...
    @_property
    def infrastructure_id(self) -> typing.Optional[LanIdentifierData]: ...
    @_property
    def network_adapter_id(self) -> _uuid.UUID: ...
    @_property
    def port_id(self) -> typing.Optional[LanIdentifierData]: ...

@typing.final
class LanIdentifierData(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> LanIdentifierData: ...
    @_property
    def type(self) -> winrt.system.UInt32: ...
    @_property
    def value(self) -> typing.Optional[windows_foundation_collections.IVectorView[winrt.system.UInt8]]: ...

@typing.final
class NetworkAdapter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> NetworkAdapter: ...
    def get_connected_profile_async(self) -> windows_foundation.IAsyncOperation[ConnectionProfile]: ...
    @_property
    def iana_interface_type(self) -> winrt.system.UInt32: ...
    @_property
    def inbound_max_bits_per_second(self) -> winrt.system.UInt64: ...
    @_property
    def network_adapter_id(self) -> _uuid.UUID: ...
    @_property
    def network_item(self) -> typing.Optional[NetworkItem]: ...
    @_property
    def outbound_max_bits_per_second(self) -> winrt.system.UInt64: ...

@typing.final
class NetworkInformation_Static(type):
    def find_connection_profiles_async(cls, p_profile_filter: typing.Optional[ConnectionProfileFilter], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[ConnectionProfile]]: ...
    def get_connection_profiles(cls) -> typing.Optional[windows_foundation_collections.IVectorView[ConnectionProfile]]: ...
    def get_host_names(cls) -> typing.Optional[windows_foundation_collections.IVectorView[windows_networking.HostName]]: ...
    def get_internet_connection_profile(cls) -> typing.Optional[ConnectionProfile]: ...
    def get_lan_identifiers(cls) -> typing.Optional[windows_foundation_collections.IVectorView[LanIdentifier]]: ...
    def get_proxy_configuration_async(cls, uri: typing.Optional[windows_foundation.Uri], /) -> windows_foundation.IAsyncOperation[ProxyConfiguration]: ...
    def get_sorted_endpoint_pairs(cls, destination_list: typing.Iterable[windows_networking.EndpointPair], sort_options: windows_networking.HostNameSortOptions, /) -> typing.Optional[windows_foundation_collections.IVectorView[windows_networking.EndpointPair]]: ...
    def add_network_status_changed(cls, network_status_handler: typing.Optional[NetworkStatusChangedEventHandler], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_network_status_changed(cls, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class NetworkInformation(winrt.system.Object, metaclass=NetworkInformation_Static):
    pass

@typing.final
class NetworkItem(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> NetworkItem: ...
    def get_network_types(self) -> NetworkTypes: ...
    @_property
    def network_id(self) -> _uuid.UUID: ...

@typing.final
class NetworkSecuritySettings(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> NetworkSecuritySettings: ...
    @_property
    def network_authentication_type(self) -> NetworkAuthenticationType: ...
    @_property
    def network_encryption_type(self) -> NetworkEncryptionType: ...

@typing.final
class NetworkStateChangeEventDetails(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> NetworkStateChangeEventDetails: ...
    @_property
    def has_new_connection_cost(self) -> bool: ...
    @_property
    def has_new_domain_connectivity_level(self) -> bool: ...
    @_property
    def has_new_host_name_list(self) -> bool: ...
    @_property
    def has_new_internet_connection_profile(self) -> bool: ...
    @_property
    def has_new_network_connectivity_level(self) -> bool: ...
    @_property
    def has_new_wwan_registration_state(self) -> bool: ...
    @_property
    def has_new_tethering_client_count(self) -> bool: ...
    @_property
    def has_new_tethering_operational_state(self) -> bool: ...

@typing.final
class NetworkUsage(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> NetworkUsage: ...
    @_property
    def bytes_received(self) -> winrt.system.UInt64: ...
    @_property
    def bytes_sent(self) -> winrt.system.UInt64: ...
    @_property
    def connection_duration(self) -> datetime.timedelta: ...

@typing.final
class ProviderNetworkUsage(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ProviderNetworkUsage: ...
    @_property
    def bytes_received(self) -> winrt.system.UInt64: ...
    @_property
    def bytes_sent(self) -> winrt.system.UInt64: ...
    @_property
    def provider_id(self) -> str: ...

@typing.final
class ProxyConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ProxyConfiguration: ...
    @_property
    def can_connect_directly(self) -> bool: ...
    @_property
    def proxy_uris(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_foundation.Uri]]: ...

@typing.final
class RoutePolicy(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RoutePolicy: ...
    def __new__(cls: typing.Type[RoutePolicy], connection_profile: typing.Optional[ConnectionProfile], host_name: typing.Optional[windows_networking.HostName], type: windows_networking.DomainNameType) -> RoutePolicy: ...
    @_property
    def connection_profile(self) -> typing.Optional[ConnectionProfile]: ...
    @_property
    def host_name(self) -> typing.Optional[windows_networking.HostName]: ...
    @_property
    def host_name_type(self) -> windows_networking.DomainNameType: ...

@typing.final
class WlanConnectionProfileDetails(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> WlanConnectionProfileDetails: ...
    def get_connected_ssid(self) -> str: ...

@typing.final
class WwanConnectionProfileDetails(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> WwanConnectionProfileDetails: ...
    def get_current_data_class(self) -> WwanDataClass: ...
    def get_network_registration_state(self) -> WwanNetworkRegistrationState: ...
    @_property
    def access_point_name(self) -> str: ...
    @_property
    def home_provider_id(self) -> str: ...
    @_property
    def i_p_kind(self) -> WwanNetworkIPKind: ...
    @_property
    def purpose_guids(self) -> typing.Optional[windows_foundation_collections.IVectorView[_uuid.UUID]]: ...

