namespace CashLineERP.Application.Notifications;

public interface INotificationOrchestrationRepository
{
    IReadOnlyCollection<NotificationQueueItemDetailView> GetQueueItems(string? statusCode = null, string? channelCode = null);

    NotificationQueueItemDetailView? GetQueueItem(long notificationQueueItemId);

    NotificationQueueItemDetailView Enqueue(EnqueueNotificationCommand command);

    NotificationSendBatchResultView SendPendingBatch(NotificationSendBatchCommand command);

    NotificationQueueItemDetailView MoveToDeadLetter(long notificationQueueItemId, long actorUserId, string reasonText);

    NotificationQueueItemDetailView Replay(long notificationQueueItemId, long actorUserId, string replayReasonText, int delaySeconds);
}
