export default abstract class Either { abstract isRight(): boolean; abstract isLeft(): boolean; abstract chain(func: (a: L | R) => T): Left | T; abstract getOrElse(defaultVal: any): any | R; abstract getOrElseThrow(func: (val: L | R) => Error): R | Error; abstract filter(func: (val: L | R) => boolean): Either; abstract join(): Left | Right; abstract orElse(func: (val: L | R) => any): Right | any; abstract map(func: (val: L | R) => T): Either; get value(): any; static left(val: L): Left; static right(val: R): Right; static of(val: R): Right; static nullable(value: T): Either; } export declare class Right extends Either { private readonly _value; constructor(value: R); toString(): string; get value(): R; isRight(): boolean; isLeft(): boolean; chain(func: (a: R) => T): T; getOrElse(defaultVal: T): R; getOrElseThrow(func: (val: L | R) => Error): R | Error; filter(func: (val: R) => boolean): Either; join(): Right; orElse(func: (val: R) => any): this; map(func: (val: R) => T): Either; } export declare class Left extends Either { private readonly _value; constructor(value: L); toString(): string; get value(): L; isRight(): boolean; isLeft(): boolean; chain(func: (val: R) => T): Left; getOrElse(defaultVal: any): any; getOrElseThrow(func: (val: L) => Error): R | Error; filter(func: (val: R) => boolean): this; join(): Left; orElse(func: (val: L) => any): any; map(func: (val: L) => T): Either; }