text: // WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.210505.3
  
  #ifndef WINRT_Windows_Networking_Connectivity_2_H
  #define WINRT_Windows_Networking_Connectivity_2_H
  #include "winrt/impl/Windows.Foundation.2.h"
  #include "winrt/impl/Windows.Foundation.Collections.2.h"
  #include "winrt/impl/Windows.Networking.2.h"
  #include "winrt/impl/Windows.Networking.Connectivity.1.h"
  WINRT_EXPORT namespace winrt::Windows::Networking::Connectivity
  {
      struct NetworkStatusChangedEventHandler : Windows::Foundation::IUnknown
      {
          NetworkStatusChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
          NetworkStatusChangedEventHandler(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Foundation::IUnknown(ptr, take_ownership_from_abi) {}
          NetworkStatusChangedEventHandler(NetworkStatusChangedEventHandler const&) noexcept = default;
          NetworkStatusChangedEventHandler(NetworkStatusChangedEventHandler&&) noexcept = default;
          NetworkStatusChangedEventHandler& operator=(NetworkStatusChangedEventHandler const&) & noexcept = default;
          NetworkStatusChangedEventHandler& operator=(NetworkStatusChangedEventHandler&&) & noexcept = default;
          template <typename L> NetworkStatusChangedEventHandler(L lambda);
          template <typename F> NetworkStatusChangedEventHandler(F* function);
          template <typename O, typename M> NetworkStatusChangedEventHandler(O* object, M method);
          template <typename O, typename M> NetworkStatusChangedEventHandler(com_ptr<O>&& object, M method);
          template <typename O, typename M> NetworkStatusChangedEventHandler(weak_ref<O>&& object, M method);
          auto operator()(winrt::Windows::Foundation::IInspectable const& sender) const;
      };
      struct NetworkUsageStates
      {
          winrt::Windows::Networking::Connectivity::TriStates Roaming;
          winrt::Windows::Networking::Connectivity::TriStates Shared;
      };
      inline bool operator==(NetworkUsageStates const& left, NetworkUsageStates const& right) noexcept
      {
          return left.Roaming == right.Roaming && left.Shared == right.Shared;
      }
      inline bool operator!=(NetworkUsageStates const& left, NetworkUsageStates const& right) noexcept
      {
          return !(left == right);
      }
      struct __declspec(empty_bases) AttributedNetworkUsage : winrt::Windows::Networking::Connectivity::IAttributedNetworkUsage
      {
          AttributedNetworkUsage(std::nullptr_t) noexcept {}
          AttributedNetworkUsage(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IAttributedNetworkUsage(ptr, take_ownership_from_abi) {}
          AttributedNetworkUsage(AttributedNetworkUsage const&) noexcept = default;
          AttributedNetworkUsage(AttributedNetworkUsage&&) noexcept = default;
          AttributedNetworkUsage& operator=(AttributedNetworkUsage const&) & noexcept = default;
          AttributedNetworkUsage& operator=(AttributedNetworkUsage&&) & noexcept = default;
      };
      struct __declspec(empty_bases) CellularApnContext : winrt::Windows::Networking::Connectivity::ICellularApnContext,
          impl::require<CellularApnContext, winrt::Windows::Networking::Connectivity::ICellularApnContext2>
      {
          CellularApnContext(std::nullptr_t) noexcept {}
          CellularApnContext(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::ICellularApnContext(ptr, take_ownership_from_abi) {}
          CellularApnContext();
          CellularApnContext(CellularApnContext const&) noexcept = default;
          CellularApnContext(CellularApnContext&&) noexcept = default;
          CellularApnContext& operator=(CellularApnContext const&) & noexcept = default;
          CellularApnContext& operator=(CellularApnContext&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ConnectionCost : winrt::Windows::Networking::Connectivity::IConnectionCost,
          impl::require<ConnectionCost, winrt::Windows::Networking::Connectivity::IConnectionCost2>
      {
          ConnectionCost(std::nullptr_t) noexcept {}
          ConnectionCost(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IConnectionCost(ptr, take_ownership_from_abi) {}
          ConnectionCost(ConnectionCost const&) noexcept = default;
          ConnectionCost(ConnectionCost&&) noexcept = default;
          ConnectionCost& operator=(ConnectionCost const&) & noexcept = default;
          ConnectionCost& operator=(ConnectionCost&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ConnectionProfile : winrt::Windows::Networking::Connectivity::IConnectionProfile,
          impl::require<ConnectionProfile, winrt::Windows::Networking::Connectivity::IConnectionProfile2, winrt::Windows::Networking::Connectivity::IConnectionProfile3, winrt::Windows::Networking::Connectivity::IConnectionProfile4, winrt::Windows::Networking::Connectivity::IConnectionProfile5>
      {
          ConnectionProfile(std::nullptr_t) noexcept {}
          ConnectionProfile(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IConnectionProfile(ptr, take_ownership_from_abi) {}
          ConnectionProfile(ConnectionProfile const&) noexcept = default;
          ConnectionProfile(ConnectionProfile&&) noexcept = default;
          ConnectionProfile& operator=(ConnectionProfile const&) & noexcept = default;
          ConnectionProfile& operator=(ConnectionProfile&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ConnectionProfileFilter : winrt::Windows::Networking::Connectivity::IConnectionProfileFilter,
          impl::require<ConnectionProfileFilter, winrt::Windows::Networking::Connectivity::IConnectionProfileFilter2, winrt::Windows::Networking::Connectivity::IConnectionProfileFilter3>
      {
          ConnectionProfileFilter(std::nullptr_t) noexcept {}
          ConnectionProfileFilter(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IConnectionProfileFilter(ptr, take_ownership_from_abi) {}
          ConnectionProfileFilter();
          ConnectionProfileFilter(ConnectionProfileFilter const&) noexcept = default;
          ConnectionProfileFilter(ConnectionProfileFilter&&) noexcept = default;
          ConnectionProfileFilter& operator=(ConnectionProfileFilter const&) & noexcept = default;
          ConnectionProfileFilter& operator=(ConnectionProfileFilter&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ConnectionSession : winrt::Windows::Networking::Connectivity::IConnectionSession
      {
          ConnectionSession(std::nullptr_t) noexcept {}
          ConnectionSession(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IConnectionSession(ptr, take_ownership_from_abi) {}
          ConnectionSession(ConnectionSession const&) noexcept = default;
          ConnectionSession(ConnectionSession&&) noexcept = default;
          ConnectionSession& operator=(ConnectionSession const&) & noexcept = default;
          ConnectionSession& operator=(ConnectionSession&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ConnectivityInterval : winrt::Windows::Networking::Connectivity::IConnectivityInterval
      {
          ConnectivityInterval(std::nullptr_t) noexcept {}
          ConnectivityInterval(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IConnectivityInterval(ptr, take_ownership_from_abi) {}
          ConnectivityInterval(ConnectivityInterval const&) noexcept = default;
          ConnectivityInterval(ConnectivityInterval&&) noexcept = default;
          ConnectivityInterval& operator=(ConnectivityInterval const&) & noexcept = default;
          ConnectivityInterval& operator=(ConnectivityInterval&&) & noexcept = default;
      };
      struct ConnectivityManager
      {
          ConnectivityManager() = delete;
          static auto AcquireConnectionAsync(winrt::Windows::Networking::Connectivity::CellularApnContext const& cellularApnContext);
          static auto AddHttpRoutePolicy(winrt::Windows::Networking::Connectivity::RoutePolicy const& routePolicy);
          static auto RemoveHttpRoutePolicy(winrt::Windows::Networking::Connectivity::RoutePolicy const& routePolicy);
      };
      struct __declspec(empty_bases) DataPlanStatus : winrt::Windows::Networking::Connectivity::IDataPlanStatus
      {
          DataPlanStatus(std::nullptr_t) noexcept {}
          DataPlanStatus(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IDataPlanStatus(ptr, take_ownership_from_abi) {}
          DataPlanStatus(DataPlanStatus const&) noexcept = default;
          DataPlanStatus(DataPlanStatus&&) noexcept = default;
          DataPlanStatus& operator=(DataPlanStatus const&) & noexcept = default;
          DataPlanStatus& operator=(DataPlanStatus&&) & noexcept = default;
      };
      struct __declspec(empty_bases) DataPlanUsage : winrt::Windows::Networking::Connectivity::IDataPlanUsage
      {
          DataPlanUsage(std::nullptr_t) noexcept {}
          DataPlanUsage(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IDataPlanUsage(ptr, take_ownership_from_abi) {}
          DataPlanUsage(DataPlanUsage const&) noexcept = default;
          DataPlanUsage(DataPlanUsage&&) noexcept = default;
          DataPlanUsage& operator=(DataPlanUsage const&) & noexcept = default;
          DataPlanUsage& operator=(DataPlanUsage&&) & noexcept = default;
      };
      struct __declspec(empty_bases) DataUsage : winrt::Windows::Networking::Connectivity::IDataUsage
      {
          DataUsage(std::nullptr_t) noexcept {}
          DataUsage(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IDataUsage(ptr, take_ownership_from_abi) {}
          DataUsage(DataUsage const&) noexcept = default;
          DataUsage(DataUsage&&) noexcept = default;
          DataUsage& operator=(DataUsage const&) & noexcept = default;
          DataUsage& operator=(DataUsage&&) & noexcept = default;
      };
      struct __declspec(empty_bases) IPInformation : winrt::Windows::Networking::Connectivity::IIPInformation
      {
          IPInformation(std::nullptr_t) noexcept {}
          IPInformation(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IIPInformation(ptr, take_ownership_from_abi) {}
          IPInformation(IPInformation const&) noexcept = default;
          IPInformation(IPInformation&&) noexcept = default;
          IPInformation& operator=(IPInformation const&) & noexcept = default;
          IPInformation& operator=(IPInformation&&) & noexcept = default;
      };
      struct __declspec(empty_bases) LanIdentifier : winrt::Windows::Networking::Connectivity::ILanIdentifier
      {
          LanIdentifier(std::nullptr_t) noexcept {}
          LanIdentifier(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::ILanIdentifier(ptr, take_ownership_from_abi) {}
          LanIdentifier(LanIdentifier const&) noexcept = default;
          LanIdentifier(LanIdentifier&&) noexcept = default;
          LanIdentifier& operator=(LanIdentifier const&) & noexcept = default;
          LanIdentifier& operator=(LanIdentifier&&) & noexcept = default;
      };
      struct __declspec(empty_bases) LanIdentifierData : winrt::Windows::Networking::Connectivity::ILanIdentifierData
      {
          LanIdentifierData(std::nullptr_t) noexcept {}
          LanIdentifierData(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::ILanIdentifierData(ptr, take_ownership_from_abi) {}
          LanIdentifierData(LanIdentifierData const&) noexcept = default;
          LanIdentifierData(LanIdentifierData&&) noexcept = default;
          LanIdentifierData& operator=(LanIdentifierData const&) & noexcept = default;
          LanIdentifierData& operator=(LanIdentifierData&&) & noexcept = default;
      };
      struct __declspec(empty_bases) NetworkAdapter : winrt::Windows::Networking::Connectivity::INetworkAdapter
      {
          NetworkAdapter(std::nullptr_t) noexcept {}
          NetworkAdapter(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::INetworkAdapter(ptr, take_ownership_from_abi) {}
          NetworkAdapter(NetworkAdapter const&) noexcept = default;
          NetworkAdapter(NetworkAdapter&&) noexcept = default;
          NetworkAdapter& operator=(NetworkAdapter const&) & noexcept = default;
          NetworkAdapter& operator=(NetworkAdapter&&) & noexcept = default;
      };
      struct NetworkInformation
      {
          NetworkInformation() = delete;
          static auto GetConnectionProfiles();
          static auto GetInternetConnectionProfile();
          static auto GetLanIdentifiers();
          static auto GetHostNames();
          static auto GetProxyConfigurationAsync(winrt::Windows::Foundation::Uri const& uri);
          static auto GetSortedEndpointPairs(param::iterable<winrt::Windows::Networking::EndpointPair> const& destinationList, winrt::Windows::Networking::HostNameSortOptions const& sortOptions);
          static auto NetworkStatusChanged(winrt::Windows::Networking::Connectivity::NetworkStatusChangedEventHandler const& networkStatusHandler);
          using NetworkStatusChanged_revoker = impl::factory_event_revoker<winrt::Windows::Networking::Connectivity::INetworkInformationStatics, &impl::abi_t<winrt::Windows::Networking::Connectivity::INetworkInformationStatics>::remove_NetworkStatusChanged>;
          [[nodiscard]] static NetworkStatusChanged_revoker NetworkStatusChanged(auto_revoke_t, winrt::Windows::Networking::Connectivity::NetworkStatusChangedEventHandler const& networkStatusHandler);
          static auto NetworkStatusChanged(winrt::event_token const& eventCookie);
          static auto FindConnectionProfilesAsync(winrt::Windows::Networking::Connectivity::ConnectionProfileFilter const& pProfileFilter);
      };
      struct __declspec(empty_bases) NetworkItem : winrt::Windows::Networking::Connectivity::INetworkItem
      {
          NetworkItem(std::nullptr_t) noexcept {}
          NetworkItem(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::INetworkItem(ptr, take_ownership_from_abi) {}
          NetworkItem(NetworkItem const&) noexcept = default;
          NetworkItem(NetworkItem&&) noexcept = default;
          NetworkItem& operator=(NetworkItem const&) & noexcept = default;
          NetworkItem& operator=(NetworkItem&&) & noexcept = default;
      };
      struct __declspec(empty_bases) NetworkSecuritySettings : winrt::Windows::Networking::Connectivity::INetworkSecuritySettings
      {
          NetworkSecuritySettings(std::nullptr_t) noexcept {}
          NetworkSecuritySettings(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::INetworkSecuritySettings(ptr, take_ownership_from_abi) {}
          NetworkSecuritySettings(NetworkSecuritySettings const&) noexcept = default;
          NetworkSecuritySettings(NetworkSecuritySettings&&) noexcept = default;
          NetworkSecuritySettings& operator=(NetworkSecuritySettings const&) & noexcept = default;
          NetworkSecuritySettings& operator=(NetworkSecuritySettings&&) & noexcept = default;
      };
      struct __declspec(empty_bases) NetworkStateChangeEventDetails : winrt::Windows::Networking::Connectivity::INetworkStateChangeEventDetails,
          impl::require<NetworkStateChangeEventDetails, winrt::Windows::Networking::Connectivity::INetworkStateChangeEventDetails2>
      {
          NetworkStateChangeEventDetails(std::nullptr_t) noexcept {}
          NetworkStateChangeEventDetails(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::INetworkStateChangeEventDetails(ptr, take_ownership_from_abi) {}
          NetworkStateChangeEventDetails(NetworkStateChangeEventDetails const&) noexcept = default;
          NetworkStateChangeEventDetails(NetworkStateChangeEventDetails&&) noexcept = default;
          NetworkStateChangeEventDetails& operator=(NetworkStateChangeEventDetails const&) & noexcept = default;
          NetworkStateChangeEventDetails& operator=(NetworkStateChangeEventDetails&&) & noexcept = default;
      };
      struct __declspec(empty_bases) NetworkUsage : winrt::Windows::Networking::Connectivity::INetworkUsage
      {
          NetworkUsage(std::nullptr_t) noexcept {}
          NetworkUsage(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::INetworkUsage(ptr, take_ownership_from_abi) {}
          NetworkUsage(NetworkUsage const&) noexcept = default;
          NetworkUsage(NetworkUsage&&) noexcept = default;
          NetworkUsage& operator=(NetworkUsage const&) & noexcept = default;
          NetworkUsage& operator=(NetworkUsage&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ProviderNetworkUsage : winrt::Windows::Networking::Connectivity::IProviderNetworkUsage
      {
          ProviderNetworkUsage(std::nullptr_t) noexcept {}
          ProviderNetworkUsage(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IProviderNetworkUsage(ptr, take_ownership_from_abi) {}
          ProviderNetworkUsage(ProviderNetworkUsage const&) noexcept = default;
          ProviderNetworkUsage(ProviderNetworkUsage&&) noexcept = default;
          ProviderNetworkUsage& operator=(ProviderNetworkUsage const&) & noexcept = default;
          ProviderNetworkUsage& operator=(ProviderNetworkUsage&&) & noexcept = default;
      };
      struct __declspec(empty_bases) ProxyConfiguration : winrt::Windows::Networking::Connectivity::IProxyConfiguration
      {
          ProxyConfiguration(std::nullptr_t) noexcept {}
          ProxyConfiguration(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IProxyConfiguration(ptr, take_ownership_from_abi) {}
          ProxyConfiguration(ProxyConfiguration const&) noexcept = default;
          ProxyConfiguration(ProxyConfiguration&&) noexcept = default;
          ProxyConfiguration& operator=(ProxyConfiguration const&) & noexcept = default;
          ProxyConfiguration& operator=(ProxyConfiguration&&) & noexcept = default;
      };
      struct __declspec(empty_bases) RoutePolicy : winrt::Windows::Networking::Connectivity::IRoutePolicy
      {
          RoutePolicy(std::nullptr_t) noexcept {}
          RoutePolicy(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IRoutePolicy(ptr, take_ownership_from_abi) {}
          RoutePolicy(winrt::Windows::Networking::Connectivity::ConnectionProfile const& connectionProfile, winrt::Windows::Networking::HostName const& hostName, winrt::Windows::Networking::DomainNameType const& type);
          RoutePolicy(RoutePolicy const&) noexcept = default;
          RoutePolicy(RoutePolicy&&) noexcept = default;
          RoutePolicy& operator=(RoutePolicy const&) & noexcept = default;
          RoutePolicy& operator=(RoutePolicy&&) & noexcept = default;
      };
      struct __declspec(empty_bases) WlanConnectionProfileDetails : winrt::Windows::Networking::Connectivity::IWlanConnectionProfileDetails
      {
          WlanConnectionProfileDetails(std::nullptr_t) noexcept {}
          WlanConnectionProfileDetails(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IWlanConnectionProfileDetails(ptr, take_ownership_from_abi) {}
          WlanConnectionProfileDetails(WlanConnectionProfileDetails const&) noexcept = default;
          WlanConnectionProfileDetails(WlanConnectionProfileDetails&&) noexcept = default;
          WlanConnectionProfileDetails& operator=(WlanConnectionProfileDetails const&) & noexcept = default;
          WlanConnectionProfileDetails& operator=(WlanConnectionProfileDetails&&) & noexcept = default;
      };
      struct __declspec(empty_bases) WwanConnectionProfileDetails : winrt::Windows::Networking::Connectivity::IWwanConnectionProfileDetails,
          impl::require<WwanConnectionProfileDetails, winrt::Windows::Networking::Connectivity::IWwanConnectionProfileDetails2>
      {
          WwanConnectionProfileDetails(std::nullptr_t) noexcept {}
          WwanConnectionProfileDetails(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::Networking::Connectivity::IWwanConnectionProfileDetails(ptr, take_ownership_from_abi) {}
          WwanConnectionProfileDetails(WwanConnectionProfileDetails const&) noexcept = default;
          WwanConnectionProfileDetails(WwanConnectionProfileDetails&&) noexcept = default;
          WwanConnectionProfileDetails& operator=(WwanConnectionProfileDetails const&) & noexcept = default;
          WwanConnectionProfileDetails& operator=(WwanConnectionProfileDetails&&) & noexcept = default;
      };
  }
  #endif
  