using Nexus.Api.Data; namespace Nexus.Api.Repositories; public interface IUserRepository { ValueTask GetByIdAsync(Guid userId, CancellationToken ct = default); Task GetByEmailAsync(string normalizedEmail, CancellationToken ct = default); Task AnyUsersAsync(CancellationToken ct = default); Task AddAsync(NexusUser user, CancellationToken ct = default); Task UpdateAsync(NexusUser user, CancellationToken ct = default); // Refresh token operations Task GetRefreshTokenByHashAsync(string tokenHash, CancellationToken ct = default); Task> GetActiveTokensByFamilyAsync(Guid familyId, CancellationToken ct = default); Task AddRefreshTokenAsync(RefreshToken token, CancellationToken ct = default); Task UpdateRefreshTokenAsync(RefreshToken token, CancellationToken ct = default); Task RemoveExpiredTokensAsync(Guid userId, CancellationToken ct = default); Task SaveChangesAsync(CancellationToken ct = default); }