import Filterable from "../../specifications/Filterable";
import Traversable from "../../specifications/Traversable";
import Semigroup from "../../specifications/Semigroup";
import { Applicative, ApplicativeTypeRep } from "../../specifications/Applicative";
import { FNA1 } from "../../specifications/Function";
export default class Intersection implements Applicative, Filterable, Traversable, Semigroup {
protected readonly values: Set;
constructor(values: Iterable);
map(fn: (a: A) => B): Intersection;
ap(other: Intersection): A extends FNA1 ? Intersection : any;
static of(value: A): Intersection;
filter(fn: (value: A) => Boolean): Intersection;
reduce(reducer: (accumulator: B, value: A) => B, initial: B): B;
traverse(TypeRep: ApplicativeTypeRep>, fn: (a: A) => Applicative): Applicative>;
concat(other: Intersection): Intersection;
static empty(): Intersection;
get(): Array;
inspect(): string;
}