namespace Toolkit.Foundation; public interface IPublisher { void Publish(object? key = null) where TMessage : new(); void Publish(TMessage message) where TMessage : notnull; void Publish(TMessage message, object? key = null) where TMessage : notnull; void Publish(object message, Func, Task> marshal, object? key = null); void Publish() where TMessage : new(); void Publish(object message); void PublishUI(TMessage message, object? key = null) where TMessage : notnull; void PublishUI(object? key = null) where TMessage : new(); void PublishUI(TMessage message) where TMessage : notnull; void PublishUI(object message); void PublishUI() where TMessage : new(); }