export interface ListLike extends Iterable { readonly head: T; readonly tail: ListLike; get(index: number): T; size(): number; replace(f: (value: T) => boolean, newValue: T): ListLike; find(f: (v: T) => boolean): T | undefined; every(f: (value: T) => boolean): boolean; some(f: (value: T) => boolean): boolean; filter(f: (value: T) => boolean): ListLike; sort(compareFn?: (a: T, b: T) => number): ListLike; forEach(f: (value: T) => void): void; map(f: (value: T) => U): ListLike; reduce(f: (previousValue: U, currentValue: T) => U, initialValue: U): U; reduceRight(f: (previousValue: U, currentValue: T) => U, initialValue: U): U; reverse(): ListLike; concat(tail: ListLike): ListLike; append(...items: T[]): ListLike; prepend(...items: T[]): ListLike; join(separator?: string): string; toArray(): T[]; } export declare class List implements ListLike { readonly head: T; readonly tail: List; protected constructor(head: T, tail: List); get(index: number): T; size(): number; [Symbol.iterator](): Iterator; private iterate; /** Returns head list, last list and current iteration list */ private copy; replace(predicate: (value: T) => boolean, newValue: T): List; find(f: (value: T) => boolean): T | undefined; every(f: (value: T) => boolean): boolean; some(f: (value: T) => boolean): boolean; filter(predicate: (value: T) => boolean): List; sort(compare?: (a: T, b: T) => number): List; reduce(f: (previousValue: U, currentValue: T) => U, initialValue: U): U; reduceRight(f: (previousValue: U, currentValue: T) => U, initialValue: U): U; forEach(f: (value: T) => void): void; map(f: (value: T) => U): List; reverse(): List; concat(tail: List): List; append(...items: T[]): List; prepend(...items: T[]): List; join(separator?: string): string; toArray(): T[]; static from(head: T, tail: List): List; static of(...items: T[]): List; static empty: Nil; } export type Nil = List; export declare const Nil: Nil;