export type TGetAsyncPoolOptions = { concurrency?: number; settle?: TSettle; signal?: AbortSignal | null; }; export type TGetAsyncPoolResult = TSettle extends true ? PromiseSettledResult[] : T[]; export type TGetAsyncPoolArgs = Parameters; export type TGetAsyncPoolReturn = ReturnType; /** * Maps an array asynchronously with a concurrency limit while preserving order. * Supports cancellation and an all-settled result mode. * @template T,U,TSettle * @param {T[]} arr Source array * @param {(value: T, index: number, array: T[], signal: AbortSignal) => Promise|U} callback Mapper * @param {number|TGetAsyncPoolOptions} [concurrencyOrOptions=4] Concurrency or pool options * @returns {Promise>} Ordered results * @throws {TypeError} getAsyncPool: arguments are invalid * @example * await getAsyncPool(ids, (id) => loadItem(id), 3); * @example * // Upload files with cancellation and collect every outcome * const controller = new AbortController(); * const uploadedFiles = await getAsyncPool(files, uploadFile, { * concurrency: 2, * settle: true, * signal: controller.signal, * }); */ export declare const getAsyncPool: (arr: T[], callback: (value: T, index: number, array: T[], signal: AbortSignal) => Promise | U, concurrencyOrOptions?: number | TGetAsyncPoolOptions) => Promise>;