#pragma once
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include <simpleble/Adapter.h>
#include <simpleble/export.h>
namespace SimpleBLE {
class BackendBase;
class SIMPLEBLE_EXPORT Backend {
public:
Backend() = default;
virtual ~Backend() = default;
bool initialized() const;
std::vector<Adapter> get_adapters();
bool bluetooth_enabled();
static std::optional<Backend> first_bluetooth_enabled();
std::string name() const noexcept;
static std::vector<Backend> get_backends();
protected:
BackendBase* operator->();
const BackendBase* operator->() const;
std::shared_ptr<BackendBase> internal_;
};
Backend get_enabled_backend();
}