import { TreeEntry, WalkerEntry } from 'isomorphic-git';
import { AcceptedConflict, ChangedFile, ConflictResolutionStrategies } from '../types';
import { GitDDBInterface } from '../types_gitddb';
import { SyncInterface } from '../types_sync';
/**
 * merge
 *
 * @throws Errors from {@link threeWayMerge}
 *
 * @internal
 */
export declare function merge(gitDDB: GitDDBInterface, sync: SyncInterface, baseCommitOid: string, oursCommitOid: string, theirsCommitOid: string): Promise<[string, ChangedFile[], ChangedFile[], AcceptedConflict[]]>;
/**
 * 3-way merge
 *
 * @throws {@link Err.InvalidConflictStateError}
 * @throws {@link Err.CannotDeleteDataError}
 *
 * @throws # Errors from getMergedDocument
 * @throws - {@link Err.InvalidDocTypeError}
 * @throws - {@link Err.InvalidConflictResolutionStrategyError}
 *
 * @throws # Errors from writeBlobToFile
 * @throws - {@link Err.CannotCreateDirectoryError}
 *
 * @throws # Errors from getFatDocFromData, getFatDocFromReadBlobResult
 * @throws - {@link Err.InvalidJsonObjectError}
 *
 */
export declare function threeWayMerge(gitDDB: GitDDBInterface, sync: SyncInterface, conflictResolutionStrategy: ConflictResolutionStrategies, fullDocPath: string, base: WalkerEntry | null, ours: WalkerEntry | null, theirs: WalkerEntry | null): Promise<[
    TreeEntry | undefined,
    ChangedFile | undefined,
    ChangedFile | undefined,
    AcceptedConflict | undefined
]>;
//# sourceMappingURL=3way_merge.d.ts.map