import type { ChatMessage } from "../../protocol/wire/index.js";
export interface ClassifierResult {
    shouldBlock: boolean;
    reason: string;
    stage: "allowlist" | "fast" | "thinking";
    durationMs: number;
}
/**
 * LLM call interfaceinjected by the host so the classifier
 * doesn't depend on a specific LLM client.
 */
export interface ClassifierLLMCall {
    (params: {
        system: string;
        messages: Array<{
            role: "user" | "assistant";
            content: string;
        }>;
        maxTokens: number;
        temperature: number;
        stop?: string[];
        /** If true, host should cache the system prompt (cc cache_control). */
        cacheSystemPrompt?: boolean;
    }): Promise<{
        text: string;
        usage?: {
            promptTokens: number;
            completionTokens: number;
        };
    }>;
}
export declare function isAutoModeAllowlistedTool(toolName: string): boolean;
/**
 * Two-stage XML classifier for auto-mode permission decisions.
 *
 * Stage 1 (fast): Quick classification with minimal tokens.
 * Stage 2 (thinking): Only if stage 1 blocks, do a more careful review.
 *
 * cc reference: classifyYoloAction() in yoloClassifier.ts
 */
export declare function classifyToolAction(toolName: string, toolArgs: Record<string, unknown>, recentMessages: ChatMessage[], llmCall: ClassifierLLMCall): Promise<ClassifierResult>;
