import { type UseSandboxFilesResult } from "../hooks/use-sandbox-files.js"; import type { UseSandboxGitResult } from "../hooks/use-sandbox-git.js"; import { type FileNodeVisibilityPredicate } from "../file-node-visibility.js"; export type SandboxFilesProps = { /** From `useSandboxFiles(...)`. */ files: UseSandboxFilesResult; /** Compatibility fallback for callers that have not yet adopted `files.gitSummary`. */ git?: UseSandboxGitResult | undefined; /** @deprecated Diffs live in the dedicated Changes tab now; accepted for * source-compat but unused (the Files surface is a browser + viewer). */ stagedGit?: UseSandboxGitResult | undefined; /** Whether a FileSystem surface is advertised (drives the unavailable notice). */ fileSystemAvailable?: boolean | undefined; /** Use Pierre's Shiki highlighter for the viewer (default true; plain fallback). */ usePierre?: boolean | undefined; /** Allow in-place editing of tree files (CodeMirror). Default true. When false * the surface is review-only: every text file opens in the read-only viewer. */ editable?: boolean | undefined; /** Fired once when the user first edits an open file (wake-on-edit intent). The * dock warms the box on this so the save lands fast; opening/reading never fires * it. Browsing the tree/diff must not warm a box. */ onEditIntent?: (() => void) | undefined; /** Restore the file last viewed in this task. Invalid/missing paths still * surface the ordinary file-view error instead of changing files silently. */ initialSelectedPath?: string | null | undefined; onSelectedPathChange?: ((path: string | null) => void) | undefined; /** Presentation-only node filter shared with the tree and selected-file view. */ isNodeVisible?: FileNodeVisibilityPredicate | undefined; /** A deliberate file-open path routed here by the parent workspace. */ requestedPath?: string | undefined; /** 1-based line to reveal after `requestedPath` opens. */ requestedLine?: number | null | undefined; /** Identity for one guarded-file request. Increment this when the same path is * deliberately requested again; it also lets a pending request be consumed * without overriding later manual tree navigation. Defaults to the path. */ requestedPathRequestId?: string | number | undefined; /** False while the parent is waking a cold sandbox for `requestedPath`. */ requestedPathReady?: boolean | undefined; /** The machine is cold and no durable capture exists yet. Render an explicit * wake gate instead of an empty-tree lie or an implicit Channel-A read. */ workspaceResting?: boolean | undefined; /** A deliberate wake has started but the live file surface is not ready yet. */ workspaceWaking?: boolean | undefined; /** Whether live reads are currently authoritative. */ liveWorkspaceReady?: boolean | undefined; /** Failed live negotiation; never present a failure as an ongoing wake. */ workspaceError?: Error | null | undefined; /** Deliberately wake the machine to read content absent from the capture. */ onWakeWorkspace?: (() => void) | undefined; themeType?: "dark" | "light" | undefined; className?: string | undefined; }; /** * The Files surface: a branch/dirty header, the full lazy file tree, and a * viewer/editor pane for the selected file. This is the workspace BROWSER — pick * a file to read or edit it. Diff review lives in the dedicated Changes tab (this * surface deliberately does NOT replicate the changed-files list, and does not * diff here — one job per tab). The agent commits; the human reviews. */ export declare function SandboxFiles({ files, git, fileSystemAvailable, usePierre, editable, onEditIntent, initialSelectedPath, onSelectedPathChange, isNodeVisible, requestedPath, requestedLine, requestedPathRequestId, requestedPathReady, workspaceResting, workspaceWaking, liveWorkspaceReady, workspaceError, onWakeWorkspace, themeType, className, }: SandboxFilesProps): import("react").JSX.Element;