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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.applicationmodel.activation
except Exception:
    pass

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

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

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

try:
    import winsdk.windows.networking.sockets
except Exception:
    pass

try:
    import winsdk.windows.security.credentials
except Exception:
    pass

try:
    import winsdk.windows.security.cryptography.certificates
except Exception:
    pass

try:
    import winsdk.windows.storage.streams
except Exception:
    pass

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

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

class VpnAppId(_winrt.Object):
    value: str
    type: VpnAppIdType
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnAppId: ...
    @typing.overload
    def __init__(self, type: VpnAppIdType, value: str) -> None: ...

class VpnChannel(_winrt.Object):
    plug_in_context: _winrt.Object
    configuration: VpnChannelConfiguration
    id: _winrt.UInt32
    system_health: VpnSystemHealth
    current_request_transport_context: _winrt.Object
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnChannel: ...
    @typing.overload
    def activate_foreground(self, package_relative_app_id: str, shared_context: winsdk.windows.foundation.collections.ValueSet) -> winsdk.windows.foundation.collections.ValueSet: ...
    @typing.overload
    def add_and_associate_transport(self, transport: _winrt.Object, context: _winrt.Object) -> None: ...
    @typing.overload
    def append_vpn_receive_packet_buffer(self, decapsulated_packet_buffer: VpnPacketBuffer) -> None: ...
    @typing.overload
    def append_vpn_send_packet_buffer(self, encapsulated_packet_buffer: VpnPacketBuffer) -> None: ...
    @typing.overload
    def associate_transport(self, main_outer_tunnel_transport: _winrt.Object, optional_outer_tunnel_transport: _winrt.Object) -> None: ...
    @typing.overload
    def flush_vpn_receive_packet_buffers(self) -> None: ...
    @typing.overload
    def flush_vpn_send_packet_buffers(self) -> None: ...
    @typing.overload
    def get_slot_type_for_transport_context(self, context: _winrt.Object) -> winsdk.windows.networking.sockets.ControlChannelTriggerStatus: ...
    @typing.overload
    def get_vpn_receive_packet_buffer(self) -> VpnPacketBuffer: ...
    @typing.overload
    def get_vpn_send_packet_buffer(self) -> VpnPacketBuffer: ...
    @typing.overload
    def log_diagnostic_message(self, message: str) -> None: ...
    @typing.overload
    @staticmethod
    def process_event_async(third_party_plug_in: _winrt.Object, event: _winrt.Object) -> None: ...
    @typing.overload
    def replace_and_associate_transport(self, transport: _winrt.Object, context: _winrt.Object) -> None: ...
    @typing.overload
    def request_credentials(self, cred_type: VpnCredentialType, is_retry: _winrt.Boolean, is_single_sign_on_credential: _winrt.Boolean, certificate: winsdk.windows.security.cryptography.certificates.Certificate) -> 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: _winrt.UInt32) -> winsdk.windows.foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_credentials_async(self, cred_type: VpnCredentialType, cred_options: _winrt.UInt32, certificate: winsdk.windows.security.cryptography.certificates.Certificate) -> winsdk.windows.foundation.IAsyncOperation[VpnCredential]: ...
    @typing.overload
    def request_custom_prompt(self, custom_prompt: winsdk.windows.foundation.collections.IVectorView[IVpnCustomPrompt]) -> None: ...
    @typing.overload
    def request_custom_prompt_async(self, custom_prompt_element: winsdk.windows.foundation.collections.IVectorView[IVpnCustomPromptElement]) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    def request_vpn_packet_buffer(self, type: VpnDataPathType) -> VpnPacketBuffer: ...
    @typing.overload
    def set_allowed_ssl_tls_versions(self, tunnel_transport: _winrt.Object, use_tls12: _winrt.Boolean) -> None: ...
    @typing.overload
    def set_error_message(self, message: str) -> None: ...
    @typing.overload
    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: VpnInterfaceId, route_scope: VpnRouteAssignment, namespace_scope: VpnNamespaceAssignment, mtu_size: _winrt.UInt32, max_frame_size: _winrt.UInt32, optimize_for_low_cost_network: _winrt.Boolean, main_outer_tunnel_transport: _winrt.Object, optional_outer_tunnel_transport: _winrt.Object) -> None: ...
    @typing.overload
    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: VpnInterfaceId, assigned_routes: VpnRouteAssignment, assigned_domain_name: VpnDomainNameAssignment, mtu_size: _winrt.UInt32, max_frame_size: _winrt.UInt32, reserved: _winrt.Boolean) -> None: ...
    @typing.overload
    def start_reconnecting_transport(self, transport: _winrt.Object, context: _winrt.Object) -> None: ...
    @typing.overload
    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: VpnInterfaceId, assigned_routes: VpnRouteAssignment, assigned_domain_name: VpnDomainNameAssignment, mtu_size: _winrt.UInt32, max_frame_size: _winrt.UInt32, reserved: _winrt.Boolean, main_outer_tunnel_transport: _winrt.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: VpnInterfaceId, assigned_routes: VpnRouteAssignment, assigned_namespace: VpnDomainNameAssignment, mtu_size: _winrt.UInt32, max_frame_size: _winrt.UInt32, reserved: _winrt.Boolean, transports: typing.Iterable[_winrt.Object], assigned_traffic_filters: 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: VpnInterfaceId, assigned_routes: VpnRouteAssignment, assigned_namespace: VpnDomainNameAssignment, mtu_size: _winrt.UInt32, max_frame_size: _winrt.UInt32, reserved: _winrt.Boolean, main_outer_tunnel_transport: _winrt.Object, optional_outer_tunnel_transport: _winrt.Object, assigned_traffic_filters: VpnTrafficFilterAssignment) -> None: ...
    @typing.overload
    def stop(self) -> None: ...
    @typing.overload
    def terminate_connection(self, message: str) -> None: ...
    @typing.overload
    def add_activity_change(self, handler: winsdk.windows.foundation.TypedEventHandler[VpnChannel, VpnChannelActivityEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_activity_change(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_activity_state_change(self, handler: winsdk.windows.foundation.TypedEventHandler[VpnChannel, VpnChannelActivityStateChangedArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_activity_state_change(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

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

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

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

class VpnCredential(IVpnCredential, _winrt.Object):
    additional_pin: str
    certificate_credential: winsdk.windows.security.cryptography.certificates.Certificate
    old_password_credential: winsdk.windows.security.credentials.PasswordCredential
    passkey_credential: winsdk.windows.security.credentials.PasswordCredential
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCredential: ...

class VpnCustomCheckBox(IVpnCustomPrompt, _winrt.Object):
    initial_check_state: _winrt.Boolean
    checked: _winrt.Boolean
    label: str
    compulsory: _winrt.Boolean
    bordered: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomCheckBox: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomComboBox(IVpnCustomPrompt, _winrt.Object):
    options_text: winsdk.windows.foundation.collections.IVectorView[str]
    selected: _winrt.UInt32
    label: str
    compulsory: _winrt.Boolean
    bordered: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomComboBox: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomEditBox(IVpnCustomPrompt, _winrt.Object):
    no_echo: _winrt.Boolean
    default_text: str
    text: str
    label: str
    compulsory: _winrt.Boolean
    bordered: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomEditBox: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomErrorBox(IVpnCustomPrompt, _winrt.Object):
    label: str
    compulsory: _winrt.Boolean
    bordered: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomErrorBox: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomPromptBooleanInput(IVpnCustomPromptElement, _winrt.Object):
    initial_value: _winrt.Boolean
    value: _winrt.Boolean
    emphasized: _winrt.Boolean
    display_name: str
    compulsory: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomPromptBooleanInput: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomPromptOptionSelector(IVpnCustomPromptElement, _winrt.Object):
    emphasized: _winrt.Boolean
    display_name: str
    compulsory: _winrt.Boolean
    options: winsdk.windows.foundation.collections.IVector[str]
    selected_index: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomPromptOptionSelector: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomPromptText(IVpnCustomPromptElement, _winrt.Object):
    emphasized: _winrt.Boolean
    display_name: str
    compulsory: _winrt.Boolean
    text: str
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomPromptText: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomPromptTextInput(IVpnCustomPromptElement, _winrt.Object):
    emphasized: _winrt.Boolean
    display_name: str
    compulsory: _winrt.Boolean
    placeholder_text: str
    is_text_hidden: _winrt.Boolean
    text: str
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomPromptTextInput: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnCustomTextBox(IVpnCustomPrompt, _winrt.Object):
    label: str
    compulsory: _winrt.Boolean
    bordered: _winrt.Boolean
    display_text: str
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnCustomTextBox: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnDomainNameAssignment(_winrt.Object):
    proxy_auto_configuration_uri: winsdk.windows.foundation.Uri
    domain_name_list: winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnDomainNameAssignment: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnDomainNameInfo(_winrt.Object):
    domain_name_type: VpnDomainNameType
    domain_name: winsdk.windows.networking.HostName
    dns_servers: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]
    web_proxy_servers: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]
    web_proxy_uris: winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.Uri]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnDomainNameInfo: ...
    @typing.overload
    def __init__(self, name: str, name_type: VpnDomainNameType, dns_server_list: typing.Iterable[winsdk.windows.networking.HostName], proxy_server_list: typing.Iterable[winsdk.windows.networking.HostName]) -> None: ...

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

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

class VpnInterfaceId(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnInterfaceId: ...
    @typing.overload
    def __init__(self, address: typing.Sequence[_winrt.UInt8]) -> None: ...
    @typing.overload
    def get_address_info(self, ) -> typing.List[_winrt.UInt8]: ...

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

class VpnNamespaceAssignment(_winrt.Object):
    proxy_auto_config_uri: winsdk.windows.foundation.Uri
    namespace_list: winsdk.windows.foundation.collections.IVector[VpnNamespaceInfo]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnNamespaceAssignment: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnNamespaceInfo(_winrt.Object):
    web_proxy_servers: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]
    namespace: str
    dns_servers: winsdk.windows.foundation.collections.IVector[winsdk.windows.networking.HostName]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnNamespaceInfo: ...
    @typing.overload
    def __init__(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]) -> None: ...

class VpnNativeProfile(IVpnProfile, _winrt.Object):
    user_authentication_method: VpnAuthenticationMethod
    tunnel_authentication_method: VpnAuthenticationMethod
    routing_policy_type: VpnRoutingPolicyType
    eap_configuration: str
    native_protocol_type: VpnNativeProtocolType
    servers: winsdk.windows.foundation.collections.IVector[str]
    require_vpn_client_app_u_i: _winrt.Boolean
    connection_status: VpnManagementConnectionStatus
    profile_name: str
    remember_credentials: _winrt.Boolean
    always_on: _winrt.Boolean
    routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    app_triggers: winsdk.windows.foundation.collections.IVector[VpnAppId]
    traffic_filters: winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]
    domain_name_info_list: winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnNativeProfile: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnPacketBuffer(_winrt.Object):
    transport_affinity: _winrt.UInt32
    status: VpnPacketBufferStatus
    buffer: winsdk.windows.storage.streams.Buffer
    app_id: VpnAppId
    transport_context: _winrt.Object
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnPacketBuffer: ...
    @typing.overload
    def __init__(self, parent_buffer: VpnPacketBuffer, offset: _winrt.UInt32, length: _winrt.UInt32) -> None: ...

class VpnPacketBufferList(winsdk.windows.foundation.collections.IIterable[VpnPacketBuffer], _winrt.Object):
    status: VpnPacketBufferStatus
    size: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnPacketBufferList: ...
    @typing.overload
    def add_at_begin(self, next_vpn_packet_buffer: VpnPacketBuffer) -> None: ...
    @typing.overload
    def append(self, next_vpn_packet_buffer: VpnPacketBuffer) -> None: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def first(self) -> winsdk.windows.foundation.collections.IIterator[VpnPacketBuffer]: ...
    @typing.overload
    def remove_at_begin(self) -> VpnPacketBuffer: ...
    @typing.overload
    def remove_at_end(self) -> VpnPacketBuffer: ...

class VpnPickedCredential(_winrt.Object):
    additional_pin: str
    old_password_credential: winsdk.windows.security.credentials.PasswordCredential
    passkey_credential: winsdk.windows.security.credentials.PasswordCredential
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnPickedCredential: ...

class VpnPlugInProfile(IVpnProfile, _winrt.Object):
    vpn_plugin_package_family_name: str
    custom_configuration: str
    server_uris: winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.Uri]
    require_vpn_client_app_u_i: _winrt.Boolean
    connection_status: VpnManagementConnectionStatus
    profile_name: str
    remember_credentials: _winrt.Boolean
    always_on: _winrt.Boolean
    app_triggers: winsdk.windows.foundation.collections.IVector[VpnAppId]
    domain_name_info_list: winsdk.windows.foundation.collections.IVector[VpnDomainNameInfo]
    routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    traffic_filters: winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnPlugInProfile: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnRoute(_winrt.Object):
    prefix_size: _winrt.UInt8
    address: winsdk.windows.networking.HostName
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnRoute: ...
    @typing.overload
    def __init__(self, address: winsdk.windows.networking.HostName, prefix_size: _winrt.UInt8) -> None: ...

