#pragma once #include "interfaces/subscriber.hpp" #include #include template class IPublisher { public: virtual ~IPublisher() noexcept = default; virtual void subscribe(const Event &event, const std::shared_ptr> &subscriber) noexcept = 0; virtual void notify_subscribers(const Event &event, const Context &context) const noexcept = 0; };