import { AsyncIterableLike } from "../async-like"; import { AsyncRetainerWithHas, RetainerWithHas } from "./retain"; export type DistinctEqualFn = (left: T, right: T) => boolean; export type DistinctEqualAsyncFn = (left: T, right: T) => boolean | Promise; export declare function distinctRetainer(equalityFn?: DistinctEqualFn): RetainerWithHas; export declare function distinct(iterable: Iterable, equalityFn?: DistinctEqualFn): Iterable; export declare function asyncDistinctRetainer(equalityFn?: DistinctEqualAsyncFn): RetainerWithHas | AsyncRetainerWithHas; export declare function asyncDistinct(iterable: AsyncIterableLike, equalityFn?: DistinctEqualAsyncFn): AsyncIterable;