type PlainObject = Record; type DeepMerge = { [K in keyof T | keyof S]: K extends keyof S ? K extends keyof T ? T[K] extends PlainObject ? S[K] extends PlainObject ? DeepMerge : S[K] : S[K] : S[K] : K extends keyof T ? T[K] : never; }; export declare function deepMerge(target: T, source: S): DeepMerge; export {};