#pragma once #include "interfaces/publisher.hpp" #include "interfaces/subscriber.hpp" #include #include // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class IInputHandler : public IPublisher { public: using Event = char; using Context = std::nullptr_t; ~IInputHandler() noexcept override = default; virtual void listen() const noexcept = 0; void subscribe( const Event &event, const std::shared_ptr> &subscriber) noexcept override = 0; void notify_subscribers(const Event &event, const Context &context) const noexcept override = 0; virtual void enter_raw_mode() noexcept = 0; virtual void leave_raw_mode() noexcept = 0; };