# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.networking
import winrt.windows.storage.streams

from winrt.windows.networking.xboxlive import XboxLiveEndpointPairCreationBehaviors, XboxLiveEndpointPairCreationStatus, XboxLiveEndpointPairState, XboxLiveNetworkAccessKind, XboxLiveQualityOfServiceMeasurementStatus, XboxLiveQualityOfServiceMetric, XboxLiveSocketKind

Self = typing.TypeVar('Self')

@typing.final
class XboxLiveDeviceAddress_Static(type):
    def create_from_snapshot_base64(cls, base64: str, /) -> typing.Optional[XboxLiveDeviceAddress]: ...
    def create_from_snapshot_buffer(cls, buffer: typing.Optional[winrt.windows.storage.streams.IBuffer], /) -> typing.Optional[XboxLiveDeviceAddress]: ...
    def create_from_snapshot_bytes(cls, buffer: winrt.system.Array[winrt.system.UInt8], /) -> typing.Optional[XboxLiveDeviceAddress]: ...
    def get_local(cls) -> typing.Optional[XboxLiveDeviceAddress]: ...
    @_property
    def max_snapshot_bytes_size(cls) -> winrt.system.UInt32: ...

@typing.final
class XboxLiveDeviceAddress(winrt.system.Object, metaclass=XboxLiveDeviceAddress_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveDeviceAddress: ...
    def compare(self, other_device_address: typing.Optional[XboxLiveDeviceAddress], /) -> winrt.system.Int32: ...
    def get_snapshot_as_base64(self) -> str: ...
    def get_snapshot_as_buffer(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    def get_snapshot_as_bytes(self, buffer: winrt.system.Array[winrt.system.UInt8], /) -> winrt.system.UInt32: ...
    def add_snapshot_changed(self, handler: winrt.windows.foundation.TypedEventHandler[XboxLiveDeviceAddress, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_snapshot_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def is_local(self) -> bool: ...
    @_property
    def is_valid(self) -> bool: ...
    @_property
    def network_access_kind(self) -> XboxLiveNetworkAccessKind: ...

@typing.final
class XboxLiveEndpointPair_Static(type):
    def find_endpoint_pair_by_host_names_and_ports(cls, local_host_name: typing.Optional[winrt.windows.networking.HostName], local_port: str, remote_host_name: typing.Optional[winrt.windows.networking.HostName], remote_port: str, /) -> typing.Optional[XboxLiveEndpointPair]: ...
    def find_endpoint_pair_by_socket_address_bytes(cls, local_socket_address: winrt.system.Array[winrt.system.UInt8], remote_socket_address: winrt.system.Array[winrt.system.UInt8], /) -> typing.Optional[XboxLiveEndpointPair]: ...

@typing.final
class XboxLiveEndpointPair(winrt.system.Object, metaclass=XboxLiveEndpointPair_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveEndpointPair: ...
    def delete_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def get_local_socket_address_bytes(self, socket_address: winrt.system.Array[winrt.system.UInt8], /) -> None: ...
    def get_remote_socket_address_bytes(self, socket_address: winrt.system.Array[winrt.system.UInt8], /) -> None: ...
    def add_state_changed(self, handler: winrt.windows.foundation.TypedEventHandler[XboxLiveEndpointPair, XboxLiveEndpointPairStateChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_state_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def local_host_name(self) -> typing.Optional[winrt.windows.networking.HostName]: ...
    @_property
    def local_port(self) -> str: ...
    @_property
    def remote_device_address(self) -> typing.Optional[XboxLiveDeviceAddress]: ...
    @_property
    def remote_host_name(self) -> typing.Optional[winrt.windows.networking.HostName]: ...
    @_property
    def remote_port(self) -> str: ...
    @_property
    def state(self) -> XboxLiveEndpointPairState: ...
    @_property
    def template(self) -> typing.Optional[XboxLiveEndpointPairTemplate]: ...

@typing.final
class XboxLiveEndpointPairCreationResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveEndpointPairCreationResult: ...
    @_property
    def device_address(self) -> typing.Optional[XboxLiveDeviceAddress]: ...
    @_property
    def endpoint_pair(self) -> typing.Optional[XboxLiveEndpointPair]: ...
    @_property
    def is_existing_path_evaluation(self) -> bool: ...
    @_property
    def status(self) -> XboxLiveEndpointPairCreationStatus: ...

@typing.final
class XboxLiveEndpointPairStateChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveEndpointPairStateChangedEventArgs: ...
    @_property
    def new_state(self) -> XboxLiveEndpointPairState: ...
    @_property
    def old_state(self) -> XboxLiveEndpointPairState: ...

@typing.final
class XboxLiveEndpointPairTemplate_Static(type):
    def get_template_by_name(cls, name: str, /) -> typing.Optional[XboxLiveEndpointPairTemplate]: ...
    @_property
    def templates(cls) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveEndpointPairTemplate]]: ...

@typing.final
class XboxLiveEndpointPairTemplate(winrt.system.Object, metaclass=XboxLiveEndpointPairTemplate_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveEndpointPairTemplate: ...
    @typing.overload
    def create_endpoint_pair_async(self, device_address: typing.Optional[XboxLiveDeviceAddress], /) -> winrt.windows.foundation.IAsyncOperation[XboxLiveEndpointPairCreationResult]: ...
    @typing.overload
    def create_endpoint_pair_async(self, device_address: typing.Optional[XboxLiveDeviceAddress], behaviors: XboxLiveEndpointPairCreationBehaviors, /) -> winrt.windows.foundation.IAsyncOperation[XboxLiveEndpointPairCreationResult]: ...
    @typing.overload
    def create_endpoint_pair_for_ports_async(self, device_address: typing.Optional[XboxLiveDeviceAddress], initiator_port: str, acceptor_port: str, /) -> winrt.windows.foundation.IAsyncOperation[XboxLiveEndpointPairCreationResult]: ...
    @typing.overload
    def create_endpoint_pair_for_ports_async(self, device_address: typing.Optional[XboxLiveDeviceAddress], initiator_port: str, acceptor_port: str, behaviors: XboxLiveEndpointPairCreationBehaviors, /) -> winrt.windows.foundation.IAsyncOperation[XboxLiveEndpointPairCreationResult]: ...
    def add_inbound_endpoint_pair_created(self, handler: winrt.windows.foundation.TypedEventHandler[XboxLiveEndpointPairTemplate, XboxLiveInboundEndpointPairCreatedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_inbound_endpoint_pair_created(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def acceptor_bound_port_range_lower(self) -> winrt.system.UInt16: ...
    @_property
    def acceptor_bound_port_range_upper(self) -> winrt.system.UInt16: ...
    @_property
    def endpoint_pairs(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveEndpointPair]]: ...
    @_property
    def initiator_bound_port_range_lower(self) -> winrt.system.UInt16: ...
    @_property
    def initiator_bound_port_range_upper(self) -> winrt.system.UInt16: ...
    @_property
    def name(self) -> str: ...
    @_property
    def socket_kind(self) -> XboxLiveSocketKind: ...

@typing.final
class XboxLiveInboundEndpointPairCreatedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveInboundEndpointPairCreatedEventArgs: ...
    @_property
    def endpoint_pair(self) -> typing.Optional[XboxLiveEndpointPair]: ...

@typing.final
class XboxLiveQualityOfServiceMeasurement_Static(type):
    def clear_private_payload(cls) -> None: ...
    def publish_private_payload_bytes(cls, payload: winrt.system.Array[winrt.system.UInt8], /) -> None: ...
    @_property
    def published_private_payload(cls) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @published_private_payload.setter
    def published_private_payload(cls, value: typing.Optional[winrt.windows.storage.streams.IBuffer]) -> None: ...
    @_property
    def max_simultaneous_probe_connections(cls) -> winrt.system.UInt32: ...
    @max_simultaneous_probe_connections.setter
    def max_simultaneous_probe_connections(cls, value: winrt.system.UInt32) -> None: ...
    @_property
    def is_system_outbound_bandwidth_constrained(cls) -> bool: ...
    @is_system_outbound_bandwidth_constrained.setter
    def is_system_outbound_bandwidth_constrained(cls, value: bool) -> None: ...
    @_property
    def is_system_inbound_bandwidth_constrained(cls) -> bool: ...
    @is_system_inbound_bandwidth_constrained.setter
    def is_system_inbound_bandwidth_constrained(cls, value: bool) -> None: ...
    @_property
    def max_private_payload_size(cls) -> winrt.system.UInt32: ...

@typing.final
class XboxLiveQualityOfServiceMeasurement(winrt.system.Object, metaclass=XboxLiveQualityOfServiceMeasurement_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveQualityOfServiceMeasurement: ...
    def __new__(cls: typing.Type[XboxLiveQualityOfServiceMeasurement]) -> XboxLiveQualityOfServiceMeasurement:...
    def get_metric_result(self, device_address: typing.Optional[XboxLiveDeviceAddress], metric: XboxLiveQualityOfServiceMetric, /) -> typing.Optional[XboxLiveQualityOfServiceMetricResult]: ...
    def get_metric_results_for_device(self, device_address: typing.Optional[XboxLiveDeviceAddress], /) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveQualityOfServiceMetricResult]]: ...
    def get_metric_results_for_metric(self, metric: XboxLiveQualityOfServiceMetric, /) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveQualityOfServiceMetricResult]]: ...
    def get_private_payload_result(self, device_address: typing.Optional[XboxLiveDeviceAddress], /) -> typing.Optional[XboxLiveQualityOfServicePrivatePayloadResult]: ...
    def measure_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def timeout_in_milliseconds(self) -> winrt.system.UInt32: ...
    @timeout_in_milliseconds.setter
    def timeout_in_milliseconds(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def should_request_private_payloads(self) -> bool: ...
    @should_request_private_payloads.setter
    def should_request_private_payloads(self, value: bool) -> None: ...
    @_property
    def number_of_probes_to_attempt(self) -> winrt.system.UInt32: ...
    @number_of_probes_to_attempt.setter
    def number_of_probes_to_attempt(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def device_addresses(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[XboxLiveDeviceAddress]]: ...
    @_property
    def metric_results(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveQualityOfServiceMetricResult]]: ...
    @_property
    def metrics(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[XboxLiveQualityOfServiceMetric]]: ...
    @_property
    def number_of_results_pending(self) -> winrt.system.UInt32: ...
    @_property
    def private_payload_results(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[XboxLiveQualityOfServicePrivatePayloadResult]]: ...

@typing.final
class XboxLiveQualityOfServiceMetricResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveQualityOfServiceMetricResult: ...
    @_property
    def device_address(self) -> typing.Optional[XboxLiveDeviceAddress]: ...
    @_property
    def metric(self) -> XboxLiveQualityOfServiceMetric: ...
    @_property
    def status(self) -> XboxLiveQualityOfServiceMeasurementStatus: ...
    @_property
    def value(self) -> winrt.system.UInt64: ...

@typing.final
class XboxLiveQualityOfServicePrivatePayloadResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> XboxLiveQualityOfServicePrivatePayloadResult: ...
    @_property
    def device_address(self) -> typing.Optional[XboxLiveDeviceAddress]: ...
    @_property
    def status(self) -> XboxLiveQualityOfServiceMeasurementStatus: ...
    @_property
    def value(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...

