import { type DOMElement } from "ink"; import type { ThinkingLevel } from "@kenkaiiii/gg-ai"; import type { ContextWindowOptions } from "../../core/model-registry.js"; import { type FooterStatusLayoutDecision } from "../components/BackgroundTasksBar.js"; import { type DoneStatus } from "../layout-decisions.js"; interface UseChatLayoutMeasurementsOptions { rows: number; columns: number; backgroundTaskCount: number; updatePending: boolean; agentRunning: boolean; activityPhase: string; stallError: unknown; doneStatus: DoneStatus | null; currentModel: string; contextUsed: number; contextWindowOptions?: ContextWindowOptions; displayedCwd: string; gitBranch?: string | null; thinkingLevel?: ThinkingLevel; exitPending: boolean; taskBarExpanded: boolean; /** Current LiveToolPanel feed length; the panel renders min(count, 3) rows. */ liveToolFeedCount: number; } interface ChatLayoutMeasurements { footerStatusLayout: FooterStatusLayoutDecision; activityVisible: boolean; stallStatusVisible: boolean; doneStatusVisible: boolean; statusSlotVisible: boolean; mainControlsRef: (node: DOMElement | null) => void; measuredLiveAreaRows: number; /** * Transcript region height for the fullscreen alt-screen viewport. Unlike * `measuredLiveAreaRows` (which subtracts a 2-row cushion to keep Ink out of * its fullscreen clear path in the legacy scrollback model), the fullscreen * viewport intentionally owns the full screen, so this is simply * `rows - controlsRows` (floored at MIN_LIVE_AREA_ROWS). */ viewportRows: number; } export declare function useChatLayoutMeasurements({ rows, columns, backgroundTaskCount, updatePending, agentRunning, activityPhase, stallError, doneStatus, currentModel, contextUsed, contextWindowOptions, displayedCwd, gitBranch, thinkingLevel, exitPending, taskBarExpanded, liveToolFeedCount, }: UseChatLayoutMeasurementsOptions): ChatLayoutMeasurements; export {}; //# sourceMappingURL=useChatLayoutMeasurements.d.ts.map