#include "fesa/results/results_writer.hpp"

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

#include <filesystem>
#include <type_traits>
#include <vector>

namespace {

using WriteSignature = fesa::Status (fesa::ResultsWriter::*)(
    const std::filesystem::path&,
    const fesa::Domain&,
    const fesa::AnalysisState&,
    const std::vector<fesa::Diagnostic>&);

static_assert(std::has_virtual_destructor_v<fesa::ResultsWriter>);
static_assert(std::is_abstract_v<fesa::ResultsWriter>);
static_assert(std::is_same_v<decltype(&fesa::ResultsWriter::write), WriteSignature>);

} // namespace
