interface IObject {
    [key: string]: any;
    length?: never;
}
declare type TUnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
export declare const deepMerge: {
    <T extends IObject[]>(...objects: T): TUnionToIntersection<T[number]>;
    options: IOptions;
    withOptions<T_1 extends IObject[]>(options: Partial<IOptions>, ...objects: T_1): TUnionToIntersection<T_1[number]>;
};
interface IOptions {
    mergeArrays: boolean;
}
export default deepMerge;
