/** * Thin git plumbing wrappers for doctor migrations (AC-17, AC-8, AC-21). * * All calls run with cwd = projectRoot so index operations target the * CURRENT worktree's index, never another worktree's (AC-21). */ /** Files tracked by git under the given pathspecs (NUL-safe). */ export declare function trackedFiles(projectRoot: string, pathspecs: string[]): string[]; /** * True when the index has staged changes. Any git failure (unborn HEAD, * odd repo states) conservatively counts as staged — the confirm-tier * untrack must never tangle into a pending commit (AC-8). */ export declare function hasStagedChanges(projectRoot: string): boolean; /** * Committer date of the newest commit touching the given pathspecs, ISO 8601. * * `null` when nothing matches — an untracked path, an unborn HEAD, or not a repo. * The caller must treat that as "no answer" rather than "old": a doc that was never * committed is not stale, it is new. * * `execFileSync` with an argument array, never a shell string, so a pathspec * containing a space or a semicolon cannot become a second command * (secure-defaults: validate at the boundary, and never build a command by * concatenation). * * Requirements: update-overwrites-authored-context/AC-18 */ export declare function lastCommitISO(projectRoot: string, pathspecs: string[]): string | null; /** Quote a path for display when it contains shell-special characters. */ export declare function shellQuote(path: string): string; //# sourceMappingURL=git.d.ts.map