import { DistinctEqualFn } from "../operations/sync/distinct"; export interface Retainer extends Iterable { has?(value: T): boolean; add(value: T): void; } export interface RetainerWithHas extends Retainer { has(value: T): boolean; } export declare function arrayRetainer(has?: (value: T, values: T[]) => boolean): Retainer; export declare function setRetainer(): RetainerWithHas; export declare function distinctRetainer(equalityFn?: DistinctEqualFn): RetainerWithHas; export declare function retain(iterable: Iterable, retainer?: Retainer): Iterable;