import { Replace } from "../Types"; import type { PlainObject, Pretty } from "./Types"; export type DeepMerge<$A, $B> = $B extends { [Replace]: true; } ? Pretty> : Pretty<{ [$K in Exclude]: $A extends { [_ in $K]?: infer $AV; } ? $B extends { [_ in $K]?: infer $BV; } ? $AV extends PlainObject ? $BV extends PlainObject ? DeepMerge<$AV, $BV> : $BV : $BV : $AV : $B extends { [_ in $K]?: infer $BV; } ? $BV : never; }>; export declare function deepMerge<$A extends PlainObject, $B extends PlainObject>(a: $A, b: $B): DeepMerge<$A, $B>;