import { MergeCode } from "./merge-low";
import { PatchResult } from "./patch-low";
export type MergePerms = {
    enable: boolean;
    insert?: boolean;
    update?: boolean;
    unset?: boolean;
};
export declare function updateCodeInfo(mergeCode: MergeCode): MergePerms;
export declare function shallowMerge(target: any, source: any, scalarCode: MergeCode, vectorCode?: MergeCode, excludeKeys?: string[], includeKeys?: string[]): boolean;
export declare function immutableMerge(target: any, source: any, scalarCode: MergeCode, vectorCode?: MergeCode): any;
export declare function deepMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, scalarCode: MergeCode, vectorCode: MergeCode, nestedCode: MergeCode): boolean;
export declare function immutableDeepMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, scalarCode: MergeCode, vectorCode?: MergeCode, nestedCode?: MergeCode): any;
export declare function diffFromMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, scalarCode: MergeCode, vectorCode?: MergeCode, nestedCode?: MergeCode, orderInd?: boolean): any | false;
export declare function patchFromMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, scalarCode: MergeCode, vectorCode?: MergeCode, nestedCode?: MergeCode, orderInd?: boolean): PatchResult[] | false;
export declare function bypassMergeDiff<T extends object>(target: T, source: object, orderInd?: boolean): Partial<T> | false;
//# sourceMappingURL=merge-high.d.ts.map