#pragma once

#include "processor_interface.hpp"

namespace radar::processing {

class GprProcessor final : public ProcessorInterface {
  public:
    [[nodiscard]] auto name() const -> std::string override;
    [[nodiscard]] auto process_collection(
        const config::RunConfig& run_config,
        const ipc::PreprocessedCollection& collection,
        std::span<const ipc::PreprocessedCollection> previous_collections,
        const ProcessingLiveConfig& live_config
    ) -> ipc::ResultCollection override;
};

class LegacyGprProcessor final : public ProcessorInterface {
  public:
    [[nodiscard]] auto name() const -> std::string override;
    [[nodiscard]] auto process_collection(
        const config::RunConfig& run_config,
        const ipc::PreprocessedCollection& collection,
        std::span<const ipc::PreprocessedCollection> previous_collections,
        const ProcessingLiveConfig& live_config
    ) -> ipc::ResultCollection override;
};

}  // namespace radar::processing
