import typing, clr, abc
from System.Net import IPAddress, IPEndPoint
from System.Collections.Generic import ICollection_1, IEnumerator_1
from System import Array_1, IAsyncResult, AsyncCallback, MulticastDelegate, EventArgs, Exception, ReadOnlySpan_1, InvalidOperationException
from System.Threading.Tasks import Task_1
from System.Reflection import MethodInfo, MethodBase
from System.ComponentModel import Win32Exception, Component, IContainer, ISite, AsyncCompletedEventArgs
from System.Collections import IDictionary

class DuplicateAddressDetectionState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Invalid : DuplicateAddressDetectionState # 0
    Tentative : DuplicateAddressDetectionState # 1
    Duplicate : DuplicateAddressDetectionState # 2
    Deprecated : DuplicateAddressDetectionState # 3
    Preferred : DuplicateAddressDetectionState # 4


class GatewayIPAddressInformation(abc.ABC):
    @property
    def Address(self) -> IPAddress: ...


class GatewayIPAddressInformationCollection(ICollection_1[GatewayIPAddressInformation]):
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> GatewayIPAddressInformation: ...
    def Add(self, address: GatewayIPAddressInformation) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, address: GatewayIPAddressInformation) -> bool: ...
    def CopyTo(self, array: Array_1[GatewayIPAddressInformation], offset: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[GatewayIPAddressInformation]: ...
    def Remove(self, address: GatewayIPAddressInformation) -> bool: ...


class IcmpV4Statistics(abc.ABC):
    @property
    def AddressMaskRepliesReceived(self) -> int: ...
    @property
    def AddressMaskRepliesSent(self) -> int: ...
    @property
    def AddressMaskRequestsReceived(self) -> int: ...
    @property
    def AddressMaskRequestsSent(self) -> int: ...
    @property
    def DestinationUnreachableMessagesReceived(self) -> int: ...
    @property
    def DestinationUnreachableMessagesSent(self) -> int: ...
    @property
    def EchoRepliesReceived(self) -> int: ...
    @property
    def EchoRepliesSent(self) -> int: ...
    @property
    def EchoRequestsReceived(self) -> int: ...
    @property
    def EchoRequestsSent(self) -> int: ...
    @property
    def ErrorsReceived(self) -> int: ...
    @property
    def ErrorsSent(self) -> int: ...
    @property
    def MessagesReceived(self) -> int: ...
    @property
    def MessagesSent(self) -> int: ...
    @property
    def ParameterProblemsReceived(self) -> int: ...
    @property
    def ParameterProblemsSent(self) -> int: ...
    @property
    def RedirectsReceived(self) -> int: ...
    @property
    def RedirectsSent(self) -> int: ...
    @property
    def SourceQuenchesReceived(self) -> int: ...
    @property
    def SourceQuenchesSent(self) -> int: ...
    @property
    def TimeExceededMessagesReceived(self) -> int: ...
    @property
    def TimeExceededMessagesSent(self) -> int: ...
    @property
    def TimestampRepliesReceived(self) -> int: ...
    @property
    def TimestampRepliesSent(self) -> int: ...
    @property
    def TimestampRequestsReceived(self) -> int: ...
    @property
    def TimestampRequestsSent(self) -> int: ...


class IcmpV6Statistics(abc.ABC):
    @property
    def DestinationUnreachableMessagesReceived(self) -> int: ...
    @property
    def DestinationUnreachableMessagesSent(self) -> int: ...
    @property
    def EchoRepliesReceived(self) -> int: ...
    @property
    def EchoRepliesSent(self) -> int: ...
    @property
    def EchoRequestsReceived(self) -> int: ...
    @property
    def EchoRequestsSent(self) -> int: ...
    @property
    def ErrorsReceived(self) -> int: ...
    @property
    def ErrorsSent(self) -> int: ...
    @property
    def MembershipQueriesReceived(self) -> int: ...
    @property
    def MembershipQueriesSent(self) -> int: ...
    @property
    def MembershipReductionsReceived(self) -> int: ...
    @property
    def MembershipReductionsSent(self) -> int: ...
    @property
    def MembershipReportsReceived(self) -> int: ...
    @property
    def MembershipReportsSent(self) -> int: ...
    @property
    def MessagesReceived(self) -> int: ...
    @property
    def MessagesSent(self) -> int: ...
    @property
    def NeighborAdvertisementsReceived(self) -> int: ...
    @property
    def NeighborAdvertisementsSent(self) -> int: ...
    @property
    def NeighborSolicitsReceived(self) -> int: ...
    @property
    def NeighborSolicitsSent(self) -> int: ...
    @property
    def PacketTooBigMessagesReceived(self) -> int: ...
    @property
    def PacketTooBigMessagesSent(self) -> int: ...
    @property
    def ParameterProblemsReceived(self) -> int: ...
    @property
    def ParameterProblemsSent(self) -> int: ...
    @property
    def RedirectsReceived(self) -> int: ...
    @property
    def RedirectsSent(self) -> int: ...
    @property
    def RouterAdvertisementsReceived(self) -> int: ...
    @property
    def RouterAdvertisementsSent(self) -> int: ...
    @property
    def RouterSolicitsReceived(self) -> int: ...
    @property
    def RouterSolicitsSent(self) -> int: ...
    @property
    def TimeExceededMessagesReceived(self) -> int: ...
    @property
    def TimeExceededMessagesSent(self) -> int: ...


class IPAddressCollection(ICollection_1[IPAddress]):
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> IPAddress: ...
    def Add(self, address: IPAddress) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, address: IPAddress) -> bool: ...
    def CopyTo(self, array: Array_1[IPAddress], offset: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[IPAddress]: ...
    def Remove(self, address: IPAddress) -> bool: ...


class IPAddressInformation(abc.ABC):
    @property
    def Address(self) -> IPAddress: ...
    @property
    def IsDnsEligible(self) -> bool: ...
    @property
    def IsTransient(self) -> bool: ...


class IPAddressInformationCollection(ICollection_1[IPAddressInformation]):
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> IPAddressInformation: ...
    def Add(self, address: IPAddressInformation) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, address: IPAddressInformation) -> bool: ...
    def CopyTo(self, array: Array_1[IPAddressInformation], offset: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[IPAddressInformation]: ...
    def Remove(self, address: IPAddressInformation) -> bool: ...


class IPGlobalProperties(abc.ABC):
    @property
    def DhcpScopeName(self) -> str: ...
    @property
    def DomainName(self) -> str: ...
    @property
    def HostName(self) -> str: ...
    @property
    def IsWinsProxy(self) -> bool: ...
    @property
    def NodeType(self) -> NetBiosNodeType: ...
    def BeginGetUnicastAddresses(self, callback: AsyncCallback, state: typing.Any) -> IAsyncResult: ...
    def EndGetUnicastAddresses(self, asyncResult: IAsyncResult) -> UnicastIPAddressInformationCollection: ...
    @abc.abstractmethod
    def GetActiveTcpConnections(self) -> Array_1[TcpConnectionInformation]: ...
    @abc.abstractmethod
    def GetActiveTcpListeners(self) -> Array_1[IPEndPoint]: ...
    @abc.abstractmethod
    def GetActiveUdpListeners(self) -> Array_1[IPEndPoint]: ...
    @abc.abstractmethod
    def GetIcmpV4Statistics(self) -> IcmpV4Statistics: ...
    @abc.abstractmethod
    def GetIcmpV6Statistics(self) -> IcmpV6Statistics: ...
    @staticmethod
    def GetIPGlobalProperties() -> IPGlobalProperties: ...
    @abc.abstractmethod
    def GetIPv4GlobalStatistics(self) -> IPGlobalStatistics: ...
    @abc.abstractmethod
    def GetIPv6GlobalStatistics(self) -> IPGlobalStatistics: ...
    @abc.abstractmethod
    def GetTcpIPv4Statistics(self) -> TcpStatistics: ...
    @abc.abstractmethod
    def GetTcpIPv6Statistics(self) -> TcpStatistics: ...
    @abc.abstractmethod
    def GetUdpIPv4Statistics(self) -> UdpStatistics: ...
    @abc.abstractmethod
    def GetUdpIPv6Statistics(self) -> UdpStatistics: ...
    def GetUnicastAddresses(self) -> UnicastIPAddressInformationCollection: ...
    def GetUnicastAddressesAsync(self) -> Task_1[UnicastIPAddressInformationCollection]: ...


class IPGlobalStatistics(abc.ABC):
    @property
    def DefaultTtl(self) -> int: ...
    @property
    def ForwardingEnabled(self) -> bool: ...
    @property
    def NumberOfInterfaces(self) -> int: ...
    @property
    def NumberOfIPAddresses(self) -> int: ...
    @property
    def NumberOfRoutes(self) -> int: ...
    @property
    def OutputPacketRequests(self) -> int: ...
    @property
    def OutputPacketRoutingDiscards(self) -> int: ...
    @property
    def OutputPacketsDiscarded(self) -> int: ...
    @property
    def OutputPacketsWithNoRoute(self) -> int: ...
    @property
    def PacketFragmentFailures(self) -> int: ...
    @property
    def PacketReassembliesRequired(self) -> int: ...
    @property
    def PacketReassemblyFailures(self) -> int: ...
    @property
    def PacketReassemblyTimeout(self) -> int: ...
    @property
    def PacketsFragmented(self) -> int: ...
    @property
    def PacketsReassembled(self) -> int: ...
    @property
    def ReceivedPackets(self) -> int: ...
    @property
    def ReceivedPacketsDelivered(self) -> int: ...
    @property
    def ReceivedPacketsDiscarded(self) -> int: ...
    @property
    def ReceivedPacketsForwarded(self) -> int: ...
    @property
    def ReceivedPacketsWithAddressErrors(self) -> int: ...
    @property
    def ReceivedPacketsWithHeadersErrors(self) -> int: ...
    @property
    def ReceivedPacketsWithUnknownProtocol(self) -> int: ...


class IPInterfaceProperties(abc.ABC):
    @property
    def AnycastAddresses(self) -> IPAddressInformationCollection: ...
    @property
    def DhcpServerAddresses(self) -> IPAddressCollection: ...
    @property
    def DnsAddresses(self) -> IPAddressCollection: ...
    @property
    def DnsSuffix(self) -> str: ...
    @property
    def GatewayAddresses(self) -> GatewayIPAddressInformationCollection: ...
    @property
    def IsDnsEnabled(self) -> bool: ...
    @property
    def IsDynamicDnsEnabled(self) -> bool: ...
    @property
    def MulticastAddresses(self) -> MulticastIPAddressInformationCollection: ...
    @property
    def UnicastAddresses(self) -> UnicastIPAddressInformationCollection: ...
    @property
    def WinsServersAddresses(self) -> IPAddressCollection: ...
    @abc.abstractmethod
    def GetIPv4Properties(self) -> IPv4InterfaceProperties: ...
    @abc.abstractmethod
    def GetIPv6Properties(self) -> IPv6InterfaceProperties: ...


class IPInterfaceStatistics(abc.ABC):
    @property
    def BytesReceived(self) -> int: ...
    @property
    def BytesSent(self) -> int: ...
    @property
    def IncomingPacketsDiscarded(self) -> int: ...
    @property
    def IncomingPacketsWithErrors(self) -> int: ...
    @property
    def IncomingUnknownProtocolPackets(self) -> int: ...
    @property
    def NonUnicastPacketsReceived(self) -> int: ...
    @property
    def NonUnicastPacketsSent(self) -> int: ...
    @property
    def OutgoingPacketsDiscarded(self) -> int: ...
    @property
    def OutgoingPacketsWithErrors(self) -> int: ...
    @property
    def OutputQueueLength(self) -> int: ...
    @property
    def UnicastPacketsReceived(self) -> int: ...
    @property
    def UnicastPacketsSent(self) -> int: ...


class IPStatus(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Success : IPStatus # 0
    DestinationNetworkUnreachable : IPStatus # 11002
    DestinationHostUnreachable : IPStatus # 11003
    DestinationProhibited : IPStatus # 11004
    DestinationProtocolUnreachable : IPStatus # 11004
    DestinationPortUnreachable : IPStatus # 11005
    NoResources : IPStatus # 11006
    BadOption : IPStatus # 11007
    HardwareError : IPStatus # 11008
    PacketTooBig : IPStatus # 11009
    TimedOut : IPStatus # 11010
    BadRoute : IPStatus # 11012
    TtlExpired : IPStatus # 11013
    TtlReassemblyTimeExceeded : IPStatus # 11014
    ParameterProblem : IPStatus # 11015
    SourceQuench : IPStatus # 11016
    BadDestination : IPStatus # 11018
    DestinationUnreachable : IPStatus # 11040
    TimeExceeded : IPStatus # 11041
    BadHeader : IPStatus # 11042
    UnrecognizedNextHeader : IPStatus # 11043
    IcmpError : IPStatus # 11044
    DestinationScopeMismatch : IPStatus # 11045
    Unknown : IPStatus # -1


class IPv4InterfaceProperties(abc.ABC):
    @property
    def Index(self) -> int: ...
    @property
    def IsAutomaticPrivateAddressingActive(self) -> bool: ...
    @property
    def IsAutomaticPrivateAddressingEnabled(self) -> bool: ...
    @property
    def IsDhcpEnabled(self) -> bool: ...
    @property
    def IsForwardingEnabled(self) -> bool: ...
    @property
    def Mtu(self) -> int: ...
    @property
    def UsesWins(self) -> bool: ...


class IPv4InterfaceStatistics(abc.ABC):
    @property
    def BytesReceived(self) -> int: ...
    @property
    def BytesSent(self) -> int: ...
    @property
    def IncomingPacketsDiscarded(self) -> int: ...
    @property
    def IncomingPacketsWithErrors(self) -> int: ...
    @property
    def IncomingUnknownProtocolPackets(self) -> int: ...
    @property
    def NonUnicastPacketsReceived(self) -> int: ...
    @property
    def NonUnicastPacketsSent(self) -> int: ...
    @property
    def OutgoingPacketsDiscarded(self) -> int: ...
    @property
    def OutgoingPacketsWithErrors(self) -> int: ...
    @property
    def OutputQueueLength(self) -> int: ...
    @property
    def UnicastPacketsReceived(self) -> int: ...
    @property
    def UnicastPacketsSent(self) -> int: ...


class IPv6InterfaceProperties(abc.ABC):
    @property
    def Index(self) -> int: ...
    @property
    def Mtu(self) -> int: ...
    def GetScopeId(self, scopeLevel: ScopeLevel) -> int: ...


class MulticastIPAddressInformation(IPAddressInformation):
    @property
    def Address(self) -> IPAddress: ...
    @property
    def AddressPreferredLifetime(self) -> int: ...
    @property
    def AddressValidLifetime(self) -> int: ...
    @property
    def DhcpLeaseLifetime(self) -> int: ...
    @property
    def DuplicateAddressDetectionState(self) -> DuplicateAddressDetectionState: ...
    @property
    def IsDnsEligible(self) -> bool: ...
    @property
    def IsTransient(self) -> bool: ...
    @property
    def PrefixOrigin(self) -> PrefixOrigin: ...
    @property
    def SuffixOrigin(self) -> SuffixOrigin: ...


class MulticastIPAddressInformationCollection(ICollection_1[MulticastIPAddressInformation]):
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> MulticastIPAddressInformation: ...
    def Add(self, address: MulticastIPAddressInformation) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, address: MulticastIPAddressInformation) -> bool: ...
    def CopyTo(self, array: Array_1[MulticastIPAddressInformation], offset: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[MulticastIPAddressInformation]: ...
    def Remove(self, address: MulticastIPAddressInformation) -> bool: ...


class NetBiosNodeType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Unknown : NetBiosNodeType # 0
    Broadcast : NetBiosNodeType # 1
    Peer2Peer : NetBiosNodeType # 2
    Mixed : NetBiosNodeType # 4
    Hybrid : NetBiosNodeType # 8


class NetworkAddressChangedEventHandler(MulticastDelegate):
    def __init__(self, object: typing.Any, method: int) -> None: ...
    @property
    def Method(self) -> MethodInfo: ...
    @property
    def Target(self) -> typing.Any: ...
    def BeginInvoke(self, sender: typing.Any, e: EventArgs, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
    def EndInvoke(self, result: IAsyncResult) -> None: ...
    def Invoke(self, sender: typing.Any, e: EventArgs) -> None: ...


class NetworkAvailabilityChangedEventHandler(MulticastDelegate):
    def __init__(self, object: typing.Any, method: int) -> None: ...
    @property
    def Method(self) -> MethodInfo: ...
    @property
    def Target(self) -> typing.Any: ...
    def BeginInvoke(self, sender: typing.Any, e: NetworkAvailabilityEventArgs, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
    def EndInvoke(self, result: IAsyncResult) -> None: ...
    def Invoke(self, sender: typing.Any, e: NetworkAvailabilityEventArgs) -> None: ...


class NetworkAvailabilityEventArgs(EventArgs):
    @property
    def IsAvailable(self) -> bool: ...


class NetworkChange:
    def __init__(self) -> None: ...
    @staticmethod
    def RegisterNetworkChange(nc: NetworkChange) -> None: ...


class NetworkInformationException(Win32Exception):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, errorCode: int) -> None: ...
    @property
    def Data(self) -> IDictionary: ...
    @property
    def ErrorCode(self) -> int: ...
    @property
    def HelpLink(self) -> str: ...
    @HelpLink.setter
    def HelpLink(self, value: str) -> str: ...
    @property
    def HResult(self) -> int: ...
    @HResult.setter
    def HResult(self, value: int) -> int: ...
    @property
    def InnerException(self) -> Exception: ...
    @property
    def Message(self) -> str: ...
    @property
    def NativeErrorCode(self) -> int: ...
    @property
    def Source(self) -> str: ...
    @Source.setter
    def Source(self, value: str) -> str: ...
    @property
    def StackTrace(self) -> str: ...
    @property
    def TargetSite(self) -> MethodBase: ...


class NetworkInterface(abc.ABC):
    @property
    def Description(self) -> str: ...
    @property
    def Id(self) -> str: ...
    @classmethod
    @property
    def IPv6LoopbackInterfaceIndex(cls) -> int: ...
    @property
    def IsReceiveOnly(self) -> bool: ...
    @classmethod
    @property
    def LoopbackInterfaceIndex(cls) -> int: ...
    @property
    def Name(self) -> str: ...
    @property
    def NetworkInterfaceType(self) -> NetworkInterfaceType: ...
    @property
    def OperationalStatus(self) -> OperationalStatus: ...
    @property
    def Speed(self) -> int: ...
    @property
    def SupportsMulticast(self) -> bool: ...
    @staticmethod
    def GetAllNetworkInterfaces() -> Array_1[NetworkInterface]: ...
    def GetIPProperties(self) -> IPInterfaceProperties: ...
    def GetIPStatistics(self) -> IPInterfaceStatistics: ...
    def GetIPv4Statistics(self) -> IPv4InterfaceStatistics: ...
    @staticmethod
    def GetIsNetworkAvailable() -> bool: ...
    def GetPhysicalAddress(self) -> PhysicalAddress: ...
    def Supports(self, networkInterfaceComponent: NetworkInterfaceComponent) -> bool: ...


class NetworkInterfaceComponent(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    IPv4 : NetworkInterfaceComponent # 0
    IPv6 : NetworkInterfaceComponent # 1


class NetworkInterfaceType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Unknown : NetworkInterfaceType # 1
    Ethernet : NetworkInterfaceType # 6
    TokenRing : NetworkInterfaceType # 9
    Fddi : NetworkInterfaceType # 15
    BasicIsdn : NetworkInterfaceType # 20
    PrimaryIsdn : NetworkInterfaceType # 21
    Ppp : NetworkInterfaceType # 23
    Loopback : NetworkInterfaceType # 24
    Ethernet3Megabit : NetworkInterfaceType # 26
    Slip : NetworkInterfaceType # 28
    Atm : NetworkInterfaceType # 37
    GenericModem : NetworkInterfaceType # 48
    FastEthernetT : NetworkInterfaceType # 62
    Isdn : NetworkInterfaceType # 63
    FastEthernetFx : NetworkInterfaceType # 69
    Wireless80211 : NetworkInterfaceType # 71
    AsymmetricDsl : NetworkInterfaceType # 94
    RateAdaptDsl : NetworkInterfaceType # 95
    SymmetricDsl : NetworkInterfaceType # 96
    VeryHighSpeedDsl : NetworkInterfaceType # 97
    IPOverAtm : NetworkInterfaceType # 114
    GigabitEthernet : NetworkInterfaceType # 117
    Tunnel : NetworkInterfaceType # 131
    MultiRateSymmetricDsl : NetworkInterfaceType # 143
    HighPerformanceSerialBus : NetworkInterfaceType # 144
    Wman : NetworkInterfaceType # 237
    Wwanpp : NetworkInterfaceType # 243
    Wwanpp2 : NetworkInterfaceType # 244


class OperationalStatus(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Up : OperationalStatus # 1
    Down : OperationalStatus # 2
    Testing : OperationalStatus # 3
    Unknown : OperationalStatus # 4
    Dormant : OperationalStatus # 5
    NotPresent : OperationalStatus # 6
    LowerLayerDown : OperationalStatus # 7


class PhysicalAddress:
    def __init__(self, address: Array_1[int]) -> None: ...
    # FIXME: "None" is a reserved keyword
    # None : PhysicalAddress
    def Equals(self, comparand: typing.Any) -> bool: ...
    def GetAddressBytes(self) -> Array_1[int]: ...
    def GetHashCode(self) -> int: ...
    def ToString(self) -> str: ...
    # Skipped Parse due to it being static, abstract and generic.

    Parse : Parse_MethodGroup
    class Parse_MethodGroup:
        @typing.overload
        def __call__(self, address: ReadOnlySpan_1[str]) -> PhysicalAddress:...
        @typing.overload
        def __call__(self, address: str) -> PhysicalAddress:...

    # Skipped TryParse due to it being static, abstract and generic.

    TryParse : TryParse_MethodGroup
    class TryParse_MethodGroup:
        @typing.overload
        def __call__(self, address: ReadOnlySpan_1[str], value: clr.Reference[PhysicalAddress]) -> bool:...
        @typing.overload
        def __call__(self, address: str, value: clr.Reference[PhysicalAddress]) -> bool:...



class Ping(Component):
    def __init__(self) -> None: ...
    @property
    def Container(self) -> IContainer: ...
    @property
    def Site(self) -> ISite: ...
    @Site.setter
    def Site(self, value: ISite) -> ISite: ...
    def SendAsyncCancel(self) -> None: ...
    # Skipped Send due to it being static, abstract and generic.

    Send : Send_MethodGroup
    class Send_MethodGroup:
        @typing.overload
        def __call__(self, hostNameOrAddress: str) -> PingReply:...
        @typing.overload
        def __call__(self, address: IPAddress) -> PingReply:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int) -> PingReply:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int) -> PingReply:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int]) -> PingReply:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int]) -> PingReply:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int], options: PingOptions) -> PingReply:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int], options: PingOptions) -> PingReply:...

    # Skipped SendAsync due to it being static, abstract and generic.

    SendAsync : SendAsync_MethodGroup
    class SendAsync_MethodGroup:
        @typing.overload
        def __call__(self, hostNameOrAddress: str, userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, address: IPAddress, userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int], userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int], userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int], options: PingOptions, userToken: typing.Any) -> None:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int], options: PingOptions, userToken: typing.Any) -> None:...

    # Skipped SendPingAsync due to it being static, abstract and generic.

    SendPingAsync : SendPingAsync_MethodGroup
    class SendPingAsync_MethodGroup:
        @typing.overload
        def __call__(self, hostNameOrAddress: str) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, address: IPAddress) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int]) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int]) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, hostNameOrAddress: str, timeout: int, buffer: Array_1[int], options: PingOptions) -> Task_1[PingReply]:...
        @typing.overload
        def __call__(self, address: IPAddress, timeout: int, buffer: Array_1[int], options: PingOptions) -> Task_1[PingReply]:...



