text: // C++/WinRT v2.0.190620.2
  
  // Copyright (c) Microsoft Corporation. All rights reserved.
  // Licensed under the MIT License.
  
  #ifndef WINRT_Windows_Devices_WiFiDirect_0_H
  #define WINRT_Windows_Devices_WiFiDirect_0_H
  namespace winrt::Windows::Devices::Enumeration
  {
      struct DeviceInformation;
      enum class DevicePairingKinds : uint32_t;
  }
  namespace winrt::Windows::Foundation
  {
      struct EventRegistrationToken;
      template <typename TSender, typename TResult> struct TypedEventHandler;
  }
  namespace winrt::Windows::Foundation::Collections
  {
      template <typename T> struct IVector;
  }
  namespace winrt::Windows::Security::Credentials
  {
      struct PasswordCredential;
  }
  namespace winrt::Windows::Storage::Streams
  {
      struct IBuffer;
  }
  namespace winrt::Windows::Devices::WiFiDirect
  {
      enum class WiFiDirectAdvertisementListenStateDiscoverability : int32_t
      {
          None = 0,
          Normal = 1,
          Intensive = 2,
      };
      enum class WiFiDirectAdvertisementPublisherStatus : int32_t
      {
          Created = 0,
          Started = 1,
          Stopped = 2,
          Aborted = 3,
      };
      enum class WiFiDirectConfigurationMethod : int32_t
      {
          ProvidePin = 0,
          DisplayPin = 1,
          PushButton = 2,
      };
      enum class WiFiDirectConnectionStatus : int32_t
      {
          Disconnected = 0,
          Connected = 1,
      };
      enum class WiFiDirectDeviceSelectorType : int32_t
      {
          DeviceInterface = 0,
          AssociationEndpoint = 1,
      };
      enum class WiFiDirectError : int32_t
      {
          Success = 0,
          RadioNotAvailable = 1,
          ResourceInUse = 2,
      };
      enum class WiFiDirectPairingProcedure : int32_t
      {
          GroupOwnerNegotiation = 0,
          Invitation = 1,
      };
      struct IWiFiDirectAdvertisement;
      struct IWiFiDirectAdvertisement2;
      struct IWiFiDirectAdvertisementPublisher;
      struct IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;
      struct IWiFiDirectConnectionListener;
      struct IWiFiDirectConnectionParameters;
      struct IWiFiDirectConnectionParameters2;
      struct IWiFiDirectConnectionParametersStatics;
      struct IWiFiDirectConnectionRequest;
      struct IWiFiDirectConnectionRequestedEventArgs;
      struct IWiFiDirectDevice;
      struct IWiFiDirectDeviceStatics;
      struct IWiFiDirectDeviceStatics2;
      struct IWiFiDirectInformationElement;
      struct IWiFiDirectInformationElementStatics;
      struct IWiFiDirectLegacySettings;
      struct WiFiDirectAdvertisement;
      struct WiFiDirectAdvertisementPublisher;
      struct WiFiDirectAdvertisementPublisherStatusChangedEventArgs;
      struct WiFiDirectConnectionListener;
      struct WiFiDirectConnectionParameters;
      struct WiFiDirectConnectionRequest;
      struct WiFiDirectConnectionRequestedEventArgs;
      struct WiFiDirectDevice;
      struct WiFiDirectInformationElement;
      struct WiFiDirectLegacySettings;
  }
  namespace winrt::impl
  {
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement2>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters2>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParametersStatics>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectDevice>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics2>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectInformationElement>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectInformationElementStatics>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings>
      {
          using type = interface_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectAdvertisement>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConnectionListener>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConnectionParameters>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequest>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequestedEventArgs>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectDevice>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectInformationElement>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectLegacySettings>
      {
          using type = class_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementListenStateDiscoverability>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatus>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConfigurationMethod>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectConnectionStatus>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectDeviceSelectorType>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectError>
      {
          using type = enum_category;
      };
      template <> struct category<Windows::Devices::WiFiDirect::WiFiDirectPairingProcedure>
      {
          using type = enum_category;
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectAdvertisement" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement2>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectAdvertisement2" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectAdvertisementPublisher" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectAdvertisementPublisherStatusChangedEventArgs" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionListener" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionParameters" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters2>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionParameters2" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParametersStatics>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionParametersStatics" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionRequest" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectConnectionRequestedEventArgs" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectDevice>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectDevice" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectDeviceStatics" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics2>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectDeviceStatics2" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectInformationElement>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectInformationElement" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectInformationElementStatics>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectInformationElementStatics" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.IWiFiDirectLegacySettings" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectAdvertisement>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectAdvertisement" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatusChangedEventArgs" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConnectionListener>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConnectionListener" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConnectionParameters>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConnectionParameters" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequest>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConnectionRequest" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequestedEventArgs>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConnectionRequestedEventArgs" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectDevice>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectDevice" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectInformationElement>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectInformationElement" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectLegacySettings>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectLegacySettings" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementListenStateDiscoverability>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectAdvertisementListenStateDiscoverability" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatus>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatus" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConfigurationMethod>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectConnectionStatus>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectConnectionStatus" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectDeviceSelectorType>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectDeviceSelectorType" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectError>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectError" };
      };
      template <> struct name<Windows::Devices::WiFiDirect::WiFiDirectPairingProcedure>
      {
          static constexpr auto & value{ L"Windows.Devices.WiFiDirect.WiFiDirectPairingProcedure" };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement>
      {
          static constexpr guid value{ 0xAB511A2D,0x2A06,0x49A1,{ 0xA5,0x84,0x61,0x43,0x5C,0x79,0x05,0xA6 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement2>
      {
          static constexpr guid value{ 0xB759AA46,0xD816,0x491B,{ 0x91,0x7A,0xB4,0x0D,0x7D,0xC4,0x03,0xA2 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>
      {
          static constexpr guid value{ 0xB35A2D1A,0x9B1F,0x45D9,{ 0x92,0x5A,0x69,0x4D,0x66,0xDF,0x68,0xEF } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          static constexpr guid value{ 0xAAFDE53C,0x5481,0x46E6,{ 0x90,0xDD,0x32,0x11,0x65,0x18,0xF1,0x92 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>
      {
          static constexpr guid value{ 0x699C1B0D,0x8D13,0x4EE9,{ 0xB9,0xEC,0x9C,0x72,0xF8,0x25,0x1F,0x7D } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters>
      {
          static constexpr guid value{ 0xB2E55405,0x5702,0x4B16,{ 0xA0,0x2C,0xBB,0xCD,0x21,0xEF,0x60,0x98 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters2>
      {
          static constexpr guid value{ 0xAB3B0FBE,0xAA82,0x44B4,{ 0x88,0xC8,0xE3,0x05,0x6B,0x89,0x80,0x1D } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParametersStatics>
      {
          static constexpr guid value{ 0x598AF493,0x7642,0x456F,{ 0xB9,0xD8,0xE8,0xA9,0xEB,0x1F,0x40,0x1A } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest>
      {
          static constexpr guid value{ 0x8EB99605,0x914F,0x49C3,{ 0xA6,0x14,0xD1,0x8D,0xC5,0xB1,0x9B,0x43 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs>
      {
          static constexpr guid value{ 0xF99D20BE,0xD38D,0x484F,{ 0x82,0x15,0xE7,0xB6,0x5A,0xBF,0x24,0x4C } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectDevice>
      {
          static constexpr guid value{ 0x72DEAAA8,0x72EB,0x4DAE,{ 0x8A,0x28,0x85,0x13,0x35,0x5D,0x27,0x77 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics>
      {
          static constexpr guid value{ 0xE86CB57C,0x3AAC,0x4851,{ 0xA7,0x92,0x48,0x2A,0xAF,0x93,0x1B,0x04 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics2>
      {
          static constexpr guid value{ 0x1A953E49,0xB103,0x437E,{ 0x92,0x26,0xAB,0x67,0x97,0x13,0x42,0xF9 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectInformationElement>
      {
          static constexpr guid value{ 0xAFFB72D6,0x76BB,0x497E,{ 0xAC,0x8B,0xDC,0x72,0x83,0x8B,0xC3,0x09 } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectInformationElementStatics>
      {
          static constexpr guid value{ 0xDBD02F16,0x11A5,0x4E60,{ 0x8C,0xAA,0x34,0x77,0x21,0x48,0x37,0x8A } };
      };
      template <> struct guid_storage<Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings>
      {
          static constexpr guid value{ 0xA64FDBBA,0xF2FD,0x4567,{ 0xA9,0x1B,0xF5,0xC2,0xF5,0x32,0x10,0x57 } };
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectAdvertisement>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectConnectionListener>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectConnectionParameters>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequest>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectConnectionRequestedEventArgs>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectDevice>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectDevice;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectInformationElement>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectInformationElement;
      };
      template <> struct default_interface<Windows::Devices::WiFiDirect::WiFiDirectLegacySettings>
      {
          using type = Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings;
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_InformationElements(void**) noexcept = 0;
              virtual int32_t __stdcall put_InformationElements(void*) noexcept = 0;
              virtual int32_t __stdcall get_ListenStateDiscoverability(int32_t*) noexcept = 0;
              virtual int32_t __stdcall put_ListenStateDiscoverability(int32_t) noexcept = 0;
              virtual int32_t __stdcall get_IsAutonomousGroupOwnerEnabled(bool*) noexcept = 0;
              virtual int32_t __stdcall put_IsAutonomousGroupOwnerEnabled(bool) noexcept = 0;
              virtual int32_t __stdcall get_LegacySettings(void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement2>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_SupportedConfigurationMethods(void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_Advertisement(void**) noexcept = 0;
              virtual int32_t __stdcall get_Status(int32_t*) noexcept = 0;
              virtual int32_t __stdcall add_StatusChanged(void*, winrt::event_token*) noexcept = 0;
              virtual int32_t __stdcall remove_StatusChanged(winrt::event_token) noexcept = 0;
              virtual int32_t __stdcall Start() noexcept = 0;
              virtual int32_t __stdcall Stop() noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_Status(int32_t*) noexcept = 0;
              virtual int32_t __stdcall get_Error(int32_t*) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall add_ConnectionRequested(void*, winrt::event_token*) noexcept = 0;
              virtual int32_t __stdcall remove_ConnectionRequested(winrt::event_token) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_GroupOwnerIntent(int16_t*) noexcept = 0;
              virtual int32_t __stdcall put_GroupOwnerIntent(int16_t) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters2>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_PreferenceOrderedConfigurationMethods(void**) noexcept = 0;
              virtual int32_t __stdcall get_PreferredPairingProcedure(int32_t*) noexcept = 0;
              virtual int32_t __stdcall put_PreferredPairingProcedure(int32_t) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParametersStatics>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall GetDevicePairingKinds(int32_t, uint32_t*) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_DeviceInformation(void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall GetConnectionRequest(void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectDevice>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_ConnectionStatus(int32_t*) noexcept = 0;
              virtual int32_t __stdcall get_DeviceId(void**) noexcept = 0;
              virtual int32_t __stdcall add_ConnectionStatusChanged(void*, winrt::event_token*) noexcept = 0;
              virtual int32_t __stdcall remove_ConnectionStatusChanged(winrt::event_token) noexcept = 0;
              virtual int32_t __stdcall GetConnectionEndpointPairs(void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall GetDeviceSelector(void**) noexcept = 0;
              virtual int32_t __stdcall FromIdAsync(void*, void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics2>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall GetDeviceSelector(int32_t, void**) noexcept = 0;
              virtual int32_t __stdcall FromIdAsync(void*, void*, void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectInformationElement>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_Oui(void**) noexcept = 0;
              virtual int32_t __stdcall put_Oui(void*) noexcept = 0;
              virtual int32_t __stdcall get_OuiType(uint8_t*) noexcept = 0;
              virtual int32_t __stdcall put_OuiType(uint8_t) noexcept = 0;
              virtual int32_t __stdcall get_Value(void**) noexcept = 0;
              virtual int32_t __stdcall put_Value(void*) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectInformationElementStatics>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall CreateFromBuffer(void*, void**) noexcept = 0;
              virtual int32_t __stdcall CreateFromDeviceInformation(void*, void**) noexcept = 0;
          };
      };
      template <> struct abi<Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings>
      {
          struct __declspec(novtable) type : inspectable_abi
          {
              virtual int32_t __stdcall get_IsEnabled(bool*) noexcept = 0;
              virtual int32_t __stdcall put_IsEnabled(bool) noexcept = 0;
              virtual int32_t __stdcall get_Ssid(void**) noexcept = 0;
              virtual int32_t __stdcall put_Ssid(void*) noexcept = 0;
              virtual int32_t __stdcall get_Passphrase(void**) noexcept = 0;
              virtual int32_t __stdcall put_Passphrase(void*) noexcept = 0;
          };
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisement
      {
          [[nodiscard]] auto InformationElements() const;
          auto InformationElements(param::vector<Windows::Devices::WiFiDirect::WiFiDirectInformationElement> const& value) const;
          [[nodiscard]] auto ListenStateDiscoverability() const;
          auto ListenStateDiscoverability(Windows::Devices::WiFiDirect::WiFiDirectAdvertisementListenStateDiscoverability const& value) const;
          [[nodiscard]] auto IsAutonomousGroupOwnerEnabled() const;
          auto IsAutonomousGroupOwnerEnabled(bool value) const;
          [[nodiscard]] auto LegacySettings() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisement<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisement2
      {
          [[nodiscard]] auto SupportedConfigurationMethods() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisement2>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisement2<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisementPublisher
      {
          [[nodiscard]] auto Advertisement() const;
          [[nodiscard]] auto Status() const;
          auto StatusChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher, Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatusChangedEventArgs> const& handler) const;
          using StatusChanged_revoker = impl::event_revoker<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher, &impl::abi_t<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>::remove_StatusChanged>;
          StatusChanged_revoker StatusChanged(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisher, Windows::Devices::WiFiDirect::WiFiDirectAdvertisementPublisherStatusChangedEventArgs> const& handler) const;
          auto StatusChanged(winrt::event_token const& token) const noexcept;
          auto Start() const;
          auto Stop() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisher>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisementPublisher<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisementPublisherStatusChangedEventArgs
      {
          [[nodiscard]] auto Status() const;
          [[nodiscard]] auto Error() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectAdvertisementPublisherStatusChangedEventArgs>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectAdvertisementPublisherStatusChangedEventArgs<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionListener
      {
          auto ConnectionRequested(Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectConnectionListener, Windows::Devices::WiFiDirect::WiFiDirectConnectionRequestedEventArgs> const& handler) const;
          using ConnectionRequested_revoker = impl::event_revoker<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener, &impl::abi_t<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>::remove_ConnectionRequested>;
          ConnectionRequested_revoker ConnectionRequested(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectConnectionListener, Windows::Devices::WiFiDirect::WiFiDirectConnectionRequestedEventArgs> const& handler) const;
          auto ConnectionRequested(winrt::event_token const& token) const noexcept;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionListener>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionListener<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParameters
      {
          [[nodiscard]] auto GroupOwnerIntent() const;
          auto GroupOwnerIntent(int16_t value) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParameters<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParameters2
      {
          [[nodiscard]] auto PreferenceOrderedConfigurationMethods() const;
          [[nodiscard]] auto PreferredPairingProcedure() const;
          auto PreferredPairingProcedure(Windows::Devices::WiFiDirect::WiFiDirectPairingProcedure const& value) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParameters2>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParameters2<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParametersStatics
      {
          auto GetDevicePairingKinds(Windows::Devices::WiFiDirect::WiFiDirectConfigurationMethod const& configurationMethod) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionParametersStatics>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionParametersStatics<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionRequest
      {
          [[nodiscard]] auto DeviceInformation() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequest>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionRequest<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionRequestedEventArgs
      {
          auto GetConnectionRequest() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectConnectionRequestedEventArgs>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectConnectionRequestedEventArgs<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectDevice
      {
          [[nodiscard]] auto ConnectionStatus() const;
          [[nodiscard]] auto DeviceId() const;
          auto ConnectionStatusChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectDevice, Windows::Foundation::IInspectable> const& handler) const;
          using ConnectionStatusChanged_revoker = impl::event_revoker<Windows::Devices::WiFiDirect::IWiFiDirectDevice, &impl::abi_t<Windows::Devices::WiFiDirect::IWiFiDirectDevice>::remove_ConnectionStatusChanged>;
          ConnectionStatusChanged_revoker ConnectionStatusChanged(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Devices::WiFiDirect::WiFiDirectDevice, Windows::Foundation::IInspectable> const& handler) const;
          auto ConnectionStatusChanged(winrt::event_token const& token) const noexcept;
          auto GetConnectionEndpointPairs() const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectDevice>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectDevice<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectDeviceStatics
      {
          auto GetDeviceSelector() const;
          auto FromIdAsync(param::hstring const& deviceId) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectDeviceStatics<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectDeviceStatics2
      {
          auto GetDeviceSelector(Windows::Devices::WiFiDirect::WiFiDirectDeviceSelectorType const& type) const;
          auto FromIdAsync(param::hstring const& deviceId, Windows::Devices::WiFiDirect::WiFiDirectConnectionParameters const& connectionParameters) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectDeviceStatics2>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectDeviceStatics2<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectInformationElement
      {
          [[nodiscard]] auto Oui() const;
          auto Oui(Windows::Storage::Streams::IBuffer const& value) const;
          [[nodiscard]] auto OuiType() const;
          auto OuiType(uint8_t value) const;
          [[nodiscard]] auto Value() const;
          auto Value(Windows::Storage::Streams::IBuffer const& value) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectInformationElement>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectInformationElement<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectInformationElementStatics
      {
          auto CreateFromBuffer(Windows::Storage::Streams::IBuffer const& buffer) const;
          auto CreateFromDeviceInformation(Windows::Devices::Enumeration::DeviceInformation const& deviceInformation) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectInformationElementStatics>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectInformationElementStatics<D>;
      };
      template <typename D>
      struct consume_Windows_Devices_WiFiDirect_IWiFiDirectLegacySettings
      {
          [[nodiscard]] auto IsEnabled() const;
          auto IsEnabled(bool value) const;
          [[nodiscard]] auto Ssid() const;
          auto Ssid(param::hstring const& value) const;
          [[nodiscard]] auto Passphrase() const;
          auto Passphrase(Windows::Security::Credentials::PasswordCredential const& value) const;
      };
      template <> struct consume<Windows::Devices::WiFiDirect::IWiFiDirectLegacySettings>
      {
          template <typename D> using type = consume_Windows_Devices_WiFiDirect_IWiFiDirectLegacySettings<D>;
      };
  }
  #endif
  