/**
 * Per-project FIFO semaphore. Pure data structure with zero infrastructure
 * knowledge. Used by pQueueAdapter to gate review entry into PQueue.add(),
 * preserving the existing MR-chain serialization that sits one level above.
 *
 * Behavioral contract:
 *   - acquire(key) resolves when running(key) < capacity(key); increments running.
 *   - release(key) decrements running and drains waiters in FIFO order.
 *   - setCapacity(key, n) updates capacity; raising it drains pending waiters
 *     up to the new limit, lowering it does NOT interrupt running acquisitions.
 *   - DEFAULT_CAPACITY (2) is applied when a key has no explicit cap.
 */
export declare class ProjectSemaphore {
    private readonly capacities;
    private readonly running;
    private readonly pending;
    setCapacity(key: string, capacity: number): void;
    capacityFor(key: string): number;
    runningCount(key: string): number;
    pendingCount(key: string): number;
    totalRunning(): number;
    acquire(key: string): Promise<boolean>;
    release(key: string): void;
    private drain;
}
//# sourceMappingURL=projectSemaphore.d.ts.map