/**
 * Intent-based model routing.
 *
 * Maps user intents (code, chat, analysis, etc.) to optimal models.
 * Works with both catalog-defined intents and runtime heuristics.
 *
 * Intent priority:
 *   1. Explicit user model choice (--model flag or /model command)
 *   2. Message-level intent detection (tool_use → code intent)
 *   3. Catalog intent_defaults mapping
 *   4. Default model
 */
import type { OwlCodaConfig } from './config.js';
export type Intent = 'code' | 'chat' | 'analysis' | 'search' | 'embedding' | 'fast' | 'heavy' | 'default';
export interface IntentSignal {
    /** Detected intent */
    intent: Intent;
    /** Confidence 0-1 */
    confidence: number;
    /** What triggered the detection */
    source: 'explicit' | 'tools' | 'system_prompt' | 'message_content' | 'default';
}
export interface IntentRouteResult {
    /** Resolved model ID */
    modelId: string;
    /** The intent that was used for routing */
    intent: Intent;
    /** How the intent was detected */
    signal: IntentSignal;
    /** Whether this overrode the user's explicit model choice */
    overrodeExplicit: boolean;
}
/**
 * Detect intent from an Anthropic messages request.
 */
export declare function detectIntent(body: {
    model?: string;
    messages?: Array<{
        role: string;
        content: unknown;
    }>;
    tools?: unknown[];
    system?: unknown;
}): IntentSignal;
/**
 * Resolve model for a given intent using catalog or tier-based fallback.
 */
export declare function resolveIntentModel(config: OwlCodaConfig, intent: Intent): string | null;
/**
 * Full intent-based routing: detect intent from request, resolve model.
 * Only activates when the user hasn't explicitly chosen a model.
 */
export declare function routeByIntent(config: OwlCodaConfig, body: {
    model?: string;
    messages?: Array<{
        role: string;
        content: unknown;
    }>;
    tools?: unknown[];
    system?: unknown;
}, explicitModelChoice?: string): IntentRouteResult;
