using CashLineERP.Contracts.Notifications;

namespace CashLineERP.Application.Notifications;

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

    NotificationQueueItemResponse? GetQueueItem(long notificationQueueItemId);

    NotificationQueueItemResponse EnqueueNotification(long actorUserId, EnqueueNotificationRequest request);

    NotificationSendBatchResultResponse SendPendingBatch(NotificationSendBatchRequest request);

    NotificationQueueItemResponse MoveQueueItemToDeadLetter(long notificationQueueItemId, long actorUserId, NotificationDeadLetterRequest request);

    NotificationQueueItemResponse ReplayQueueItem(long notificationQueueItemId, long actorUserId, NotificationReplayRequest request);
}
