text: #pragma once
  
  #include "persistent_json_storage.hpp"
  #include "report_factory.hpp"
  #include "report_manager.hpp"
  #include "sensor_cache.hpp"
  #include "trigger_factory.hpp"
  #include "trigger_manager.hpp"
  
  #include <sdbusplus/asio/connection.hpp>
  #include <sdbusplus/asio/object_server.hpp>
  
  #include <memory>
  
  class Telemetry
  {
    public:
      Telemetry(std::shared_ptr<sdbusplus::asio::connection> bus) :
          objServer(std::make_shared<sdbusplus::asio::object_server>(bus)),
          reportManager(
              std::make_unique<ReportFactory>(bus, objServer, sensorCache),
              std::make_unique<PersistentJsonStorage>(
                  interfaces::JsonStorage::DirectoryPath(
                      "/var/lib/telemetry/Reports")),
              objServer),
          triggerManager(std::make_unique<TriggerFactory>(
                             bus, objServer, sensorCache, reportManager),
                         std::make_unique<PersistentJsonStorage>(
                             interfaces::JsonStorage::DirectoryPath(
                                 "/var/lib/telemetry/Triggers")),
                         objServer)
      {}
  
    private:
      std::shared_ptr<sdbusplus::asio::object_server> objServer;
      mutable SensorCache sensorCache;
      ReportManager reportManager;
      TriggerManager triggerManager;
  };
  