#pragma once template struct IEventSource { virtual ~IEventSource() = default; virtual UUID STDMETHODCALLTYPE Listen(TEventType event, std::function function) noexcept = 0; virtual void STDMETHODCALLTYPE Unlisten(TEventType event, UUID uuid) noexcept = 0; };