export declare class AsyncExecutionStack { private executionSlots; private isProcessing; /** Maximum concurrent non-exclusive tasks (Infinity = unlimited) */ private nonExclusiveMaxConcurrency; /** Currently running non-exclusive task count */ private nonExclusiveCurrentCount; /** Queue of resolvers waiting for a non-exclusive slot */ private nonExclusivePendingQueue; getExclusiveExecutionSlot(funcArg: () => Promise, timeoutArg?: number): Promise; getNonExclusiveExecutionSlot(funcArg: () => Promise, timeoutArg?: number): Promise; /** * Set the maximum number of concurrent non-exclusive tasks. * @param concurrency minimum 1 (Infinity means unlimited) */ setNonExclusiveMaxConcurrency(concurrency: number): void; /** Get the configured max concurrency for non-exclusive tasks */ getNonExclusiveMaxConcurrency(): number; /** Number of non-exclusive tasks currently running */ getActiveNonExclusiveCount(): number; /** Number of non-exclusive tasks waiting for a free slot */ getPendingNonExclusiveCount(): number; private processExecutionSlots; private executeExclusiveSlot; private executeNonExclusiveSlots; /** * Wait until a non-exclusive slot is available (respects max concurrency). */ private waitForNonExclusiveSlot; /** Release a non-exclusive slot and wake the next waiter, if any. */ private releaseNonExclusiveSlot; }