using FlatRender.IdentitySvc.Models.Requests; using FlatRender.IdentitySvc.Models.Responses; namespace FlatRender.IdentitySvc.Application.Services.Interfaces; public interface IAuthService { Task RegisterAsync(RegisterRequest request, string? ipAddress); Task LoginAsync(LoginRequest request, string? ipAddress); Task RefreshAsync(string refreshToken); Task LogoutAsync(Guid sessionId, Guid userId); Task> GetSessionsAsync(Guid userId); Task RevokeSessionAsync(Guid sessionId, Guid userId); Task VerifyEmailAsync(string tokenHash, string code); Task VerifyPhoneAsync(string tokenHash, string code); Task RequestPasswordResetAsync(string tenantSlug, string? email, string? phone); Task ConfirmPasswordResetAsync(string token, string newPassword); Task ChangePasswordAsync(Guid userId, string currentPassword, string newPassword); Task SetupMfaAsync(Guid userId, string factorType, string? label); Task VerifyMfaAsync(Guid userId, Guid factorId, string code); Task ChallengeMfaAsync(string mfaToken, string code); Task SubscribePushAsync(Guid userId, Guid tenantId, string endpoint, string p256dh, string auth, string? userAgent); Task UnsubscribePushAsync(Guid userId, string? endpoint); }