/**
 * Recursively merges own enumerable string keyed properties of source objects into
 * the destination object. Source properties that resolve to undefined are skipped if
 * a destination value exists. Array and plain object properties are merged recursively.
 * Other objects and value types are overridden by assignment.
 * Drop-in replacement for lodash/merge.
 */
export default function merge<TObject, TSource1>(object: TObject, source1: TSource1): TObject & TSource1;
export default function merge<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
export default function merge<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
export default function merge(target: any, ...sources: any[]): any;
