import type { Element } from "../../tui/elements.js"; import type { KeyEvent } from "../../tui/input/types.js"; import type { TreeNode } from "../types.js"; import type { ViewAction, Viewport } from "../views/view.js"; import type { Screen } from "./screen.js"; export declare class OverviewScreen implements Screen { private roots; private traceId; private readonly contextWindowOf; readonly screenName: "overview"; private data; private deltas; private selectedId; private returnFocusId; private previewMode; /** Which side the paging and end keys act on. */ private pane; private scrollOffsets; private systemsExpanded; private historyExpanded; private fullResults; /** The input preview opens on the call's new messages until scrolled. */ private inputAtNew; private get scrollTop(); private set scrollTop(value); private message; private following; private previewRoom; private previewLength; private previewCache; private callPageSize; constructor(roots: TreeNode[], traceId: string, contextWindowOf: (model: string) => number | undefined); private bindings; handleKey(event: KeyEvent, viewport: Viewport): ViewAction; helpLines(): string[]; render(viewport: Viewport, sharedHints?: string): Element; setData(roots: TreeNode[]): void; focusId(): string | undefined; /** The call the charts highlight, never the tool the person came from. */ selectedRowId(): string | undefined; setFocus(id: string): void; setTrace(traceId: string): void; escape(): boolean; applySearch(_query: string): void; notify(message: string): void; setFollowIndicator(on: boolean): void; private derive; private selected; private moveCall; private selectCall; private resetPreview; private selectedDelta; /** `x` applies to both previews. The output restarts at its top; the * input keeps its scroll, like `s`, so the result opened is still in view. */ private toggleResults; private toggleHistory; /** The scroll stays put, so a prompt opened from the history is still in view. */ private toggleSystems; /** Ctrl+F/B/D/U: whole or half pages of calls or of preview lines. */ private page; /** g/G, Home/End: the first or last call, or the preview's top or end. */ private toEnd; private movePreview; /** In the input, the NEW divider may be the top row even when the new * messages beneath it do not fill the pane. */ private scrollPreview; private preview; private scrollStatus; }