using System.Threading;
using Svrnty.CQRS.Events.Abstractions.Delivery;
using Svrnty.CQRS.Events.Abstractions.EventStore;
using System.Threading.Tasks;
namespace Svrnty.CQRS.Events.Abstractions.Delivery;
///
/// Service responsible for delivering events to subscribers.
/// Handles filtering, delivery mode logic, and terminal event detection.
///
public interface IEventDeliveryService
{
///
/// Deliver an event to all interested subscribers.
///
/// The event to deliver.
/// The sequence number assigned to this event.
/// Cancellation token.
Task DeliverEventAsync(ICorrelatedEvent @event, long sequence, CancellationToken cancellationToken = default);
}