using CashLineERP.Contracts.Finance;
using CashLineERP.Contracts.Integration;

namespace CashLineERP.Application.Finance;

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

    GatewayCallbackReceiptResponse? GetCallback(long paymentChannelConfigurationId, long inboxMessageId);

    GatewayCallbackReceiveResultResponse Receive(GatewayCallbackReceiveRequest request);

    GatewayCallbackReceiptResponse ReplayCallback(long paymentChannelConfigurationId, long inboxMessageId, long actorUserId, ReplayDeadLetterQueueItemRequest request);

    ProcessGatewayCallbackBatchResultResponse ProcessCallbacks(long paymentChannelConfigurationId, ProcessGatewayCallbackBatchRequest request);
}
