/**
 * Handoff Git State Capture
 *
 * Captures the cheap, deterministic git facts the handoff doc needs (branch,
 * short sha, porcelain status, diff --stat) AND dumps the FULL working-tree +
 * staged diff to a sibling `.diff` file. The full diff is captured for free via
 * git — no LLM tokens are spent — and is the key in-flight-fidelity artifact:
 * it lets the resuming agent see exactly what was changed but not yet committed.
 *
 * In a non-git directory every field degrades to empty and no error is thrown,
 * so the non-SpecWeave fallback path still works on plain folders.
 *
 * Part of increment 0867: Cross-Tool Work Handoff (AC-US4-01..04).
 *
 * @module core/session/handoff-git-state
 */
/**
 * Captured git state for the handoff doc.
 */
export interface GitState {
    /** Whether `repoRoot` is inside a git work tree at all. */
    isGitRepo: boolean;
    /** Current branch name (empty if detached or non-git). */
    branch: string;
    /** Short commit SHA of HEAD (empty if no commits / non-git). */
    shortSha: string;
    /** `git status --porcelain` output (empty when clean or non-git). */
    statusPorcelain: string;
    /** Combined `git diff --stat` (working) + `git diff --cached --stat` (staged). */
    diffStat: string;
    /** True when there are working-tree or staged changes. */
    hasUncommittedChanges: boolean;
}
/**
 * Capture git state for `repoRoot` and dump the full uncommitted diff to
 * `diffOutputPath`.
 *
 * The diff file always contains `git diff HEAD` (working-tree vs last commit)
 * concatenated with `git diff --cached` (staged vs HEAD). When the repo is
 * clean — or before the first commit — the file is written empty so callers can
 * unconditionally link to it.
 *
 * @param repoRoot - Absolute path to the candidate repository root.
 * @param diffOutputPath - Absolute path where the full diff is written.
 * @returns The captured {@link GitState}; all-empty + `isGitRepo:false` when
 *          `repoRoot` is not a git work tree (no throw).
 */
export declare function captureGitState(repoRoot: string, diffOutputPath: string): GitState;
//# sourceMappingURL=handoff-git-state.d.ts.map