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; }