namespace CashLineERP.Application.Finance;

public interface IPaymentSettlementBatchRepository
{
    IReadOnlyCollection<PaymentSettlementBatchDetailView> GetBatches(long? paymentChannelConfigurationId = null);
    PaymentSettlementBatchDetailView? GetBatch(long paymentSettlementBatchId);
    PaymentSettlementBatchDetailView Create(CreatePaymentSettlementBatchCommand command);
    PaymentSettlementBatchDetailView Submit(long paymentSettlementBatchId, long actorUserId);
    PaymentSettlementBatchDetailView Approve(long paymentSettlementBatchId, long actorUserId);
    PaymentSettlementBatchDetailView Post(long paymentSettlementBatchId, long actorUserId);
    IReadOnlyCollection<PaymentSettlementExceptionView> GetExceptions(long? paymentSettlementBatchId = null, string? statusCode = null);
    PaymentSettlementExceptionView? GetException(long paymentSettlementExceptionId);
    PaymentSettlementExceptionView ConfirmException(long paymentSettlementExceptionId, ResolvePaymentSettlementExceptionCommand command);
    PaymentSettlementExceptionView OverrideException(long paymentSettlementExceptionId, ResolvePaymentSettlementExceptionCommand command);
}
