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