/**
 * @module Async
 */
import type { TimeSpan } from "../../../utilities/_module-exports.js";
import { type InvokableFn, type Promisable } from "../../../utilities/_module-exports.js";
/**
 * @internal
 */
export type PromiseQueueSettings = {
    maxConcurrency: number;
    maxCapacity: number | null;
    interval: TimeSpan;
};
/**
 * @internal
 */
export declare class PromiseQueue {
    private readonly settings;
    private readonly queue;
    private readonly listeners;
    constructor(settings: PromiseQueueSettings);
    private start;
    private getItems;
    private process;
    private enqueue;
    private listenOnce;
    private asPromise;
    /**
     * @throws {CapacityFullAsyncError} {@link CapacityFullAsyncError}
     */
    add<TValue>(func: InvokableFn<[signal: AbortSignal], Promisable<TValue>>, signal: AbortSignal): Promise<TValue>;
}
