import type { Theme } from "../../../../../../modes/interactive/theme/theme.ts";
import { type MarkdownTheme } from "@earendil-works/pi-tui";
import type { QuestionData } from "../../../tool/types.ts";
/** CC parity in side-by-side layout. */
export declare const MAX_PREVIEW_HEIGHT_SIDE_BY_SIDE = 20;
/** Preserves narrow-terminal protection in stacked layout. */
export declare const MAX_PREVIEW_HEIGHT_STACKED = 15;
export declare const NO_PREVIEW_TEXT = "No preview available";
/** 1 blank separator + 1 affordance text row reserved when `hasAnyPreview` (height stability of the affordance row's offset relative to the box). */
export declare const NOTES_AFFORDANCE_OVERHEAD = 2;
/**
 * Per-question cache for rendered markdown previews. Width-keyed: switching the
 * inner width invalidates every cached `Markdown`'s render output (pi-tui's
 * `Markdown.render(width)` re-wraps when width changes).
 *
 * Replaces the inline `previewTexts`, `markdownCache`, `cachedWidth` triple from
 * the previous monolithic `preview-pane.ts`. One Markdown per option, lazy on
 * first request, never re-constructed — count semantics frozen by tests.
 */
export declare class MarkdownContentCache {
    private readonly previewTexts;
    private readonly markdownCache;
    private cachedWidth;
    private readonly theme;
    private readonly markdownTheme;
    constructor(question: QuestionData, theme: Theme, markdownTheme: MarkdownTheme);
    hasAnyPreview(): boolean;
    has(optionIndex: number): boolean;
    /**
     * Compute the body lines for a given option at a given inner width. Width changes
     * invalidate the per-Markdown render cache.
     */
    bodyFor(optionIndex: number, innerWidth: number): string[];
    invalidate(): void;
}
//# sourceMappingURL=markdown-content-cache.d.ts.map