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