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); 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 RevokeTokenAsync(string tokenHash, CancellationToken ct = default); Task RevokeFamilyAsync(Guid familyId, CancellationToken ct = default); Task RemoveExpiredTokensAsync(Guid userId, CancellationToken ct = default); }