/**
 * Thinking Budget Validator
 *
 * Validates user-provided thinking values against model capabilities.
 * - Clamps out-of-range budgets
 * - Maps invalid levels to closest valid
 * - Warns when model doesn't support thinking
 */
import type { CLIProxyProvider } from './types';
/**
 * Thinking budget bounds (used for validation across API and CLI)
 */
export declare const THINKING_BUDGET_MIN = 0;
export declare const THINKING_BUDGET_MAX = 100000;
export declare const THINKING_BUDGET_DEFAULT_MIN = 512;
/**
 * Result of thinking value validation
 */
export interface ThinkingValidationResult {
    /** Whether the value is valid for the model */
    valid: boolean;
    /** The validated value (possibly clamped/mapped) */
    value: string | number;
    /** Warning message for user feedback */
    warning?: string;
}
/**
 * Named thinking level mappings to budget values (when converting level→budget)
 *
 * `max` sits above `xhigh` to represent unconstrained thinking (Claude Opus 4.7,
 * Mythos). The numeric value is a CCS-internal mapping, not an Anthropic wire
 * value: Opus 4.7 uses adaptive thinking with an effort string, and other
 * max-capable models already treat the level as a qualitative cap.
 */
export declare const THINKING_LEVEL_BUDGETS: Record<string, number>;
/**
 * Level rank for comparison (higher = more intensive)
 */
export declare const THINKING_LEVEL_RANK: Record<string, number>;
/**
 * Valid thinking level names
 */
export declare const VALID_THINKING_LEVELS: readonly ["minimal", "low", "medium", "high", "xhigh", "max", "auto"];
export type ThinkingLevel = (typeof VALID_THINKING_LEVELS)[number];
/**
 * Valid tier names for tier_defaults configuration
 */
export declare const VALID_THINKING_TIERS: readonly ["opus", "sonnet", "haiku"];
export type ThinkingTier = (typeof VALID_THINKING_TIERS)[number];
/**
 * Cap a level at the model's maximum supported level.
 * Returns the capped level and whether capping occurred.
 */
export declare function capLevelAtMax(level: string, maxLevel: string | undefined): {
    level: string;
    capped: boolean;
};
/**
 * Special thinking values
 */
export declare const THINKING_OFF_VALUES: readonly ["off", "none", "disabled", "0"];
export declare const THINKING_AUTO_VALUE = "auto";
/**
 * Check whether a value should disable thinking.
 * Accepts common string aliases and numeric 0.
 */
export declare function isThinkingOffValue(value: unknown): boolean;
/**
 * Validate a thinking value against model capabilities
 *
 * @param provider - The CLI proxy provider
 * @param modelId - The model identifier
 * @param value - User-provided thinking value (level name or budget number)
 * @returns Validation result with possibly clamped/mapped value and warnings
 */
export declare function validateThinking(provider: CLIProxyProvider, modelId: string, value: string | number): ThinkingValidationResult;
//# sourceMappingURL=thinking-validator.d.ts.map