export interface RateLimitConfig {
    perToolPerSecond: number;
    perToolBurst: number;
    sessionConcurrency: number;
    sessionPerSecond: number;
}
export declare function configFor(profile: 'operations' | 'application'): RateLimitConfig;
export declare function _setClockForTest(fn: (() => number) | undefined): void;
/** Drop a session's rate-limit state (called on session deletion). */
export declare function clearSessionRateState(sessionId: string): void;
/** Test seam: drop all sessions. */
export declare function _resetForTest(): void;
export type RateLimitDecision = {
    allowed: true;
    release: () => void;
} | {
    allowed: false;
    reason: 'per_tool' | 'session_rate' | 'concurrency';
};
/**
 * Attempt to admit a tools/call. If allowed, returns a `release()` that
 * decrements in-flight; the caller MUST invoke it (even on tool failure)
 * via `try { ... } finally { release(); }`.
 */
export declare function tryAdmit(sessionId: string, toolName: string, profile: 'operations' | 'application'): RateLimitDecision;
