using ERPCore.Common.Http;
using ERPCore.Domain.Enums;
using ERPCore.Dtos.Common;
using ERPCore.Dtos.Hrm;

namespace ERPCore.Services.Interfaces;

public interface ISalaryComponentService
{
    Task<PagedResponse<SalaryComponentDto>> ListAsync(PageQuery query, EntityStatus? status, CancellationToken ct = default);
    Task<ETagged<SalaryComponentDto>?> GetAsync(int salaryComponentId, CancellationToken ct = default);
    Task<ETagged<SalaryComponentDto>> CreateAsync(CreateSalaryComponentRequest request, CancellationToken ct = default);
    Task<ETagged<SalaryComponentDto>> UpdateAsync(int salaryComponentId, UpdateSalaryComponentRequest request, uint expectedRowVersion, CancellationToken ct = default);
    Task SetStatusAsync(int salaryComponentId, EntityStatus status, CancellationToken ct = default);
}
