import { WhenNever, Cata } from '../Basics'; import Maybe from '../Maybe'; export interface Either { isLeft(): boolean; isRight(): boolean; isEqual(another: Either, WhenNever>): boolean; swap(): Either; map(fn: (value: T) => R): Either; mapLeft(fn: (error: E) => S): Either; mapBoth(onLeft: (error: E) => S, onRight: (value: T) => R): Either; chain(fn: (value: T) => Either, R>): Either, R>; orElse(fn: () => Either, WhenNever>): Either, WhenNever>; getOrElse(defaults: WhenNever): WhenNever; extract(fn: (error: E) => WhenNever): WhenNever; fold(onLeft: (error: E) => R, onRight: (value: T) => R): R; cata(pattern: Pattern): R; toMaybe(): Maybe; tap(fn: (that: Either) => R): R; } export declare namespace Either { type Pattern = Cata<{ Left(error: E): R; Right(value: T): R; }>; const Left: (error: E) => Either; const Right: (value: T) => Either; const fromNullable: (error: E, value: T | null | undefined) => Either; const fromMaybe: (error: E, maybe: Maybe) => Either; const merge: (either: Either) => T; const shape: (object: { [K in keyof O]: Either; }) => Either; const combine: (array: Either[]) => Either; } export declare type Pattern = Either.Pattern; export declare const Left: (error: E) => Either; export declare const Right: (value: T) => Either; export declare const fromNullable: (error: E, value: T | null | undefined) => Either; export declare const fromMaybe: (error: E, maybe: Maybe) => Either; export declare const merge: (either: Either) => T; export declare const shape: (object: { [K in keyof O]: Either; }) => Either; export declare const combine: (array: Either[]) => Either; export default Either;