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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.applicationmodel.activation
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.networking
import winsdk.windows.networking.sockets
import winsdk.windows.security.credentials
import winsdk.windows.security.cryptography.certificates
import winsdk.windows.storage.streams
import winsdk.windows.system

class VpnAppIdType(enum.IntEnum):
    PACKAGE_FAMILY_NAME = 0
    FULLY_QUALIFIED_BINARY_NAME = 1
    FILE_PATH = 2

class VpnAuthenticationMethod(enum.IntEnum):
    MSCHAPV2 = 0
    EAP = 1
    CERTIFICATE = 2
    PRESHARED_KEY = 3

class VpnChannelActivityEventType(enum.IntEnum):
    IDLE = 0
    ACTIVE = 1

class VpnChannelRequestCredentialsOptions(enum.IntFlag):
    NONE = 0
    RETRYING = 0x1
    USE_FOR_SINGLE_SIGN_IN = 0x2

class VpnCredentialType(enum.IntEnum):
    USERNAME_PASSWORD = 0
    USERNAME_OTP_PIN = 1
    USERNAME_PASSWORD_AND_PIN = 2
    USERNAME_PASSWORD_CHANGE = 3
    SMART_CARD = 4
    PROTECTED_CERTIFICATE = 5
    UN_PROTECTED_CERTIFICATE = 6

class VpnDataPathType(enum.IntEnum):
    SEND = 0
    RECEIVE = 1

class VpnDomainNameType(enum.IntEnum):
    SUFFIX = 0
    FULLY_QUALIFIED = 1
    RESERVED = 65535

class VpnIPProtocol(enum.IntEnum):
    NONE = 0
    TCP = 6
    UDP = 17
    ICMP = 1
    IPV6_ICMP = 58
    IGMP = 2
    PGM = 113

class VpnManagementConnectionStatus(enum.IntEnum):
    DISCONNECTED = 0
    DISCONNECTING = 1
    CONNECTED = 2
    CONNECTING = 3

class VpnManagementErrorStatus(enum.IntEnum):
    OK = 0
    OTHER = 1
    INVALID_XML_SYNTAX = 2
    PROFILE_NAME_TOO_LONG = 3
    PROFILE_INVALID_APP_ID = 4
    ACCESS_DENIED = 5
    CANNOT_FIND_PROFILE = 6
    ALREADY_DISCONNECTING = 7
    ALREADY_CONNECTED = 8
    GENERAL_AUTHENTICATION_FAILURE = 9
    EAP_FAILURE = 10
    SMART_CARD_FAILURE = 11
    CERTIFICATE_FAILURE = 12
    SERVER_CONFIGURATION = 13
    NO_CONNECTION = 14
    SERVER_CONNECTION = 15
    USER_NAME_PASSWORD = 16
    DNS_NOT_RESOLVABLE = 17
    INVALID_I_P = 18

class VpnNativeProtocolType(enum.IntEnum):
    PPTP = 0
    L2TP = 1
    IPSEC_IKEV2 = 2

class VpnPacketBufferStatus(enum.IntEnum):
    OK = 0
    INVALID_BUFFER_SIZE = 1

class VpnRoutingPolicyType(enum.IntEnum):
    SPLIT_ROUTING = 0
    FORCE_ALL_TRAFFIC_OVER_VPN = 1

Self = typing.TypeVar('Self')

class VpnAppId(winsdk.system.Object):
    value: str
    type: VpnAppIdType
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnAppId: ...
    def __new__(cls: typing.Type[VpnAppId], type: VpnAppIdType, value: str) -> VpnAppId:...

