import { Err } from '@hazae41/result'; import { Promiseable } from '../../libs/promises/promises.js'; import { TimesInit, Times } from './times.js'; interface FailInit extends TimesInit { readonly error: T; } declare namespace FailInit { type Infer = FailInit>; type Inner = T extends FailInit ? Inner : never; } declare namespace Fail { type Infer = Fail>; type Inner = T extends Fail ? Inner : never; } declare class Fail extends Err implements FailInit, Times { readonly error: T; readonly time: number; readonly cooldown?: number; readonly expiration?: number; constructor(error: T, times?: TimesInit); static from(init: FailInit): Fail; isData(): false; isFail(): this is Fail; set(inner: unknown): this; setErr(inner: U): Fail; setTimes(times?: TimesInit): Fail; mapErr(mapper: (data: T) => Promiseable): Promise>; mapErrSync(mapper: (data: T) => U): Fail; /** * Transform Result, E> into Promise> * @returns `await this.inner` if `Ok`, `this` if `Err` */ await(): Promise; /** * Transform Result> into Promise> * @returns `await this.inner` if `Err`, `this` if `Ok` */ awaitErr(this: Fail>): Promise>>; /** * Transform Result, Promise> into Promise> * @returns `await this.inner` */ awaitAll(this: Fail>): Promise>>; } export { Fail, FailInit };