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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Networking.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Enetworking_h__)")
cpp_quote("#include <Windows.Networking.h>")
cpp_quote("#endif // !defined(__windows2Enetworking_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass EndpointPair;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            typedef enum WiFiDirectConnectionStatus WiFiDirectConnectionStatus;

            interface IWiFiDirectDeviceStatics;

            interface IWiFiDirectDevice;

            runtimeclass WiFiDirectDevice;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFiDirect.WiFiDirectDevice*>;

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

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace WiFiDirect
        {
            [version(0x06030000)]
            enum WiFiDirectConnectionStatus
            {
                Disconnected = 0,
                Connected    = 1
            };

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

            [exclusiveto(Windows.Devices.WiFiDirect.WiFiDirectDevice)]
            [uuid(72DEAAA8-72EB-4DAE-8A28-8513355D2777)]
            [version(0x06030000)]
            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);
            }

            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFiDirect.IWiFiDirectDeviceStatics, 0x06030000)]
            [version(0x06030000)]
            runtimeclass WiFiDirectDevice
            {
                [default] interface Windows.Devices.WiFiDirect.IWiFiDirectDevice;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
