/**
 * @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<boolean>;
/**
 * 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