using DigitalData.EmailProfiler.Domain.Entities; namespace DigitalData.EmailProfiler.Application.Interfaces.Services; /// /// Email queue interface for asynchronous email sending. /// Current implementation: In-memory Channel<T> /// Future: RabbitMQ (see agents.md) /// public interface IEmailQueue { /// /// Enqueue an email for sending. /// Task EnqueueAsync(EmailOutbox email, CancellationToken cancellationToken = default); /// /// Dequeue an email for sending. /// Returns null if queue is empty. /// Task DequeueAsync(CancellationToken cancellationToken = default); /// /// Get current queue depth (number of pending emails). /// Task GetQueueDepthAsync(CancellationToken cancellationToken = default); }