//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Networking.idl";
import "Windows.Security.Credentials.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceInformation;

            typedef enum DevicePairingKinds DevicePairingKinds;

            interface IDevicePairingSettings;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass EndpointPair;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            typedef enum WiFiDirectAdvertisementListenStateDiscoverability WiFiDirectAdvertisementListenStateDiscoverability;

            typedef enum WiFiDirectAdvertisementPublisherStatus WiFiDirectAdvertisementPublisherStatus;

            typedef enum WiFiDirectConfigurationMethod WiFiDirectConfigurationMethod;

            typedef enum WiFiDirectConnectionStatus WiFiDirectConnectionStatus;

            typedef enum WiFiDirectDeviceSelectorType WiFiDirectDeviceSelectorType;

            typedef enum WiFiDirectError WiFiDirectError;

            typedef enum WiFiDirectPairingProcedure WiFiDirectPairingProcedure;

            interface IWiFiDirectAdvertisement;

            interface IWiFiDirectAdvertisement2;

            interface IWiFiDirectAdvertisementPublisher;

            interface IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;

            interface IWiFiDirectConnectionListener;

            interface IWiFiDirectConnectionParameters;

            interface IWiFiDirectConnectionParameters2;

            interface IWiFiDirectConnectionParametersStatics;

            interface IWiFiDirectConnectionRequest;

            interface IWiFiDirectConnectionRequestedEventArgs;

            interface IWiFiDirectDevice;

            interface IWiFiDirectDeviceStatics;

            interface IWiFiDirectDeviceStatics2;

            interface IWiFiDirectInformationElement;

            interface IWiFiDirectInformationElementStatics;

            interface IWiFiDirectLegacySettings;

            runtimeclass WiFiDirectAdvertisement;

            runtimeclass WiFiDirectAdvertisementPublisher;

            runtimeclass WiFiDirectAdvertisementPublisherStatusChangedEventArgs;

            runtimeclass WiFiDirectConnectionListener;

            runtimeclass WiFiDirectConnectionParameters;

            runtimeclass WiFiDirectConnectionRequest;

            runtimeclass WiFiDirectConnectionRequestedEventArgs;

            runtimeclass WiFiDirectDevice;

            runtimeclass WiFiDirectInformationElement;

            runtimeclass WiFiDirectLegacySettings;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>;

                interface Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>;

                interface Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFiDirect.WiFiDirectDevice*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher*, Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatusChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectConnectionListener*, Windows.Devices.WiFiDirect.WiFiDirectConnectionRequestedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectDevice*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiDirectAdvertisementListenStateDiscoverability
            {
                None      = 0,
                Normal    = 1,
                Intensive = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiDirectAdvertisementPublisherStatus
            {
                Created = 0,
                Started = 1,
                Stopped = 2,
                Aborted = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            enum WiFiDirectConfigurationMethod
            {
                ProvidePin = 0,
                DisplayPin = 1,
                PushButton = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiDirectConnectionStatus
            {
                Disconnected = 0,
                Connected    = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiDirectDeviceSelectorType
            {
                DeviceInterface     = 0,
                AssociationEndpoint = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiDirectError
            {
                Success           = 0,
                RadioNotAvailable = 1,
                ResourceInUse     = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            enum WiFiDirectPairingProcedure
            {
                GroupOwnerNegotiation = 0,
                Invitation            = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectAdvertisement)]
            [uuid(AB511A2D-2A06-49A1-A584-61435C7905A6)]
            interface IWiFiDirectAdvertisement : IInspectable
            {
                [propget] HRESULT InformationElements([out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>** value);
                [propput] HRESULT InformationElements([in] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>* value);
                [propget] HRESULT ListenStateDiscoverability([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectAdvertisementListenStateDiscoverability* value);
                [propput] HRESULT ListenStateDiscoverability([in] Windows.Devices.WiFiDirect.WiFiDirectAdvertisementListenStateDiscoverability value);
                [propget] HRESULT IsAutonomousGroupOwnerEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsAutonomousGroupOwnerEnabled([in] boolean value);
                [propget] HRESULT LegacySettings([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectLegacySettings** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectAdvertisement)]
            [uuid(B759AA46-D816-491B-917A-B40D7DC403A2)]
            interface IWiFiDirectAdvertisement2 : IInspectable
            {
                [propget] HRESULT SupportedConfigurationMethods([out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher)]
            [uuid(B35A2D1A-9B1F-45D9-925A-694D66DF68EF)]
            interface IWiFiDirectAdvertisementPublisher : IInspectable
            {
                [propget] HRESULT Advertisement([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectAdvertisement** value);
                [propget] HRESULT Status([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatus* value);
                [eventadd] HRESULT StatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisher*, Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatusChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT StatusChanged([in] EventRegistrationToken token);
                HRESULT Start();
                HRESULT Stop();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatusChangedEventArgs)]
            [uuid(AAFDE53C-5481-46E6-90DD-32116518F192)]
            interface IWiFiDirectAdvertisementPublisherStatusChangedEventArgs : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectAdvertisementPublisherStatus* value);
                [propget] HRESULT Error([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectError* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionListener)]
            [uuid(699C1B0D-8D13-4EE9-B9EC-9C72F8251F7D)]
            interface IWiFiDirectConnectionListener : IInspectable
            {
                [eventadd] HRESULT ConnectionRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectConnectionListener*, Windows.Devices.WiFiDirect.WiFiDirectConnectionRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ConnectionRequested([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionParameters)]
            [uuid(B2E55405-5702-4B16-A02C-BBCD21EF6098)]
            interface IWiFiDirectConnectionParameters : IInspectable
            {
                [propget] HRESULT GroupOwnerIntent([out] [retval] INT16* value);
                [propput] HRESULT GroupOwnerIntent([in] INT16 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionParameters)]
            [uuid(AB3B0FBE-AA82-44B4-88C8-E3056B89801D)]
            interface IWiFiDirectConnectionParameters2 : IInspectable
            {
                [propget] HRESULT PreferenceOrderedConfigurationMethods([out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod>** value);
                [propget] HRESULT PreferredPairingProcedure([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectPairingProcedure* value);
                [propput] HRESULT PreferredPairingProcedure([in] Windows.Devices.WiFiDirect.WiFiDirectPairingProcedure value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionParameters)]
            [uuid(598AF493-7642-456F-B9D8-E8A9EB1F401A)]
            interface IWiFiDirectConnectionParametersStatics : IInspectable
            {
                HRESULT GetDevicePairingKinds([in] Windows.Devices.WiFiDirect.WiFiDirectConfigurationMethod configurationMethod, [out] [retval] Windows.Devices.Enumeration.DevicePairingKinds* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionRequest)]
            [uuid(8EB99605-914F-49C3-A614-D18DC5B19B43)]
            interface IWiFiDirectConnectionRequest : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectConnectionRequestedEventArgs)]
            [uuid(F99D20BE-D38D-484F-8215-E7B65ABF244C)]
            interface IWiFiDirectConnectionRequestedEventArgs : IInspectable
            {
                HRESULT GetConnectionRequest([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectConnectionRequest** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectDevice)]
            [uuid(72DEAAA8-72EB-4DAE-8A28-8513355D2777)]
            interface IWiFiDirectDevice : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT ConnectionStatus([out] [retval] Windows.Devices.WiFiDirect.WiFiDirectConnectionStatus* value);
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [eventadd] HRESULT ConnectionStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.WiFiDirect.WiFiDirectDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ConnectionStatusChanged([in] EventRegistrationToken token);
                HRESULT GetConnectionEndpointPairs([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectDevice)]
            [uuid(E86CB57C-3AAC-4851-A792-482AAF931B04)]
            interface IWiFiDirectDeviceStatics : IInspectable
            {
                [overload("GetDeviceSelector")] HRESULT GetDeviceSelector([out] [retval] HSTRING* deviceSelector);
                [overload("FromIdAsync")] HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFiDirect.WiFiDirectDevice*>** asyncOp);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectDevice)]
            [uuid(1A953E49-B103-437E-9226-AB67971342F9)]
            interface IWiFiDirectDeviceStatics2 : IInspectable
            {
                [overload("GetDeviceSelector")] HRESULT GetDeviceSelector([in] Windows.Devices.WiFiDirect.WiFiDirectDeviceSelectorType type, [out] [retval] HSTRING* result);
                [overload("FromIdAsync")] HRESULT FromIdAsync([in] HSTRING deviceId, [in] Windows.Devices.WiFiDirect.WiFiDirectConnectionParameters* connectionParameters, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFiDirect.WiFiDirectDevice*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectInformationElement)]
            [uuid(AFFB72D6-76BB-497E-AC8B-DC72838BC309)]
            interface IWiFiDirectInformationElement : IInspectable
            {
                [propget] HRESULT Oui([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propput] HRESULT Oui([in] Windows.Storage.Streams.IBuffer* value);
                [propget] HRESULT OuiType([out] [retval] BYTE* value);
                [propput] HRESULT OuiType([in] BYTE value);
                [propget] HRESULT Value([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propput] HRESULT Value([in] Windows.Storage.Streams.IBuffer* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectInformationElement)]
            [uuid(DBD02F16-11A5-4E60-8CAA-34772148378A)]
            interface IWiFiDirectInformationElementStatics : IInspectable
            {
                HRESULT CreateFromBuffer([in] Windows.Storage.Streams.IBuffer* buffer, [out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>** result);
                HRESULT CreateFromDeviceInformation([in] Windows.Devices.Enumeration.DeviceInformation* deviceInformation, [out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.WiFiDirect.WiFiDirectInformationElement*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectLegacySettings)]
            [uuid(A64FDBBA-F2FD-4567-A91B-F5C2F5321057)]
            interface IWiFiDirectLegacySettings : IInspectable
            {
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsEnabled([in] boolean value);
                [propget] HRESULT Ssid([out] [retval] HSTRING* value);
                [propput] HRESULT Ssid([in] HSTRING value);
                [propget] HRESULT Passphrase([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                [propput] HRESULT Passphrase([in] Windows.Security.Credentials.PasswordCredential* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectAdvertisement
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectAdvertisement;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.WiFiDirect.IWiFiDirectAdvertisement2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectAdvertisementPublisher
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectAdvertisementPublisher;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectAdvertisementPublisherStatusChangedEventArgs
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectConnectionListener
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectConnectionListener;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFiDirect.IWiFiDirectConnectionParametersStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            runtimeclass WiFiDirectConnectionParameters
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectConnectionParameters;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.WiFiDirect.IWiFiDirectConnectionParameters2;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.Enumeration.IDevicePairingSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectConnectionRequest
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectConnectionRequest;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectConnectionRequestedEventArgs
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectConnectionRequestedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFiDirect.IWiFiDirectDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Devices.WiFiDirect.IWiFiDirectDeviceStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass WiFiDirectDevice
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectDevice;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFiDirect.IWiFiDirectInformationElementStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass WiFiDirectInformationElement
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectInformationElement;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiDirectLegacySettings
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectLegacySettings;
            }
        }
    }
}
