/** * Backup Codes Authentication Provider * * Handles backup/recovery codes for 2FA scenarios. * These are one-time use codes provided to users for account recovery. * * P1 Feature: Backup codes are essential for 2FA recovery */ import type { AuthProvider, AuthResult } from './index.js'; import { type BackupCodesAuthConfig } from './index.js'; /** * Generates backup codes * @param count Number of codes to generate * @param groups Number of groups in each code (default 2) * @param digits Digits per group (default 4) * @returns Array of generated backup codes */ export declare function generateBackupCodes(count?: number, groups?: number, digits?: number): string[]; /** * Normalizes a backup code (removes spaces, converts to uppercase) * @param code Backup code to normalize */ export declare function normalizeBackupCode(code: string): string; /** * Validates backup code format * @param code Backup code to validate * @param groups Expected number of groups * @param digits Expected digits per group */ export declare function validateBackupCodeFormat(code: string, groups?: number, digits?: number): boolean; /** * Checks if a backup code matches (case-insensitive, ignores spaces and hyphens) * @param code Input code * @param validCode Valid code to compare against */ export declare function backupCodeMatches(code: string, validCode: string): boolean; /** * Backup Codes Authentication Provider */ export declare class BackupCodesProvider implements AuthProvider { readonly type: "backup_codes"; private usedCodes; private codeStates; authenticate(config: BackupCodesAuthConfig): Promise; /** * Marks a backup code as used */ markAsUsed(code: string): void; /** * Checks if a backup code has been used */ isCodeUsed(code: string): boolean; /** * Gets count of remaining unused codes */ getRemainingCount(totalCodes: number): number; /** * Generates a session token */ private generateSessionToken; /** * Validates backup code configuration */ validate(config: BackupCodesAuthConfig): Promise; /** * Clears cached backup code state */ clear(config: BackupCodesAuthConfig): Promise; /** * Clears all backup code states */ clearAllStates(): void; /** * Gets all used codes */ getUsedCodes(): string[]; /** * Resets a backup code (marks as unused) * Use with caution - typically codes should not be reusable */ resetCode(code: string): void; /** * Bulk sets codes as used */ markMultipleAsUsed(codes: string[]): void; private getCacheKey; } /** * Creates a backup codes provider instance */ export declare function createBackupCodesProvider(): BackupCodesProvider;