import { Undefinable } from "../Types"; import { IResultBase, IResult } from './_types'; /** * Encapsulates a value allowing for returning an envelope * that contains the possible outcomes of a method. */ export default class Result, TPreviousResult extends IResultBase = never> implements IResult { #private; constructor(success: boolean, value?: T, error?: string, previousResult?: TPreviousResult); get value(): Undefinable; get success(): boolean; get error(): Undefinable; get previousResult(): Undefinable; static ok(value?: T, previousResult?: TPreviousResult): IResult; static fail(error?: string, value?: T, previousResult?: TPreviousResult): IResult; }