declare const resolveAsUndefSymbol: unique symbol;
/**
 * Recursively merges objects
 *
 * @param obj_a - Object to merge
 * @param obj_b - Object to merge
 * @param options - Merge strategies options
 * @returns Merged objects
 */
declare const deepMerge: <T extends Obj, K extends Obj>(obj_a: T, obj_b: K, options?: {
    /** Prevents undefined values from obj_b to be written to result */
    skipUndef?: boolean;
    /** Resolve merging iof special objects, eg. Set, Date */
    mergeResolve?(obj_a: Obj, obj_b: Obj, propName: string): any;
    /**
    * For the cases when there are objects you don't want to merge,
    * but resolve them in a special way
    */
    resolveObject?(obj_a: Obj, obj_b: Obj, propName: string): Obj | symbol | undefined;
}) => T & K;
export default deepMerge;
export { resolveAsUndefSymbol };
