import React from "react"; interface TerminalSizeValue { columns: number; rows: number; resizeKey: number; } /** * Provider that attaches a single resize listener to stdout and shares * { columns, rows, resizeKey } with all descendants via context. * * Mount this once near the root of the component tree (e.g. in render.ts * or App.tsx) to avoid the MaxListenersExceededWarning that occurs when * every component independently listens for resize events. */ export declare function TerminalSizeProvider({ children, isAgentRunning, fullscreen, }: React.PropsWithChildren<{ /** * Optional getter — when it returns true, the resize debounce skips its * resizeKey bump while the agent is running. The deferred resetUI() in * App.tsx cleans up reflow drift the moment the agent goes idle, so the * visual cost of skipping here is minimal. */ isAgentRunning?: () => boolean; /** * Fullscreen alt-screen mode. Ink owns the whole screen and repaints the * full-height frame in place, so on resize we only re-measure dimensions — * no manual screen clear (which would flash) and no resizeKey bump (the * full-height layout reflows on the dimension change alone). */ fullscreen?: boolean; }>): React.FunctionComponentElement>; /** * Returns { columns, rows, resizeKey } from the nearest TerminalSizeProvider. * * All values (`columns`, `rows`, `resizeKey`) update together after resize * events settle (300ms debounce). Updating dimensions immediately would * trigger React re-renders on every resize event while Ink's internal * line-tracking still assumes the old width, causing ghost/duplicate renders. * * `resizeKey` can be used as a React `key` to force live-area remounts after * terminal dimensions settle. */ export declare function useTerminalSize(): TerminalSizeValue; export {}; //# sourceMappingURL=useTerminalSize.d.ts.map