import type { CompletedItem } from "./app-items.js";
/**
 * Cheap, deterministic estimate of how many terminal rows a block of text
 * occupies once wrapped to `width`. Biased high (uses display width and counts
 * at least one row per source line) so the live-area clamp never UNDER-counts
 * and lets the frame overflow past the terminal height.
 */
export declare function estimateWrappedRows(text: string, columns: number): number;
/**
 * Estimate the total rendered height (in terminal rows) of the live area:
 * every live item plus the in-flight streaming block. Each text block is
 * individually capped at `perItemBudget` because AssistantMessage/Markdown
 * truncate to that height, but their SUM is what can overflow the terminal —
 * which is exactly what this measures.
 */
export declare function estimateLiveAreaRows({ liveItems, streamingText, columns, perItemBudget, }: {
    liveItems: readonly CompletedItem[];
    streamingText: string;
    columns: number;
    perItemBudget: number;
}): number;
/**
 * Decide whether the live area must be hard-clamped to `liveAreaBudget` rows.
 * Returns the clamp height when the estimated content would overflow the
 * budget (so the bottom-anchored container clips the oldest rows and keeps the
 * Ink-rendered frame strictly below the terminal height), or `undefined` when
 * the content fits and the area should stay compact (no reserved blank rows).
 */
export declare function getLiveAreaClampRows({ liveItems, streamingText, columns, liveAreaBudget, }: {
    liveItems: readonly CompletedItem[];
    streamingText: string;
    columns: number;
    liveAreaBudget: number;
}): number | undefined;
//# sourceMappingURL=live-area-height.d.ts.map