import { z } from 'zod';
export declare const GitFileStatusSchema: z.ZodEnum<{
    unknown: "unknown";
    added: "added";
    modified: "modified";
    deleted: "deleted";
    renamed: "renamed";
    copied: "copied";
    "type-changed": "type-changed";
    unmerged: "unmerged";
}>;
export type GitFileStatus = z.infer<typeof GitFileStatusSchema>;
export declare const GitChangedFileSchema: z.ZodObject<{
    status: z.ZodEnum<{
        unknown: "unknown";
        added: "added";
        modified: "modified";
        deleted: "deleted";
        renamed: "renamed";
        copied: "copied";
        "type-changed": "type-changed";
        unmerged: "unmerged";
    }>;
    path: z.ZodString;
    oldPath: z.ZodOptional<z.ZodString>;
    similarity: z.ZodOptional<z.ZodNumber>;
    binary: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export type GitChangedFile = z.infer<typeof GitChangedFileSchema>;
export declare const GitNumstatSchema: z.ZodObject<{
    path: z.ZodString;
    oldPath: z.ZodOptional<z.ZodString>;
    added: z.ZodNullable<z.ZodNumber>;
    deleted: z.ZodNullable<z.ZodNumber>;
    binary: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export type GitNumstat = z.infer<typeof GitNumstatSchema>;
export declare const GitRangeKindSchema: z.ZodEnum<{
    "three-dot": "three-dot";
    "two-dot": "two-dot";
    "working-tree": "working-tree";
    staged: "staged";
    commit: "commit";
}>;
export type GitRangeKind = z.infer<typeof GitRangeKindSchema>;
/**
 * How two explicit endpoints are compared.
 *
 * `merge-base` answers "what did head add since it diverged from base", which is
 * the review-shaped question and stays the default. `exact` answers "what
 * differs between exactly these two revisions" — the two are not the same, and
 * silently giving the first to a caller who asked for the second drops every
 * change unique to `base`.
 */
export declare const GitRangeModeSchema: z.ZodEnum<{
    exact: "exact";
    "merge-base": "merge-base";
}>;
export type GitRangeMode = z.infer<typeof GitRangeModeSchema>;
export declare const GitRangeSchema: z.ZodObject<{
    base: z.ZodOptional<z.ZodString>;
    head: z.ZodOptional<z.ZodString>;
    kind: z.ZodEnum<{
        "three-dot": "three-dot";
        "two-dot": "two-dot";
        "working-tree": "working-tree";
        staged: "staged";
        commit: "commit";
    }>;
    mergeBase: z.ZodOptional<z.ZodString>;
    resolvedBase: z.ZodOptional<z.ZodString>;
    resolvedHead: z.ZodOptional<z.ZodString>;
    describe: z.ZodString;
}, z.core.$strip>;
export type GitRange = z.infer<typeof GitRangeSchema>;
export declare const GitDiffSummarySchema: z.ZodObject<{
    range: z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>;
    files: z.ZodArray<z.ZodObject<{
        status: z.ZodEnum<{
            unknown: "unknown";
            added: "added";
            modified: "modified";
            deleted: "deleted";
            renamed: "renamed";
            copied: "copied";
            "type-changed": "type-changed";
            unmerged: "unmerged";
        }>;
        path: z.ZodString;
        oldPath: z.ZodOptional<z.ZodString>;
        similarity: z.ZodOptional<z.ZodNumber>;
        binary: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    numstat: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        oldPath: z.ZodOptional<z.ZodString>;
        added: z.ZodNullable<z.ZodNumber>;
        deleted: z.ZodNullable<z.ZodNumber>;
        binary: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    totalAdded: z.ZodNumber;
    totalDeleted: z.ZodNumber;
    filesChanged: z.ZodNumber;
    binaryFiles: z.ZodNumber;
}, z.core.$strip>;
export type GitDiffSummary = z.infer<typeof GitDiffSummarySchema>;
export declare const GitDiffPatchSchema: z.ZodObject<{
    range: z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>;
    patch: z.ZodString;
    truncated: z.ZodBoolean;
    tokensUsed: z.ZodNumber;
    tokenBudget: z.ZodOptional<z.ZodNumber>;
    filesIncluded: z.ZodNumber;
    filesOmitted: z.ZodNumber;
}, z.core.$strip>;
export type GitDiffPatch = z.infer<typeof GitDiffPatchSchema>;
export declare const GitDiffHunkSchema: z.ZodObject<{
    path: z.ZodString;
    oldPath: z.ZodOptional<z.ZodString>;
    oldStart: z.ZodNumber;
    oldLines: z.ZodNumber;
    newStart: z.ZodNumber;
    newLines: z.ZodNumber;
    newEnd: z.ZodNumber;
    header: z.ZodString;
    addedLines: z.ZodArray<z.ZodNumber>;
    deletedLines: z.ZodArray<z.ZodNumber>;
    deletedLineTexts: z.ZodOptional<z.ZodArray<z.ZodObject<{
        line: z.ZodNumber;
        text: z.ZodString;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export type GitDiffHunk = z.infer<typeof GitDiffHunkSchema>;
export declare const GitFileHunksSchema: z.ZodObject<{
    path: z.ZodString;
    oldPath: z.ZodOptional<z.ZodString>;
    binary: z.ZodBoolean;
    hunks: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        oldPath: z.ZodOptional<z.ZodString>;
        oldStart: z.ZodNumber;
        oldLines: z.ZodNumber;
        newStart: z.ZodNumber;
        newLines: z.ZodNumber;
        newEnd: z.ZodNumber;
        header: z.ZodString;
        addedLines: z.ZodArray<z.ZodNumber>;
        deletedLines: z.ZodArray<z.ZodNumber>;
        deletedLineTexts: z.ZodOptional<z.ZodArray<z.ZodObject<{
            line: z.ZodNumber;
            text: z.ZodString;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type GitFileHunks = z.infer<typeof GitFileHunksSchema>;
export declare const GitDiffHunksSchema: z.ZodObject<{
    range: z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>;
    files: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        oldPath: z.ZodOptional<z.ZodString>;
        binary: z.ZodBoolean;
        hunks: z.ZodArray<z.ZodObject<{
            path: z.ZodString;
            oldPath: z.ZodOptional<z.ZodString>;
            oldStart: z.ZodNumber;
            oldLines: z.ZodNumber;
            newStart: z.ZodNumber;
            newLines: z.ZodNumber;
            newEnd: z.ZodNumber;
            header: z.ZodString;
            addedLines: z.ZodArray<z.ZodNumber>;
            deletedLines: z.ZodArray<z.ZodNumber>;
            deletedLineTexts: z.ZodOptional<z.ZodArray<z.ZodObject<{
                line: z.ZodNumber;
                text: z.ZodString;
            }, z.core.$strip>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type GitDiffHunks = z.infer<typeof GitDiffHunksSchema>;
export declare const GitCommitSchema: z.ZodObject<{
    hash: z.ZodString;
    shortHash: z.ZodString;
    authorName: z.ZodString;
    authorEmail: z.ZodString;
    authorDate: z.ZodString;
    committerDate: z.ZodString;
    subject: z.ZodString;
    body: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type GitCommit = z.infer<typeof GitCommitSchema>;
export declare const GitCommitHistorySchema: z.ZodObject<{
    range: z.ZodOptional<z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>>;
    commits: z.ZodArray<z.ZodObject<{
        hash: z.ZodString;
        shortHash: z.ZodString;
        authorName: z.ZodString;
        authorEmail: z.ZodString;
        authorDate: z.ZodString;
        committerDate: z.ZodString;
        subject: z.ZodString;
        body: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    total: z.ZodNumber;
    truncated: z.ZodBoolean;
    pathFilter: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type GitCommitHistory = z.infer<typeof GitCommitHistorySchema>;
export declare const GitFileHistoryEntrySchema: z.ZodObject<{
    hash: z.ZodString;
    shortHash: z.ZodString;
    authorName: z.ZodString;
    authorEmail: z.ZodString;
    authorDate: z.ZodString;
    committerDate: z.ZodString;
    subject: z.ZodString;
    body: z.ZodOptional<z.ZodString>;
    added: z.ZodNullable<z.ZodNumber>;
    deleted: z.ZodNullable<z.ZodNumber>;
}, z.core.$strip>;
export type GitFileHistoryEntry = z.infer<typeof GitFileHistoryEntrySchema>;
export declare const GitFileHistorySchema: z.ZodObject<{
    path: z.ZodString;
    lineRange: z.ZodOptional<z.ZodObject<{
        start: z.ZodNumber;
        end: z.ZodNumber;
    }, z.core.$strip>>;
    entries: z.ZodArray<z.ZodObject<{
        hash: z.ZodString;
        shortHash: z.ZodString;
        authorName: z.ZodString;
        authorEmail: z.ZodString;
        authorDate: z.ZodString;
        committerDate: z.ZodString;
        subject: z.ZodString;
        body: z.ZodOptional<z.ZodString>;
        added: z.ZodNullable<z.ZodNumber>;
        deleted: z.ZodNullable<z.ZodNumber>;
    }, z.core.$strip>>;
    total: z.ZodNumber;
    truncated: z.ZodBoolean;
}, z.core.$strip>;
export type GitFileHistory = z.infer<typeof GitFileHistorySchema>;
export declare const GitChurnEntrySchema: z.ZodObject<{
    path: z.ZodString;
    commits: z.ZodNumber;
    added: z.ZodNumber;
    deleted: z.ZodNumber;
    net: z.ZodNumber;
    churn: z.ZodNumber;
    lastTouched: z.ZodString;
}, z.core.$strip>;
export type GitChurnEntry = z.infer<typeof GitChurnEntrySchema>;
export declare const GitChurnSortSchema: z.ZodEnum<{
    added: "added";
    deleted: "deleted";
    commits: "commits";
    net: "net";
    churn: "churn";
}>;
export type GitChurnSort = z.infer<typeof GitChurnSortSchema>;
export declare const GitChurnSummarySchema: z.ZodObject<{
    range: z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>;
    entries: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        commits: z.ZodNumber;
        added: z.ZodNumber;
        deleted: z.ZodNumber;
        net: z.ZodNumber;
        churn: z.ZodNumber;
        lastTouched: z.ZodString;
    }, z.core.$strip>>;
    totalCommits: z.ZodNumber;
    sortedBy: z.ZodEnum<{
        added: "added";
        deleted: "deleted";
        commits: "commits";
        net: "net";
        churn: "churn";
    }>;
}, z.core.$strip>;
export type GitChurnSummary = z.infer<typeof GitChurnSummarySchema>;
export declare const GitCochangePairSchema: z.ZodObject<{
    fileA: z.ZodString;
    fileB: z.ZodString;
    count: z.ZodNumber;
    lift: z.ZodNumber;
    lastCochangedAt: z.ZodString;
}, z.core.$strip>;
export type GitCochangePair = z.infer<typeof GitCochangePairSchema>;
export declare const GitCochangeAggregationOptionsSchema: z.ZodObject<{
    target: z.ZodOptional<z.ZodString>;
    limit: z.ZodOptional<z.ZodNumber>;
    maxCommitFiles: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export type GitCochangeAggregationOptions = z.infer<typeof GitCochangeAggregationOptionsSchema>;
export declare const GitCochangeSummarySchema: z.ZodObject<{
    range: z.ZodObject<{
        base: z.ZodOptional<z.ZodString>;
        head: z.ZodOptional<z.ZodString>;
        kind: z.ZodEnum<{
            "three-dot": "three-dot";
            "two-dot": "two-dot";
            "working-tree": "working-tree";
            staged: "staged";
            commit: "commit";
        }>;
        mergeBase: z.ZodOptional<z.ZodString>;
        resolvedBase: z.ZodOptional<z.ZodString>;
        resolvedHead: z.ZodOptional<z.ZodString>;
        describe: z.ZodString;
    }, z.core.$strip>;
    pairs: z.ZodArray<z.ZodObject<{
        fileA: z.ZodString;
        fileB: z.ZodString;
        count: z.ZodNumber;
        lift: z.ZodNumber;
        lastCochangedAt: z.ZodString;
    }, z.core.$strip>>;
    totalCommits: z.ZodNumber;
    consideredCommits: z.ZodNumber;
    skippedCommits: z.ZodNumber;
    maxCommitFiles: z.ZodNumber;
    target: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type GitCochangeSummary = z.infer<typeof GitCochangeSummarySchema>;
/**
 * A single path changed by one commit, carrying the blob object ids on both
 * sides. The blob id is what makes historical entity extraction affordable:
 * it addresses the exact bytes of that file at that revision, so parsed
 * results can be cached content-addressably and are never recomputed for
 * content that has been seen before — including after a rebase, which changes
 * commit ids but not blob ids.
 *
 * `oldBlobSha` is absent for an addition and `newBlobSha` for a deletion; git's
 * all-zero placeholder is normalized away rather than surfaced.
 */
export declare const GitCommitFileChangeSchema: z.ZodObject<{
    status: z.ZodEnum<{
        unknown: "unknown";
        added: "added";
        modified: "modified";
        deleted: "deleted";
        renamed: "renamed";
        copied: "copied";
        "type-changed": "type-changed";
        unmerged: "unmerged";
    }>;
    path: z.ZodString;
    oldPath: z.ZodOptional<z.ZodString>;
    similarity: z.ZodOptional<z.ZodNumber>;
    oldBlobSha: z.ZodOptional<z.ZodString>;
    newBlobSha: z.ZodOptional<z.ZodString>;
    oldMode: z.ZodOptional<z.ZodString>;
    newMode: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type GitCommitFileChange = z.infer<typeof GitCommitFileChangeSchema>;
export declare const GitCommitFileChangesSchema: z.ZodObject<{
    commit: z.ZodString;
    isMerge: z.ZodBoolean;
    files: z.ZodArray<z.ZodObject<{
        status: z.ZodEnum<{
            unknown: "unknown";
            added: "added";
            modified: "modified";
            deleted: "deleted";
            renamed: "renamed";
            copied: "copied";
            "type-changed": "type-changed";
            unmerged: "unmerged";
        }>;
        path: z.ZodString;
        oldPath: z.ZodOptional<z.ZodString>;
        similarity: z.ZodOptional<z.ZodNumber>;
        oldBlobSha: z.ZodOptional<z.ZodString>;
        newBlobSha: z.ZodOptional<z.ZodString>;
        oldMode: z.ZodOptional<z.ZodString>;
        newMode: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type GitCommitFileChanges = z.infer<typeof GitCommitFileChangesSchema>;
export declare const GitTreeEntrySchema: z.ZodObject<{
    path: z.ZodString;
    blobSha: z.ZodString;
    mode: z.ZodString;
}, z.core.$strip>;
export type GitTreeEntry = z.infer<typeof GitTreeEntrySchema>;
export declare const GitRepoInfoSchema: z.ZodObject<{
    repoRoot: z.ZodString;
    defaultBranch: z.ZodOptional<z.ZodString>;
    head: z.ZodOptional<z.ZodString>;
    isDirty: z.ZodBoolean;
    currentBranch: z.ZodOptional<z.ZodString>;
    shallow: z.ZodBoolean;
    detached: z.ZodBoolean;
    gitVersion: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type GitRepoInfo = z.infer<typeof GitRepoInfoSchema>;
