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