/**
 * Converts LaTeX bracket delimiters to dollar sign delimiters.
 * Converts \[...\] to $$...$$ and \(...\) to $...$
 * Preserves code blocks during the conversion.
 *
 * @param text The input string containing LaTeX expressions
 * @returns The string with LaTeX bracket delimiters converted to dollar sign delimiters
 */
export declare function convertLatexDelimiters(text: string): string;
/**
 * Escapes mhchem commands in LaTeX expressions to ensure proper rendering.
 *
 * @param text The input string containing LaTeX expressions with mhchem commands
 * @returns The string with escaped mhchem commands
 */
export declare function escapeMhchemCommands(text: string): string;
/**
 * Escapes pipe characters within LaTeX expressions to prevent them from being interpreted
 * as table column separators in markdown tables.
 *
 * @param text The input string containing LaTeX expressions
 * @returns The string with pipe characters escaped in LaTeX expressions
 */
export declare function escapeLatexPipes(text: string): string;
/**
 * Escapes underscores within \text{...} commands in LaTeX expressions
 * that are not already escaped.
 * For example, \text{node_domain} becomes \text{node\_domain},
 * but \text{node\_domain} remains \text{node\_domain}.
 *
 * @param text The input string potentially containing LaTeX expressions
 * @returns The string with unescaped underscores escaped within \text{...} commands
 */
export declare function escapeTextUnderscores(text: string): string;
/**
 * Escapes dollar signs that appear to be currency symbols to prevent them from being
 * interpreted as LaTeX math delimiters.
 *
 * This function identifies currency patterns such as:
 * - $20, $100, $1,000
 * - $20-50, $100+
 * - Patterns within markdown tables
 *
 * @param text The input string containing potential currency symbols
 * @returns The string with currency dollar signs escaped
 */
export declare function escapeCurrencyDollars(text: string): string;
/**
 * Checks if the last LaTeX formula in the text is renderable.
 * Only validates the formula after the last $$ if there's an odd number of $$.
 *
 * @param text The input string containing LaTeX formulas
 * @returns True if the last formula is renderable or if there's no incomplete formula
 */
export declare const isLastFormulaRenderable: (text: string) => boolean;
/**
 * Fixes common LaTeX syntax errors automatically
 * - Balances unmatched braces
 * - Balances \left and \right delimiters
 *
 * @param text The input string containing LaTeX expressions
 * @returns The string with fixed LaTeX expressions
 */
export declare function fixCommonLaTeXErrors(text: string): string;
/**
 * Normalizes whitespace in LaTeX expressions
 * - Removes extra spaces around $ delimiters
 * - Normalizes multiple spaces to single space inside formulas
 *
 * @param text The input string containing LaTeX expressions
 * @returns The string with normalized whitespace
 */
export declare function normalizeLatexSpacing(text: string): string;
/**
 * Validates all LaTeX expressions in the text
 * Returns detailed information about validation results
 *
 * @param text The input string containing LaTeX expressions
 * @returns Validation results with errors if any
 */
export declare function validateLatexExpressions(text: string): {
    errors: Array<{
        formula: string;
        message: string;
        position: number;
        type: 'display' | 'inline';
    }>;
    totalExpressions: number;
    valid: boolean;
};
/**
 * Handles CJK (Chinese, Japanese, Korean) characters mixed with LaTeX
 * Optionally adds spaces between CJK characters and LaTeX expressions for better rendering
 *
 * @param text The input string
 * @param addSpaces Whether to add spaces between CJK and LaTeX (default: false)
 * @returns The processed string
 */
export declare function handleCJKWithLatex(text: string, addSpaces?: boolean): string;
export interface AdvancedPreprocessOptions {
    /** Add spaces between CJK and LaTeX (default: false, requires handleCJK: true) */
    addCJKSpaces?: boolean;
    /** Convert bracket notation \[...\] to $$...$$ (default: true) */
    convertBrackets?: boolean;
    /** Enable currency escaping (default: true) */
    escapeCurrency?: boolean;
    /** Escape mhchem commands (default: true) */
    escapeMhchem?: boolean;
    /** Escape pipe symbols in LaTeX (default: true) */
    escapePipes?: boolean;
    /** Escape underscores in \text{} (default: true) */
    escapeUnderscores?: boolean;
    /** Automatically fix common LaTeX errors (default: false) */
    fixErrors?: boolean;
    /** Handle CJK characters (default: false) */
    handleCJK?: boolean;
    /** Normalize whitespace (default: false) */
    normalizeSpacing?: boolean;
    /** Throw error on validation failure (default: false, requires validate: true) */
    throwOnValidationError?: boolean;
    /** Validate LaTeX syntax (default: false) */
    validate?: boolean;
}
/**
 * Comprehensive LaTeX preprocessing with configurable options
 *
 * This is the main preprocessing function that handles:
 * - Currency symbol escaping (e.g., $20 → \$20)
 * - LaTeX delimiter conversion (\[...\] → $$...$$)
 * - Special character escaping (pipes, underscores, mhchem)
 * - Optional error fixing and validation
 * - Optional CJK character handling
 *
 * @param text The input string containing LaTeX and Markdown
 * @param options Configuration options for fine-grained control
 * @returns The preprocessed string
 *
 * @example
 * ```ts
 * // Default behavior (same as old preprocessLaTeX)
 * preprocessLaTeX('向量$90^\\circ$，非 $0^\\circ$ 和 $180^\\circ$')
 *
 * // With custom options
 * preprocessLaTeX(text, {
 *   fixErrors: true,
 *   validate: true,
 *   handleCJK: true
 * })
 * ```
 */
export declare function preprocessLaTeX(text: string, options?: AdvancedPreprocessOptions): string;
/**
 * Strict preprocessing mode - enables all safety features and validations
 * Use this when you want maximum correctness and are willing to accept the performance cost
 *
 * @param text The input string
 * @returns The preprocessed string with all features enabled
 *
 * @example
 * ```ts
 * const processed = preprocessLaTeXStrict(userInput)
 * // Enables: error fixing, validation, CJK handling, space normalization
 * ```
 */
export declare function preprocessLaTeXStrict(text: string): string;
/**
 * Minimal preprocessing mode - only essential operations
 * Use this for better performance when you control the input
 *
 * @param text The input string
 * @returns The preprocessed string with minimal processing
 *
 * @example
 * ```ts
 * const processed = preprocessLaTeXMinimal(trustedInput)
 * // Only escapes currency and converts brackets
 * ```
 */
export declare function preprocessLaTeXMinimal(text: string): string;
