import type { AgentAdapter } from './types.js';
export interface LLMJudgeConfig {
    /** Agent name used as the judge. Must already be registered. */
    agentName: string;
    /** Score threshold below which the LLM is consulted (default 1.0). */
    threshold?: number;
    /** Override the default 5s response timeout. */
    timeoutMs?: number;
}
export declare function configureLLMJudge(cfg: LLMJudgeConfig | null): void;
/** Read the judge configuration. Used by classifyIntent to know whether
 *  to attempt a fallback at all. */
export declare function getLLMJudge(): LLMJudgeConfig | null;
/**
 * True when intent fallback can run — either via the legacy CLI judge
 * (`IM_HUB_LLM_JUDGE_AGENT` env / configureLLMJudge) OR via a native
 * 'cheap' LLM backend from D+ Stage 1. Router uses this to gate the
 * fallback path; previously it could only gate on `getLLMJudge()`,
 * which forced operators to set IM_HUB_LLM_JUDGE_AGENT even when they
 * only had a native backend wired.
 */
export declare function hasIntentFallback(): boolean;
/**
 * Ask the judge agent which candidate to use. Returns null on any
 * failure path (timeout, judge unavailable, malformed response) so
 * the caller can keep its rule-based decision.
 */
export declare function classifyWithLLM(text: string, candidates: string[], resolveAgent: (name: string) => AgentAdapter | undefined): Promise<{
    agent: string;
    reason: string;
} | null>;
/** Test-only: clear cache so memoization doesn't leak between cases. */
export declare function _clearLLMCache(): void;
/** Test/diagnostic: current cache size. */
export declare function _cacheSize(): number;
//# sourceMappingURL=intent-llm.d.ts.map