import { Option } from './option.js'; import { Either } from './either.js'; import { Mappable } from './mappable.js'; export interface TryMatch { success: (result: T) => R; failure: (error: Error) => R; } export declare abstract class TryLike implements Mappable { abstract readonly toOption: Option; abstract readonly toEither: Either; abstract map(f: (x: T) => B): TryLike; abstract readonly isFailure: boolean; abstract readonly isSuccess: boolean; abstract getOrElse(value: () => T): T; abstract getOrElseValue(value: T): T; abstract orElse(value: () => TryLike): TryLike; abstract readonly get: T; abstract match(matcher: TryMatch): R; abstract flatMap(f: (value: T) => TryLike): TryLike; abstract filter(p: (value: T) => boolean): TryLike; abstract readonly failed: TryLike; abstract fold(fa: (e: Error) => U, fb: (result: T) => U): U; abstract recover(f: (e: Error) => any): TryLike; abstract recoverWith(f: (e: Error) => TryLike): TryLike; abstract transform(s: (value: T) => TryLike, f: (e: Error) => TryLike): TryLike; mapPromise(f: (v: T) => Promise): Promise>; flatMapPromise(f: (item: T) => Promise>): Promise>; foreach(f: (value: T) => U): void; tapFailure(f: (e: Error) => void): TryLike; toEitherWithLeft(f: (e: Error) => L): Either; } export declare class Success extends TryLike { private readonly result; readonly isSuccess = true; readonly isFailure = false; constructor(result: T); get toOption(): Option; get toEither(): Either; map(f: (x: T) => B): TryLike; get get(): T; getOrElse(_: () => T): T; getOrElseValue(_: T): T; orElse(_: () => TryLike): TryLike; match(matcher: TryMatch): R; flatMap(f: (value: T) => TryLike): TryLike; filter(p: (value: T) => boolean): TryLike; get failed(): TryLike; fold(fa: (e: Error) => U, fb: (result: T) => U): U; recover(_: (e: Error) => any): TryLike; recoverWith(_: (e: Error) => TryLike): TryLike; transform(s: (value: T) => TryLike, _: (e: Error) => TryLike): TryLike; } export declare class Failure extends TryLike { private readonly error; readonly isSuccess = false; readonly isFailure = true; constructor(error: Error); get toOption(): Option; get toEither(): Either; map(_: (x: any) => B): TryLike; get get(): any; getOrElse(value: () => T): T; getOrElseValue(value: T): T; orElse(value: () => TryLike): TryLike; match(matcher: TryMatch): R; flatMap(_: (value: any) => TryLike): TryLike; filter(_: (value: any) => boolean): TryLike; get failed(): TryLike; fold(fa: (e: Error) => U, _: (result: any) => U): U; recover(f: (e: Error) => any): TryLike; recoverWith(f: (e: Error) => TryLike): TryLike; transform(s: (value: any) => TryLike, f: (e: Error) => TryLike): TryLike; } export declare function Try(block: () => T): TryLike; export declare namespace Try { function promise(block: () => Promise): Promise>; } export declare function success(x: T): Success; export declare function failure(x: Error): Failure;