export type Result = Success | Failure; export type Success = { type: "success"; value: T; }; export type Failure = { type: "failure"; detail: T; }; export declare function success(value: T): Success; export declare function failure(detail: T): Failure; export declare function isFailure(result: Result): result is Failure; export declare function isSuccess(result: Result): result is Success; export declare function assertFailure(result: Result): asserts result is Failure; export declare function assertSuccess(result: Result): asserts result is Success; /** * @returns a function that transforms the `detail` value of any Failure result * passed to it, and leaves Success results unchanged. `mapFailure` is curried * for easy composition with Array.map(), mu-lambda's pipe(), etc. * @param f the function to apply to Failure `detail`s. */ export declare function mapFailure(f: (detail: DetailIn) => DetailOut): (result: Result) => Result; export declare function all(results: Array>, combineFailureDetails?: (a: F, b: F) => F): Result;