import type { AnySet } from "./Util" declare namespace SiftSet { export function add(set: Set, ...values: I[]): Set export function copy(set: T): T export function count>( set: S, predicate?: (item: T) => unknown ): number export function difference(set: Set, ...sets: Set[]): Set export function differenceSymmetric(set: Set, ...sets: Set[]): Set export function filter>( set: S, predicate: (item: T, set: Readonly) => unknown ): Set export function fromArray(array: T[]): Set export function has(set: AnySet, item: unknown): boolean export function intersection(...sets: Set[]): Set export function isSubset( subset: A, superset: B ): boolean export function isSuperset( superset: A, subset: B ): boolean export function map>( set: S, mapper: (item: T, set: Readonly) => R ): Set export function merge(...sets: Set[]): Set export function subtract(set: S, ...values: unknown[]): S export function toArray(set: Set): T[] // Aliases export { merge as join, merge as union, subtract as delete } } export = SiftSet