import { User, Session, LoginRequest, LoginResponse, RefreshTokenRequest, RefreshTokenResponse, MFASetupResponse, MFAVerifyRequest, MFAVerifyResponse, PasswordResetRequest, PasswordResetResponse, PasswordResetVerifyRequest, PasswordResetCompleteRequest, PasswordResetCompleteResponse, AccountLockoutConfig, UnlockAccountRequest, UnlockAccountResponse } from '../types'; import { UserService } from './UserService'; export declare class AuthService { private userService; private jwtSecret; private tokenExpiry; private refreshTokenExpiry; private lockoutConfig?; private sessions; private userSessions; private refreshTokens; private passwordResetService; private lockoutService; constructor(userService: UserService, jwtSecret: string, tokenExpiry?: string, refreshTokenExpiry?: string, lockoutConfig?: AccountLockoutConfig | undefined); login(request: LoginRequest): Promise; register(userData: { email: string; password: string; username: string; profile?: any; roles?: string[]; permissions?: string[]; }): Promise; logout(sessionId: string): Promise; refreshToken(request: RefreshTokenRequest): Promise; verifyToken(token: string): Promise; getCurrentUser(token: string): Promise; getUserSessions(userId: string): Promise; revokeSession(sessionId: string, userId: string): Promise; revokeAllSessions(userId: string): Promise; private createSession; private generateToken; private generateRefreshToken; private parseExpiry; private sanitizeUser; cleanupExpiredSessions(): Promise; getSessionStats(): Promise<{ total: number; active: number; expired: number; byUser: Record; }>; /** * Setup MFA for a user */ setupMFA(userId: string): Promise; /** * Verify MFA setup code and enable MFA */ verifyMFASetup(userId: string, request: MFAVerifyRequest): Promise; /** * Verify MFA code during login */ verifyMFA(userId: string, request: MFAVerifyRequest): Promise; /** * Disable MFA for a user */ disableMFA(userId: string): Promise; /** * Get MFA status for a user */ getMFAStatus(userId: string): Promise<{ enabled: boolean; backupCodesCount: number; lastUsed?: Date; }>; /** * Generate new backup codes for MFA */ regenerateBackupCodes(userId: string): Promise; /** * Request password reset */ requestPasswordReset(request: PasswordResetRequest): Promise; /** * Verify password reset token */ verifyPasswordResetToken(request: PasswordResetVerifyRequest): Promise<{ valid: boolean; message: string; }>; /** * Complete password reset */ completePasswordReset(request: PasswordResetCompleteRequest): Promise; /** * Get password reset statistics */ getPasswordResetStats(): { total: number; active: number; expired: number; used: number; }; /** * Clean up expired password reset tokens */ cleanupExpiredPasswordResetTokens(): Promise; /** * Unlock an account (admin function) */ unlockAccount(request: UnlockAccountRequest, unlockedBy: string): Promise; /** * Get lockout status for a user */ getLockoutStatus(userId: string): Promise<{ isLocked: boolean; lockedUntil?: Date; attempts?: number; }>; /** * Get lockout statistics */ getLockoutStats(): { totalLocked: number; totalAttempts: number; averageAttempts: number; byReason: Record; }; /** * Get lockout record for a user */ getLockoutRecord(userId: string): import("./AccountLockoutService").LockoutRecord | null; /** * Clean up expired lockout records */ cleanupExpiredLockoutRecords(): Promise; /** * Update lockout configuration */ updateLockoutConfig(newConfig: Partial): void; /** * Get current lockout configuration */ getLockoutConfig(): AccountLockoutConfig; /** * Get sessions by device type */ getSessionsByDevice(userId: string, deviceType?: string): Promise; /** * Get session analytics for a user */ getSessionAnalytics(userId: string): Promise<{ totalSessions: number; activeSessions: number; byDevice: Record; byLocation: Record; averageSessionDuration: number; lastActivity: Date | null; }>; /** * Revoke sessions by device type */ revokeSessionsByDevice(userId: string, deviceType: string): Promise; /** * Revoke all sessions except current */ revokeAllOtherSessions(userId: string, currentSessionId: string): Promise; /** * Get session statistics across all users */ getGlobalSessionStats(): Promise<{ totalSessions: number; activeSessions: number; expiredSessions: number; byDevice: Record; byUser: Record; averageSessionsPerUser: number; }>; } //# sourceMappingURL=AuthService.d.ts.map