import { type HTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
declare const rootVariants: (props?: ({
density?: "default" | "compact" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface ChatContainerHandle {
scrollToBottom: (opts?: {
smooth?: boolean;
}) => void;
/**
* Escape hatch for host code that needs the live scroll element
* (measuring, custom scroll restoration). NOT an agent surface: the
* node's subtree is the conversation itself, which is PHI-bearing in
* the Alia surfaces, and PRS §26 §7 limits state slots to identifiers
* and structural state. The adapter deliberately does not expose it.
*/
getScrollViewport: () => HTMLDivElement | null;
/**
* True when the viewport is pinned to the newest message (within
* `BOTTOM_SLACK_PX`). The read-back for `scroll_to_bottom`.
*/
isAtBottom: () => boolean;
/** Number of messages currently rendered. Count only — never content. */
getMessageCount: () => number;
}
export interface ChatContainerProps extends Omit, 'children' | 'id'>, VariantProps {
/** Opaque instance id — emitted as `data-component-id` for the agent registry. */
id?: string;
/** Array of messages to render. When the array exceeds 100 items the
* list is virtualised via @tanstack/react-virtual. */
messages: Array<{
id: string;
node: ReactNode;
}>;
/** Composer slot pinned to the block-end. */
composer?: ReactNode;
/** Fires when the user's auto-scroll preference flips. */
onAutoScrollChange?: (isAtBottom: boolean) => void;
/**
* When true, renders a "scroll to latest" FloatingActionButton in the
* bottom-end of the scroll column whenever the user has scrolled
* away from the newest message. Defaults to `false` because the
* affordance is only useful in long-form chat surfaces (fullscreen
* assistants, dedicated messaging views); in compact docks — e.g. the
* Alia side-panel — conversations rarely exceed one screen and the FAB
* just adds visual noise. Turn on for fullscreen chat surfaces.
*/
showScrollToLatest?: boolean;
}
export declare const ChatContainer: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=chat-container.d.ts.map