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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Bluetooth.idl";
import "Windows.Networking.idl";
import "Windows.Networking.Sockets.idl";
import "Windows.Storage.Streams.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(__windows2Edevices2Ebluetooth_h__)")
cpp_quote("#include <Windows.Devices.Bluetooth.h>")
cpp_quote("#endif // !defined(__windows2Edevices2Ebluetooth_h__)")
cpp_quote("#if !defined(__windows2Enetworking_h__)")
cpp_quote("#include <Windows.Networking.h>")
cpp_quote("#endif // !defined(__windows2Enetworking_h__)")
cpp_quote("#if !defined(__windows2Enetworking2Esockets_h__)")
cpp_quote("#include <Windows.Networking.Sockets.h>")
cpp_quote("#endif // !defined(__windows2Enetworking2Esockets_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            typedef enum BluetoothCacheMode BluetoothCacheMode;

            runtimeclass BluetoothDevice;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass HostName;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace Sockets
        {
            typedef enum SocketProtectionLevel SocketProtectionLevel;

            runtimeclass StreamSocketListener;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                interface IRfcommServiceIdStatics;

                interface IRfcommServiceId;

                interface IRfcommDeviceServiceStatics;

                interface IRfcommDeviceService;

                interface IRfcommDeviceService2;

                interface IRfcommServiceProviderStatics;

                interface IRfcommServiceProvider;

                runtimeclass RfcommDeviceService;

                runtimeclass RfcommServiceId;

                runtimeclass RfcommServiceProvider;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId)]
                [uuid(2A179EBA-A975-46E3-B56B-08FFD783A5FE)]
                [version(0x06030000)]
                interface IRfcommServiceIdStatics : IInspectable
                {
                    HRESULT FromUuid([in] GUID uuid, [out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    HRESULT FromShortId([in] UINT32 shortId, [out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT SerialPort([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT ObexObjectPush([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT ObexFileTransfer([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT PhoneBookAccessPce([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT PhoneBookAccessPse([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                    [propget] HRESULT GenericFileTransfer([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** serviceId);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId)]
                [uuid(22629204-7E02-4017-8136-DA1B6A1B9BBF)]
                [version(0x06030000)]
                interface IRfcommServiceId : IInspectable
                {
                    [propget] HRESULT Uuid([out] [retval] GUID* value);
                    HRESULT AsShortId([out] [retval] UINT32* shortId);
                    HRESULT AsString([out] [retval] HSTRING* id);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(A4A149EF-626D-41AC-B253-87AC5C27E28A)]
                [version(0x06030000)]
                interface IRfcommDeviceServiceStatics : IInspectable
                {
                    HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>** asyncOp);
                    HRESULT GetDeviceSelector([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [out] [retval] HSTRING* selector);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(AE81FF1F-C5A1-4C40-8C28-F3EFD69062F3)]
                [version(0x06030000)]
                interface IRfcommDeviceService : IInspectable
                {
                    [propget] HRESULT ConnectionHostName([out] [retval] Windows.Networking.HostName** value);
                    [propget] HRESULT ConnectionServiceName([out] [retval] HSTRING* value);
                    [propget] HRESULT ServiceId([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** value);
                    [propget] HRESULT ProtectionLevel([out] [retval] Windows.Networking.Sockets.SocketProtectionLevel* value);
                    [propget] HRESULT MaxProtectionLevel([out] [retval] Windows.Networking.Sockets.SocketProtectionLevel* value);
                    [overload("GetSdpRawAttributesAsync")] HRESULT GetSdpRawAttributesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<UINT32, Windows.Storage.Streams.IBuffer*>*>** asyncOp);
                    [overload("GetSdpRawAttributesAsync")] HRESULT GetSdpRawAttributesWithCacheModeAsync([in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<UINT32, Windows.Storage.Streams.IBuffer*>*>** asyncOp);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(536CED14-EBCD-49FE-BF9F-40EFC689B20D)]
                [version(0x0A000000)]
                interface IRfcommDeviceService2 : IInspectable
                    requires
                        Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService
                {
                    [propget] HRESULT Device([out] [retval] Windows.Devices.Bluetooth.BluetoothDevice** value);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider)]
                [uuid(98888303-69CA-413A-84F7-4344C7292997)]
                [version(0x06030000)]
                interface IRfcommServiceProviderStatics : IInspectable
                {
                    HRESULT CreateAsync([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider*>** asyncOp);
                }

                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider)]
                [uuid(EADBFDC4-B1F6-44FF-9F7C-E7A82AB86821)]
                [version(0x06030000)]
                interface IRfcommServiceProvider : IInspectable
                {
                    [propget] HRESULT ServiceId([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** value);
                    [propget] HRESULT SdpRawAttributes([out] [retval] Windows.Foundation.Collections.IMap<UINT32, Windows.Storage.Streams.IBuffer*>** value);
                    HRESULT StartAdvertising([in] Windows.Networking.Sockets.StreamSocketListener* listener);
                    HRESULT StopAdvertising();
                }

                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics, 0x06030000)]
                [version(0x06030000)]
                runtimeclass RfcommDeviceService
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService;
                    [version(0x0A000000)] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService2;
                    interface Windows.Foundation.IClosable;
                }

                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceIdStatics, 0x06030000)]
                [version(0x06030000)]
                runtimeclass RfcommServiceId
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceId;
                }

                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProviderStatics, 0x06030000)]
                [version(0x06030000)]
                runtimeclass RfcommServiceProvider
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProvider;
                }
            }
        }
    }
}
