export type IsPlainObject = T extends Record ? T extends readonly unknown[] ? false : T extends (...args: never[]) => unknown ? false : T extends Date ? false : T extends RegExp ? false : true : false; export type DeepMergeResult = { [K in keyof T | keyof U]: K extends keyof T ? K extends keyof U ? IsPlainObject extends true ? IsPlainObject extends true ? DeepMergeResult : U[K] : T[K] extends readonly unknown[] ? U[K] extends readonly unknown[] ? [...T[K], ...U[K]] : U[K] : U[K] : T[K] : K extends keyof U ? U[K] : never; }; export type MergeableObject = Record; export interface DeepMergeOptions { arrayMergeStrategy?: 'concat' | 'replace'; maxDepth?: number; } /** * Deeply merges properties from multiple source objects into a target object. * Nested objects are merged recursively. Arrays are concatenated by default. * * @template T - The type of the initial target object * @param target - The target object to merge properties into (will not be mutated) * @param sources - One or more source objects whose properties will be merged * @returns A new object resulting from the merge, ensuring immutability * * @example * ```typescript * import { deepMerge } from 'modash'; * * const config = deepMerge( * { api: { url: '/api', timeout: 5000 }, features: ['auth'] }, * { api: { timeout: 10000 }, features: ['dashboard'] } * ); * // Result: { api: { url: '/api', timeout: 10000 }, features: ['auth', 'dashboard'] } * ``` */ export declare function deepMerge(target: T): T; export declare function deepMerge(target: T, source: U): DeepMergeResult; export declare function deepMerge(target: T, source1: U, source2: V): DeepMergeResult, V>; export declare function deepMerge(target: T, options: DeepMergeOptions): T; export declare function deepMerge(target: T, source: U, options: DeepMergeOptions): DeepMergeResult; export declare function deepMerge(target: T, ...sourcesAndOptions: Array): T; //# sourceMappingURL=index.d.ts.map