class PingCompletedEventArgs(AsyncCompletedEventArgs):
    @property
    def Cancelled(self) -> bool: ...
    @property
    def Error(self) -> Exception: ...
    @property
    def Reply(self) -> PingReply: ...
    @property
    def UserState(self) -> typing.Any: ...


class PingCompletedEventHandler(MulticastDelegate):
    def __init__(self, object: typing.Any, method: int) -> None: ...
    @property
    def Method(self) -> MethodInfo: ...
    @property
    def Target(self) -> typing.Any: ...
    def BeginInvoke(self, sender: typing.Any, e: PingCompletedEventArgs, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
    def EndInvoke(self, result: IAsyncResult) -> None: ...
    def Invoke(self, sender: typing.Any, e: PingCompletedEventArgs) -> None: ...


class PingException(InvalidOperationException):
    @typing.overload
    def __init__(self, message: str) -> None: ...
    @typing.overload
    def __init__(self, message: str, innerException: Exception) -> None: ...
    @property
    def Data(self) -> IDictionary: ...
    @property
    def HelpLink(self) -> str: ...
    @HelpLink.setter
    def HelpLink(self, value: str) -> str: ...
    @property
    def HResult(self) -> int: ...
    @HResult.setter
    def HResult(self, value: int) -> int: ...
    @property
    def InnerException(self) -> Exception: ...
    @property
    def Message(self) -> str: ...
    @property
    def Source(self) -> str: ...
    @Source.setter
    def Source(self, value: str) -> str: ...
    @property
    def StackTrace(self) -> str: ...
    @property
    def TargetSite(self) -> MethodBase: ...


class PingOptions:
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, ttl: int, dontFragment: bool) -> None: ...
    @property
    def DontFragment(self) -> bool: ...
    @DontFragment.setter
    def DontFragment(self, value: bool) -> bool: ...
    @property
    def Ttl(self) -> int: ...
    @Ttl.setter
    def Ttl(self, value: int) -> int: ...


