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

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Advertisement
            {
                typedef enum BluetoothLEAdvertisementPublisherStatus BluetoothLEAdvertisementPublisherStatus;

                runtimeclass BluetoothLEAdvertisementReceivedEventArgs;
            }
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            runtimeclass BluetoothDevice;

            typedef enum BluetoothError BluetoothError;

            typedef enum BluetoothServiceCapabilities BluetoothServiceCapabilities;

            runtimeclass BluetoothSignalStrengthFilter;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace GenericAttributeProfile
            {
                runtimeclass GattCharacteristic;

                runtimeclass GattLocalService;

                runtimeclass GattServiceProviderAdvertisingParameters;

                runtimeclass GattValueChangedEventArgs;
            }
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Rfcomm
            {
                runtimeclass RfcommServiceId;
            }
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace Sockets
        {
            runtimeclass StreamSocket;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Background
            {
                typedef enum BluetoothEventTriggeringMode BluetoothEventTriggeringMode;

                interface IBluetoothLEAdvertisementPublisherTriggerDetails;

                interface IBluetoothLEAdvertisementPublisherTriggerDetails2;

                interface IBluetoothLEAdvertisementWatcherTriggerDetails;

                interface IGattCharacteristicNotificationTriggerDetails;

                interface IGattCharacteristicNotificationTriggerDetails2;

                interface IGattServiceProviderConnection;

                interface IGattServiceProviderConnection2;

                interface IGattServiceProviderConnectionStatics;

                interface IGattServiceProviderTriggerDetails;

                interface IRfcommConnectionTriggerDetails;

                interface IRfcommInboundConnectionInformation;

                interface IRfcommOutboundConnectionInformation;

                runtimeclass BluetoothLEAdvertisementPublisherTriggerDetails;

                runtimeclass BluetoothLEAdvertisementWatcherTriggerDetails;

                runtimeclass GattCharacteristicNotificationTriggerDetails;

                runtimeclass GattServiceProviderConnection;

                runtimeclass GattServiceProviderTriggerDetails;

                runtimeclass RfcommConnectionTriggerDetails;

                runtimeclass RfcommInboundConnectionInformation;

                runtimeclass RfcommOutboundConnectionInformation;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Background
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Devices.Bluetooth.Background.GattServiceProviderConnection*>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Devices.Bluetooth.Background.GattServiceProviderConnection*>*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Devices.Bluetooth.Background.GattServiceProviderConnection*>;

                    interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Devices.Bluetooth.Background.GattServiceProviderConnection*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Bluetooth
        {
            namespace Background
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum BluetoothEventTriggeringMode
                {
                    Serial     = 0,
                    Batch      = 1,
                    KeepLatest = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementPublisherTriggerDetails)]
                [uuid(610ECA86-3480-41C9-A918-7DDADF207E00)]
                interface IBluetoothLEAdvertisementPublisherTriggerDetails : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementPublisherStatus* value);
                    [propget] HRESULT Error([out] [retval] Windows.Devices.Bluetooth.BluetoothError* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 10.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementPublisherTriggerDetails)]
                [uuid(D4A3D025-C601-42D6-9829-4CCB3F5CD77F)]
                interface IBluetoothLEAdvertisementPublisherTriggerDetails2 : IInspectable
                {
                    [propget] HRESULT SelectedTransmitPowerLevelInDBm([out] [retval] Windows.Foundation.IReference<INT16>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementWatcherTriggerDetails)]
                [uuid(A7DB5AD7-2257-4E69-9784-FEE645C1DCE0)]
                interface IBluetoothLEAdvertisementWatcherTriggerDetails : IInspectable
                {
                    [propget] HRESULT Error([out] [retval] Windows.Devices.Bluetooth.BluetoothError* value);
                    [propget] HRESULT Advertisements([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementReceivedEventArgs*>** value);
                    [propget] HRESULT SignalStrengthFilter([out] [retval] Windows.Devices.Bluetooth.BluetoothSignalStrengthFilter** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattCharacteristicNotificationTriggerDetails)]
                [uuid(9BA03B18-0FEC-436A-93B1-F46C697532A2)]
                interface IGattCharacteristicNotificationTriggerDetails : IInspectable
                {
                    [propget] HRESULT Characteristic([out] [retval] Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristic** value);
                    [propget] HRESULT Value([out] [retval] Windows.Storage.Streams.IBuffer** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattCharacteristicNotificationTriggerDetails)]
                [uuid(727A50DC-949D-454A-B192-983467E3D50F)]
                interface IGattCharacteristicNotificationTriggerDetails2 : IInspectable
                {
                    [propget] HRESULT Error([out] [retval] Windows.Devices.Bluetooth.BluetoothError* value);
                    [propget] HRESULT EventTriggeringMode([out] [retval] Windows.Devices.Bluetooth.Background.BluetoothEventTriggeringMode* value);
                    [propget] HRESULT ValueChangedEvents([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Bluetooth.GenericAttributeProfile.GattValueChangedEventArgs*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattServiceProviderConnection)]
                [uuid(7FA1B9B9-2F13-40B5-9582-8EB78E98EF13)]
                interface IGattServiceProviderConnection : IInspectable
                {
                    [propget] HRESULT TriggerId([out] [retval] HSTRING* value);
                    [propget] HRESULT Service([out] [retval] Windows.Devices.Bluetooth.GenericAttributeProfile.GattLocalService** value);
                    HRESULT Start();
                }

                [contract(Windows.Foundation.UniversalApiContract, 19.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattServiceProviderConnection)]
                [uuid(90D12BE0-EBC0-484F-AE0A-7EB8B6266BAC)]
                interface IGattServiceProviderConnection2 : IInspectable
                {
                    HRESULT UpdateAdvertisingParameters([in] Windows.Devices.Bluetooth.GenericAttributeProfile.GattServiceProviderAdvertisingParameters* parameters);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattServiceProviderConnection)]
                [uuid(3D509F4B-0B0E-4466-B8CD-6EBDDA1FA17D)]
                interface IGattServiceProviderConnectionStatics : IInspectable
                {
                    [propget] HRESULT AllServices([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Devices.Bluetooth.Background.GattServiceProviderConnection*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.GattServiceProviderTriggerDetails)]
                [uuid(AE8C0625-05FF-4AFB-B16A-DE95F3CF0158)]
                interface IGattServiceProviderTriggerDetails : IInspectable
                {
                    [propget] HRESULT Connection([out] [retval] Windows.Devices.Bluetooth.Background.GattServiceProviderConnection** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.RfcommConnectionTriggerDetails)]
                [uuid(F922734D-2E3C-4EFC-AB59-FC5CF96F97E3)]
                interface IRfcommConnectionTriggerDetails : IInspectable
                {
                    [propget] HRESULT Socket([out] [retval] Windows.Networking.Sockets.StreamSocket** value);
                    [propget] HRESULT Incoming([out] [retval] boolean* value);
                    [propget] HRESULT RemoteDevice([out] [retval] Windows.Devices.Bluetooth.BluetoothDevice** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.RfcommInboundConnectionInformation)]
                [uuid(6D3E75A8-5429-4059-92E3-1E8B65528707)]
                interface IRfcommInboundConnectionInformation : IInspectable
                {
                    [propget] HRESULT SdpRecord([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propput] HRESULT SdpRecord([in] Windows.Storage.Streams.IBuffer* value);
                    [propget] HRESULT LocalServiceId([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** value);
                    [propput] HRESULT LocalServiceId([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* value);
                    [propget] HRESULT ServiceCapabilities([out] [retval] Windows.Devices.Bluetooth.BluetoothServiceCapabilities* value);
                    [propput] HRESULT ServiceCapabilities([in] Windows.Devices.Bluetooth.BluetoothServiceCapabilities value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Devices.Bluetooth.Background.RfcommOutboundConnectionInformation)]
                [uuid(B091227B-F434-4CB0-99B1-4AB8CEDAEDD7)]
                interface IRfcommOutboundConnectionInformation : IInspectable
                {
                    [propget] HRESULT RemoteServiceId([out] [retval] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId** value);
                    [propput] HRESULT RemoteServiceId([in] Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass BluetoothLEAdvertisementPublisherTriggerDetails
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IBluetoothLEAdvertisementPublisherTriggerDetails;
                    [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Devices.Bluetooth.Background.IBluetoothLEAdvertisementPublisherTriggerDetails2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass BluetoothLEAdvertisementWatcherTriggerDetails
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IBluetoothLEAdvertisementWatcherTriggerDetails;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass GattCharacteristicNotificationTriggerDetails
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IGattCharacteristicNotificationTriggerDetails;
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Devices.Bluetooth.Background.IGattCharacteristicNotificationTriggerDetails2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Bluetooth.Background.IGattServiceProviderConnectionStatics, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass GattServiceProviderConnection
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IGattServiceProviderConnection;
                    [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Devices.Bluetooth.Background.IGattServiceProviderConnection2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass GattServiceProviderTriggerDetails
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IGattServiceProviderTriggerDetails;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RfcommConnectionTriggerDetails
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IRfcommConnectionTriggerDetails;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RfcommInboundConnectionInformation
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IRfcommInboundConnectionInformation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass RfcommOutboundConnectionInformation
                {
                    [default] interface Windows.Devices.Bluetooth.Background.IRfcommOutboundConnectionInformation;
                }
            }
        }
    }
}
