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

/**
 * Japanese Tokenizer
 *
 * Tokenizes Japanese hyperscript input.
 * Japanese is challenging because:
 * - No spaces between words
 * - Particles (助詞) mark grammatical roles
 * - Mixed scripts (hiragana, katakana, kanji, romaji)
 * - CSS selectors are embedded ASCII
 */

declare class JapaneseTokenizer extends BaseTokenizer {
    readonly language = "ja";
    readonly direction: "ltr";
    constructor();
    tokenize(input: string): TokenStream;
    classifyToken(token: string): TokenKind;
    /**
     * Extract a Japanese word (sequence of kanji/kana).
     * Stops at particles, ASCII, or whitespace.
     *
     * Uses morphological normalization to handle verb conjugations:
     * 1. First checks if the exact word is in the keyword map
     * 2. If not found, tries to strip conjugation suffixes and check again
     */
    private extractJapaneseWord;
    /**
     * Extract an ASCII word (for mixed Japanese/English content).
     */
    private extractAsciiWord;
    /**
     * Extract a number, including Japanese time unit suffixes.
     * Japanese time units attach directly without whitespace.
     */
    private extractJapaneseNumber;
}
/**
 * Singleton instance.
 */
declare const japaneseTokenizer: JapaneseTokenizer;

/**
 * Japanese Language Profile
 *
 * SOV word order, particles (を, に, で, etc.), no spaces between words.
 * Agglutinative language with rich verb conjugation.
 */

declare const japaneseProfile: LanguageProfile;

export { japaneseProfile, japaneseTokenizer };
