export default abstract class Maybe { get value(): unknown; static just(val: J): Just; static nothing(): Nothing; static of(val: J): Just; static nullable(val: J): Maybe; abstract isNothing(): boolean; abstract isJust(): boolean; abstract chain(func: (a: J | N) => T): Nothing | T; abstract getOrElse(defaultVal: any): any | J; abstract filter(func: (val: J | N) => boolean): Maybe; abstract map(func: (val: J | N) => T): Maybe; } export declare class Just extends Maybe { private readonly _value; constructor(value: J); get value(): J; toString(): string; isJust(): boolean; isNothing(): boolean; chain(func: (a: J) => T): T; filter(func: (a: J) => boolean): Maybe; getOrElse(defaultVal: T): J; map(func: (a: J) => T): Maybe; } export declare class Nothing extends Maybe { private readonly _value; constructor(); get value(): N; toString(): string; isJust(): boolean; isNothing(): boolean; chain(func: (val: J) => T): Nothing; filter(func: (val: J) => boolean): Nothing; getOrElse(defaultVal: any): any; map(func: (val: J) => T): Maybe; }