import { MergeCode } from "./merge-low";
export type DetailConfig = {
    [key: string]: MergeCode | DetailConfig;
};
export type MergeConfig = {
    scalar?: MergeCode;
    vector?: MergeCode;
    nested?: MergeCode;
    [glob: string]: MergeCode | MergeConfig | undefined;
};
export declare function detailMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, mergeCodes: DetailConfig): boolean;
export declare function immutableDetailMerge(target: any, source: any, mergeCodes: DetailConfig): any;
export declare function getDetailKeys(obj: any, mergeCodes: DetailConfig, excludeKeys?: string[]): string[];
export declare function customMerge(target: {
    [key: string]: any;
}, source: {
    [key: string]: any;
}, mergeConf: MergeConfig | MergeCode, excludeKeys?: string[]): boolean;
export declare function customMergeDiff<T extends object>(target: T, source: Partial<T>, mergeConf: MergeConfig | MergeCode, excludeKeys?: string[]): Partial<T> | false;
export declare function immutableCustomMerge(target: any, source: any, mergeConf: MergeConfig, skipFill?: boolean): any;
export declare const fillUpdateCodes: (source: any, mergeConf: MergeConfig | MergeCode, blockUnset?: boolean, excludeKeys?: string[]) => DetailConfig;
//# sourceMappingURL=merge-conf.d.ts.map