//
// 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.Bluetooth.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Networking.idl";
import "Windows.Networking.Sockets.idl";
import "Windows.Storage.Streams.idl";

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

            runtimeclass BluetoothDevice;

            typedef enum BluetoothError BluetoothError;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceAccessInformation;

            typedef enum DeviceAccessStatus DeviceAccessStatus;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
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 IRfcommDeviceService;

                interface IRfcommDeviceService2;

                interface IRfcommDeviceService3;

                interface IRfcommDeviceServiceStatics;

                interface IRfcommDeviceServiceStatics2;

                interface IRfcommDeviceServicesResult;

                interface IRfcommServiceId;

                interface IRfcommServiceIdStatics;

                interface IRfcommServiceProvider;

                interface IRfcommServiceProvider2;

                interface IRfcommServiceProviderStatics;

                runtimeclass RfcommDeviceService;

                runtimeclass RfcommDeviceServicesResult;

                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.RfcommDeviceServicesResult*>;

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

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(AE81FF1F-C5A1-4C40-8C28-F3EFD69062F3)]
                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);
                }

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

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(1C22ACE6-DD44-4D23-866D-8F3486EE6490)]
                interface IRfcommDeviceService3 : IInspectable
                    requires
                        Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService2,
                        Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService
                {
                    [propget] HRESULT DeviceAccessInformation([out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
                    HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceAccessStatus>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(A4A149EF-626D-41AC-B253-87AC5C27E28A)]
                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);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService)]
                [uuid(AA8CB1C9-E78D-4BE4-8076-0A3D87A0A05F)]
                interface IRfcommDeviceServiceStatics2 : IInspectable
                    requires
                        Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics
                {
                    [overload("GetDeviceSelectorForBluetoothDevice")] HRESULT GetDeviceSelectorForBluetoothDevice([in] Windows.Devices.Bluetooth.BluetoothDevice* bluetoothDevice, [out] [retval] HSTRING* selector);
                    [overload("GetDeviceSelectorForBluetoothDevice")] HRESULT GetDeviceSelectorForBluetoothDeviceWithCacheMode([in] Windows.Devices.Bluetooth.BluetoothDevice* bluetoothDevice, [in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] HSTRING* selector);
                    [overload("GetDeviceSelectorForBluetoothDeviceAndServiceId")] HRESULT GetDeviceSelectorForBluetoothDeviceAndServiceId([in] Windows.Devices.Bluetooth.BluetoothDevice* bluetoothDevice, [in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [out] [retval] HSTRING* selector);
                    [overload("GetDeviceSelectorForBluetoothDeviceAndServiceId")] HRESULT GetDeviceSelectorForBluetoothDeviceAndServiceIdWithCacheMode([in] Windows.Devices.Bluetooth.BluetoothDevice* bluetoothDevice, [in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] HSTRING* selector);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult)]
                [uuid(3B48388C-7CCF-488E-9625-D259A5732D55)]
                interface IRfcommDeviceServicesResult : IInspectable
                {
                    [propget] HRESULT Error([out] [retval] Windows.Devices.Bluetooth.BluetoothError* value);
                    [propget] HRESULT Services([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>** services);
                }

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

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId)]
                [uuid(2A179EBA-A975-46E3-B56B-08FFD783A5FE)]
                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);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider)]
                [uuid(EADBFDC4-B1F6-44FF-9F7C-E7A82AB86821)]
                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();
                }

                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider)]
                [uuid(736BDFC6-3C81-4D1E-BAF2-DDBB81284512)]
                interface IRfcommServiceProvider2 : IInspectable
                    requires
                        Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProvider
                {
                    [overload("StartAdvertising")] HRESULT StartAdvertisingWithRadioDiscoverability([in] Windows.Networking.Sockets.StreamSocketListener* listener, [in] boolean radioDiscoverable);
                }

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

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics2, Windows.Foundation.UniversalApiContract, 3.0)]
                [threading(both)]
                runtimeclass RfcommDeviceService
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService;
                    interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService2;
                    interface Windows.Foundation.IClosable;
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceService3;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RfcommDeviceServicesResult
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServicesResult;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceIdStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass RfcommServiceId
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceId;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProviderStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass RfcommServiceProvider
                {
                    [default] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProvider;
                    [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceProvider2;
                }
            }
        }
    }
}
