import { default as React } from 'react';
export interface CodeBlockProps {
    /** The code to display. Shown raw, whitespace preserved. Source of truth for copy/download/line count. */
    code: string;
    /** Shown in the language badge. A plain label — does not drive highlighting. */
    language?: string;
    /** Optional filename, shown muted next to the badge. */
    filename?: string;
    /**
     * Interactive language picker rendered in the header's right-hand toolbar
     * (alongside copy / wrap / download). Plug in a `ToggleButtonGroup` (a few
     * languages) or a `Select` (many) — you own the selection state and swap
     * `code` **and `language`** accordingly (`language` also drives the download
     * filename + MIME type). The static language badge is dropped while it's
     * present (the selector already shows the language). Kept as a slot so
     * `CodeBlock` stays in `core` without depending on `forms`.
     */
    languageSelector?: React.ReactNode;
    /**
     * Optional per-line highlighted content — one node per line — rendered in
     * the code cells instead of the raw line text. The gutter stays outside,
     * so alignment holds when wrapping. Produce these from any highlighter
     * (Shiki `codeToTokens`, Prism/hljs via an AST), highlighter-agnostic.
     * Copy/download still use the raw `code`.
     */
    highlightedLines?: React.ReactNode[];
    showHeader?: boolean;
    showLineNumbers?: boolean;
    showCopy?: boolean;
    showWrap?: boolean;
    showCollapse?: boolean;
    showDownload?: boolean;
    /** Clip long blocks at `maxLines` with a fade + "show more". */
    showMore?: boolean;
    maxLines?: number;
    /** Start with word-wrap on. */
    wrap?: boolean;
    startCollapsed?: boolean;
    className?: string;
}
/**
 * Frames code / JSON / XML with a language badge, optional filename, and a
 * toolbar (copy, word-wrap toggle, download), plus collapse and "show more".
 * It does **not** highlight or format — pass raw `code` (formatting happens
 * upstream) and, optionally, per-line `highlightedLines` from any highlighter
 * (Shiki/Prism/hljs). Surface uses the `--code-*` tokens and follows the theme.
 *
 * @beta This component is experimental — prop shape may change before release.
 */
export declare function CodeBlock({ code, language, filename, languageSelector, highlightedLines, showHeader, showLineNumbers, showCopy, showWrap, showCollapse, showDownload, showMore, maxLines, wrap, startCollapsed, className, }: CodeBlockProps): React.ReactElement;
export declare namespace CodeBlock {
    var displayName: string;
}
//# sourceMappingURL=CodeBlock.d.ts.map