import { Foldable } from "./foldable";
import { Applicative } from "./applicative";
import { Either } from "./either";
export declare class InfiniteList implements Applicative, Foldable {
private fn;
constructor(fn: (idx: number) => A);
map(f: (a: A) => B): InfiniteList;
mapTo(b: B): InfiniteList;
of(b: B): InfiniteList;
ap(a: InfiniteList<(a: A) => B>): InfiniteList;
lift(f: (t: T1) => R, m: InfiniteList): InfiniteList;
lift(f: (t: T1, u: T2) => R, m1: InfiniteList, m2: InfiniteList): InfiniteList;
lift(f: (t1: T1, t2: T2, t3: T3) => R, m1: InfiniteList, m2: InfiniteList, m3: InfiniteList): InfiniteList;
foldr(f: (a: A, acc: B) => B, init: B): B;
foldl(f: (acc: B, a: A) => B, init: B): B;
shortFoldr(f: (a: A, b: B) => Either, init: B): B;
shortFoldl(f: (b: B, a: A) => Either, init: B): B;
size(): number;
maximum(): number;
minimum(): number;
sum(): number;
}
export declare function repeat(a: A): InfiniteList;
export declare const naturals: InfiniteList;