using SIGCM2.Application.Common; using SIGCM2.Domain.Entities; namespace SIGCM2.Application.Abstractions.Persistence; public interface IUsuarioRepository { Task GetByUsernameAsync(string username); Task GetByIdAsync(int id, CancellationToken ct = default); Task ExistsByUsernameAsync(string username, CancellationToken ct = default); Task AddAsync(Usuario usuario, CancellationToken ct = default); // UDT-008 Task UpdateUltimoLoginAsync(int id, DateTime utcNow, CancellationToken ct = default); Task> GetPagedAsync(UsuariosQuery query, CancellationToken ct = default); Task GetDetailAsync(int id, CancellationToken ct = default); Task UpdateAsync(int id, UpdateUsuarioFields fields, DateTime fechaModificacion, CancellationToken ct = default); Task UpdatePasswordAsync(int id, string passwordHash, bool mustChangePassword, CancellationToken ct = default); Task CountActiveAdminsAsync(CancellationToken ct = default); // UDT-009 Task UpdatePermisosJsonAsync(int id, string permisosJson, DateTime fechaModificacion, CancellationToken ct = default); }