#pragma once

#include <string>
#include <vector>

#include "shared_types.hpp"

namespace radar::preprocessing {

class CalibratorInterface {
  public:
    virtual ~CalibratorInterface() = default;

    [[nodiscard]] virtual auto name() const -> std::string = 0;
    [[nodiscard]] virtual auto apply(
        const std::vector<ipc::Complex32>& measured,
        const std::vector<ipc::Complex32>& calibration
    ) const -> std::vector<ipc::Complex32> = 0;
};

}  // namespace radar::preprocessing
