import type { MarkedExtension } from 'marked';
/** Token type emitted for inline math (`\(...\)`, opt-in `$...$`). */
export declare const INLINE_KATEX_TOKEN = "inlineKatex";
/** Token type emitted for block math (`\[...\]`, `$$...$$`, AMS environments). */
export declare const BLOCK_KATEX_TOKEN = "blockKatex";
/**
 * Options for the {@link markedKatex} factory.
 */
export interface MarkedKatexOptions {
    /**
     * When `true`, also tokenize `$...$` (inline) and `$$...$$` (inline) as
     * math, using the standard whitespace-boundary rule that prevents
     * currency strings like `$5,000` from being parsed as a math expression.
     *
     * Off by default. KaTeX's own `auto-render` extension excludes `$...$`
     * from its defaults with the comment "LaTeX uses $…$, but it ruins the
     * display of normal `$` in text" — we follow the same opinion.
     *
     * Block-level `$$...$$` (own-line delimiters) is always enabled, and is
     * unaffected by this option.
     *
     * @defaultValue `false`
     */
    singleDollarInline?: boolean;
}
/**
 * Creates a marked extension that tokenizes KaTeX math expressions into
 * custom `inlineKatex` and `blockKatex` tokens.
 *
 * Default delimiter set (mirrors KaTeX's own `auto-render` defaults):
 *
 * | Delimiter pair | Level | `displayMode` |
 * |---|---|---|
 * | `\(...\)` | inline | `false` |
 * | `\[...\]` (own-line **or** single-line) | block | `true` |
 * | `$$...$$` (own-line **or** single-line) | block | `true` |
 * | `\begin{equation}...\end{equation}` and other AMS envs | block | `true` |
 *
 * Both `\[x\]` and `\[\nx\n\]` parse as block math; same for `$$x$$` and the
 * own-line `$$\nx\n$$` form. LLMs overwhelmingly emit the single-line form,
 * so accepting both keeps the extension drop-in compatible with their output
 * without losing the canonical own-line shape.
 *
 * Supported AMS environments: `equation`, `align`, `alignat`, `gather`, `CD`,
 * plus their starred variants (e.g. `equation*`).
 *
 * `$...$` inline is **off** by default — KaTeX itself opts out of single-
 * dollar inline because of currency-string clashes (`$5,000` etc.). Pass
 * `{ singleDollarInline: true }` to enable it; when enabled it uses the
 * whitespace-boundary rule from upstream `marked-katex-extension` so
 * currency strings still won't match.
 *
 * @example
 * ```svelte
 * <script lang="ts">
 *   import SvelteMarkdown from '@humanspeak/svelte-markdown'
 *   import { markedKatex, KatexRenderer } from '@humanspeak/svelte-markdown/extensions'
 *
 *   const renderers = { inlineKatex: KatexRenderer, blockKatex: KatexRenderer }
 * </script>
 *
 * <SvelteMarkdown
 *   source={markdown}
 *   extensions={[markedKatex()]}
 *   {renderers}
 * />
 * ```
 *
 * Pair with `KatexRenderer` from the same subpath, or supply your own
 * component that accepts `{ text: string; displayMode?: boolean }`.
 *
 * @param options - {@link MarkedKatexOptions}
 * @returns A `MarkedExtension` containing one block-level and one inline tokenizer
 */
export declare function markedKatex(options?: MarkedKatexOptions): MarkedExtension;
