import type { AnyObject, Primitives } from './types'; type AllKeys = T extends any ? keyof T : never; type IndexValue = T extends any ? (K extends keyof T ? T[K] : D) : never; type PartialKeys = Omit & Partial> extends infer O ? { [P in keyof O]: O[P]; } : never; type DeepMerge = [T] extends [Array] ? { [K in keyof T]: DeepMerge; } : [T] extends [Primitives] ? T : [T] extends [AnyObject] ? PartialKeys<{ [K in AllKeys]: DeepMerge>; }, never> : T; type Spread = S extends AnyObject[] ? [T, ...S] : [T, S]; type Merge = DeepMerge[number]>; /** * deep merges provided objects by assigning the sources onto the target object passed as the first argument * @example * deepMerge({ a: 1, b: { c: 2 } }, { b: { d: 3 } }) * // returns { a: 1, b: { c: 2, d: 3 } } */ export default function deepMerge(target: T, ...sources: S): Merge; export {}; //# sourceMappingURL=deepMerge.d.ts.map