import { PlainObject, Spread } from "../types";
interface MergeArrays {
    <A, B>(a: A[], b: B[]): (A | B)[];
}
interface MergePlainObjects {
    <A extends PlainObject, B extends PlainObject>(a: A, b: B): Spread<A, B>;
}
interface MergeMaps {
    <A, B, C, D>(a: Map<A, C>, b: Map<B, D>): Map<A | B, C | D>;
}
interface MergeSets {
    <A, B>(a: Set<A>, b: Set<B>): Set<A | B>;
}
interface Merge extends MergeArrays, MergePlainObjects, MergeMaps, MergeSets {
    <A, B>(a: A, b: B): B;
}
export declare const merge: Merge;
export {};
