import { z } from 'zod';
export declare const GitDagCommitSchema: z.ZodObject<{
    oid: z.ZodString;
    parents: z.ZodArray<z.ZodString>;
    author: z.ZodObject<{
        name: z.ZodString;
        email: z.ZodString;
        time: z.ZodString;
    }, z.core.$strict>;
    committedAt: z.ZodString;
    order: z.ZodNumber;
}, z.core.$strict>;
export type GitDagCommit = z.infer<typeof GitDagCommitSchema>;
export declare const GitDagHistorySchema: z.ZodObject<{
    requestedRef: z.ZodString;
    resolvedHead: z.ZodString;
    resolvedSince: z.ZodOptional<z.ZodString>;
    objectFormat: z.ZodEnum<{
        sha1: "sha1";
        sha256: "sha256";
    }>;
    shallow: z.ZodBoolean;
    truncated: z.ZodBoolean;
    commits: z.ZodArray<z.ZodObject<{
        oid: z.ZodString;
        parents: z.ZodArray<z.ZodString>;
        author: z.ZodObject<{
            name: z.ZodString;
            email: z.ZodString;
            time: z.ZodString;
        }, z.core.$strict>;
        committedAt: z.ZodString;
        order: z.ZodNumber;
    }, z.core.$strict>>;
    emitCommits: z.ZodCustom<Set<string>, Set<string>>;
}, z.core.$strict>;
export type GitDagHistory = z.infer<typeof GitDagHistorySchema>;
export interface ReadGitDagHistoryOptions {
    repoRoot: string;
    ref: string;
    since?: string;
    maxCommits: number;
    signal?: AbortSignal;
}
/**
 * Read the newest bounded full-DAG window ending at one immutable commit.
 *
 * Git walks newest-first before applying `--max-count`; reversing that result
 * yields parents-before-children order inside the retained window while always
 * keeping the requested pin. Parents outside a truncated window remain named
 * on the boundary commit, so higher layers can report provisional coverage.
 */
export declare function readGitDagHistory(options: ReadGitDagHistoryOptions): Promise<GitDagHistory>;
