import type { SandboxGitFileDiff } from "../hooks/use-sandbox-git.js"; import { type OpenGeniText } from "../messages/runtime.js"; export type WorkbenchChangesProps = { /** The changed files (`useSandboxGit().diff`). Assumed non-empty by the caller. */ diff: SandboxGitFileDiff[]; /** Which source the diff came from — drives the "live" vs "as of turn" badge. */ source: "live" | "capture" | null; /** When the served capture was taken (ISO), when `source === "capture"`. */ capturedAt: string | null; /** The capture's turn revision, for the "as of turn N" badge. */ captureRevision?: number | null | undefined; themeType?: "dark" | "light" | undefined; /** Route a guarded binary/oversize file into the live Files surface. */ onOpenFile?: ((path: string) => void) | undefined; className?: string | undefined; }; type RailRow = { kind: "group"; label: string; count: number; } | { kind: "file"; file: SandboxGitFileDiff; index: number; }; /** Order the files and build the rail rows (grouped past the threshold). The * returned `orderedFiles` drives BOTH the rail and the diff pane so a rail row's * `index` addresses the matching pane section. Exported for tests. */ export declare function buildRail(t: OpenGeniText, files: SandboxGitFileDiff[]): { orderedFiles: SandboxGitFileDiff[]; rows: RailRow[]; grouped: boolean; }; export declare function WorkbenchChanges({ diff, source, capturedAt, captureRevision, themeType, onOpenFile, className, }: WorkbenchChangesProps): import("react").JSX.Element; export {};