import { default as Alt } from '../../interface/Alt';
import { default as Monad } from '../../interface/Monad';
import { default as PatternMatch } from '../../interface/Patternmatch';
import { default as Setoid } from '../../interface/Setoid';
import { default as Either } from './../Either';
export default abstract class Maybe implements Setoid, Monad, Alt, PatternMatch {
protected _value: A;
static of(v: B): Maybe;
static zero(): Maybe;
static Just(v: B): Maybe;
static Nothing(): Maybe;
static fromNullable(v: any): Maybe;
static withDefault(def: any, v: any): Maybe;
static catMaybes(ar: Array>): Array;
static isNothing(v: Maybe): boolean;
static isJust(v: Maybe): boolean;
of(v: A): Maybe;
alt(v: Maybe): Maybe;
ap(j: Maybe): Maybe;
getValue(): A;
abstract equals(n: Setoid): boolean;
abstract map(f: (a: A) => B): Maybe;
abstract chain(f: (a: A) => Maybe): Maybe;
abstract caseOf(o: {
Nothing: () => T;
Just: (a: A) => T;
}): T;
abstract isNothing(): boolean;
abstract isJust(): boolean;
}
export declare class Nothing extends Maybe {
equals(n: Setoid): boolean;
map(f: (a: A) => B): Maybe;
chain(f: (a: A) => Maybe): Maybe;
isJust(): boolean;
isNothing(): boolean;
toString(): string;
caseOf(o: {
Nothing: () => B;
Just: (a: A) => B;
}): B;
}
export declare class Just extends Maybe {
constructor(v: any);
equals(j: Setoid): boolean;
map(f: (a: A) => B): Maybe;
chain(f: (a: A) => Maybe): Maybe;
isJust(): boolean;
isNothing(): boolean;
toString(): string;
caseOf(o: {
Just: (a: A) => B;
Nothing: () => B;
}): B;
}
export declare const eitherToMaybe: (e: Either) => any;
export declare const prop: Function;
export declare const pick: Function;