import { Unshift } from '@ts-std/types'; import { Result, Maybe } from '@ts-std/monads'; export declare type PromiseTuple = { [K in keyof L]: Promise; }; export declare type UnboxPromise

> = P extends Promise ? T : never; export declare type PromiseObject; }> = Promise<{ [K in keyof O]: UnboxPromise; }>; export declare type PromiseResultTuple = { [K in keyof L]: Promise>; }; export declare type PromiseMaybeTuple = { [K in keyof L]: Promise>; }; declare global { interface Promise { join(...args: PromiseTuple): Promise>; result_join(this: Promise>, ...args: PromiseResultTuple): Promise, E>>; maybe_join(this: Promise>, ...args: PromiseMaybeTuple): Promise>>; use_maybe(): Promise>; use_result(): Promise>; } interface PromiseConstructor { join(...args: PromiseTuple): Promise; result_join(...args: PromiseResultTuple): Promise>; maybe_join(...args: PromiseMaybeTuple): Promise>; join_object; }>(obj: O): PromiseObject; delay(time: number, value: T): Promise; delay(time: number): Promise; } }