import type { Assign } from './typeUtils/Assign.js'; import type { Pop } from './typeUtils/List.js'; import type { PrettyPrint } from './typeUtils/PrettyPrint.js'; /** * The return type of `merge()`. It reflects the type that is returned by JavaScript. * * This TS Utility can be used as standalone as well */ export type Merge = T extends Record ? Ts extends Record[] ? PrettyPrint> : Pop : Pop; /** * Merge anything recursively. * Objects get merged, special objects (classes etc.) are re-assigned "as is". * Basic types overwrite objects or other basic types. */ export declare function merge(object: T, ...otherObjects: Tn): Merge; export declare function mergeAndCompare(compareFn: (prop1: unknown, prop2: unknown, propName: string | symbol) => any, object: T, ...otherObjects: Tn): Merge; export declare function mergeAndConcat(object: T, ...otherObjects: Tn): Merge;