namespace Wood.EventBus { public interface IEventBus { void Subscribe(TH handler) where T : IntegrationEvent where TH : IIntegrationEventHandler; void Unsubscribe() where T : IntegrationEvent where TH : IIntegrationEventHandler; Task PublishAsync(T @event) where T : IntegrationEvent; void Publish(T @event) where T : IntegrationEvent; } }