#pragma once

#include <string>

#include "processing_live_config.hpp"
#include "shared_types.hpp"

namespace radar::processing {

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

    [[nodiscard]] virtual auto name() const -> std::string = 0;
    [[nodiscard]] virtual auto process(
        const ipc::SweepTraceBlock& trace,
        const ProcessingLiveConfig& live_config
    ) -> ipc::ResultPayload = 0;
};

}  // namespace radar::processing
