namespace Core::Bluetooth

namespace Bluetooth {

// enums

enum BluetoothErrorCodes;
enum CharacteristicProperties;
enum GattCentralState;
enum GattPeripheralStatus;

// structs

struct CharacteristicInfo;
struct GattCentralScanOptions;
struct IDFilter;
struct IGattCentral;
struct IGattCentralAttribute;
struct IGattCentralAttributeObserver;
struct IGattCentralCharacteristic;
struct IGattCentralCharacteristicObserver;
struct IGattCentralDescriptor;
struct IGattCentralDescriptorObserver;
struct IGattCentralDevice;
struct IGattCentralDeviceObserver;
struct IGattCentralFactory;
struct IGattCentralObserver;
struct IGattCentralService;
struct IGattCentralServiceObserver;
struct IGattPeripheral;
struct IGattPeripheralAttribute;
struct IGattPeripheralAttributeObserver;
struct IGattPeripheralCharacteristic;
struct IGattPeripheralCharacteristicObserver;
struct IGattPeripheralDescriptor;
struct IGattPeripheralDescriptorObserver;
struct IGattPeripheralFactory;
struct IGattPeripheralObserver;
struct IGattPeripheralService;
struct IGattPeripheralServiceObserver;

template <int kNumIds>
struct TIDFilter;

template <>
struct TIDFilter<0>;

// global variables

constexpr int kAttributeCapacity = 512;
static const UIDBytes kUserDescription = INLINE_UID(0x00002901, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb);
static const UIDBytes kServiceChanged = INLINE_UID(0x00002a05, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb);

} // namespace Bluetooth