1 #pragma once
2 
3 #include "interfaces/report.hpp"
4 #include "interfaces/report_manager.hpp"
5 #include "interfaces/types.hpp"
6 
7 #include <chrono>
8 #include <memory>
9 
10 class ReportManager;
11 
12 namespace interfaces
13 {
14 
15 class ReportFactory
16 {
17   public:
18     virtual ~ReportFactory() = default;
19 
20     virtual std::unique_ptr<interfaces::Report>
21         make(const std::string& name, const std::string& reportingType,
22              bool emitsReadingsSignal, bool logToMetricReportsCollection,
23              std::chrono::milliseconds period,
24              const ReadingParameters& metricParams,
25              ReportManager& reportManager) const = 0;
26 };
27 
28 } // namespace interfaces
29