import * as React from 'react';
import type { BaseProps } from '../BaseProps';
import { type SyntaxThemeDefinition } from '../theme/syntax';
export interface CodeBlockProps extends BaseProps<HTMLPreElement> {
    ref?: React.Ref<HTMLPreElement>;
    code: string;
    language?: string;
    title?: string;
    hasLanguageLabel?: boolean;
    hasLineNumbers?: boolean;
    highlightLines?: number[];
    hasCopyButton?: boolean;
    onCopy?: () => void;
    isWrapped?: boolean;
    maxHeight?: number | string;
    isCollapsible?: boolean;
    collapsibleThreshold?: number;
    size?: 'sm' | 'md';
    /**
     * Width of the code block. Accepts any CSS width value.
     * - `'fit-content'` (default): shrinks to the width of the longest line (with a min-width floor).
     * - `'100%'`: stretches to fill the parent container width.
     * - Any valid CSS width string (e.g. `'600px'`, `'50vw'`).
     * @default 'fit-content'
     */
    width?: string;
    /**
     * Container presentation style.
     * - `'card'` (default): border-radius and border with the muted syntax
     *   background — standalone card look.
     * - `'section'`: no border-radius, no border, and a transparent background
     *   so the block blends into the card or panel it's embedded in. Set an
     *   explicit background via `xstyle` if you need one.
     * @default 'card'
     */
    container?: 'card' | 'section';
    tokenizer?: (code: string, language: string) => {
        type: string;
        start: number;
        end: number;
    }[];
    highlightMode?: 'auto' | 'ranges' | 'spans';
    /**
     * Per-instance syntax theme override. Shorthand for wrapping this block in
     * `<SyntaxTheme theme={...}>` — accepts a preset from
     * `@astryxdesign/core/theme/syntax` or a theme created with
     * `defineSyntaxTheme()`. Without it, the block uses the theme-level syntax
     * colors from the nearest SyntaxTheme ancestor or `defineTheme({ syntax })`.
     */
    syntaxTheme?: SyntaxThemeDefinition;
}
/**
 * Read-only code display with syntax highlighting, line numbers,
 * and optional copy button.
 *
 * @example
 * ```
 * <CodeBlock code="const x = 42;" language="javascript" />
 * ```
 */
export declare function CodeBlock({ code, language, title, hasLanguageLabel, hasLineNumbers, highlightLines, hasCopyButton, onCopy, isWrapped, maxHeight, isCollapsible, collapsibleThreshold, size, width: widthProp, container, tokenizer: customTokenizer, highlightMode, syntaxTheme, xstyle, className, style, ref, ...props }: CodeBlockProps): React.JSX.Element;
export declare namespace CodeBlock {
    var displayName: string;
}
//# sourceMappingURL=CodeBlock.d.ts.map