1 #pragma once
2 
3 #include "types/collection_duration.hpp"
4 #include "types/collection_time_scope.hpp"
5 #include "types/operation_type.hpp"
6 #include "types/sensor_types.hpp"
7 #include "utils/labeled_tuple.hpp"
8 #include "utils/tstring.hpp"
9 
10 #include <sdbusplus/message/types.hpp>
11 
12 #include <chrono>
13 #include <string>
14 #include <tuple>
15 #include <type_traits>
16 #include <variant>
17 #include <vector>
18 
19 using ReadingParameters = std::vector<std::tuple<
20     std::vector<std::tuple<sdbusplus::message::object_path, std::string>>,
21     std::string, std::string, uint64_t>>;
22 
23 using LabeledMetricParameters = utils::LabeledTuple<
24     std::tuple<std::vector<LabeledSensorInfo>, OperationType,
25                CollectionTimeScope, CollectionDuration>,
26     utils::tstring::SensorPath, utils::tstring::OperationType,
27     utils::tstring::CollectionTimeScope, utils::tstring::CollectionDuration>;
28 
29 using AddReportVariant =
30     std::variant<std::monostate, bool, uint64_t, std::string,
31                  std::vector<std::string>, ReadingParameters>;
32 
33 ReadingParameters
34     toReadingParameters(const std::vector<LabeledMetricParameters>& labeled);
35