#ifndef FESA_RESULTS_THERMAL_RESULTS_WRITER_H_ #define FESA_RESULTS_THERMAL_RESULTS_WRITER_H_ #include #include #include "fesa/analysis/thermal_analysis_state.h" #include "fesa/core/diagnostic.h" #include "fesa/core/status.h" namespace fesa { class Domain; /// @brief Persists a complete accepted thermal history atomically. class ThermalResultsWriter { public: virtual ~ThermalResultsWriter() = default; /// @brief Writes every accepted thermal frame and diagnostics atomically. /// @note The Domain and immutable state must outlive this call. virtual Status Write(const std::filesystem::path& output_path, const Domain& domain, const ThermalAnalysisState& state, const std::vector& diagnostics) = 0; }; } // namespace fesa #endif // FESA_RESULTS_THERMAL_RESULTS_WRITER_H_