#nullable enable using System; using System.Threading; using Cysharp.Threading.Tasks; namespace ShrinkEventBus { public interface IShrinkEventBus : IDisposable { ShrinkBusKey Key { get; } ShrinkBusOptions Options { get; } ShrinkPostResult Post(in TEvent eventData) where TEvent : IShrinkEvent; UniTask PostAsync(TEvent eventData, CancellationToken cancellationToken = default) where TEvent : IShrinkEvent; IDisposable Attach(object target); } }