176833cb5SWludzik, Jozef #pragma once
276833cb5SWludzik, Jozef 
3*a4e67616SCezary Zwolak #include "interfaces/json_storage.hpp"
476833cb5SWludzik, Jozef #include "interfaces/trigger.hpp"
576833cb5SWludzik, Jozef #include "interfaces/trigger_manager.hpp"
676833cb5SWludzik, Jozef #include "interfaces/trigger_types.hpp"
776833cb5SWludzik, Jozef 
81477fe6aSWludzik, Jozef #include <boost/asio/spawn.hpp>
9d960e1f3SWludzik, Jozef #include <sdbusplus/message/types.hpp>
101477fe6aSWludzik, Jozef 
1176833cb5SWludzik, Jozef #include <memory>
1276833cb5SWludzik, Jozef #include <utility>
1376833cb5SWludzik, Jozef 
1476833cb5SWludzik, Jozef namespace interfaces
1576833cb5SWludzik, Jozef {
1676833cb5SWludzik, Jozef 
1776833cb5SWludzik, Jozef class TriggerFactory
1876833cb5SWludzik, Jozef {
1976833cb5SWludzik, Jozef   public:
2076833cb5SWludzik, Jozef     virtual ~TriggerFactory() = default;
2176833cb5SWludzik, Jozef 
2276833cb5SWludzik, Jozef     virtual std::unique_ptr<interfaces::Trigger> make(
231477fe6aSWludzik, Jozef         boost::asio::yield_context& yield, const std::string& name,
241477fe6aSWludzik, Jozef         bool isDiscrete, bool logToJournal, bool logToRedfish,
251477fe6aSWludzik, Jozef         bool updateReport,
2676833cb5SWludzik, Jozef         const std::vector<
2776833cb5SWludzik, Jozef             std::pair<sdbusplus::message::object_path, std::string>>& sensors,
2876833cb5SWludzik, Jozef         const std::vector<std::string>& reportNames,
2976833cb5SWludzik, Jozef         const TriggerThresholdParams& thresholdParams,
30*a4e67616SCezary Zwolak         interfaces::TriggerManager& triggerManager,
31*a4e67616SCezary Zwolak         interfaces::JsonStorage& triggerStorage) const = 0;
3276833cb5SWludzik, Jozef };
3376833cb5SWludzik, Jozef 
3476833cb5SWludzik, Jozef } // namespace interfaces
35