class VpnRouteAssignment(_winrt.Object):
    ipv6_inclusion_routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    ipv6_exclusion_routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    ipv4_inclusion_routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    ipv4_exclusion_routes: winsdk.windows.foundation.collections.IVector[VpnRoute]
    exclude_local_subnets: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnRouteAssignment: ...
    @typing.overload
    def __init__(self) -> None: ...

class VpnSystemHealth(_winrt.Object):
    statement_of_health: winsdk.windows.storage.streams.Buffer
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnSystemHealth: ...

class VpnTrafficFilter(_winrt.Object):
    routing_policy_type: VpnRoutingPolicyType
    protocol: VpnIPProtocol
    app_id: VpnAppId
    app_claims: winsdk.windows.foundation.collections.IVector[str]
    local_address_ranges: winsdk.windows.foundation.collections.IVector[str]
    local_port_ranges: winsdk.windows.foundation.collections.IVector[str]
    remote_address_ranges: winsdk.windows.foundation.collections.IVector[str]
    remote_port_ranges: winsdk.windows.foundation.collections.IVector[str]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnTrafficFilter: ...
    @typing.overload
    def __init__(self, app_id: VpnAppId) -> None: ...

class VpnTrafficFilterAssignment(_winrt.Object):
    allow_outbound: _winrt.Boolean
    allow_inbound: _winrt.Boolean
    traffic_filter_list: winsdk.windows.foundation.collections.IVector[VpnTrafficFilter]
    @staticmethod
    def _from(obj: _winrt.Object) -> VpnTrafficFilterAssignment: ...
    @typing.overload
    def __init__(self) -> None: ...

