using CashLineERP.Contracts.Integration;

namespace CashLineERP.Application.Finance;

public interface IGatewayCallbackRepository
{
    IReadOnlyCollection<GatewayCallbackReceiptView> GetCallbacks(long paymentChannelConfigurationId, string? statusCode = null);

    GatewayCallbackReceiptView? GetCallback(long paymentChannelConfigurationId, long inboxMessageId);

    GatewayCallbackReceiveResultView Receive(GatewayCallbackReceiveCommand command);

    GatewayCallbackReceiptView Replay(long paymentChannelConfigurationId, long inboxMessageId, long actorUserId, ReplayDeadLetterQueueItemRequest request);

    ProcessGatewayCallbackBatchResultView ProcessCallbacks(ProcessGatewayCallbackBatchCommand command);
}
