export type Path = (string | number | symbol)[];
export declare function set<Entity = any, Output = Entity, Value = any>(entity: Entity, paths: Path, value: Value, removeIfUndefined?: boolean): Output;
/**
 * Merge objects which will create
 * @example
 * ```ts
 * merge({ a: 1 }, { b: 2 }); // { a: 1, b: 2 }
 *
 * // 深合并
 * merge({ a: { x: 1 } }, { a: { y: 2 } });
 * // { a: { x: 1, y: 2 } }
 *
 * // 后者覆盖前者
 * merge({ a: 1, b: 2 }, { b: 3 });
 * // { a: 1, b: 3 }
 *
 * // 数组：直接覆盖（不会合并）
 * merge({ a: [1, 2, 3] }, { a: [4] });
 * // { a: [4] }
 *
 * // 多源合并
 * merge({ a: 1 }, { b: 2 }, { c: 3 });
 * // { a: 1, b: 2, c: 3 }
 * ```
 */
export declare function merge<T extends object>(...sources: T[]): T;