class VpnChannel(winsdk.system.Object):
    plug_in_context: typing.Optional[winsdk.system.Object]
    configuration: typing.Optional[VpnChannelConfiguration]
    id: winsdk.system.UInt32
    system_health: typing.Optional[VpnSystemHealth]
    current_request_transport_context: typing.Optional[winsdk.system.Object]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnChannel: ...
    def activate_foreground(self, package_relative_app_id: str, shared_context: typing.Optional[winsdk.windows.foundation.collections.ValueSet]) -> typing.Optional[winsdk.windows.foundation.collections.ValueSet]: ...
    def add_and_associate_transport(self, transport: typing.Optional[winsdk.system.Object], context: typing.Optional[winsdk.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[winsdk.system.Object], optional_outer_tunnel_transport: typing.Optional[winsdk.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[winsdk.system.Object]) -> winsdk.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: ...
    @staticmethod
    def process_event_async(third_party_plug_in: typing.Optional[winsdk.system.Object], event: typing.Optional[winsdk.system.Object]) -> None: ...
    def replace_and_associate_transport(self, transport: typing.Optional[winsdk.system.Object], context: typing.Optional[winsdk.system.Object]) -> None: ...
    def request_credentials(self, cred_type: VpnCredentialType, is_retry: winsdk.system.Boolean, is_single_sign_on_credential: winsdk.system.Boolean, certificate: typing.Optional[winsdk.windows.security.cryptography.certificates.Certificate]) -> typing.Optional[VpnPickedCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType) -> winsdk.windows.foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, cred_options: winsdk.system.UInt32) -> winsdk.windows.foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, cred_options: winsdk.system.UInt32, certificate: typing.Optional[winsdk.windows.security.cryptography.certificates.Certificate]) -> winsdk.windows.foundation.IAsyncOperation[VpnCredential]: ...
    def request_custom_prompt(self, custom_prompt: winsdk.windows.foundation.collections.IVectorView[IVpnCustomPrompt]) -> None: ...
    def request_custom_prompt_async(self, custom_prompt_element: winsdk.windows.foundation.collections.IVectorView[IVpnCustomPromptElement]) -> winsdk.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[winsdk.system.Object], use_tls12: winsdk.system.Boolean) -> None: ...
    def set_error_message(self, message: str) -> None: ...
    def start(self, assigned_client_i_pv4list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], assigned_client_i_pv6list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], route_scope: typing.Optional[VpnRouteAssignment], namespace_scope: typing.Optional[VpnNamespaceAssignment], mtu_size: winsdk.system.UInt32, max_frame_size: winsdk.system.UInt32, optimize_for_low_cost_network: winsdk.system.Boolean, main_outer_tunnel_transport: typing.Optional[winsdk.system.Object], optional_outer_tunnel_transport: typing.Optional[winsdk.system.Object]) -> None: ...
    def start_existing_transports(self, assigned_client_i_pv4list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], assigned_client_i_pv6list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_domain_name: typing.Optional[VpnDomainNameAssignment], mtu_size: winsdk.system.UInt32, max_frame_size: winsdk.system.UInt32, reserved: winsdk.system.Boolean) -> None: ...
    def start_reconnecting_transport(self, transport: typing.Optional[winsdk.system.Object], context: typing.Optional[winsdk.system.Object]) -> None: ...
    def start_with_main_transport(self, assigned_client_i_pv4list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], assigned_client_i_pv6list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_domain_name: typing.Optional[VpnDomainNameAssignment], mtu_size: winsdk.system.UInt32, max_frame_size: winsdk.system.UInt32, reserved: winsdk.system.Boolean, main_outer_tunnel_transport: typing.Optional[winsdk.system.Object]) -> None: ...
    @typing.overload
    def start_with_traffic_filter(self, assigned_client_ipv4_addresses: typing.Iterable[winsdk.windows.networking.HostName], assigned_client_ipv6_addresses: typing.Iterable[winsdk.windows.networking.HostName], vpninterface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_namespace: typing.Optional[VpnDomainNameAssignment], mtu_size: winsdk.system.UInt32, max_frame_size: winsdk.system.UInt32, reserved: winsdk.system.Boolean, transports: typing.Iterable[winsdk.system.Object], assigned_traffic_filters: typing.Optional[VpnTrafficFilterAssignment]) -> None: ...
    @typing.overload
    def start_with_traffic_filter(self, assigned_client_ipv4_list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], assigned_client_ipv6_list: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName], vpn_interface_id: typing.Optional[VpnInterfaceId], assigned_routes: typing.Optional[VpnRouteAssignment], assigned_namespace: typing.Optional[VpnDomainNameAssignment], mtu_size: winsdk.system.UInt32, max_frame_size: winsdk.system.UInt32, reserved: winsdk.system.Boolean, main_outer_tunnel_transport: typing.Optional[winsdk.system.Object], optional_outer_tunnel_transport: typing.Optional[winsdk.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: winsdk.windows.foundation.TypedEventHandler[VpnChannel, VpnChannelActivityEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_activity_change(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_activity_state_change(self, handler: winsdk.windows.foundation.TypedEventHandler[VpnChannel, VpnChannelActivityStateChangedArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_activity_state_change(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class VpnChannelActivityEventArgs(winsdk.system.Object):
    type: VpnChannelActivityEventType
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnChannelActivityEventArgs: ...

class VpnChannelActivityStateChangedArgs(winsdk.system.Object):
    activity_state: VpnChannelActivityEventType
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnChannelActivityStateChangedArgs: ...

class VpnChannelConfiguration(winsdk.system.Object):
    custom_field: str
    server_host_name_list: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName]]
    server_service_name: str
    server_uris: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.foundation.Uri]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnChannelConfiguration: ...

class VpnCredential(winsdk.system.Object):
    additional_pin: str
    certificate_credential: typing.Optional[winsdk.windows.security.cryptography.certificates.Certificate]
    old_password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    passkey_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCredential: ...

class VpnCustomCheckBox(winsdk.system.Object):
    initial_check_state: winsdk.system.Boolean
    checked: winsdk.system.Boolean
    label: str
    compulsory: winsdk.system.Boolean
    bordered: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomCheckBox: ...
    def __new__(cls: typing.Type[VpnCustomCheckBox]) -> VpnCustomCheckBox:...

class VpnCustomComboBox(winsdk.system.Object):
    options_text: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    selected: winsdk.system.UInt32
    label: str
    compulsory: winsdk.system.Boolean
    bordered: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomComboBox: ...
    def __new__(cls: typing.Type[VpnCustomComboBox]) -> VpnCustomComboBox:...

class VpnCustomEditBox(winsdk.system.Object):
    no_echo: winsdk.system.Boolean
    default_text: str
    text: str
    label: str
    compulsory: winsdk.system.Boolean
    bordered: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomEditBox: ...
    def __new__(cls: typing.Type[VpnCustomEditBox]) -> VpnCustomEditBox:...

class VpnCustomErrorBox(winsdk.system.Object):
    label: str
    compulsory: winsdk.system.Boolean
    bordered: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomErrorBox: ...
    def __new__(cls: typing.Type[VpnCustomErrorBox]) -> VpnCustomErrorBox:...

class VpnCustomPromptBooleanInput(winsdk.system.Object):
    initial_value: winsdk.system.Boolean
    value: winsdk.system.Boolean
    emphasized: winsdk.system.Boolean
    display_name: str
    compulsory: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomPromptBooleanInput: ...
    def __new__(cls: typing.Type[VpnCustomPromptBooleanInput]) -> VpnCustomPromptBooleanInput:...

class VpnCustomPromptOptionSelector(winsdk.system.Object):
    emphasized: winsdk.system.Boolean
    display_name: str
    compulsory: winsdk.system.Boolean
    options: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    selected_index: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomPromptOptionSelector: ...
    def __new__(cls: typing.Type[VpnCustomPromptOptionSelector]) -> VpnCustomPromptOptionSelector:...

class VpnCustomPromptText(winsdk.system.Object):
    emphasized: winsdk.system.Boolean
    display_name: str
    compulsory: winsdk.system.Boolean
    text: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomPromptText: ...
    def __new__(cls: typing.Type[VpnCustomPromptText]) -> VpnCustomPromptText:...

class VpnCustomPromptTextInput(winsdk.system.Object):
    emphasized: winsdk.system.Boolean
    display_name: str
    compulsory: winsdk.system.Boolean
    placeholder_text: str
    is_text_hidden: winsdk.system.Boolean
    text: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomPromptTextInput: ...
    def __new__(cls: typing.Type[VpnCustomPromptTextInput]) -> VpnCustomPromptTextInput:...

class VpnCustomTextBox(winsdk.system.Object):
    label: str
    compulsory: winsdk.system.Boolean
    bordered: winsdk.system.Boolean
    display_text: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnCustomTextBox: ...
    def __new__(cls: typing.Type[VpnCustomTextBox]) -> VpnCustomTextBox:...

class VpnDomainNameAssignment(winsdk.system.Object):
    proxy_auto_configuration_uri: typing.Optional[winsdk.windows.foundation.Uri]
    domain_name_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnDomainNameAssignment: ...
    def __new__(cls: typing.Type[VpnDomainNameAssignment]) -> VpnDomainNameAssignment:...

class VpnDomainNameInfo(winsdk.system.Object):
    domain_name_type: VpnDomainNameType
    domain_name: typing.Optional[winsdk.windows.networking.HostName]
    dns_servers: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]]
    web_proxy_servers: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]]
    web_proxy_uris: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.Uri]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnDomainNameInfo: ...
    def __new__(cls: typing.Type[VpnDomainNameInfo], name: str, name_type: VpnDomainNameType, dns_server_list: typing.Iterable[winsdk.windows.networking.HostName], proxy_server_list: typing.Iterable[winsdk.windows.networking.HostName]) -> VpnDomainNameInfo:...

