1export interface Limit {
2	/**
3	 * @param fn - Promise-returning/async function.
4	 * @param arguments - Any arguments to pass through to `fn`. Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.
5	 * @returns The promise returned by calling `fn(...arguments)`.
6	 */
7	<Arguments extends unknown[], ReturnType>(
8		fn: (...arguments: Arguments) => PromiseLike<ReturnType> | ReturnType,
9		...arguments: Arguments
10	): Promise<ReturnType>;
11
12	/**
13	 * The number of promises that are currently running.
14	 */
15	readonly activeCount: number;
16
17	/**
18	 * The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
19	 */
20	readonly pendingCount: number;
21}
22
23/**
24 * Run multiple promise-returning & async functions with limited concurrency.
25 *
26 * @param concurrency - Concurrency limit. Minimum: `1`.
27 * @returns A `limit` function.
28 */
29export default function pLimit(concurrency: number): Limit;
30