/** @jsxImportSource @opentui/react */ /** * Chat pane: virtualized, auto-following transcript (V2-050, 056, 057). * * Auto-follow uses OpenTUI ScrollBox `stickyScroll` + `stickyStart="bottom"` * so new rows and growing stream text pin the viewport to the latest content. * Manual scroll-up suspends follow (library `_hasManualScroll`); scrolling back * to the bottom or a new user prompt re-engages. We still call pinToBottom on * content changes as a belt-and-suspenders for layout races. */ import { type ReactNode } from "react"; import type { ScrollBoxRenderable } from "@opentui/core"; import type { AppServices } from "../../../ui-core/bootstrap/composition-root.js"; import type { Theme } from "../../../ui-core/rendering/theme.js"; import { useTranscriptState } from "../../../ui-core/react/use-transcript-store.js"; export interface TranscriptViewProps { readonly services: AppServices; readonly theme: Theme; readonly focused: boolean; readonly contentWidth?: number | undefined; readonly scrollRef?: React.RefObject; } export declare function useTranscriptFollowKey(state: ReturnType, running: boolean): string; export declare function TranscriptView(props: TranscriptViewProps): ReactNode;