class VpnForegroundActivatedEventArgs(winsdk.system.Object):
    kind: winsdk.windows.applicationmodel.activation.ActivationKind
    previous_execution_state: winsdk.windows.applicationmodel.activation.ApplicationExecutionState
    splash_screen: typing.Optional[winsdk.windows.applicationmodel.activation.SplashScreen]
    user: typing.Optional[winsdk.windows.system.User]
    activation_operation: typing.Optional[VpnForegroundActivationOperation]
    profile_name: str
    shared_context: typing.Optional[winsdk.windows.foundation.collections.ValueSet]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnForegroundActivatedEventArgs: ...

class VpnForegroundActivationOperation(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnForegroundActivationOperation: ...
    def complete(self, result: typing.Optional[winsdk.windows.foundation.collections.ValueSet]) -> None: ...

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

class VpnManagementAgent(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnManagementAgent: ...
    def __new__(cls: typing.Type[VpnManagementAgent]) -> VpnManagementAgent:...
    def add_profile_from_object_async(self, profile: typing.Optional[IVpnProfile]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def add_profile_from_xml_async(self, xml: str) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def connect_profile_async(self, profile: typing.Optional[IVpnProfile]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def connect_profile_with_password_credential_async(self, profile: typing.Optional[IVpnProfile], password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def delete_profile_async(self, profile: typing.Optional[IVpnProfile]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def disconnect_profile_async(self, profile: typing.Optional[IVpnProfile]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def get_profiles_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[IVpnProfile]]: ...
    def update_profile_from_object_async(self, profile: typing.Optional[IVpnProfile]) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...
    def update_profile_from_xml_async(self, xml: str) -> winsdk.windows.foundation.IAsyncOperation[VpnManagementErrorStatus]: ...

class VpnNamespaceAssignment(winsdk.system.Object):
    proxy_auto_config_uri: typing.Optional[winsdk.windows.foundation.Uri]
    namespace_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnNamespaceInfo]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnNamespaceAssignment: ...
    def __new__(cls: typing.Type[VpnNamespaceAssignment]) -> VpnNamespaceAssignment:...

class VpnNamespaceInfo(winsdk.system.Object):
    web_proxy_servers: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]]
    namespace: str
    dns_servers: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnNamespaceInfo: ...
    def __new__(cls: typing.Type[VpnNamespaceInfo], name: str, dns_server_list: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName], proxy_server_list: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]) -> VpnNamespaceInfo:...

class VpnNativeProfile(winsdk.system.Object):
    user_authentication_method: VpnAuthenticationMethod
    tunnel_authentication_method: VpnAuthenticationMethod
    routing_policy_type: VpnRoutingPolicyType
    eap_configuration: str
    native_protocol_type: VpnNativeProtocolType
    servers: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    require_vpn_client_app_u_i: winsdk.system.Boolean
    connection_status: VpnManagementConnectionStatus
    profile_name: str
    remember_credentials: winsdk.system.Boolean
    always_on: winsdk.system.Boolean
    routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    app_triggers: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnAppId]]
    traffic_filters: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]]
    domain_name_info_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnNativeProfile: ...
    def __new__(cls: typing.Type[VpnNativeProfile]) -> VpnNativeProfile:...

