/**
 * CodeBlock Molecule Component
 *
 * A syntax-highlighted code block with copy-to-clipboard functionality.
 * Preserves scroll position during re-renders.
 *
 * Event Contract:
 * - Emits: UI:COPY_CODE { language, success }
 */
import React from 'react';
export interface CodeBlockProps {
    /** The code content to display */
    code: string;
    /** Programming language for syntax highlighting */
    language?: string;
    /** Show the copy button */
    showCopyButton?: boolean;
    /** Show the language badge */
    showLanguageBadge?: boolean;
    /** Maximum height before scrolling */
    maxHeight?: string;
    /** Enable brace-based code folding of multi-line `{}`/`[]` blocks (default: true). */
    foldable?: boolean;
    /** Additional CSS classes */
    className?: string;
    /**
     * When true, render an editable surface that composes a transparent `Textarea`
     * over a Prism-highlighted overlay. The overlay re-tokenizes on each keystroke
     * (driven from a local mirror of the textarea value), so users see syntax-highlighted
     * code while still being able to type. Folding is skipped in editable mode.
     *
     * History: GAP-51 first-cut shipped plain (no-highlighting) editable text;
     * GAP-77 (2026-04-12) added the Prism overlay layer.
     *
     * Default: false (existing read-only behavior unchanged).
     */
    editable?: boolean;
    /**
     * GAP-51: called with the new code on every keystroke when `editable === true`.
     * Consumers should debounce + parse downstream — `CodeBlock` does not.
     */
    onChange?: (code: string) => void;
    /**
     * GAP-80: line-level error/warning highlights for editable mode.
     * Map of 1-based line number → severity. The overlay paints a colored
     * background on each line: error = red, warning = yellow. Pass undefined
     * (default) to disable. The consumer is responsible for computing the
     * path → line map from the schema + validation results.
     */
    errorLines?: Map<number, 'error' | 'warning'>;
}
export declare const CodeBlock: React.NamedExoticComponent<CodeBlockProps>;
