#pragma once

#include <cstdint>

namespace radar::drivers {

/**
 * @brief Unified RF switch interface consumed by the orchestrator.
 */
class SwitchDriver {
  public:
    virtual ~SwitchDriver() = default;

    /** @brief Open underlying transport and set initial switch state. */
    virtual void open() = 0;
    /** @brief Release driver resources. */
    virtual void close() = 0;
    /** @brief Number of selectable positions exposed by this switch. */
    [[nodiscard]] virtual auto position_count() const -> std::uint32_t = 0;
    /** @brief Switch to a 0-based position. */
    virtual void switch_to(std::uint32_t position) = 0;
};

}  // namespace radar::drivers
