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