namespace SpaceGame.Api.Auth.Simulation; public interface IAuthRepository { Task FindUserByEmailAsync(string email, CancellationToken cancellationToken); Task FindUserByIdAsync(Guid userId, CancellationToken cancellationToken); Task CreateUserAsync(string email, string passwordHash, IReadOnlyCollection roles, CancellationToken cancellationToken); Task UpsertUserAsync(string email, string passwordHash, IReadOnlyCollection roles, CancellationToken cancellationToken); Task StoreRefreshTokenAsync(Guid userId, string tokenHash, DateTimeOffset expiresAtUtc, CancellationToken cancellationToken); Task FindRefreshTokenAsync(string tokenHash, CancellationToken cancellationToken); Task RevokeRefreshTokenAsync(Guid refreshTokenId, CancellationToken cancellationToken); Task RevokeAllRefreshTokensAsync(Guid userId, CancellationToken cancellationToken); Task StorePasswordResetTokenAsync(Guid userId, string tokenHash, DateTimeOffset expiresAtUtc, CancellationToken cancellationToken); Task FindPasswordResetTokenAsync(string tokenHash, CancellationToken cancellationToken); Task ConsumePasswordResetTokenAsync(Guid passwordResetTokenId, CancellationToken cancellationToken); Task UpdatePasswordHashAsync(Guid userId, string passwordHash, CancellationToken cancellationToken); }