import { type AsyncFactory } from '../getter/getter'; import { type Maybe } from '../value'; import { type RunAsyncTasksForValuesConfig } from './promise'; /** * A function that returns a Promise, typically returning void/no value. */ export type AsyncTask = AsyncFactory; /** * An AsyncTask that has a name and a run function. */ export type NamedAsyncTask = { readonly name: string; readonly run: AsyncTask; }; /** * A record of named async tasks, keyed by name. */ export type NamedAsyncTaskRecord = Record>; /** * A function that runs an array of named async tasks. */ export type RunNamedAsyncTasksFunction = (inputTasks: RunNamedAsyncTasksInput, options?: Maybe>) => Promise>; /** * Options for a RunNamedAsyncTasksFunction. */ export type RunNamedAsyncTasksFunctionOptions = Maybe, 'nonConcurrentTaskKeyFactory' | 'retriesAllowed' | 'retryWait' | 'beforeRetry'>>; /** * Config for runNamedAsyncTasksFunction(). */ export interface RunNamedAsyncTasksFunctionConfig { readonly onTaskSuccess?: (task: NamedAsyncTask, value: T) => void; readonly onTaskFailure?: (task: NamedAsyncTask, error: unknown) => void; readonly defaultOptions?: RunNamedAsyncTasksFunctionOptions; } /** * The input for runNamedAsyncTasks(). Either an array of NamedAsyncTasks or a NamedAsyncTaskRecord. */ export type RunNamedAsyncTasksInput = NamedAsyncTaskRecord | NamedAsyncTask[]; /** * The result of runNamedAsyncTasks(). */ export interface RunNamedAsyncTasksResult { /** * The tasks that were run successfully. */ readonly successfulTasks: NamedAsyncTask[]; /** * The tasks that failed. */ readonly failedTasks: NamedAsyncTask[]; } /** * Creates a new RunNamedAsyncTasksFunction. * * @param config Optional configuration. * @returns A new RunNamedAsyncTasksFunction. */ export declare function runNamedAsyncTasksFunction(config?: RunNamedAsyncTasksFunctionConfig): RunNamedAsyncTasksFunction; /** * Convenience function that creates a {@link RunNamedAsyncTasksFunction} and immediately * executes it with the given tasks. * * @param inputTasks - An array of named tasks or a record of task functions keyed by name. * @param config - Optional configuration for callbacks and default execution options. * @returns The result containing successful and failed tasks. */ export declare function runNamedAsyncTasks(inputTasks: RunNamedAsyncTasksInput, config?: RunNamedAsyncTasksFunctionConfig): Promise>;