import type { Merge } from 'type-fest'; type ObjectWithPotentialNesting = Record; /** * Recursively assigns default properties to a new object, without mutating * the target object in the process. * * - Primitive override types such as string, number, boolean, or Symbol always * replace the default's equivalent key * - Default keys containing Arrays or ES6 classes are replaced rather than merged * - Default keys containing POJOs are merged if the override's key is also a POJO * NOTE: The root is a special case, in that if you pass in an empty object * as the new object, no overrides will take place and you will get the original * object back. Within the tree however, an empty object will completely clobber * from the corresponding subtree. To the greatest extent possible, the types * try to model this behavior but some situations will require using generics * (recommended) or explicit casts. * * @param defaults the default object * @param overrides the object to merge on top of defaults * @returns object with newly merged features */ export declare function defaultsDeep = Merge>(defaults: Defaults, overrides: Overrides): Output; export {}; //# sourceMappingURL=index.d.ts.map