export interface F0 { (): R; } export interface F1 { (a0: A0): R; } export interface F2 { (a0: A0, a1: A1): R; } export interface F3 { (a0: A0, a1: A1, a2: A2): R; } export declare class Maybe { private readonly t; static nothing: Maybe; static lift(t: T | undefined): Maybe; static all(t0: Maybe, t1: Maybe): Maybe<[T0, T1] | undefined>; private constructor(); bind(fn: F1>): Maybe; fmap(fn: F1): Maybe; get isNothing(): boolean; get isSomething(): boolean; catch(def: () => Maybe): Maybe; unwrap(): T | undefined; } export declare function unwrapFirst(ts: Maybe[]): T | undefined; export declare function all(...preds: F1[]): F1; export declare function any(...preds: F1[]): F1; export declare function ifTrue(pred: F1): F1>; export declare function listToMaybe(ms?: Maybe[]): Maybe<(T | undefined)[]> | Maybe;