/** * OTP Extraction Utilities Module * * Provides comprehensive OTP (One-Time Password) extraction from email content * with support for various formats, providers, and confidence scoring. * * Follows golden-standard programming practices for maximal reliability * and accuracy in OTP extraction. */ import { OtpExtractionResult } from '../types'; /** * Known OTP providers and their patterns */ declare const OTP_PROVIDERS: { readonly GOOGLE: { readonly patterns: readonly [RegExp, RegExp, RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Google"; }; readonly GITHUB: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "GitHub"; }; readonly AWS: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "AWS"; }; readonly MICROSOFT: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Microsoft"; }; readonly APPLE: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Apple"; }; readonly FACEBOOK: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Facebook"; }; readonly TWITTER: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Twitter/X"; }; readonly SLACK: { readonly patterns: readonly [RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Slack"; }; readonly DISCORD: { readonly patterns: readonly [RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "Discord"; }; readonly LINKEDIN: { readonly patterns: readonly [RegExp, RegExp]; readonly codeLength: 6; readonly providerName: "LinkedIn"; }; readonly GENERIC: { readonly patterns: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp]; readonly codeLength: readonly [4, 6, 8]; readonly providerName: null; }; readonly ALPHANUMERIC: { readonly patterns: readonly [RegExp, RegExp, RegExp]; readonly codeLength: readonly [4, 6, 8, 10]; readonly providerName: null; readonly codeType: "alphanumeric"; }; }; /** * Expiration patterns for OTP codes */ declare const EXPIRATION_PATTERNS: RegExp[]; /** * Normalize text by removing HTML tags, extra whitespace, and normalizing line breaks */ declare function normalizeText(text: string): string; /** * Clean OTP code by removing non-digit or non-alphanumeric characters */ declare function cleanCode(code: string): string; /** * Parse expiration information from text */ declare function parseExpiration(text: string): { expiresAt: string | null; ttlSeconds: number | null; }; /** * Calculate confidence score based on various factors */ declare function calculateConfidence(provider: string | null, codeLength: number, patternMatches: number, codePosition: number, textLength: number): number; /** * Extract OTP codes from text using regex patterns */ declare function extractCodesFromText(text: string, providerPatterns?: typeof OTP_PROVIDERS[keyof typeof OTP_PROVIDERS]): { code: string; provider: string | null; type: string; patternIndex: number; }[]; /** * Extract all potential OTP codes from email content */ declare function extractAllPotentialCodes(text: string): OtpExtractionResult[]; /** * Find OTP using the default pattern from types */ declare function findOtpWithDefaultPattern(text: string): OtpExtractionResult[]; /** * Extract OTP code from email body or text content * * This function intelligently searches for OTP codes using multiple strategies: * - Known provider patterns (Google, GitHub, AWS, etc.) * - Generic OTP patterns * - Alphanumeric code patterns * - Default regex pattern from security constants * * @param text - The email body or text to search * @param options - Extraction options * @returns Array of OTP extraction results, sorted by confidence */ export declare function extractOtpFromText(text: string, options?: { preferProvider?: string; minConfidence?: number; returnAll?: boolean; }): OtpExtractionResult[]; /** * Extract the most likely OTP code from email content * * @param text - The email body or text to search * @returns The highest confidence OTP result, or null if none found */ export declare function extractOtp(text: string): OtpExtractionResult | null; /** * Extract OTP code specifically from HTML email content * * @param html - HTML content to search * @returns The highest confidence OTP result, or null if none found */ export declare function extractOtpFromHtml(html: string): OtpExtractionResult | null; /** * Extract OTP from email subject line * * @param subject - Email subject to search * @returns The highest confidence OTP result, or null if none found */ export declare function extractOtpFromSubject(subject: string): OtpExtractionResult | null; /** * Validate that a code looks like a valid OTP * * @param code - The code to validate * @returns True if the code appears to be a valid OTP */ export declare function isValidOtpCode(code: string): boolean; /** * Extract OTP from structured email data * * @param email - Email content object * @returns The highest confidence OTP result, or null if none found */ export declare function extractOtpFromEmail(email: { subject?: string; body?: string; html?: string; }): OtpExtractionResult | null; /** * Extract OTP code from Google verification emails */ export declare function extractGoogleOtp(text: string): OtpExtractionResult | null; /** * Extract OTP code from GitHub verification emails */ export declare function extractGithubOtp(text: string): OtpExtractionResult | null; /** * Extract OTP code from AWS verification emails */ export declare function extractAwsOtp(text: string): OtpExtractionResult | null; /** * Extract OTP code from Microsoft verification emails */ export declare function extractMicrosoftOtp(text: string): OtpExtractionResult | null; /** * Extract OTP code from Apple verification emails */ export declare function extractAppleOtp(text: string): OtpExtractionResult | null; /** * Extract OTP codes from multiple text sources * * @param texts - Array of text strings to search * @returns Array of unique OTP results from all sources */ export declare function extractOtpFromMultiple(texts: string[]): OtpExtractionResult[]; export { OTP_PROVIDERS, EXPIRATION_PATTERNS, normalizeText, cleanCode, parseExpiration, calculateConfidence, extractCodesFromText, extractAllPotentialCodes, findOtpWithDefaultPattern, }; declare const _default: { extractOtp: typeof extractOtp; extractOtpFromText: typeof extractOtpFromText; extractOtpFromHtml: typeof extractOtpFromHtml; extractOtpFromSubject: typeof extractOtpFromSubject; extractOtpFromEmail: typeof extractOtpFromEmail; isValidOtpCode: typeof isValidOtpCode; extractGoogleOtp: typeof extractGoogleOtp; extractGithubOtp: typeof extractGithubOtp; extractAwsOtp: typeof extractAwsOtp; extractMicrosoftOtp: typeof extractMicrosoftOtp; extractAppleOtp: typeof extractAppleOtp; extractOtpFromMultiple: typeof extractOtpFromMultiple; }; export default _default; //# sourceMappingURL=otp.d.ts.map