class VpnPacketBuffer(winsdk.system.Object):
    transport_affinity: winsdk.system.UInt32
    status: VpnPacketBufferStatus
    buffer: typing.Optional[winsdk.windows.storage.streams.Buffer]
    app_id: typing.Optional[VpnAppId]
    transport_context: typing.Optional[winsdk.system.Object]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnPacketBuffer: ...
    def __new__(cls: typing.Type[VpnPacketBuffer], parent_buffer: typing.Optional[VpnPacketBuffer], offset: winsdk.system.UInt32, length: winsdk.system.UInt32) -> VpnPacketBuffer:...

class VpnPacketBufferList(winsdk.system.Object):
    status: VpnPacketBufferStatus
    size: winsdk.system.UInt32
    def __iter__(self) -> winsdk.windows.foundation.collections.IIterator[VpnPacketBuffer]: ...
    @staticmethod
    def _from(obj: winsdk.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[winsdk.windows.foundation.collections.IIterator[VpnPacketBuffer]]: ...
    def remove_at_begin(self) -> typing.Optional[VpnPacketBuffer]: ...
    def remove_at_end(self) -> typing.Optional[VpnPacketBuffer]: ...

class VpnPickedCredential(winsdk.system.Object):
    additional_pin: str
    old_password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    passkey_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnPickedCredential: ...

class VpnPlugInProfile(winsdk.system.Object):
    vpn_plugin_package_family_name: str
    custom_configuration: str
    server_uris: typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.Uri]]
    require_vpn_client_app_u_i: winsdk.system.Boolean
    connection_status: VpnManagementConnectionStatus
    profile_name: str
    remember_credentials: winsdk.system.Boolean
    always_on: winsdk.system.Boolean
    app_triggers: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnAppId]]
    domain_name_info_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]]
    routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    traffic_filters: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnPlugInProfile: ...
    def __new__(cls: typing.Type[VpnPlugInProfile]) -> VpnPlugInProfile:...

