/** * @module @arcis/node/validation/email * Advanced email validation with disposable detection and typo suggestions. * * Three levels of validation: * 1. Syntax — RFC-compliant format checking * 2. Domain intelligence — disposable/free provider detection, typo correction * 3. MX verification — DNS MX record lookup (async, optional) * * @example * const result = validateEmail('user@tempmail.com'); * // { valid: false, reason: 'disposable' } * * const result = validateEmail('user@gmial.com'); * // { valid: true, reason: 'typo', suggestion: 'user@gmail.com' } */ export interface EmailValidationOptions { /** Check for disposable email providers. Default: true */ checkDisposable?: boolean; /** Suggest corrections for typos. Default: true */ suggestTypoFix?: boolean; /** Verify MX records via DNS. Default: false */ checkMx?: boolean; /** Additional blocked domains */ blockedDomains?: string[]; /** Additional allowed domains (bypasses disposable check) */ allowedDomains?: string[]; } export interface EmailValidationResult { /** Whether the email is valid */ valid: boolean; /** Reason for the result */ reason: 'valid' | 'invalid_syntax' | 'disposable' | 'no_mx' | 'blocked' | 'typo'; /** Suggested correction if a typo was detected */ suggestion: string | null; /** Whether the domain is a free email provider */ isFree: boolean; /** Whether the domain is a disposable email provider */ isDisposable: boolean; /** The normalized email address */ normalized: string; } /** * Validate an email address with syntax checking, disposable detection, * and typo suggestions. * * @param email - Email address to validate * @param options - Validation options * @returns Validation result * * @example * validateEmail('user@gmail.com') * // { valid: true, reason: 'valid', isFree: true } * * validateEmail('user@tempmail.com') * // { valid: false, reason: 'disposable' } * * validateEmail('user@gmial.com') * // { valid: true, reason: 'typo', suggestion: 'user@gmail.com' } */ export declare function validateEmail(email: string, options?: EmailValidationOptions): EmailValidationResult; /** * Verify that the email domain has MX records (can receive email). * * This performs a DNS lookup and requires network access. * Use for registration flows where you need high confidence. * * @param email - Email address to verify * @returns True if the domain has MX records * * @example * if (await verifyEmailMx('user@example.com')) { * // Domain can receive email * } */ export declare function verifyEmailMx(email: string): Promise; /** * Quick check if an email address has valid syntax. * Faster than validateEmail() — just syntax, no domain intelligence. */ export declare function isValidEmailSyntax(email: string): boolean; //# sourceMappingURL=email.d.ts.map