import type { BaseVersion } from '../packs/schemas/manifest.js';
export type FileDisposition = {
    kind: 'unchanged';
    path: string;
} | {
    kind: 'auto-merged-personal';
    path: string;
    reason: 'personal-only-edit';
} | {
    kind: 'auto-merged-vanilla';
    path: string;
    reason: 'vanilla-only-edit';
} | {
    kind: 'conflict';
    path: string;
    conflictSidecarPath: string;
};
export interface MergeResult {
    packId: string;
    baseVersion: BaseVersion;
    vanillaVersion: BaseVersion;
    personalRevisionId: number;
    dispositions: FileDisposition[];
    conflictCount: number;
    /** True iff merge completed without errors (conflicts are NOT errors). */
    ok: boolean;
    /** True iff merge was a no-op (already merged against this vanilla). */
    noop: boolean;
}
export interface ThreeWayMergeInput {
    packId: string;
    baseDir: string;
    personalStateDir: string;
    vanillaDir: string;
    vanillaVersion: BaseVersion;
}
export declare function runThreeWayMerge(input: ThreeWayMergeInput): Promise<MergeResult>;
//# sourceMappingURL=versioning.d.ts.map