/**
 * Returns a new set representing the union of the given sets.
 *
 * @param sets The sets to calculate the union of.
 */
export declare function union<T>(...sets: Set<T>[]): Set<T>;
/**
 * Returns a new set representing the intersection of the given sets.
 *
 * @param sets The sets to calculate the intersection of.
 */
export declare function intersection<T>(...sets: Set<T>[]): Set<T>;
/**
 * Returns a new set representing the difference of the given sets. The
 * difference is evaluated from left to right, e.g. Difference(A, B, C) is
 * evaluated as (A - B) - C.
 *
 * @param sets The sets to calculate the difference of.
 */
export declare function difference<T>(...sets: Set<T>[]): Set<T>;
/**
 * Returns a new set with all elements that pass the test implemented by the
 * provided callback function.
 *
 * @param set The set to filter.
 * @param callback The callback function that acts as a predicate.
 */
export declare function filter<T>(set: Set<T>, callback: (value: T, set: Set<T>) => boolean): Set<T>;
/**
 * Returns the first element in the set (according to insertion order) that
 * satisfies the provided testing function. Otherwise undefined is returned.
 *
 * @param set The set to search.
 * @param callback The testing function.
 */
export declare function find<T>(set: Set<T>, callback: (value: T, set: Set<T>) => boolean): T | undefined;
