import { B as BaseTokenizer, T as TokenStream, a as TokenKind, L as LanguageProfile } from '../types-BY3Id07j.js';

/**
 * Arabic Tokenizer
 *
 * Tokenizes Arabic hyperscript input.
 * Arabic is challenging because:
 * - Right-to-left (RTL) text direction
 * - Prefix prepositions that attach to words (بـ, لـ, كـ)
 * - Root-pattern morphology
 * - CSS selectors are LTR islands within RTL text
 */

declare class ArabicTokenizer extends BaseTokenizer {
    readonly language = "ar";
    readonly direction: "rtl";
    constructor();
    tokenize(input: string): TokenStream;
    classifyToken(token: string): TokenKind;
    /**
     * Try to match an Arabic preposition.
     * Attaches prepositionValue metadata for disambiguation in pattern matching.
     */
    private tryPreposition;
    /**
     * Try to extract a proclitic (conjunction or preposition) that's attached to the following word.
     *
     * Arabic proclitics attach directly to words without space:
     * - والنقر → و + النقر (and + the-click)
     * - فالتبديل → ف + التبديل (then + the-toggle)
     * - بالنقر → ب + النقر (with + the-click)
     * - ولالنقر → و + ل + النقر (and + to + the-click)
     *
     * This enables:
     * - Polysyndetic coordination: A وB وC
     * - Attached prepositions: بالنقر (with-the-click)
     * - Multi-proclitic sequences: ولالنقر (and-to-the-click)
     *
     * Returns null if:
     * - Not a proclitic character/sequence
     * - Proclitic is standalone (followed by space)
     * - Remaining word is too short (< 2 chars, to avoid false positives)
     * - Full word is a recognized keyword (e.g., بدل should NOT be split to ب + دل)
     *
     * @see NATIVE_REVIEW_NEEDED.md for implementation rationale
     */
    private tryProclitic;
    /**
     * Extract an Arabic word.
     * Uses morphological normalization to handle prefix/suffix variations.
     * Attaches metadata for temporal markers (formality, confidence).
     */
    private extractArabicWord;
    /**
     * Extract an ASCII word.
     */
    private extractAsciiWord;
    /**
     * Extract a number, including Arabic time unit suffixes.
     * Arabic allows space between number and unit.
     */
    private extractArabicNumber;
}
/**
 * Singleton instance.
 */
declare const arabicTokenizer: ArabicTokenizer;

/**
 * Arabic Language Profile
 *
 * VSO word order, prepositions, RTL (right-to-left), space-separated.
 * Features root-based morphology and rich verb conjugation.
 */

declare const arabicProfile: LanguageProfile;

export { arabicProfile, arabicTokenizer };
