import { WhenNever } from '../Basics'; import Either from '../Either'; import { Maybe as IMaybe, Pattern } from './index'; declare abstract class Maybe implements IMaybe { isNothing(): boolean; isJust(): boolean; abstract isEqual(_another: IMaybe>): boolean; map(_fn: (value: T) => R): IMaybe; chain(_fn: (value: T) => IMaybe): IMaybe; filter(_fn: (value: WhenNever) => boolean): IMaybe>; orElse(fn: () => IMaybe>): IMaybe>; getOrElse(defaults: WhenNever): WhenNever; abstract fold(onNothing: () => R, onJust: (value: T) => R): R; abstract cata(pattern: Pattern): R; toEither(error: E): Either; tap(fn: (that: IMaybe) => R): R; } export declare const Nothing: IMaybe; export declare class Just extends Maybe { private readonly value; constructor(value: T); isJust(): boolean; isEqual(another: IMaybe>): boolean; map(fn: (value: T) => R): IMaybe; chain(fn: (value: T) => IMaybe): IMaybe; filter(fn: (value: WhenNever) => boolean): IMaybe>; orElse(): IMaybe>; getOrElse(): WhenNever; fold(_onNothing: () => R, onJust: (value: T) => R): R; cata(pattern: Pattern): R; toEither(): Either; } export {};