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);
}