import { ArrayToTuple, NonEmptyArray } from "./types.js"; /** * While promise t is not finished, call function `fn` per `interval` */ export declare function callFnWhenAwait(p: Promise, fn: () => void, interval: number, signal?: AbortSignal): Promise; /** * Create a deferred promise */ export declare function defer(): { promise: Promise; resolve: (v: T) => void; reject: (e: unknown) => void; }; export type PromiseResult = { promise: Promise; } & ({ status: "pending"; } | { status: "fulfilled"; value: T; durationMs: number; } | { status: "rejected"; reason: Error; durationMs: number; }); export type PromiseFulfilledResult = PromiseResult & { status: "fulfilled"; }; export type PromiseRejectedResult = PromiseResult & { status: "rejected"; }; /** * Wrap a promise to an object to track the status and value of the promise */ export declare function wrapPromise(promise: PromiseLike): PromiseResult; type ReturnPromiseWithTuple>> = { [Index in keyof ArrayToTuple]: PromiseResult>; }; /** * Two phased approach for resolving promises: * - first wait `resolveTimeoutMs` or until all promises settle * - then wait `raceTimeoutMs - resolveTimeoutMs` or until at least a single promise resolves * * Returns a list of promise results, see `PromiseResult` */ export declare function resolveOrRacePromises>>(promises: T, { resolveTimeoutMs, raceTimeoutMs, signal }: { resolveTimeoutMs: number; raceTimeoutMs: number; signal?: AbortSignal; }): Promise> | never; export {}; //# sourceMappingURL=promise.d.ts.map