/** * Merges U to T. * * @typeParam T - An object to merge U into. * @typeParam U - An object to merge properties from. * * @return An merged object type. */ export declare type Merge = Omit & { [K in (keyof T & keyof U)]: U[K] extends object ? U[K] extends any[] ? U[K] : T[K] extends object ? Merge extends infer A ? Cast : never : U[K] : U[K]; } & Omit; declare type Cast = T extends U ? T : U; /** * Recursively merges source properties to the object. * Be aware that this method does not merge arrays. They are just duplicated by `slice()`. * * @param object - An object to merge properties to. * @param source - A source object to merge properties from. * * @return A new object with merged properties. */ export declare function merge(object: T, source: U): Merge; export {};