class IVpnChannelStatics(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnChannelStatics: ...
    @typing.overload
    def process_event_async(self, third_party_plug_in: _winrt.Object, event: _winrt.Object) -> None: ...

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

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

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

class IVpnDomainNameInfoFactory(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnDomainNameInfoFactory: ...
    @typing.overload
    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]) -> VpnDomainNameInfo: ...

class IVpnInterfaceIdFactory(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnInterfaceIdFactory: ...
    @typing.overload
    def create_vpn_interface_id(self, address: typing.Sequence[_winrt.UInt8]) -> VpnInterfaceId: ...

class IVpnNamespaceInfoFactory(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnNamespaceInfoFactory: ...
    @typing.overload
    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]) -> VpnNamespaceInfo: ...

class IVpnPacketBufferFactory(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnPacketBufferFactory: ...
    @typing.overload
    def create_vpn_packet_buffer(self, parent_buffer: VpnPacketBuffer, offset: _winrt.UInt32, length: _winrt.UInt32) -> VpnPacketBuffer: ...

class IVpnPlugIn(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IVpnPlugIn: ...
    @typing.overload
    def connect(self, channel: VpnChannel) -> None: ...
    @typing.overload
    def decapsulate(self, channel: VpnChannel, encap_buffer: VpnPacketBuffer, decapsulated_packets: VpnPacketBufferList, control_packets_to_send: VpnPacketBufferList) -> None: ...
    @typing.overload
    def disconnect(self, channel: VpnChannel) -> None: ...
    @typing.overload
    def encapsulate(self, channel: VpnChannel, packets: VpnPacketBufferList, encapulated_packets: VpnPacketBufferList) -> None: ...
    @typing.overload
    def get_keep_alive_payload(self, channel: VpnChannel) -> VpnPacketBuffer: ...

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

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

