/**
 * Concurrency Controller
 *
 * Queue-based rate limiting with support for:
 * - Agent-specific limits
 * - Provider-specific limits (e.g., anthropic/*, openai/*)
 * - Model-specific limits (e.g., anthropic/claude-3-5-sonnet)
 */
import type { ConcurrencyConfig } from "./interfaces/concurrency-config.interface.js";
export type { ConcurrencyConfig } from "./interfaces/concurrency-config.interface.js";
export declare class ConcurrencyController {
    private counts;
    private queues;
    private limits;
    private config;
    private successStreak;
    private failureCount;
    constructor(config?: ConcurrencyConfig);
    setLimit(key: string, limit: number): void;
    /**
     * Get concurrency limit for a key.
     * Priority: explicit limit > model > provider > agent > default
     */
    getConcurrencyLimit(key: string): number;
    getLimit(key: string): number;
    acquire(key: string): Promise<void>;
    release(key: string): void;
    /**
     * Report success/failure to adjust concurrency dynamically
     */
    reportResult(key: string, success: boolean): void;
    getQueueLength(key: string): number;
    getActiveCount(key: string): number;
    /**
     * Get formatted concurrency info string (e.g., "2/5 slots")
     */
    getConcurrencyInfo(key: string): string;
}
