using ERPCore.Domain.Entities;

namespace ERPCore.Services.Interfaces;

/// <summary>
/// Payroll calculation domain service (FR-HR-PAY-05) — the payroll analog of
/// <see cref="Services.Stock.IFifoCostingService"/>. Computes one <see cref="PayrollLine"/>
/// (with its <see cref="PayrollLineComponent"/> breakdown) per employee per period,
/// per the formula in docs/12-BACKEND-HRM.md B.4. Never invoked from a controller directly.
/// </summary>
public interface IPayrollCalculationService
{
    Task<PayrollLine> CalculateAsync(Employee employee, int periodYear, int periodMonth, CancellationToken ct = default);
}
