import type { Theme } from "../modes/theme/theme"; import type { State } from "./types"; export interface OutputBlockOptions { header?: string; headerMeta?: string; state?: State; sections?: Array<{ label?: string; lines: string[]; }>; width: number; applyBg?: boolean; } /** * Return the width available to section content after the output block's * visible left and right borders. Keep callers on the same layout contract as * renderOutputBlock so width-aware projections are not wrapped a second time. */ export declare function getOutputBlockContentWidth(width: number, theme: Theme): number; export declare function renderOutputBlock(options: OutputBlockOptions, theme: Theme): string[]; /** * Cached wrapper around `renderOutputBlock`. * * Since output blocks are re-rendered on every frame (via `render(width)` closures), * but their content rarely changes, this cache avoids redundant `visibleWidth()` and * `padding()` computations on ~99% of render calls. */ export declare class CachedOutputBlock { #private; /** Render with caching. Returns cached result if options haven't changed. */ render(options: OutputBlockOptions, theme: Theme): string[]; /** Invalidate the cache, forcing a rebuild on next render. */ invalidate(): void; }