namespace CashLineERP.Application.Integration;

public interface IOutboxEventRepository
{
    IReadOnlyCollection<OutboxEventDetailView> GetOutboxEvents(
        string? statusCode = null,
        string? sourceModuleCode = null);

    OutboxEventDetailView? GetOutboxEvent(long outboxEventId);

    PublishOutboxBatchResultView PublishPendingEvents(PublishOutboxBatchCommand command);

    OutboxEventDetailView MoveToDeadLetter(long outboxEventId, long actorUserId, string reasonText);

    OutboxEventDetailView Replay(long outboxEventId, long actorUserId, string replayReasonText, int delaySeconds);
}
