namespace TeleWave.Application.Common.Interfaces;

/// <summary>
/// Сигнал «появилась работа» для фонового обработчика. Источник истины — статус ассета в БД
/// (обработчик всегда берёт следующий Pending из базы), а очередь лишь будит его без задержки;
/// поэтому потеря сигнала при рестарте не теряет задачи — они подхватываются из БД.
/// </summary>
public interface IMediaProcessingQueue
{
    /// <summary>Разбудить обработчик: появился ассет в статусе Pending.</summary>
    void Enqueue(Guid assetId);

    /// <summary>Ждать сигнала о новой работе (с дренажом накопленных).</summary>
    ValueTask WaitAsync(CancellationToken cancellationToken);
}
