using CashLineERP.Contracts.Finance;

namespace CashLineERP.Application.Finance;

public interface ICustomerRefundService
{
    IReadOnlyCollection<CustomerRefundResponse> GetRefunds(long? customerId = null);

    CustomerRefundResponse? GetRefund(long customerRefundId);

    CustomerRefundResponse CreateRefund(CreateCustomerRefundRequest request);

    CustomerRefundResponse SubmitRefund(long customerRefundId, long actorUserId);

    CustomerRefundResponse ApproveRefund(long customerRefundId, long actorUserId);

    CustomerRefundResponse ReturnRefund(long customerRefundId, long actorUserId, ReviewCustomerRefundRequest request);

    CustomerRefundResponse RejectRefund(long customerRefundId, long actorUserId, ReviewCustomerRefundRequest request);

    CustomerRefundResponse PostRefund(long customerRefundId, long actorUserId);

    CustomerRefundOrchestrationResponse GetRefundOrchestration(long customerRefundId);
}
