# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.1.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.applicationmodel.activation as windows_applicationmodel_activation
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.networking.sockets as windows_networking_sockets
import winrt.windows.security.credentials as windows_security_credentials
import winrt.windows.security.cryptography.certificates as windows_security_cryptography_certificates
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.system as windows_system

from winrt.windows.networking.vpn import VpnAppIdType, VpnAuthenticationMethod, VpnChannelActivityEventType, VpnChannelRequestCredentialsOptions, VpnCredentialType, VpnDataPathType, VpnDomainNameType, VpnIPProtocol, VpnManagementConnectionStatus, VpnManagementErrorStatus, VpnNativeProtocolType, VpnPacketBufferStatus, VpnRoutingPolicyType

Self = typing.TypeVar('Self')

@typing.final
class VpnAppId(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnAppId: ...
    def __new__(cls: typing.Type[VpnAppId], type: VpnAppIdType, value: str) -> VpnAppId: ...
    @_property
    def value(self) -> str: ...
    @value.setter
    def value(self, value: str) -> None: ...
    @_property
    def type(self) -> VpnAppIdType: ...
    @type.setter
    def type(self, value: VpnAppIdType) -> None: ...

@typing.final
class VpnChannel_Static(type):
    def process_event_async(cls, third_party_plug_in: typing.Optional[winrt.system.Object], event: typing.Optional[winrt.system.Object], /) -> None: ...

@typing.final
class VpnChannel(winrt.system.Object, metaclass=VpnChannel_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnChannel: ...
    def activate_foreground(self, package_relative_app_id: str, shared_context: typing.Optional[windows_foundation_collections.ValueSet], /) -> typing.Optional[windows_foundation_collections.ValueSet]: ...
    def add_and_associate_transport(self, transport: typing.Optional[winrt.system.Object], context: typing.Optional[winrt.system.Object], /) -> None: ...
    def append_vpn_receive_packet_buffer(self, decapsulated_packet_buffer: typing.Optional[VpnPacketBuffer], /) -> None: ...
    def append_vpn_send_packet_buffer(self, encapsulated_packet_buffer: typing.Optional[VpnPacketBuffer], /) -> None: ...
    def associate_transport(self, main_outer_tunnel_transport: typing.Optional[winrt.system.Object], optional_outer_tunnel_transport: typing.Optional[winrt.system.Object], /) -> None: ...
    def flush_vpn_receive_packet_buffers(self) -> None: ...
    def flush_vpn_send_packet_buffers(self) -> None: ...
    def get_slot_type_for_transport_context(self, context: typing.Optional[winrt.system.Object], /) -> windows_networking_sockets.ControlChannelTriggerStatus: ...
    def get_vpn_receive_packet_buffer(self) -> typing.Optional[VpnPacketBuffer]: ...
    def get_vpn_send_packet_buffer(self) -> typing.Optional[VpnPacketBuffer]: ...
    def log_diagnostic_message(self, message: str, /) -> None: ...
    def replace_and_associate_transport(self, transport: typing.Optional[winrt.system.Object], context: typing.Optional[winrt.system.Object], /) -> None: ...
    def request_credentials(self, cred_type: VpnCredentialType, is_retry: bool, is_single_sign_on_credential: bool, certificate: typing.Optional[windows_security_cryptography_certificates.Certificate], /) -> typing.Optional[VpnPickedCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, /) -> windows_foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, cred_options: winrt.system.UInt32, /) -> windows_foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, cred_options: winrt.system.UInt32, certificate: typing.Optional[windows_security_cryptography_certificates.Certificate], /) -> windows_foundation.IAsyncOperation[VpnCredential]: ...
    def request_custom_prompt(self, custom_prompt: windows_foundation_collections.IVectorView[IVpnCustomPrompt], /) -> None: ...
    def request_custom_prompt_async(self, custom_prompt_element: windows_foundation_collections.IVectorView[IVpnCustomPromptElement], /) -> windows_foundation.IAsyncAction: ...
    def request_vpn_packet_buffer(self, type: VpnDataPathType, /) -> typing.Optional[VpnPacketBuffer]: ...
    def set_allowed_ssl_tls_versions(self, tunnel_transport: typing.Optional[winrt.system.Object], use_tls12: bool, /) -> None: ...
    def set_error_message(self, message: str, /) -> None: ...
    def start(self, assigned_client_i_pv4list: windows_foundation_collections.IVectorView[windows_networking.HostName], assigned_client_i_pv6list: windows_foundation_collections.IVectorView[windows_networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], route_scope: typing.Optional[VpnRouteAssignment], namespace_scope: typing.Optional[VpnNamespaceAssignment], mtu_size: winrt.system.UInt32, max_frame_size: winrt.system.UInt32, optimize_for_low_cost_network: bool, main_outer_tunnel_transport: typing.Optional[winrt.system.Object], optional_outer_tunnel_transport: typing.Optional[winrt.system.Object], /) -> None: ...
    def start_existing_transports(self, assigned_client_i_pv4list: windows_foundation_collections.IVectorView[windows_networking.HostName], assigned_client_i_pv6list: windows_foundation_collections.IVectorView[windows_networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_domain_name: typing.Optional[VpnDomainNameAssignment], mtu_size: winrt.system.UInt32, max_frame_size: winrt.system.UInt32, reserved: bool, /) -> None: ...
    def start_reconnecting_transport(self, transport: typing.Optional[winrt.system.Object], context: typing.Optional[winrt.system.Object], /) -> None: ...
    def start_with_main_transport(self, assigned_client_i_pv4list: windows_foundation_collections.IVectorView[windows_networking.HostName], assigned_client_i_pv6list: windows_foundation_collections.IVectorView[windows_networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_domain_name: typing.Optional[VpnDomainNameAssignment], mtu_size: winrt.system.UInt32, max_frame_size: winrt.system.UInt32, reserved: bool, main_outer_tunnel_transport: typing.Optional[winrt.system.Object], /) -> None: ...
    @typing.overload
    def start_with_traffic_filter(self, assigned_client_ipv4_addresses: typing.Iterable[windows_networking.HostName], assigned_client_ipv6_addresses: typing.Iterable[windows_networking.HostName], vpninterface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_namespace: typing.Optional[VpnDomainNameAssignment], mtu_size: winrt.system.UInt32, max_frame_size: winrt.system.UInt32, reserved: bool, transports: typing.Iterable[winrt.system.Object], assigned_traffic_filters: typing.Optional[VpnTrafficFilterAssignment], /) -> None: ...
    @typing.overload
    def start_with_traffic_filter(self, assigned_client_ipv4_list: windows_foundation_collections.IVectorView[windows_networking.HostName], assigned_client_ipv6_list: windows_foundation_collections.IVectorView[windows_networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_namespace: typing.Optional[VpnDomainNameAssignment], mtu_size: winrt.system.UInt32, max_frame_size: winrt.system.UInt32, reserved: bool, main_outer_tunnel_transport: typing.Optional[winrt.system.Object], optional_outer_tunnel_transport: typing.Optional[winrt.system.Object], assigned_traffic_filters: typing.Optional[VpnTrafficFilterAssignment], /) -> None: ...
    def stop(self) -> None: ...
    def terminate_connection(self, message: str, /) -> None: ...
    def add_activity_change(self, handler: windows_foundation.TypedEventHandler[VpnChannel, VpnChannelActivityEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_activity_change(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_activity_state_change(self, handler: windows_foundation.TypedEventHandler[VpnChannel, VpnChannelActivityStateChangedArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_activity_state_change(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def plug_in_context(self) -> typing.Optional[winrt.system.Object]: ...
    @plug_in_context.setter
    def plug_in_context(self, value: typing.Optional[winrt.system.Object]) -> None: ...
    @_property
    def configuration(self) -> typing.Optional[VpnChannelConfiguration]: ...
    @_property
    def id(self) -> winrt.system.UInt32: ...
    @_property
    def system_health(self) -> typing.Optional[VpnSystemHealth]: ...
    @_property
    def current_request_transport_context(self) -> typing.Optional[winrt.system.Object]: ...

@typing.final
class VpnChannelActivityEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnChannelActivityEventArgs: ...
    @_property
    def type(self) -> VpnChannelActivityEventType: ...

@typing.final
class VpnChannelActivityStateChangedArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnChannelActivityStateChangedArgs: ...
    @_property
    def activity_state(self) -> VpnChannelActivityEventType: ...

@typing.final
class VpnChannelConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnChannelConfiguration: ...
    @_property
    def custom_field(self) -> str: ...
    @_property
    def server_host_name_list(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_networking.HostName]]: ...
    @_property
    def server_service_name(self) -> str: ...
    @_property
    def server_uris(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_foundation.Uri]]: ...

@typing.final
class VpnCredential(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCredential: ...
    @_property
    def additional_pin(self) -> str: ...
    @_property
    def certificate_credential(self) -> typing.Optional[windows_security_cryptography_certificates.Certificate]: ...
    @_property
    def old_password_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...
    @_property
    def passkey_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...

@typing.final
class VpnCustomCheckBox(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomCheckBox: ...
    def __new__(cls: typing.Type[VpnCustomCheckBox]) -> VpnCustomCheckBox: ...
    @_property
    def initial_check_state(self) -> bool: ...
    @initial_check_state.setter
    def initial_check_state(self, value: bool) -> None: ...
    @_property
    def checked(self) -> bool: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...

@typing.final
class VpnCustomComboBox(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomComboBox: ...
    def __new__(cls: typing.Type[VpnCustomComboBox]) -> VpnCustomComboBox: ...
    @_property
    def options_text(self) -> typing.Optional[windows_foundation_collections.IVectorView[str]]: ...
    @options_text.setter
    def options_text(self, value: typing.Optional[windows_foundation_collections.IVectorView[str]]) -> None: ...
    @_property
    def selected(self) -> winrt.system.UInt32: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...

@typing.final
class VpnCustomEditBox(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomEditBox: ...
    def __new__(cls: typing.Type[VpnCustomEditBox]) -> VpnCustomEditBox: ...
    @_property
    def no_echo(self) -> bool: ...
    @no_echo.setter
    def no_echo(self, value: bool) -> None: ...
    @_property
    def default_text(self) -> str: ...
    @default_text.setter
    def default_text(self, value: str) -> None: ...
    @_property
    def text(self) -> str: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...

@typing.final
class VpnCustomErrorBox(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomErrorBox: ...
    def __new__(cls: typing.Type[VpnCustomErrorBox]) -> VpnCustomErrorBox: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...

@typing.final
class VpnCustomPromptBooleanInput(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomPromptBooleanInput: ...
    def __new__(cls: typing.Type[VpnCustomPromptBooleanInput]) -> VpnCustomPromptBooleanInput: ...
    @_property
    def initial_value(self) -> bool: ...
    @initial_value.setter
    def initial_value(self, value: bool) -> None: ...
    @_property
    def value(self) -> bool: ...
    @_property
    def emphasized(self) -> bool: ...
    @emphasized.setter
    def emphasized(self, value: bool) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...

@typing.final
class VpnCustomPromptOptionSelector(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomPromptOptionSelector: ...
    def __new__(cls: typing.Type[VpnCustomPromptOptionSelector]) -> VpnCustomPromptOptionSelector: ...
    @_property
    def emphasized(self) -> bool: ...
    @emphasized.setter
    def emphasized(self, value: bool) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def options(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def selected_index(self) -> winrt.system.UInt32: ...

@typing.final
class VpnCustomPromptText(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomPromptText: ...
    def __new__(cls: typing.Type[VpnCustomPromptText]) -> VpnCustomPromptText: ...
    @_property
    def emphasized(self) -> bool: ...
    @emphasized.setter
    def emphasized(self, value: bool) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def text(self) -> str: ...
    @text.setter
    def text(self, value: str) -> None: ...

@typing.final
class VpnCustomPromptTextInput(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomPromptTextInput: ...
    def __new__(cls: typing.Type[VpnCustomPromptTextInput]) -> VpnCustomPromptTextInput: ...
    @_property
    def emphasized(self) -> bool: ...
    @emphasized.setter
    def emphasized(self, value: bool) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def placeholder_text(self) -> str: ...
    @placeholder_text.setter
    def placeholder_text(self, value: str) -> None: ...
    @_property
    def is_text_hidden(self) -> bool: ...
    @is_text_hidden.setter
    def is_text_hidden(self, value: bool) -> None: ...
    @_property
    def text(self) -> str: ...

@typing.final
class VpnCustomTextBox(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnCustomTextBox: ...
    def __new__(cls: typing.Type[VpnCustomTextBox]) -> VpnCustomTextBox: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...
    @_property
    def display_text(self) -> str: ...
    @display_text.setter
    def display_text(self, value: str) -> None: ...

@typing.final
class VpnDomainNameAssignment(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnDomainNameAssignment: ...
    def __new__(cls: typing.Type[VpnDomainNameAssignment]) -> VpnDomainNameAssignment: ...
    @_property
    def proxy_auto_configuration_uri(self) -> typing.Optional[windows_foundation.Uri]: ...
    @proxy_auto_configuration_uri.setter
    def proxy_auto_configuration_uri(self, value: typing.Optional[windows_foundation.Uri]) -> None: ...
    @_property
    def domain_name_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnDomainNameInfo]]: ...

@typing.final
class VpnDomainNameInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnDomainNameInfo: ...
    def __new__(cls: typing.Type[VpnDomainNameInfo], name: str, name_type: VpnDomainNameType, dns_server_list: typing.Iterable[windows_networking.HostName], proxy_server_list: typing.Iterable[windows_networking.HostName]) -> VpnDomainNameInfo: ...
    @_property
    def domain_name_type(self) -> VpnDomainNameType: ...
    @domain_name_type.setter
    def domain_name_type(self, value: VpnDomainNameType) -> None: ...
    @_property
    def domain_name(self) -> typing.Optional[windows_networking.HostName]: ...
    @domain_name.setter
    def domain_name(self, value: typing.Optional[windows_networking.HostName]) -> None: ...
    @_property
    def dns_servers(self) -> typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]: ...
    @_property
    def web_proxy_servers(self) -> typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]: ...
    @_property
    def web_proxy_uris(self) -> typing.Optional[windows_foundation_collections.IVector[windows_foundation.Uri]]: ...

@typing.final
class VpnForegroundActivatedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnForegroundActivatedEventArgs: ...
    @_property
    def kind(self) -> windows_applicationmodel_activation.ActivationKind: ...
    @_property
    def previous_execution_state(self) -> windows_applicationmodel_activation.ApplicationExecutionState: ...
    @_property
    def splash_screen(self) -> typing.Optional[windows_applicationmodel_activation.SplashScreen]: ...
    @_property
    def user(self) -> typing.Optional[windows_system.User]: ...
    @_property
    def activation_operation(self) -> typing.Optional[VpnForegroundActivationOperation]: ...
    @_property
    def profile_name(self) -> str: ...
    @_property
    def shared_context(self) -> typing.Optional[windows_foundation_collections.ValueSet]: ...

@typing.final
class VpnForegroundActivationOperation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnForegroundActivationOperation: ...
    def complete(self, result: typing.Optional[windows_foundation_collections.ValueSet], /) -> None: ...

@typing.final
class VpnInterfaceId(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnInterfaceId: ...
    def __new__(cls: typing.Type[VpnInterfaceId], address: winrt.system.Array[winrt.system.UInt8]) -> VpnInterfaceId: ...
    def get_address_info(self) -> winrt.system.Array[winrt.system.UInt8]: ...

@typing.final
class VpnManagementAgent(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnManagementAgent: ...
    def __new__(cls: typing.Type[VpnManagementAgent]) -> VpnManagementAgent: ...
    def add_profile_from_object_async(self, profile: typing.Optional[IVpnProfile], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def add_profile_from_xml_async(self, xml: str, /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def connect_profile_async(self, profile: typing.Optional[IVpnProfile], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def connect_profile_with_password_credential_async(self, profile: typing.Optional[IVpnProfile], password_credential: typing.Optional[windows_security_credentials.PasswordCredential], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def delete_profile_async(self, profile: typing.Optional[IVpnProfile], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def disconnect_profile_async(self, profile: typing.Optional[IVpnProfile], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def get_profiles_async(self) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IVectorView[IVpnProfile]]: ...
    def update_profile_from_object_async(self, profile: typing.Optional[IVpnProfile], /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def update_profile_from_xml_async(self, xml: str, /) -> windows_foundation.IAsyncOperation[VpnManagementErrorStatus]: ...

@typing.final
class VpnNamespaceAssignment(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnNamespaceAssignment: ...
    def __new__(cls: typing.Type[VpnNamespaceAssignment]) -> VpnNamespaceAssignment: ...
    @_property
    def proxy_auto_config_uri(self) -> typing.Optional[windows_foundation.Uri]: ...
    @proxy_auto_config_uri.setter
    def proxy_auto_config_uri(self, value: typing.Optional[windows_foundation.Uri]) -> None: ...
    @_property
    def namespace_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnNamespaceInfo]]: ...
    @namespace_list.setter
    def namespace_list(self, value: typing.Optional[windows_foundation_collections.IVector[VpnNamespaceInfo]]) -> None: ...

@typing.final
class VpnNamespaceInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnNamespaceInfo: ...
    def __new__(cls: typing.Type[VpnNamespaceInfo], name: str, dns_server_list: windows_foundation_collections.IVector[windows_networking.HostName], proxy_server_list: windows_foundation_collections.IVector[windows_networking.HostName]) -> VpnNamespaceInfo: ...
    @_property
    def web_proxy_servers(self) -> typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]: ...
    @web_proxy_servers.setter
    def web_proxy_servers(self, value: typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]) -> None: ...
    @_property
    def namespace(self) -> str: ...
    @namespace.setter
    def namespace(self, value: str) -> None: ...
    @_property
    def dns_servers(self) -> typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]: ...
    @dns_servers.setter
    def dns_servers(self, value: typing.Optional[windows_foundation_collections.IVector[windows_networking.HostName]]) -> None: ...

@typing.final
class VpnNativeProfile(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnNativeProfile: ...
    def __new__(cls: typing.Type[VpnNativeProfile]) -> VpnNativeProfile: ...
    @_property
    def user_authentication_method(self) -> VpnAuthenticationMethod: ...
    @user_authentication_method.setter
    def user_authentication_method(self, value: VpnAuthenticationMethod) -> None: ...
    @_property
    def tunnel_authentication_method(self) -> VpnAuthenticationMethod: ...
    @tunnel_authentication_method.setter
    def tunnel_authentication_method(self, value: VpnAuthenticationMethod) -> None: ...
    @_property
    def routing_policy_type(self) -> VpnRoutingPolicyType: ...
    @routing_policy_type.setter
    def routing_policy_type(self, value: VpnRoutingPolicyType) -> None: ...
    @_property
    def eap_configuration(self) -> str: ...
    @eap_configuration.setter
    def eap_configuration(self, value: str) -> None: ...
    @_property
    def native_protocol_type(self) -> VpnNativeProtocolType: ...
    @native_protocol_type.setter
    def native_protocol_type(self, value: VpnNativeProtocolType) -> None: ...
    @_property
    def servers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def require_vpn_client_app_u_i(self) -> bool: ...
    @require_vpn_client_app_u_i.setter
    def require_vpn_client_app_u_i(self, value: bool) -> None: ...
    @_property
    def connection_status(self) -> VpnManagementConnectionStatus: ...
    @_property
    def profile_name(self) -> str: ...
    @profile_name.setter
    def profile_name(self, value: str) -> None: ...
    @_property
    def remember_credentials(self) -> bool: ...
    @remember_credentials.setter
    def remember_credentials(self, value: bool) -> None: ...
    @_property
    def always_on(self) -> bool: ...
    @always_on.setter
    def always_on(self, value: bool) -> None: ...
    @_property
    def routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @_property
    def app_triggers(self) -> typing.Optional[windows_foundation_collections.IVector[VpnAppId]]: ...
    @_property
    def traffic_filters(self) -> typing.Optional[windows_foundation_collections.IVector[VpnTrafficFilter]]: ...
    @_property
    def domain_name_info_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnDomainNameInfo]]: ...

@typing.final
class VpnPacketBuffer(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnPacketBuffer: ...
    def __new__(cls: typing.Type[VpnPacketBuffer], parent_buffer: typing.Optional[VpnPacketBuffer], offset: winrt.system.UInt32, length: winrt.system.UInt32) -> VpnPacketBuffer: ...
    @_property
    def transport_affinity(self) -> winrt.system.UInt32: ...
    @transport_affinity.setter
    def transport_affinity(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def status(self) -> VpnPacketBufferStatus: ...
    @status.setter
    def status(self, value: VpnPacketBufferStatus) -> None: ...
    @_property
    def buffer(self) -> typing.Optional[windows_storage_streams.Buffer]: ...
    @_property
    def app_id(self) -> typing.Optional[VpnAppId]: ...
    @_property
    def transport_context(self) -> typing.Optional[winrt.system.Object]: ...
    @transport_context.setter
    def transport_context(self, value: typing.Optional[winrt.system.Object]) -> None: ...

@typing.final
class VpnPacketBufferList(winrt.system.Object):
    def __iter__(self) -> windows_foundation_collections.IIterator[VpnPacketBuffer]: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnPacketBufferList: ...
    def add_at_begin(self, next_vpn_packet_buffer: typing.Optional[VpnPacketBuffer], /) -> None: ...
    def append(self, next_vpn_packet_buffer: typing.Optional[VpnPacketBuffer], /) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[windows_foundation_collections.IIterator[VpnPacketBuffer]]: ...
    def remove_at_begin(self) -> typing.Optional[VpnPacketBuffer]: ...
    def remove_at_end(self) -> typing.Optional[VpnPacketBuffer]: ...
    @_property
    def status(self) -> VpnPacketBufferStatus: ...
    @status.setter
    def status(self, value: VpnPacketBufferStatus) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class VpnPickedCredential(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnPickedCredential: ...
    @_property
    def additional_pin(self) -> str: ...
    @_property
    def old_password_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...
    @_property
    def passkey_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...

@typing.final
class VpnPlugInProfile(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnPlugInProfile: ...
    def __new__(cls: typing.Type[VpnPlugInProfile]) -> VpnPlugInProfile: ...
    @_property
    def vpn_plugin_package_family_name(self) -> str: ...
    @vpn_plugin_package_family_name.setter
    def vpn_plugin_package_family_name(self, value: str) -> None: ...
    @_property
    def custom_configuration(self) -> str: ...
    @custom_configuration.setter
    def custom_configuration(self, value: str) -> None: ...
    @_property
    def server_uris(self) -> typing.Optional[windows_foundation_collections.IVector[windows_foundation.Uri]]: ...
    @_property
    def require_vpn_client_app_u_i(self) -> bool: ...
    @require_vpn_client_app_u_i.setter
    def require_vpn_client_app_u_i(self, value: bool) -> None: ...
    @_property
    def connection_status(self) -> VpnManagementConnectionStatus: ...
    @_property
    def profile_name(self) -> str: ...
    @profile_name.setter
    def profile_name(self, value: str) -> None: ...
    @_property
    def remember_credentials(self) -> bool: ...
    @remember_credentials.setter
    def remember_credentials(self, value: bool) -> None: ...
    @_property
    def always_on(self) -> bool: ...
    @always_on.setter
    def always_on(self, value: bool) -> None: ...
    @_property
    def app_triggers(self) -> typing.Optional[windows_foundation_collections.IVector[VpnAppId]]: ...
    @_property
    def domain_name_info_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnDomainNameInfo]]: ...
    @_property
    def routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @_property
    def traffic_filters(self) -> typing.Optional[windows_foundation_collections.IVector[VpnTrafficFilter]]: ...

@typing.final
class VpnRoute(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnRoute: ...
    def __new__(cls: typing.Type[VpnRoute], address: typing.Optional[windows_networking.HostName], prefix_size: winrt.system.UInt8) -> VpnRoute: ...
    @_property
    def prefix_size(self) -> winrt.system.UInt8: ...
    @prefix_size.setter
    def prefix_size(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def address(self) -> typing.Optional[windows_networking.HostName]: ...
    @address.setter
    def address(self, value: typing.Optional[windows_networking.HostName]) -> None: ...

@typing.final
class VpnRouteAssignment(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnRouteAssignment: ...
    def __new__(cls: typing.Type[VpnRouteAssignment]) -> VpnRouteAssignment: ...
    @_property
    def ipv6_inclusion_routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @ipv6_inclusion_routes.setter
    def ipv6_inclusion_routes(self, value: typing.Optional[windows_foundation_collections.IVector[VpnRoute]]) -> None: ...
    @_property
    def ipv6_exclusion_routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @ipv6_exclusion_routes.setter
    def ipv6_exclusion_routes(self, value: typing.Optional[windows_foundation_collections.IVector[VpnRoute]]) -> None: ...
    @_property
    def ipv4_inclusion_routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @ipv4_inclusion_routes.setter
    def ipv4_inclusion_routes(self, value: typing.Optional[windows_foundation_collections.IVector[VpnRoute]]) -> None: ...
    @_property
    def ipv4_exclusion_routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @ipv4_exclusion_routes.setter
    def ipv4_exclusion_routes(self, value: typing.Optional[windows_foundation_collections.IVector[VpnRoute]]) -> None: ...
    @_property
    def exclude_local_subnets(self) -> bool: ...
    @exclude_local_subnets.setter
    def exclude_local_subnets(self, value: bool) -> None: ...

@typing.final
class VpnSystemHealth(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnSystemHealth: ...
    @_property
    def statement_of_health(self) -> typing.Optional[windows_storage_streams.Buffer]: ...

@typing.final
class VpnTrafficFilter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnTrafficFilter: ...
    def __new__(cls: typing.Type[VpnTrafficFilter], app_id: typing.Optional[VpnAppId]) -> VpnTrafficFilter: ...
    @_property
    def routing_policy_type(self) -> VpnRoutingPolicyType: ...
    @routing_policy_type.setter
    def routing_policy_type(self, value: VpnRoutingPolicyType) -> None: ...
    @_property
    def protocol(self) -> VpnIPProtocol: ...
    @protocol.setter
    def protocol(self, value: VpnIPProtocol) -> None: ...
    @_property
    def app_id(self) -> typing.Optional[VpnAppId]: ...
    @app_id.setter
    def app_id(self, value: typing.Optional[VpnAppId]) -> None: ...
    @_property
    def app_claims(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def local_address_ranges(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def local_port_ranges(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def remote_address_ranges(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def remote_port_ranges(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

@typing.final
class VpnTrafficFilterAssignment(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VpnTrafficFilterAssignment: ...
    def __new__(cls: typing.Type[VpnTrafficFilterAssignment]) -> VpnTrafficFilterAssignment: ...
    @_property
    def allow_outbound(self) -> bool: ...
    @allow_outbound.setter
    def allow_outbound(self, value: bool) -> None: ...
    @_property
    def allow_inbound(self) -> bool: ...
    @allow_inbound.setter
    def allow_inbound(self, value: bool) -> None: ...
    @_property
    def traffic_filter_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnTrafficFilter]]: ...

@typing.final
class IVpnChannelStatics(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnChannelStatics: ...
    def process_event_async(self, third_party_plug_in: typing.Optional[winrt.system.Object], event: typing.Optional[winrt.system.Object], /) -> None: ...

@typing.final
class IVpnCredential(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnCredential: ...
    @_property
    def additional_pin(self) -> str: ...
    @_property
    def certificate_credential(self) -> typing.Optional[windows_security_cryptography_certificates.Certificate]: ...
    @_property
    def old_password_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...
    @_property
    def passkey_credential(self) -> typing.Optional[windows_security_credentials.PasswordCredential]: ...

@typing.final
class IVpnCustomPrompt(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnCustomPrompt: ...
    @_property
    def bordered(self) -> bool: ...
    @bordered.setter
    def bordered(self, value: bool) -> None: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def label(self) -> str: ...
    @label.setter
    def label(self, value: str) -> None: ...

@typing.final
class IVpnCustomPromptElement(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnCustomPromptElement: ...
    @_property
    def compulsory(self) -> bool: ...
    @compulsory.setter
    def compulsory(self, value: bool) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def emphasized(self) -> bool: ...
    @emphasized.setter
    def emphasized(self, value: bool) -> None: ...

@typing.final
class IVpnDomainNameInfoFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnDomainNameInfoFactory: ...
    def create_vpn_domain_name_info(self, name: str, name_type: VpnDomainNameType, dns_server_list: typing.Iterable[windows_networking.HostName], proxy_server_list: typing.Iterable[windows_networking.HostName], /) -> typing.Optional[VpnDomainNameInfo]: ...

@typing.final
class IVpnInterfaceIdFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnInterfaceIdFactory: ...
    def create_vpn_interface_id(self, address: winrt.system.Array[winrt.system.UInt8], /) -> typing.Optional[VpnInterfaceId]: ...

@typing.final
class IVpnNamespaceInfoFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnNamespaceInfoFactory: ...
    def create_vpn_namespace_info(self, name: str, dns_server_list: windows_foundation_collections.IVector[windows_networking.HostName], proxy_server_list: windows_foundation_collections.IVector[windows_networking.HostName], /) -> typing.Optional[VpnNamespaceInfo]: ...

@typing.final
class IVpnPacketBufferFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnPacketBufferFactory: ...
    def create_vpn_packet_buffer(self, parent_buffer: typing.Optional[VpnPacketBuffer], offset: winrt.system.UInt32, length: winrt.system.UInt32, /) -> typing.Optional[VpnPacketBuffer]: ...

@typing.final
class IVpnPlugIn(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnPlugIn: ...
    def connect(self, channel: typing.Optional[VpnChannel], /) -> None: ...
    def decapsulate(self, channel: typing.Optional[VpnChannel], encap_buffer: typing.Optional[VpnPacketBuffer], decapsulated_packets: typing.Optional[VpnPacketBufferList], control_packets_to_send: typing.Optional[VpnPacketBufferList], /) -> None: ...
    def disconnect(self, channel: typing.Optional[VpnChannel], /) -> None: ...
    def encapsulate(self, channel: typing.Optional[VpnChannel], packets: typing.Optional[VpnPacketBufferList], encapulated_packets: typing.Optional[VpnPacketBufferList], /) -> None: ...
    def get_keep_alive_payload(self, channel: typing.Optional[VpnChannel], /) -> typing.Optional[VpnPacketBuffer]: ...

@typing.final
class IVpnProfile(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnProfile: ...
    @_property
    def always_on(self) -> bool: ...
    @always_on.setter
    def always_on(self, value: bool) -> None: ...
    @_property
    def app_triggers(self) -> typing.Optional[windows_foundation_collections.IVector[VpnAppId]]: ...
    @_property
    def domain_name_info_list(self) -> typing.Optional[windows_foundation_collections.IVector[VpnDomainNameInfo]]: ...
    @_property
    def profile_name(self) -> str: ...
    @profile_name.setter
    def profile_name(self, value: str) -> None: ...
    @_property
    def remember_credentials(self) -> bool: ...
    @remember_credentials.setter
    def remember_credentials(self, value: bool) -> None: ...
    @_property
    def routes(self) -> typing.Optional[windows_foundation_collections.IVector[VpnRoute]]: ...
    @_property
    def traffic_filters(self) -> typing.Optional[windows_foundation_collections.IVector[VpnTrafficFilter]]: ...

@typing.final
class IVpnRouteFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVpnRouteFactory: ...
    def create_vpn_route(self, address: typing.Optional[windows_networking.HostName], prefix_size: winrt.system.UInt8, /) -> typing.Optional[VpnRoute]: ...

