#pragma once

#include "fesa/analysis/analysis_state.hpp"
#include "fesa/core/diagnostic.hpp"
#include "fesa/core/status.hpp"
#include "fesa/model/domain.hpp"

#include <filesystem>
#include <vector>

namespace fesa {

// Keeps the solver core independent of the authoritative result-storage backend.
class ResultsWriter {
public:
    virtual ~ResultsWriter() = default;

    virtual Status write(
        const std::filesystem::path& outputPath,
        const Domain& domain,
        const AnalysisState& state,
        const std::vector<Diagnostic>& diagnostics) = 0;
};

} // namespace fesa
