import type { _, DeepPartial_, IsOptional, SuggestObject, Value } from '../../index.js'; export type DeepMerge2 = DeepMerge2_ : A, BOptional extends true ? DeepPartial_ : B, BOptional>; type DeepMerge2_ = A extends object ? B extends object ? _<{ [k in keyof A | keyof B as IsOptional]?: k extends keyof A ? k extends keyof B ? DeepMerge2, Value, true, true> : Value : k extends keyof B ? Value : never; } & { [k in keyof A | keyof B as (k extends keyof A ? IsOptional : never) | (k extends keyof B ? IsOptional : never)]: k extends keyof A ? k extends keyof B ? DeepMerge2, Value, IsOptional, IsOptional> : Value : k extends keyof B ? Value : never; }> : BOptional extends true ? A | B : B : BOptional extends true ? A | B : B; type DeepMerge_ = objs extends readonly [] ? accumulator : objs extends readonly [infer h, ...infer t] ? [h] extends [object] ? DeepMerge_> : [ h ] extends [never] ? DeepMerge_ : accumulator : accumulator; export type DeepMerge = [A] extends [readonly object[]] ? DeepMerge_ : DeepMerge_; export type DeepMergeN = DeepMerge_; /** * Deep merge 2 objects () * * @example * * ```ts * const r = deepMerge({ a: { aa: 1 } }, { a: { ab: 2 } }) // `{a: {aa: 1, ab: 2}}` * ``` * * @param objectA - First object to deep merge * @param objectB - Second object to deep merge * @returns Deeply merged object */ export declare function deepMerge>(objectA: ObjA, objectB: ObjB): DeepMerge2; /** * Deep merge N objects (`objs`) * * @example * * ```ts * const r = deepMerge({ a: { aa: 1 } }, { a: { ab: 2 } }) // `{a: {aa: 1, ab: 2}}` * ``` * * @param objs - Objects to deep merge * @returns Deeply merged object */ export declare function deepMerge(...objs: Objs): DeepMerge; export {}; //# sourceMappingURL=deepMerge.d.ts.map