import React from "react";
import { type DOMElement } from "ink";
interface ChatLayoutProps {
    columns: number;
    /**
     * When set, the layout root claims the full terminal height. Used by the
     * fullscreen alt-screen viewport so the bounded transcript region (flexGrow)
     * fills everything above the pinned controls, giving the footer a fixed
     * position at the very bottom of the screen.
     */
    rows?: number;
    children: React.ReactNode;
}
interface ChatLiveAreaProps {
    children: React.ReactNode;
    /**
     * When set, hard-cap the live area to this many rows, anchoring content to
     * the bottom (newest visible) and clipping the overflow at the top. Leave
     * undefined so the area stays compact (sized to its content) when it fits —
     * a fixed height would otherwise reserve blank rows above short output.
     */
    clampRows?: number;
}
interface ChatControlsProps {
    controlsRef: (node: DOMElement | null) => void;
    children: React.ReactNode;
}
interface ChatInputFooterStackProps {
    columns: number;
    children: React.ReactNode;
}
export declare function ChatLayout({ columns, rows, children }: ChatLayoutProps): import("react/jsx-runtime").JSX.Element;
export declare function ChatLiveArea({ children, clampRows }: ChatLiveAreaProps): import("react/jsx-runtime").JSX.Element;
export declare function ChatControls({ controlsRef, children }: ChatControlsProps): import("react/jsx-runtime").JSX.Element;
export declare function ChatInputFooterStack({ columns, children }: ChatInputFooterStackProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=ChatLayout.d.ts.map