// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://webbluetoothcg.github.io/web-bluetooth/#idl-def-bluetoothuuid

// Implement BluetoothUUID: http://crbug.com/491441
// Significant TODOs remain in BluetoothUUID.cpp.

[
    GarbageCollected,
    RuntimeEnabled=WebBluetooth,
] interface BluetoothUUID {
    [RaisesException] static UUID getService((DOMString or unsigned long) name);
    [RaisesException] static UUID getCharacteristic((DOMString or unsigned long) name);
    [RaisesException] static UUID getDescriptor((DOMString or unsigned long) name);

    static UUID canonicalUUID([EnforceRange] unsigned long alias);
};

typedef DOMString UUID;

typedef (DOMString or unsigned long) BluetoothServiceUUID;

typedef (DOMString or unsigned long) BluetoothCharacteristicUUID;

typedef (DOMString or unsigned long) BluetoothDescriptorUUID;
