/**
 * CodraGraph-side glue for the Phase 4 versioned graph store.
 *
 * The graphstore package itself is engine-agnostic; everything that
 * touches LadybugDB lives here, in codragraph/. Best-effort by design:
 * if any step fails the analyze flow continues and the user keeps a
 * working index — versioning gracefully degrades to "no snapshot
 * recorded for this run" rather than breaking unrelated paths.
 */
import { type ObjectId, type Snapshot, type SnapshotStats } from '@codragraph/graphstore';
/** Subdirectory of `<repo>/.codragraph` that holds versioning artifacts. */
export declare const GRAPHSTORE_SUBDIR = "graphstore";
export interface RecordAnalysisSnapshotOptions {
    /** Absolute path of the repo's `.codragraph/` storage directory. */
    readonly storagePath: string;
    /** Git HEAD of the indexed repo, when known. */
    readonly indexedRepoCommit?: string;
    /**
     * Author for the implicit "analyze" commit. Defaults to a generic
     * `@codragraph/cli` identity when callers don't have a real one to hand.
     */
    readonly author?: {
        readonly name: string;
        readonly email: string;
    };
    /** Override the commit message — defaults to a timestamped analyze marker. */
    readonly message?: string;
    /** Called with per-table failures so the analyze caller can log them. */
    readonly onSkipTable?: (tableName: string, error: unknown) => void;
}
export interface RecordAnalysisSnapshotResult {
    readonly snapshotId: ObjectId;
    readonly commitId: ObjectId;
    readonly snapshot: Snapshot;
    readonly stats: SnapshotStats;
    readonly branch: string;
}
/**
 * Snapshot the currently-loaded LadybugDB into the content-addressed
 * store and advance the active branch's HEAD to the new commit. Caller
 * is expected to have already initialized cgdb with `initCgdb(...)`.
 *
 * Returns null if anything goes sideways (logged via `onSkipTable`); the
 * analyze pipeline treats that as "no snapshot for this run".
 */
export declare const recordAnalysisSnapshot: (opts: RecordAnalysisSnapshotOptions) => Promise<RecordAnalysisSnapshotResult | null>;