class VpnRoute(winsdk.system.Object):
    prefix_size: winsdk.system.UInt8
    address: typing.Optional[winsdk.windows.networking.HostName]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnRoute: ...
    def __new__(cls: typing.Type[VpnRoute], address: typing.Optional[winsdk.windows.networking.HostName], prefix_size: winsdk.system.UInt8) -> VpnRoute:...

class VpnRouteAssignment(winsdk.system.Object):
    ipv6_inclusion_routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    ipv6_exclusion_routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    ipv4_inclusion_routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    ipv4_exclusion_routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    exclude_local_subnets: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnRouteAssignment: ...
    def __new__(cls: typing.Type[VpnRouteAssignment]) -> VpnRouteAssignment:...

class VpnSystemHealth(winsdk.system.Object):
    statement_of_health: typing.Optional[winsdk.windows.storage.streams.Buffer]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnSystemHealth: ...

class VpnTrafficFilter(winsdk.system.Object):
    routing_policy_type: VpnRoutingPolicyType
    protocol: VpnIPProtocol
    app_id: typing.Optional[VpnAppId]
    app_claims: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    local_address_ranges: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    local_port_ranges: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    remote_address_ranges: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    remote_port_ranges: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnTrafficFilter: ...
    def __new__(cls: typing.Type[VpnTrafficFilter], app_id: typing.Optional[VpnAppId]) -> VpnTrafficFilter:...

class VpnTrafficFilterAssignment(winsdk.system.Object):
    allow_outbound: winsdk.system.Boolean
    allow_inbound: winsdk.system.Boolean
    traffic_filter_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VpnTrafficFilterAssignment: ...
    def __new__(cls: typing.Type[VpnTrafficFilterAssignment]) -> VpnTrafficFilterAssignment:...

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

class IVpnCredential(winsdk.system.Object):
    additional_pin: str
    certificate_credential: typing.Optional[winsdk.windows.security.cryptography.certificates.Certificate]
    old_password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    passkey_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnCredential: ...

class IVpnCustomPrompt(winsdk.system.Object):
    bordered: winsdk.system.Boolean
    compulsory: winsdk.system.Boolean
    label: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnCustomPrompt: ...

class IVpnCustomPromptElement(winsdk.system.Object):
    compulsory: winsdk.system.Boolean
    display_name: str
    emphasized: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnCustomPromptElement: ...

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

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

class IVpnNamespaceInfoFactory(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnNamespaceInfoFactory: ...
    def create_vpn_namespace_info(self, name: str, dns_server_list: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName], proxy_server_list: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]) -> typing.Optional[VpnNamespaceInfo]: ...

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

class IVpnPlugIn(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.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]: ...

class IVpnProfile(winsdk.system.Object):
    always_on: winsdk.system.Boolean
    app_triggers: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnAppId]]
    domain_name_info_list: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]]
    profile_name: str
    remember_credentials: winsdk.system.Boolean
    routes: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnRoute]]
    traffic_filters: typing.Optional[winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnProfile: ...

class IVpnRouteFactory(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IVpnRouteFactory: ...
    def create_vpn_route(self, address: typing.Optional[winsdk.windows.networking.HostName], prefix_size: winsdk.system.UInt8) -> typing.Optional[VpnRoute]: ...

