import type { AppliedDataSemantic } from '../Semantics.js';
import { SemanticType } from '../Semantics.js';
/**
 * Configuration options for the Email semantic.
 * Controls validation, allowed domains, and verification.
 */
export interface EmailConfig {
    /**
     * List of allowed email domains (e.g., ['example.com']).
     */
    allowedDomains?: string[];
    /**
     * Whether email verification is required.
     */
    requireVerification?: boolean;
    /**
     * Whether to allow subaddressing (user+tag@domain.com).
     */
    allowSubaddressing?: boolean;
    /**
     * Whether to allow internationalized email addresses.
     *
     * - When true (default): Allows email addresses with non-ASCII characters in the domain part,
     *   like user@münchen.de or user@café.com
     * - When false: Only allows ASCII characters in the domain part, like user@example.com
     *
     * Why it exists:
     * - Internationalization: Many countries have domain names with native characters (like German umlauts,
     *   French accents, etc.)
     * - RFC 6531: The standard for internationalized email addresses
     * - Validation flexibility: Some systems may need to restrict to ASCII-only domains for compatibility reasons
     */
    allowInternational?: boolean;
    /**
     * Custom metadata for the email field.
     */
    metadata?: Record<string, unknown>;
    /**
     * Index signature to allow additional properties.
     */
    [key: string]: unknown;
}
/**
 * Type-safe configuration for Email semantic.
 */
export interface AppliedEmailSemantic extends AppliedDataSemantic {
    id: SemanticType.Email;
    config?: EmailConfig;
}
/**
 * Type guard to check if a semantic is an Email semantic.
 */
export declare const isEmailSemantic: (semantic: AppliedDataSemantic) => semantic is AppliedEmailSemantic;
/**
 * Helper function to create an Email semantic with configuration.
 */
export declare const createEmailSemantic: (config?: EmailConfig) => AppliedEmailSemantic;
/**
 * Default configuration for Email semantic.
 */
export declare const DEFAULT_EMAIL_CONFIG: EmailConfig;
//# sourceMappingURL=Email.d.ts.map