import { type MarkdownTheme } from "@earendil-works/pi-tui"; import type { Theme } from "../../../../../../modes/interactive/theme/theme.js"; import type { QuestionData } from "../../../tool/types.js"; /** 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