/**
 * Local replacement for the `deepmerge` package.
 *
 * Preserves the behavior the toolchain relied on:
 * - plain objects are merged recursively
 * - arrays are concatenated (target items first, then source items)
 * - non-mergeable values (primitives, class instances, Date, RegExp, etc.) are
 *   taken from the source by reference, exactly as `deepmerge` did
 * - inputs are never mutated; merged plain objects/arrays are deep-cloned
 * - `customMerge` lets a caller override the merge for a specific key
 * - `__proto__` / `constructor` / `prototype` keys are skipped to avoid
 *   prototype pollution (mirrors `deepmerge`'s `propertyIsUnsafe` guard)
 */
export type MergeFunction = (target: unknown, source: unknown, options?: DeepMergeOptions) => unknown;
export interface DeepMergeOptions {
    /**
     * Returns a custom merge function for the given key, or `undefined` to use the
     * default recursive merge. Only invoked when the key exists on the target and
     * the source value is itself mergeable — matching `deepmerge`'s semantics.
     */
    customMerge?: (key: string) => MergeFunction | undefined;
}
export declare function deepMerge<T>(target: unknown, source: unknown, options?: DeepMergeOptions): T;
//# sourceMappingURL=deepMerge.d.ts.map