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

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace GenericAttributeProfile
            {
                runtimeclass GattDeviceService;

                runtimeclass GattDeviceServicesResult;
            }
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                runtimeclass RfcommDeviceService;

                runtimeclass RfcommDeviceServicesResult;

                runtimeclass RfcommServiceId;
            }
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceAccessInformation;

            typedef enum DeviceAccessStatus DeviceAccessStatus;

            runtimeclass DeviceInformation;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Radios
        {
            runtimeclass Radio;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass HostName;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            typedef enum BluetoothAddressType BluetoothAddressType;

            typedef enum BluetoothCacheMode BluetoothCacheMode;

            typedef enum BluetoothConnectionStatus BluetoothConnectionStatus;

            typedef enum BluetoothError BluetoothError;

            typedef enum BluetoothMajorClass BluetoothMajorClass;

            typedef enum BluetoothMinorClass BluetoothMinorClass;

            typedef enum BluetoothServiceCapabilities BluetoothServiceCapabilities;

            interface IBluetoothAdapter;

            interface IBluetoothAdapter2;

            interface IBluetoothAdapterStatics;

            interface IBluetoothClassOfDevice;

            interface IBluetoothClassOfDeviceStatics;

            interface IBluetoothDevice;

            interface IBluetoothDevice2;

            interface IBluetoothDevice3;

            interface IBluetoothDevice4;

            interface IBluetoothDevice5;

            interface IBluetoothDeviceId;

            interface IBluetoothDeviceIdStatics;

            interface IBluetoothDeviceStatics;

            interface IBluetoothDeviceStatics2;

            interface IBluetoothLEAppearance;

            interface IBluetoothLEAppearanceCategoriesStatics;

            interface IBluetoothLEAppearanceStatics;

            interface IBluetoothLEAppearanceSubcategoriesStatics;

            interface IBluetoothLEDevice;

            interface IBluetoothLEDevice2;

            interface IBluetoothLEDevice3;

            interface IBluetoothLEDevice4;

            interface IBluetoothLEDevice5;

            interface IBluetoothLEDeviceStatics;

            interface IBluetoothLEDeviceStatics2;

            interface IBluetoothSignalStrengthFilter;

            interface IBluetoothUuidHelperStatics;

            runtimeclass BluetoothAdapter;

            runtimeclass BluetoothClassOfDevice;

            runtimeclass BluetoothDevice;

            runtimeclass BluetoothDeviceId;

            runtimeclass BluetoothLEAppearance;

            runtimeclass BluetoothLEAppearanceCategories;

            runtimeclass BluetoothLEAppearanceSubcategories;

            runtimeclass BluetoothLEDevice;

            runtimeclass BluetoothSignalStrengthFilter;

            runtimeclass BluetoothUuidHelper;
        }
    }
}

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

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothDevice*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothLEDevice*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothDevice*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothLEDevice*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            enum BluetoothAddressType
            {
                Public      = 0,
                Random      = 1,
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                Unspecified = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BluetoothCacheMode
            {
                Cached   = 0,
                Uncached = 1
            };

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

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BluetoothError
            {
                Success               = 0,
                RadioNotAvailable     = 1,
                ResourceInUse         = 2,
                DeviceNotConnected    = 3,
                OtherError            = 4,
                DisabledByPolicy      = 5,
                NotSupported          = 6,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                DisabledByUser        = 7,
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                ConsentRequired       = 8,
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                TransportNotSupported = 9
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BluetoothMajorClass
            {
                Miscellaneous      = 0,
                Computer           = 1,
                Phone              = 2,
                NetworkAccessPoint = 3,
                AudioVideo         = 4,
                Peripheral         = 5,
                Imaging            = 6,
                Wearable           = 7,
                Toy                = 8,
                Health             = 9
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BluetoothMinorClass
            {
                Uncategorized                        = 0,
                ComputerDesktop                      = 1,
                ComputerServer                       = 2,
                ComputerLaptop                       = 3,
                ComputerHandheld                     = 4,
                ComputerPalmSize                     = 5,
                ComputerWearable                     = 6,
                ComputerTablet                       = 7,
                PhoneCellular                        = 1,
                PhoneCordless                        = 2,
                PhoneSmartPhone                      = 3,
                PhoneWired                           = 4,
                PhoneIsdn                            = 5,
                NetworkFullyAvailable                = 0,
                NetworkUsed01To17Percent             = 8,
                NetworkUsed17To33Percent             = 16,
                NetworkUsed33To50Percent             = 24,
                NetworkUsed50To67Percent             = 32,
                NetworkUsed67To83Percent             = 40,
                NetworkUsed83To99Percent             = 48,
                NetworkNoServiceAvailable            = 56,
                AudioVideoWearableHeadset            = 1,
                AudioVideoHandsFree                  = 2,
                AudioVideoMicrophone                 = 4,
                AudioVideoLoudspeaker                = 5,
                AudioVideoHeadphones                 = 6,
                AudioVideoPortableAudio              = 7,
                AudioVideoCarAudio                   = 8,
                AudioVideoSetTopBox                  = 9,
                AudioVideoHifiAudioDevice            = 10,
                AudioVideoVcr                        = 11,
                AudioVideoVideoCamera                = 12,
                AudioVideoCamcorder                  = 13,
                AudioVideoVideoMonitor               = 14,
                AudioVideoVideoDisplayAndLoudspeaker = 15,
                AudioVideoVideoConferencing          = 16,
                AudioVideoGamingOrToy                = 18,
                PeripheralJoystick                   = 1,
                PeripheralGamepad                    = 2,
                PeripheralRemoteControl              = 3,
                PeripheralSensing                    = 4,
                PeripheralDigitizerTablet            = 5,
                PeripheralCardReader                 = 6,
                PeripheralDigitalPen                 = 7,
                PeripheralHandheldScanner            = 8,
                PeripheralHandheldGesture            = 9,
                WearableWristwatch                   = 1,
                WearablePager                        = 2,
                WearableJacket                       = 3,
                WearableHelmet                       = 4,
                WearableGlasses                      = 5,
                ToyRobot                             = 1,
                ToyVehicle                           = 2,
                ToyDoll                              = 3,
                ToyController                        = 4,
                ToyGame                              = 5,
                HealthBloodPressureMonitor           = 1,
                HealthThermometer                    = 2,
                HealthWeighingScale                  = 3,
                HealthGlucoseMeter                   = 4,
                HealthPulseOximeter                  = 5,
                HealthHeartRateMonitor               = 6,
                HealthHealthDataDisplay              = 7,
                HealthStepCounter                    = 8,
                HealthBodyCompositionAnalyzer        = 9,
                HealthPeakFlowMonitor                = 10,
                HealthMedicationMonitor              = 11,
                HealthKneeProsthesis                 = 12,
                HealthAnkleProsthesis                = 13,
                HealthGenericHealthManager           = 14,
                HealthPersonalMobilityDevice         = 15
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum BluetoothServiceCapabilities
            {
                None                    = 0x0,
                LimitedDiscoverableMode = 0x1,
                PositioningService      = 0x8,
                NetworkingService       = 0x10,
                RenderingService        = 0x20,
                CapturingService        = 0x40,
                ObjectTransferService   = 0x80,
                AudioService            = 0x100,
                TelephoneService        = 0x200,
                InformationService      = 0x400
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothAdapter)]
            [uuid(7974F04C-5F7A-4A34-9225-A855F84B1A8B)]
            interface IBluetoothAdapter : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT BluetoothAddress([out] [retval] UINT64* value);
                [propget] HRESULT IsClassicSupported([out] [retval] boolean* value);
                [propget] HRESULT IsLowEnergySupported([out] [retval] boolean* value);
                [propget] HRESULT IsPeripheralRoleSupported([out] [retval] boolean* value);
                [propget] HRESULT IsCentralRoleSupported([out] [retval] boolean* value);
                [propget] HRESULT IsAdvertisementOffloadSupported([out] [retval] boolean* value);
                HRESULT GetRadioAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.Radio*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothAdapter)]
            [uuid(AC94CECC-24D5-41B3-916D-1097C50B102B)]
            interface IBluetoothAdapter2 : IInspectable
            {
                [propget] HRESULT AreClassicSecureConnectionsSupported([out] [retval] boolean* value);
                [propget] HRESULT AreLowEnergySecureConnectionsSupported([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothAdapter)]
            [uuid(8B02FB6A-AC4C-4741-8661-8EAB7D17EA9F)]
            interface IBluetoothAdapterStatics : IInspectable
            {
                HRESULT GetDeviceSelector([out] [retval] HSTRING* result);
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothAdapter*>** operation);
                HRESULT GetDefaultAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothAdapter*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothClassOfDevice)]
            [uuid(D640227E-D7D7-4661-9454-65039CA17A2B)]
            interface IBluetoothClassOfDevice : IInspectable
            {
                [propget] HRESULT RawValue([out] [retval] UINT32* value);
                [propget] HRESULT MajorClass([out] [retval] Windows.Devices.Bluetooth.BluetoothMajorClass* value);
                [propget] HRESULT MinorClass([out] [retval] Windows.Devices.Bluetooth.BluetoothMinorClass* value);
                [propget] HRESULT ServiceCapabilities([out] [retval] Windows.Devices.Bluetooth.BluetoothServiceCapabilities* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothClassOfDevice)]
            [uuid(E46135BD-0FA2-416C-91B4-C1E48CA061C1)]
            interface IBluetoothClassOfDeviceStatics : IInspectable
            {
                HRESULT FromRawValue([in] UINT32 rawValue, [out] [retval] Windows.Devices.Bluetooth.BluetoothClassOfDevice** classOfDevice);
                HRESULT FromParts([in] Windows.Devices.Bluetooth.BluetoothMajorClass majorClass, [in] Windows.Devices.Bluetooth.BluetoothMinorClass minorClass, [in] Windows.Devices.Bluetooth.BluetoothServiceCapabilities serviceCapabilities, [out] [retval] Windows.Devices.Bluetooth.BluetoothClassOfDevice** classOfDevice);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(2335B156-90D2-4A04-AEF5-0E20B9E6B707)]
            interface IBluetoothDevice : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT HostName([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT ClassOfDevice([out] [retval] Windows.Devices.Bluetooth.BluetoothClassOfDevice** value);
                [propget] HRESULT SdpRecords([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Storage.Streams.IBuffer*>** value);
                [deprecated("Use GetRfcommServicesAsync instead of RfcommServices.  For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] [propget] HRESULT RfcommServices([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService*>** value);
                [propget] HRESULT ConnectionStatus([out] [retval] Windows.Devices.Bluetooth.BluetoothConnectionStatus* value);
                [propget] HRESULT BluetoothAddress([out] [retval] UINT64* value);
                [eventadd] HRESULT NameChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT NameChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT SdpRecordsChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SdpRecordsChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT ConnectionStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ConnectionStatusChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(0133F954-B156-4DD0-B1F5-C11BC31A5163)]
            interface IBluetoothDevice2 : IInspectable
                requires
                    Windows.Devices.Bluetooth.IBluetoothDevice
            {
                [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(57FFF78B-651A-4454-B90F-EB21EF0B0D71)]
            interface IBluetoothDevice3 : IInspectable
                requires
                    Windows.Devices.Bluetooth.IBluetoothDevice2,
                    Windows.Devices.Bluetooth.IBluetoothDevice
            {
                [propget] HRESULT DeviceAccessInformation([out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceAccessStatus>** value);
                [overload("GetRfcommServicesAsync")] HRESULT GetRfcommServicesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult*>** operation);
                [overload("GetRfcommServicesAsync")] HRESULT GetRfcommServicesWithCacheModeAsync([in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult*>** operation);
                [overload("GetRfcommServicesForIdAsync")] HRESULT GetRfcommServicesForIdAsync([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult*>** operation);
                [overload("GetRfcommServicesForIdAsync")] HRESULT GetRfcommServicesForIdWithCacheModeAsync([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* serviceId, [in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(817C34AD-0E9C-42B2-A8DC-3E8094940D12)]
            interface IBluetoothDevice4 : IInspectable
            {
                [propget] HRESULT BluetoothDeviceId([out] [retval] Windows.Devices.Bluetooth.BluetoothDeviceId** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(B5E0B385-5E85-4559-A10D-1C7281379F96)]
            interface IBluetoothDevice5 : IInspectable
            {
                [propget] HRESULT WasSecureConnectionUsedForPairing([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDeviceId)]
            [uuid(C17949AF-57C1-4642-BCCE-E6C06B20AE76)]
            interface IBluetoothDeviceId : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT IsClassicDevice([out] [retval] boolean* value);
                [propget] HRESULT IsLowEnergyDevice([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDeviceId)]
            [uuid(A7884E67-3EFB-4F31-BBC2-810E09977404)]
            interface IBluetoothDeviceIdStatics : IInspectable
            {
                HRESULT FromId([in] HSTRING deviceId, [out] [retval] Windows.Devices.Bluetooth.BluetoothDeviceId** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(0991DF51-57DB-4725-BBD7-84F64327EC2C)]
            interface IBluetoothDeviceStatics : IInspectable
            {
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothDevice*>** operation);
                HRESULT FromHostNameAsync([in] Windows.Networking.HostName* hostName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothDevice*>** operation);
                HRESULT FromBluetoothAddressAsync([in] UINT64 address, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothDevice*>** operation);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* deviceSelector);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothDevice)]
            [uuid(C29E8E2F-4E14-4477-AA1B-B8B47E5B7ECE)]
            interface IBluetoothDeviceStatics2 : IInspectable
                requires
                    Windows.Devices.Bluetooth.IBluetoothDeviceStatics
            {
                HRESULT GetDeviceSelectorFromPairingState([in] boolean pairingState, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromConnectionStatus([in] Windows.Devices.Bluetooth.BluetoothConnectionStatus connectionStatus, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromDeviceName([in] HSTRING deviceName, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromBluetoothAddress([in] UINT64 bluetoothAddress, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromClassOfDevice([in] Windows.Devices.Bluetooth.BluetoothClassOfDevice* classOfDevice, [out] [retval] HSTRING* deviceSelector);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEAppearance)]
            [uuid(5D2079F2-66A8-4258-985E-02B4D9509F18)]
            interface IBluetoothLEAppearance : IInspectable
            {
                [propget] HRESULT RawValue([out] [retval] UINT16* value);
                [propget] HRESULT Category([out] [retval] UINT16* value);
                [propget] HRESULT SubCategory([out] [retval] UINT16* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEAppearanceCategories)]
            [uuid(6D4D54FE-046A-4185-AAB6-824CF0610861)]
            interface IBluetoothLEAppearanceCategoriesStatics : IInspectable
            {
                [propget] HRESULT Uncategorized([out] [retval] UINT16* value);
                [propget] HRESULT Phone([out] [retval] UINT16* value);
                [propget] HRESULT Computer([out] [retval] UINT16* value);
                [propget] HRESULT Watch([out] [retval] UINT16* value);
                [propget] HRESULT Clock([out] [retval] UINT16* value);
                [propget] HRESULT Display([out] [retval] UINT16* value);
                [propget] HRESULT RemoteControl([out] [retval] UINT16* value);
                [propget] HRESULT EyeGlasses([out] [retval] UINT16* value);
                [propget] HRESULT Tag([out] [retval] UINT16* value);
                [propget] HRESULT Keyring([out] [retval] UINT16* value);
                [propget] HRESULT MediaPlayer([out] [retval] UINT16* value);
                [propget] HRESULT BarcodeScanner([out] [retval] UINT16* value);
                [propget] HRESULT Thermometer([out] [retval] UINT16* value);
                [propget] HRESULT HeartRate([out] [retval] UINT16* value);
                [propget] HRESULT BloodPressure([out] [retval] UINT16* value);
                [propget] HRESULT HumanInterfaceDevice([out] [retval] UINT16* value);
                [propget] HRESULT GlucoseMeter([out] [retval] UINT16* value);
                [propget] HRESULT RunningWalking([out] [retval] UINT16* value);
                [propget] HRESULT Cycling([out] [retval] UINT16* value);
                [propget] HRESULT PulseOximeter([out] [retval] UINT16* value);
                [propget] HRESULT WeightScale([out] [retval] UINT16* value);
                [propget] HRESULT OutdoorSportActivity([out] [retval] UINT16* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEAppearance)]
            [uuid(A193C0C7-4504-4F4A-9BA5-CD1054E5E065)]
            interface IBluetoothLEAppearanceStatics : IInspectable
            {
                HRESULT FromRawValue([in] UINT16 rawValue, [out] [retval] Windows.Devices.Bluetooth.BluetoothLEAppearance** appearance);
                HRESULT FromParts([in] UINT16 appearanceCategory, [in] UINT16 appearanceSubCategory, [out] [retval] Windows.Devices.Bluetooth.BluetoothLEAppearance** appearance);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEAppearanceSubcategories)]
            [uuid(E57BA606-2144-415A-8312-71CCF291F8D1)]
            interface IBluetoothLEAppearanceSubcategoriesStatics : IInspectable
            {
                [propget] HRESULT Generic([out] [retval] UINT16* value);
                [propget] HRESULT SportsWatch([out] [retval] UINT16* value);
                [propget] HRESULT ThermometerEar([out] [retval] UINT16* value);
                [propget] HRESULT HeartRateBelt([out] [retval] UINT16* value);
                [propget] HRESULT BloodPressureArm([out] [retval] UINT16* value);
                [propget] HRESULT BloodPressureWrist([out] [retval] UINT16* value);
                [propget] HRESULT Keyboard([out] [retval] UINT16* value);
                [propget] HRESULT Mouse([out] [retval] UINT16* value);
                [propget] HRESULT Joystick([out] [retval] UINT16* value);
                [propget] HRESULT Gamepad([out] [retval] UINT16* value);
                [propget] HRESULT DigitizerTablet([out] [retval] UINT16* value);
                [propget] HRESULT CardReader([out] [retval] UINT16* value);
                [propget] HRESULT DigitalPen([out] [retval] UINT16* value);
                [propget] HRESULT BarcodeScanner([out] [retval] UINT16* value);
                [propget] HRESULT RunningWalkingInShoe([out] [retval] UINT16* value);
                [propget] HRESULT RunningWalkingOnShoe([out] [retval] UINT16* value);
                [propget] HRESULT RunningWalkingOnHip([out] [retval] UINT16* value);
                [propget] HRESULT CyclingComputer([out] [retval] UINT16* value);
                [propget] HRESULT CyclingSpeedSensor([out] [retval] UINT16* value);
                [propget] HRESULT CyclingCadenceSensor([out] [retval] UINT16* value);
                [propget] HRESULT CyclingPowerSensor([out] [retval] UINT16* value);
                [propget] HRESULT CyclingSpeedCadenceSensor([out] [retval] UINT16* value);
                [propget] HRESULT OximeterFingertip([out] [retval] UINT16* value);
                [propget] HRESULT OximeterWristWorn([out] [retval] UINT16* value);
                [propget] HRESULT LocationDisplay([out] [retval] UINT16* value);
                [propget] HRESULT LocationNavigationDisplay([out] [retval] UINT16* value);
                [propget] HRESULT LocationPod([out] [retval] UINT16* value);
                [propget] HRESULT LocationNavigationPod([out] [retval] UINT16* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(B5EE2F7B-4AD8-4642-AC48-80A0B500E887)]
            interface IBluetoothLEDevice : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [deprecated("Use GetGattServicesAsync instead of GattServices.  For more information, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 4.0)] [propget] HRESULT GattServices([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceService*>** value);
                [propget] HRESULT ConnectionStatus([out] [retval] Windows.Devices.Bluetooth.BluetoothConnectionStatus* value);
                [propget] HRESULT BluetoothAddress([out] [retval] UINT64* value);
                [deprecated("Use GetGattServicesForUuidAsync instead of GetGattService.  For more information, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 4.0)] HRESULT GetGattService([in] GUID serviceUuid, [out] [retval] Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceService** service);
                [eventadd] HRESULT NameChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothLEDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT NameChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT GattServicesChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothLEDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT GattServicesChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT ConnectionStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Bluetooth.BluetoothLEDevice*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ConnectionStatusChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(26F062B3-7AEE-4D31-BABA-B1B9775F5916)]
            interface IBluetoothLEDevice2 : IInspectable
                requires
                    Windows.Devices.Bluetooth.IBluetoothLEDevice
            {
                [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT Appearance([out] [retval] Windows.Devices.Bluetooth.BluetoothLEAppearance** value);
                [propget] HRESULT BluetoothAddressType([out] [retval] Windows.Devices.Bluetooth.BluetoothAddressType* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(AEE9E493-44AC-40DC-AF33-B2C13C01CA46)]
            interface IBluetoothLEDevice3 : IInspectable
            {
                [propget] HRESULT DeviceAccessInformation([out] [retval] Windows.Devices.Enumeration.DeviceAccessInformation** value);
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Enumeration.DeviceAccessStatus>** operation);
                [overload("GetGattServicesAsync")] HRESULT GetGattServicesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult*>** operation);
                [overload("GetGattServicesAsync")] HRESULT GetGattServicesWithCacheModeAsync([in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult*>** operation);
                [overload("GetGattServicesForUuidAsync")] HRESULT GetGattServicesForUuidAsync([in] GUID serviceUuid, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult*>** operation);
                [overload("GetGattServicesForUuidAsync")] HRESULT GetGattServicesForUuidWithCacheModeAsync([in] GUID serviceUuid, [in] Windows.Devices.Bluetooth.BluetoothCacheMode cacheMode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceServicesResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(2B605031-2248-4B2F-ACF0-7CEE36FC5870)]
            interface IBluetoothLEDevice4 : IInspectable
            {
                [propget] HRESULT BluetoothDeviceId([out] [retval] Windows.Devices.Bluetooth.BluetoothDeviceId** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(9D6A1260-5287-458E-95BA-17C8B7BB326E)]
            interface IBluetoothLEDevice5 : IInspectable
            {
                [propget] HRESULT WasSecureConnectionUsedForPairing([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(C8CF1A19-F0B6-4BF0-8689-41303DE2D9F4)]
            interface IBluetoothLEDeviceStatics : IInspectable
            {
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothLEDevice*>** operation);
                [overload("FromBluetoothAddressAsync")] HRESULT FromBluetoothAddressAsync([in] UINT64 bluetoothAddress, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothLEDevice*>** operation);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* deviceSelector);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothLEDevice)]
            [uuid(5F12C06B-3BAC-43E8-AD16-563271BD41C2)]
            interface IBluetoothLEDeviceStatics2 : IInspectable
            {
                HRESULT GetDeviceSelectorFromPairingState([in] boolean pairingState, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromConnectionStatus([in] Windows.Devices.Bluetooth.BluetoothConnectionStatus connectionStatus, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromDeviceName([in] HSTRING deviceName, [out] [retval] HSTRING* deviceSelector);
                [overload("GetDeviceSelectorFromBluetoothAddress")] HRESULT GetDeviceSelectorFromBluetoothAddress([in] UINT64 bluetoothAddress, [out] [retval] HSTRING* deviceSelector);
                [overload("GetDeviceSelectorFromBluetoothAddress")] HRESULT GetDeviceSelectorFromBluetoothAddressWithBluetoothAddressType([in] UINT64 bluetoothAddress, [in] Windows.Devices.Bluetooth.BluetoothAddressType bluetoothAddressType, [out] [retval] HSTRING* deviceSelector);
                HRESULT GetDeviceSelectorFromAppearance([in] Windows.Devices.Bluetooth.BluetoothLEAppearance* appearance, [out] [retval] HSTRING* deviceSelector);
                [overload("FromBluetoothAddressAsync")] HRESULT FromBluetoothAddressWithBluetoothAddressTypeAsync([in] UINT64 bluetoothAddress, [in] Windows.Devices.Bluetooth.BluetoothAddressType bluetoothAddressType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.BluetoothLEDevice*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothSignalStrengthFilter)]
            [uuid(DF7B7391-6BB5-4CFE-90B1-5D7324EDCF7F)]
            interface IBluetoothSignalStrengthFilter : IInspectable
            {
                [propget] HRESULT InRangeThresholdInDBm([out] [retval] Windows.Foundation.IReference<INT16>** value);
                [propput] HRESULT InRangeThresholdInDBm([in] Windows.Foundation.IReference<INT16>* value);
                [propget] HRESULT OutOfRangeThresholdInDBm([out] [retval] Windows.Foundation.IReference<INT16>** value);
                [propput] HRESULT OutOfRangeThresholdInDBm([in] Windows.Foundation.IReference<INT16>* value);
                [propget] HRESULT OutOfRangeTimeout([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT OutOfRangeTimeout([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT SamplingInterval([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT SamplingInterval([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Devices.Bluetooth.BluetoothUuidHelper)]
            [uuid(17DF0CD8-CF74-4B21-AFE6-F57A11BCDEA0)]
            interface IBluetoothUuidHelperStatics : IInspectable
            {
                HRESULT FromShortId([in] UINT32 shortId, [out] [retval] GUID* result);
                HRESULT TryGetShortId([in] GUID uuid, [out] [retval] Windows.Foundation.IReference<UINT32>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothAdapterStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass BluetoothAdapter
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothAdapter;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Devices.Bluetooth.IBluetoothAdapter2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothClassOfDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BluetoothClassOfDevice
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothClassOfDevice;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Devices.Bluetooth.IBluetoothDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass BluetoothDevice
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothDevice;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.Bluetooth.IBluetoothDevice2;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Devices.Bluetooth.IBluetoothDevice3;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Devices.Bluetooth.IBluetoothDevice4;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Devices.Bluetooth.IBluetoothDevice5;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothDeviceIdStatics, Windows.Foundation.UniversalApiContract, 5.0)]
            [threading(both)]
            runtimeclass BluetoothDeviceId
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothDeviceId;
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothLEAppearanceStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass BluetoothLEAppearance
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothLEAppearance;
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothLEAppearanceCategoriesStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass BluetoothLEAppearanceCategories
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothLEAppearanceSubcategoriesStatics, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass BluetoothLEAppearanceSubcategories
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothLEDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Devices.Bluetooth.IBluetoothLEDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0)]
            [threading(both)]
            runtimeclass BluetoothLEDevice
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothLEDevice;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Devices.Bluetooth.IBluetoothLEDevice2;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Devices.Bluetooth.IBluetoothLEDevice3;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Devices.Bluetooth.IBluetoothLEDevice4;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Devices.Bluetooth.IBluetoothLEDevice5;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BluetoothSignalStrengthFilter
            {
                [default] interface Windows.Devices.Bluetooth.IBluetoothSignalStrengthFilter;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Bluetooth.IBluetoothUuidHelperStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass BluetoothUuidHelper
            {
            }
        }
    }
}
