using Domain.Entities;
using Features.Auth.Dtos;
namespace Features.Auth.Repository;
///
/// Repository for authentication-related database operations including user registration and credential management.
///
public interface IAuthRepository
{
Task RegisterUserAsync(UserRegistrationDto userRegistrationDto);
Task GetUserByEmailAsync(string email);
Task GetUserByUsernameAsync(string username);
Task GetActiveCredentialByUserAccountIdAsync(Guid userAccountId);
/// Rotates a user's credential by invalidating all existing credentials and creating a new one.
Task RotateCredentialAsync(Guid userAccountId, string newPasswordHash);
/// Marks a user account as confirmed. Idempotent if the account is already verified.
Task ConfirmUserAccountAsync(Guid userAccountId);
Task GetUserByIdAsync(Guid userAccountId);
Task IsUserVerifiedAsync(Guid userAccountId);
}