import { CurriedFunction3 } from 'lodash'; export type MapAsync = CurriedFunction3< T[], (element: T, index: number) => R | Promise, { concurrency?: number }, Promise >; export type ForEachAsync = ( array: T[], func: (element: T, index: number) => R | Promise, options?: { concurrency?: number } ) => Promise; export type ReduceAsync = CurriedFunction3< T[], (accumulator: V | R, current: Awaited, index: number) => R | Promise, V, Promise >;