@allan1361/iota-big3-sdk-middleware
Version:
🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability
69 lines • 2.22 kB
TypeScript
import type { Logger } from '@iota-big3/sdk-types';
import type { Result } from '@iota-big3/sdk-patterns';
export type MFAMethod = 'totp' | 'sms' | 'email' | 'backup';
export interface MFAConfig {
issuer: string;
otpWindow?: number;
backupCodeCount?: number;
smsProvider?: SMSProvider;
emailProvider?: EmailProvider;
trustedDeviceExpiry?: number;
}
export interface SMSProvider {
send(phone: string, code: string): Promise<void>;
}
export interface EmailProvider {
send(email: string, code: string): Promise<void>;
}
export interface MFASetup {
method: MFAMethod;
secret?: string;
qrCode?: string;
backupCodes?: string[];
}
export interface MFAChallenge {
challengeId: string;
method: MFAMethod;
expiresAt: Date;
attempts: number;
maxAttempts: number;
}
export interface TrustedDevice {
id: string;
name: string;
fingerprint: string;
trustedAt: Date;
expiresAt: Date;
lastUsedAt: Date;
}
export declare class MFAService {
private config;
private logger?;
private challenges;
private userSecrets;
private trustedDevices;
constructor(config: MFAConfig, logger?: Logger);
setupMFAAsync(userId: string, method: MFAMethod): Promise<MFASetup>;
private setupTOTPAsync;
private setupBackupCodesAsync;
createChallengeAsync(userId: string, method: MFAMethod): Promise<Result<MFAChallenge, Error>>;
verifyChallengeAsync(userId: string, challengeId: string, code: string): Promise<boolean>;
private verifyTOTP;
private verifyCode;
private verifyBackupCodeAsync;
isDeviceTrusted(userId: string, deviceFingerprint: string): boolean;
trustDevice(userId: string, deviceName: string, deviceFingerprint: string): TrustedDevice;
removeTrustedDevice(): void;
getTrustedDevices(userId: string): TrustedDevice[];
private storeUserSecret;
private getUserSecret;
private clearUserSecret;
private generateVerificationCode;
private generateBackupCode;
private hashBackupCode;
private generateChallengeId;
private generateDeviceId;
private createMockSMSProvider;
private createMockEmailProvider;
}
//# sourceMappingURL=mfa-service.d.ts.map