class PingReply:
    @property
    def Address(self) -> IPAddress: ...
    @property
    def Buffer(self) -> Array_1[int]: ...
    @property
    def Options(self) -> PingOptions: ...
    @property
    def RoundtripTime(self) -> int: ...
    @property
    def Status(self) -> IPStatus: ...


class PrefixOrigin(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Other : PrefixOrigin # 0
    Manual : PrefixOrigin # 1
    WellKnown : PrefixOrigin # 2
    Dhcp : PrefixOrigin # 3
    RouterAdvertisement : PrefixOrigin # 4


class ScopeLevel(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : ScopeLevel # 0
    Interface : ScopeLevel # 1
    Link : ScopeLevel # 2
    Subnet : ScopeLevel # 3
    Admin : ScopeLevel # 4
    Site : ScopeLevel # 5
    Organization : ScopeLevel # 8
    Global : ScopeLevel # 14


class SuffixOrigin(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Other : SuffixOrigin # 0
    Manual : SuffixOrigin # 1
    WellKnown : SuffixOrigin # 2
    OriginDhcp : SuffixOrigin # 3
    LinkLayerAddress : SuffixOrigin # 4
    Random : SuffixOrigin # 5


class TcpConnectionInformation(abc.ABC):
    @property
    def LocalEndPoint(self) -> IPEndPoint: ...
    @property
    def RemoteEndPoint(self) -> IPEndPoint: ...
    @property
    def State(self) -> TcpState: ...


class TcpState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Unknown : TcpState # 0
    Closed : TcpState # 1
    Listen : TcpState # 2
    SynSent : TcpState # 3
    SynReceived : TcpState # 4
    Established : TcpState # 5
    FinWait1 : TcpState # 6
    FinWait2 : TcpState # 7
    CloseWait : TcpState # 8
    Closing : TcpState # 9
    LastAck : TcpState # 10
    TimeWait : TcpState # 11
    DeleteTcb : TcpState # 12


class TcpStatistics(abc.ABC):
    @property
    def ConnectionsAccepted(self) -> int: ...
    @property
    def ConnectionsInitiated(self) -> int: ...
    @property
    def CumulativeConnections(self) -> int: ...
    @property
    def CurrentConnections(self) -> int: ...
    @property
    def ErrorsReceived(self) -> int: ...
    @property
    def FailedConnectionAttempts(self) -> int: ...
    @property
    def MaximumConnections(self) -> int: ...
    @property
    def MaximumTransmissionTimeout(self) -> int: ...
    @property
    def MinimumTransmissionTimeout(self) -> int: ...
    @property
    def ResetConnections(self) -> int: ...
    @property
    def ResetsSent(self) -> int: ...
    @property
    def SegmentsReceived(self) -> int: ...
    @property
    def SegmentsResent(self) -> int: ...
    @property
    def SegmentsSent(self) -> int: ...


class UdpStatistics(abc.ABC):
    @property
    def DatagramsReceived(self) -> int: ...
    @property
    def DatagramsSent(self) -> int: ...
    @property
    def IncomingDatagramsDiscarded(self) -> int: ...
    @property
    def IncomingDatagramsWithErrors(self) -> int: ...
    @property
    def UdpListeners(self) -> int: ...


class UnicastIPAddressInformation(IPAddressInformation):
    @property
    def Address(self) -> IPAddress: ...
    @property
    def AddressPreferredLifetime(self) -> int: ...
    @property
    def AddressValidLifetime(self) -> int: ...
    @property
    def DhcpLeaseLifetime(self) -> int: ...
    @property
    def DuplicateAddressDetectionState(self) -> DuplicateAddressDetectionState: ...
    @property
    def IPv4Mask(self) -> IPAddress: ...
    @property
    def IsDnsEligible(self) -> bool: ...
    @property
    def IsTransient(self) -> bool: ...
    @property
    def PrefixLength(self) -> int: ...
    @property
    def PrefixOrigin(self) -> PrefixOrigin: ...
    @property
    def SuffixOrigin(self) -> SuffixOrigin: ...


class UnicastIPAddressInformationCollection(ICollection_1[UnicastIPAddressInformation]):
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> UnicastIPAddressInformation: ...
    def Add(self, address: UnicastIPAddressInformation) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, address: UnicastIPAddressInformation) -> bool: ...
    def CopyTo(self, array: Array_1[UnicastIPAddressInformation], offset: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[UnicastIPAddressInformation]: ...
    def Remove(self, address: UnicastIPAddressInformation) -> bool: ...

