/**
 * Merge functionality for PIT TypeScript - handles merging branches with conflict resolution.
 */
import { StorageEngine } from '../storage/engine';
export interface MergeConflict {
    filename: string;
    baseHash?: string;
    oursHash?: string;
    theirsHash?: string;
    baseContent?: string;
    oursContent?: string;
    theirsContent?: string;
}
export interface MergeResult {
    mergedTreeHash?: string;
    conflicts: MergeConflict[];
    mergedFiles: Record<string, string>;
    isFastForward: boolean;
    hasConflicts: boolean;
}
export declare abstract class MergeStrategy {
    protected storage: StorageEngine;
    constructor(storage: StorageEngine);
    abstract mergeTrees(baseTreeHash: string | undefined, oursTreeHash: string, theirsTreeHash: string): Promise<MergeResult>;
}
export declare class ThreeWayMerge extends MergeStrategy {
    mergeTrees(baseTreeHash: string | undefined, oursTreeHash: string, theirsTreeHash: string): Promise<MergeResult>;
    private loadTree;
    private mergeFile;
    private createConflict;
    private loadPromptContent;
    private tryPromptMerge;
}
export declare class RecursiveMerge extends ThreeWayMerge {
    findMergeBase(commit1Hash: string, commit2Hash: string): Promise<string | undefined>;
    private getAllAncestors;
}
export declare function mergeBranches(storage: StorageEngine, currentCommitHash: string, mergeCommitHash: string, strategy?: string): Promise<MergeResult>;
export declare function formatConflictMarkers(conflict: MergeConflict): string;
//# sourceMappingURL=merge.d.ts.map