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