#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, clashing_extern_declarations, clippy::all)]
#[link(name = "windows")]
extern "system" {}
pub type IVpnChannelStatics = *mut ::core::ffi::c_void;
pub type IVpnCredential = *mut ::core::ffi::c_void;
pub type IVpnCustomPrompt = *mut ::core::ffi::c_void;
pub type IVpnCustomPromptElement = *mut ::core::ffi::c_void;
pub type IVpnDomainNameInfoFactory = *mut ::core::ffi::c_void;
pub type IVpnInterfaceIdFactory = *mut ::core::ffi::c_void;
pub type IVpnNamespaceInfoFactory = *mut ::core::ffi::c_void;
pub type IVpnPacketBufferFactory = *mut ::core::ffi::c_void;
pub type IVpnPlugIn = *mut ::core::ffi::c_void;
pub type IVpnProfile = *mut ::core::ffi::c_void;
pub type IVpnRouteFactory = *mut ::core::ffi::c_void;
pub type VpnAppId = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnAppIdType(pub i32);
impl VpnAppIdType {
    pub const PackageFamilyName: Self = Self(0i32);
    pub const FullyQualifiedBinaryName: Self = Self(1i32);
    pub const FilePath: Self = Self(2i32);
}
impl ::core::marker::Copy for VpnAppIdType {}
impl ::core::clone::Clone for VpnAppIdType {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct VpnAuthenticationMethod(pub i32);
impl VpnAuthenticationMethod {
    pub const Mschapv2: Self = Self(0i32);
    pub const Eap: Self = Self(1i32);
    pub const Certificate: Self = Self(2i32);
    pub const PresharedKey: Self = Self(3i32);
}
impl ::core::marker::Copy for VpnAuthenticationMethod {}
impl ::core::clone::Clone for VpnAuthenticationMethod {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnChannel = *mut ::core::ffi::c_void;
pub type VpnChannelActivityEventArgs = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnChannelActivityEventType(pub i32);
impl VpnChannelActivityEventType {
    pub const Idle: Self = Self(0i32);
    pub const Active: Self = Self(1i32);
}
impl ::core::marker::Copy for VpnChannelActivityEventType {}
impl ::core::clone::Clone for VpnChannelActivityEventType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnChannelActivityStateChangedArgs = *mut ::core::ffi::c_void;
pub type VpnChannelConfiguration = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnChannelRequestCredentialsOptions(pub u32);
impl VpnChannelRequestCredentialsOptions {
    pub const None: Self = Self(0u32);
    pub const Retrying: Self = Self(1u32);
    pub const UseForSingleSignIn: Self = Self(2u32);
}
impl ::core::marker::Copy for VpnChannelRequestCredentialsOptions {}
impl ::core::clone::Clone for VpnChannelRequestCredentialsOptions {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnCredential = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnCredentialType(pub i32);
impl VpnCredentialType {
    pub const UsernamePassword: Self = Self(0i32);
    pub const UsernameOtpPin: Self = Self(1i32);
    pub const UsernamePasswordAndPin: Self = Self(2i32);
    pub const UsernamePasswordChange: Self = Self(3i32);
    pub const SmartCard: Self = Self(4i32);
    pub const ProtectedCertificate: Self = Self(5i32);
    pub const UnProtectedCertificate: Self = Self(6i32);
}
impl ::core::marker::Copy for VpnCredentialType {}
impl ::core::clone::Clone for VpnCredentialType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnCustomCheckBox = *mut ::core::ffi::c_void;
pub type VpnCustomComboBox = *mut ::core::ffi::c_void;
pub type VpnCustomEditBox = *mut ::core::ffi::c_void;
pub type VpnCustomErrorBox = *mut ::core::ffi::c_void;
pub type VpnCustomPromptBooleanInput = *mut ::core::ffi::c_void;
pub type VpnCustomPromptOptionSelector = *mut ::core::ffi::c_void;
pub type VpnCustomPromptText = *mut ::core::ffi::c_void;
pub type VpnCustomPromptTextInput = *mut ::core::ffi::c_void;
pub type VpnCustomTextBox = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnDataPathType(pub i32);
impl VpnDataPathType {
    pub const Send: Self = Self(0i32);
    pub const Receive: Self = Self(1i32);
}
impl ::core::marker::Copy for VpnDataPathType {}
impl ::core::clone::Clone for VpnDataPathType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnDomainNameAssignment = *mut ::core::ffi::c_void;
pub type VpnDomainNameInfo = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnDomainNameType(pub i32);
impl VpnDomainNameType {
    pub const Suffix: Self = Self(0i32);
    pub const FullyQualified: Self = Self(1i32);
    pub const Reserved: Self = Self(65535i32);
}
impl ::core::marker::Copy for VpnDomainNameType {}
impl ::core::clone::Clone for VpnDomainNameType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnForegroundActivatedEventArgs = *mut ::core::ffi::c_void;
pub type VpnForegroundActivationOperation = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnIPProtocol(pub i32);
impl VpnIPProtocol {
    pub const None: Self = Self(0i32);
    pub const Tcp: Self = Self(6i32);
    pub const Udp: Self = Self(17i32);
    pub const Icmp: Self = Self(1i32);
    pub const Ipv6Icmp: Self = Self(58i32);
    pub const Igmp: Self = Self(2i32);
    pub const Pgm: Self = Self(113i32);
}
impl ::core::marker::Copy for VpnIPProtocol {}
impl ::core::clone::Clone for VpnIPProtocol {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnInterfaceId = *mut ::core::ffi::c_void;
pub type VpnManagementAgent = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnManagementConnectionStatus(pub i32);
impl VpnManagementConnectionStatus {
    pub const Disconnected: Self = Self(0i32);
    pub const Disconnecting: Self = Self(1i32);
    pub const Connected: Self = Self(2i32);
    pub const Connecting: Self = Self(3i32);
}
impl ::core::marker::Copy for VpnManagementConnectionStatus {}
impl ::core::clone::Clone for VpnManagementConnectionStatus {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(transparent)]
pub struct VpnManagementErrorStatus(pub i32);
impl VpnManagementErrorStatus {
    pub const Ok: Self = Self(0i32);
    pub const Other: Self = Self(1i32);
    pub const InvalidXmlSyntax: Self = Self(2i32);
    pub const ProfileNameTooLong: Self = Self(3i32);
    pub const ProfileInvalidAppId: Self = Self(4i32);
    pub const AccessDenied: Self = Self(5i32);
    pub const CannotFindProfile: Self = Self(6i32);
    pub const AlreadyDisconnecting: Self = Self(7i32);
    pub const AlreadyConnected: Self = Self(8i32);
    pub const GeneralAuthenticationFailure: Self = Self(9i32);
    pub const EapFailure: Self = Self(10i32);
    pub const SmartCardFailure: Self = Self(11i32);
    pub const CertificateFailure: Self = Self(12i32);
    pub const ServerConfiguration: Self = Self(13i32);
    pub const NoConnection: Self = Self(14i32);
    pub const ServerConnection: Self = Self(15i32);
    pub const UserNamePassword: Self = Self(16i32);
    pub const DnsNotResolvable: Self = Self(17i32);
    pub const InvalidIP: Self = Self(18i32);
}
impl ::core::marker::Copy for VpnManagementErrorStatus {}
impl ::core::clone::Clone for VpnManagementErrorStatus {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnNamespaceAssignment = *mut ::core::ffi::c_void;
pub type VpnNamespaceInfo = *mut ::core::ffi::c_void;
pub type VpnNativeProfile = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnNativeProtocolType(pub i32);
impl VpnNativeProtocolType {
    pub const Pptp: Self = Self(0i32);
    pub const L2tp: Self = Self(1i32);
    pub const IpsecIkev2: Self = Self(2i32);
}
impl ::core::marker::Copy for VpnNativeProtocolType {}
impl ::core::clone::Clone for VpnNativeProtocolType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnPacketBuffer = *mut ::core::ffi::c_void;
pub type VpnPacketBufferList = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnPacketBufferStatus(pub i32);
impl VpnPacketBufferStatus {
    pub const Ok: Self = Self(0i32);
    pub const InvalidBufferSize: Self = Self(1i32);
}
impl ::core::marker::Copy for VpnPacketBufferStatus {}
impl ::core::clone::Clone for VpnPacketBufferStatus {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnPickedCredential = *mut ::core::ffi::c_void;
pub type VpnPlugInProfile = *mut ::core::ffi::c_void;
pub type VpnRoute = *mut ::core::ffi::c_void;
pub type VpnRouteAssignment = *mut ::core::ffi::c_void;
#[repr(transparent)]
pub struct VpnRoutingPolicyType(pub i32);
impl VpnRoutingPolicyType {
    pub const SplitRouting: Self = Self(0i32);
    pub const ForceAllTrafficOverVpn: Self = Self(1i32);
}
impl ::core::marker::Copy for VpnRoutingPolicyType {}
impl ::core::clone::Clone for VpnRoutingPolicyType {
    fn clone(&self) -> Self {
        *self
    }
}
pub type VpnSystemHealth = *mut ::core::ffi::c_void;
pub type VpnTrafficFilter = *mut ::core::ffi::c_void;
pub type VpnTrafficFilterAssignment = *mut ::core::ffi::c_void;
