import { WhenNever } from '../Basics'; import Maybe from '../Maybe'; import { Either as IEither, Pattern } from './index'; declare abstract class Either implements IEither { isLeft(): boolean; isRight(): boolean; abstract isEqual(another: IEither, WhenNever>): boolean; abstract swap(): IEither; map(_fn: (value: T) => R): IEither; mapLeft(_fn: (error: E) => S): IEither; mapBoth(onLeft: (error: E) => S, onRight: (value: T) => R): IEither; chain(_fn: (value: T) => IEither, R>): IEither, R>; orElse(fn: () => IEither, WhenNever>): IEither, WhenNever>; getOrElse(defaults: WhenNever): WhenNever; abstract extract(fn: (error: E) => WhenNever): WhenNever; abstract fold(onLeft: (error: E) => R, onRight: (value: T) => R): R; abstract cata(pattern: Pattern): R; toMaybe(): Maybe; tap(fn: (that: Either) => R): R; } export declare class Left extends Either { private readonly error; constructor(error: E); isLeft(): boolean; isEqual(another: IEither, never>): boolean; mapLeft(fn: (error: E) => S): IEither; swap(): IEither; extract(fn: (error: E) => T): T; fold(onLeft: (error: E) => R): R; cata(pattern: Pattern): R; } export declare class Right extends Either { private readonly value; constructor(value: T); isRight(): boolean; isEqual(another: IEither>): boolean; map(fn: (value: T) => R): IEither; chain(fn: (value: T) => IEither): IEither; orElse(): IEither>; getOrElse(): WhenNever; swap(): IEither; extract(): WhenNever; fold(_onLeft: (error: never) => R, onRight: (value: T) => R): R; cata(pattern: Pattern): R; } export {};