import Sequence from "./Sequence";
export declare class Merge {
    /**
     * Merges the elements of both sequences into a new sequence. Each element of this sequence is eventually replaced with
     * an element of the other sequence by comparing results of the given `selector` function. If no value is found in the other
     * sequence the element is retained. New elements of the other sequence are appended to the end of the new sequence or
     * prepended to the start of the new sequence, if `prependNewValues` is set to `true`. This operation is not lazy evaluated.
     *
     * @param {Sequence<T>} other
     * @param {(value: T) => S} selector
     * @param prependNewValues
     * @returns {Sequence<T>}
     */
    merge<T, S>(this: Sequence<T>, other: Sequence<T> | Iterable<T>, selector: (value: T) => S, prependNewValues?: boolean): Sequence<T>;
}
