import { Result } from "t-result"; //#region src/parallelAsyncCalls.d.ts type ValidMetadata = string | number | boolean | Record; type TupleRunAllSuccess = T extends (() => Promise>) ? Succeeded : T extends { metadata: infer M; fn: () => Promise>; } ? Succeeded : never; type TupleRunAllFailed = T extends (() => Promise>) ? { metadata: undefined; error: Error; } : T extends { metadata: infer M extends ValidMetadata; } ? { metadata: M; error: Error; } : never; type TupleRunAllSettled = T extends (() => Promise>) ? Succeeded | Failed : T extends { metadata: infer M; fn: () => Promise>; } ? Succeeded | Failed : never; type RunProps = { delayStart?: (index: number) => number; }; type Failed = { metadata: M$1; error: Error; }; type Succeeded = { value: R; metadata: M$1; }; declare class ParallelAsyncResultCalls { private pendingCalls; alreadyRun: boolean; constructor(); add(call: M$1 extends undefined ? () => Promise> : { metadata: M$1; fn: () => Promise>; }): this; /** * Adds calls return tuples with inferred results * * @param calls */ addTuple Promise> : { metadata: M$1; fn: () => Promise>; })[]>(...calls: T): { runAllSettled: (props?: RunProps) => Promise<{ results: { [I in keyof T]: TupleRunAllSettled }; allFailed: boolean; }>; runAll: (props?: RunProps) => Promise }, TupleRunAllFailed>>; }; runAllSettled({ delayStart }?: RunProps): Promise<{ failed: Failed[]; succeeded: Succeeded[]; allFailed: boolean; results: (Failed | Succeeded)[]; }>; runAll({ delayStart }?: { delayStart?: (index: number) => number; }): Promise[], { metadata: M$1; error: Error; }>>; } /** * Executes multiple asynchronous calls in parallel and collects the results in * a easier to use format. * * @deprecated Use concurrentAsyncCalls instead. * @template R - The type of the result value. * @template M - The type of the call metadata. */ declare function parallelAsyncCalls(): ParallelAsyncResultCalls; //#endregion export { parallelAsyncCalls };