import type { Element } from "../../tui/elements.js"; import type { KeyEvent } from "../../tui/input/types.js"; import type { ViewerThresholds } from "../thresholds.js"; import { type RowMarks } from "../marks.js"; import type { TreeNode } from "../types.js"; import type { View, ViewAction, Viewport } from "../views/view.js"; export type TracePickerOptions = { currentTraceId: string; annotations: Record; thresholds: ViewerThresholds; }; export declare class TracePicker implements View { private readonly options; private marks; readonly viewName: "tracePicker"; private summaries; private texts; private query; private editing; private extraFilters; private cursorTraceId; private scrollTop; private pageRows; private message; private following; constructor(roots: TreeNode[], options: TracePickerOptions); private moves; private browsingBindings; private editingBindings; handleKey(event: KeyEvent, viewport: Viewport): ViewAction; capturesText(): boolean; selectedTraceId(): string | undefined; escape(): boolean; setData(roots: TreeNode[]): void; setMarks(marks: RowMarks): void; /** The muted line under a trace: its annotations, then its comment count * from the marks the viewer holds, so a loose file gets one too and it * is current after every `c`. */ private traceNote; setFollowIndicator(on: boolean): void; notify(message: string): void; helpLines(): string[]; private shown; private appendToQuery; private keepCursorVisible; private move; private openSelected; render(viewport: Viewport, sharedHints?: string): Element; private columns; /** Present only when some trace is named. Sized over every trace, not * the shown ones, so the column does not jump as the query changes. */ private agentColumn; }