// 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
