/**
 * MCP dispatch for the Phase 4 versioned-graph tools.
 *
 * Each handler takes the repo's `storagePath` (already resolved by the
 * caller from the optional `repo` MCP param) and returns plain JSON
 * structures. Output is shaped for direct rendering by the agent — short
 * strings, sorted lists, no internal CAS handles in the response.
 */
import { type ObjectId } from '@codragraph/graphstore';
export interface GraphstoreLogParams {
    readonly storagePath: string;
    readonly limit?: number;
    readonly from?: string;
}
export declare const handleGraphstoreLog: (params: GraphstoreLogParams) => Promise<{
    branch: string;
    head: ObjectId;
    commits: {
        id: string;
        short: string;
        snapshot: string;
        parents: string[];
        author: string;
        ts: string;
        message: string;
    }[];
}>;
export interface GraphstoreBranchesParams {
    readonly storagePath: string;
}
export declare const handleGraphstoreBranches: (params: GraphstoreBranchesParams) => Promise<{
    current: string;
    branches: {
        name: string;
        head: ObjectId;
        short: string;
        createdAt: string;
        isCurrent: boolean;
    }[];
}>;
export interface GraphstoreDiffParams {
    readonly storagePath: string;
    readonly from: string;
    readonly to: string;
}
export declare const handleGraphstoreDiff: (params: GraphstoreDiffParams) => Promise<{
    from: {
        id: ObjectId;
        short: string;
        message: string;
    };
    to: {
        id: ObjectId;
        short: string;
        message: string;
    };
    summary: {
        addedNodes: Record<string, number>;
        removedNodes: Record<string, number>;
        addedEdges: number;
        removedEdges: number;
        modifiedSymbols: number;
    };
    modifiedSymbols: import("@codragraph/graphstore").ModifiedSymbol[];
}>;
export interface GraphstoreBlameParams {
    readonly storagePath: string;
    readonly symbolId: string;
    readonly table?: string;
    readonly limit?: number;
}
export declare const handleGraphstoreBlameSymbol: (params: GraphstoreBlameParams) => Promise<{
    symbolId: string;
    history: {
        commitId: ObjectId;
        short: string;
        ts: string;
        message: string;
        table: string | null;
        rowHash: ObjectId | null;
    }[];
}>;
export interface GraphstoreSemanticDiffParams {
    readonly storagePath: string;
    readonly from: string;
    readonly to: string;
}
export declare const handleGraphstoreSemanticDiff: (params: GraphstoreSemanticDiffParams) => Promise<{
    from: {
        id: string & {
            readonly __brand: "codragraph-graphstore.ObjectId";
        };
        short: string;
        message: string;
    };
    to: {
        id: string & {
            readonly __brand: "codragraph-graphstore.ObjectId";
        };
        short: string;
        message: string;
    };
    summary: {
        addedAPIs: number;
        removedAPIs: number;
        addedProcesses: number;
        removedProcesses: number;
        classifiedModifications: number;
    };
    addedAPIs: import("@codragraph/graphstore").SymbolRef[];
    removedAPIs: import("@codragraph/graphstore").SymbolRef[];
    addedProcesses: import("@codragraph/graphstore").SymbolRef[];
    removedProcesses: import("@codragraph/graphstore").SymbolRef[];
    classifiedModifications: import("@codragraph/graphstore").ClassifiedModification[];
}>;
export interface GraphstoreMergeParams {
    readonly storagePath: string;
    /** Branch or commit id to merge in. */
    readonly source: string;
    /** Branch to merge into (the "ours" side). Defaults to current branch. */
    readonly into?: string;
    /** Override the default merge commit message. */
    readonly message?: string;
    /**
     * When true, return the conflict report instead of an error.
     * (Conflicts are returned regardless; this just controls whether
     * a non-conflict success/no-op path is also rendered as a "report".)
     */
    readonly dryRun?: boolean;
}
export declare const handleGraphstoreMerge: (params: GraphstoreMergeParams) => Promise<{
    kind: string;
    message: string;
    branch?: undefined;
    to?: undefined;
    dryRun?: undefined;
    base?: undefined;
    conflicts?: undefined;
    totalConflicts?: undefined;
    snapshotId?: undefined;
    stats?: undefined;
    commitId?: undefined;
} | {
    kind: string;
    branch: string;
    message?: undefined;
    to?: undefined;
    dryRun?: undefined;
    base?: undefined;
    conflicts?: undefined;
    totalConflicts?: undefined;
    snapshotId?: undefined;
    stats?: undefined;
    commitId?: undefined;
} | {
    kind: string;
    branch: string;
    to: ObjectId;
    dryRun: boolean;
    message?: undefined;
    base?: undefined;
    conflicts?: undefined;
    totalConflicts?: undefined;
    snapshotId?: undefined;
    stats?: undefined;
    commitId?: undefined;
} | {
    kind: string;
    branch: string;
    base: ObjectId;
    conflicts: import("@codragraph/graphstore").MergeConflict[];
    totalConflicts: number;
    message?: undefined;
    to?: undefined;
    dryRun?: undefined;
    snapshotId?: undefined;
    stats?: undefined;
    commitId?: undefined;
} | {
    kind: string;
    dryRun: boolean;
    branch: string;
    base: ObjectId;
    snapshotId: ObjectId;
    stats: import("@codragraph/graphstore").MergeStats;
    message?: undefined;
    to?: undefined;
    conflicts?: undefined;
    totalConflicts?: undefined;
    commitId?: undefined;
} | {
    kind: string;
    dryRun: boolean;
    branch: string;
    base: ObjectId;
    commitId: ObjectId;
    snapshotId: ObjectId;
    stats: import("@codragraph/graphstore").MergeStats;
    message?: undefined;
    to?: undefined;
    conflicts?: undefined;
    totalConflicts?: undefined;
}>;
export interface GraphstoreGcParams {
    readonly storagePath: string;
    readonly dryRun?: boolean;
}
export declare const handleGraphstoreGc: (params: GraphstoreGcParams) => Promise<{
    dryRun: boolean;
    reachable: number;
    swept: number;
    bytesFreed: number;
    sample: ObjectId[];
}>;
