/**
 * Model Catalog - Available models for CLI Proxy providers
 *
 * Ships with CCS to provide users with interactive model selection.
 * Models are mapped to their internal names used by the proxy backend.
 */
import type { CLIProxyProvider } from './types';
/**
 * Thinking support configuration for a model.
 * Defines how thinking/reasoning budget can be controlled.
 */
export interface ThinkingSupport {
    /** Type of thinking control: 'budget' (token count), 'levels' (named levels), 'none' */
    type: 'budget' | 'levels' | 'none';
    /** Minimum budget tokens (for budget type) */
    min?: number;
    /** Maximum budget tokens (for budget type) */
    max?: number;
    /** Valid level names (for levels type) */
    levels?: string[];
    /** Maximum reasoning effort level (caps effort at this level for levels type) */
    maxLevel?: 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
    /** Whether zero/disabled thinking is allowed */
    zeroAllowed?: boolean;
    /** Whether dynamic/auto thinking is allowed */
    dynamicAllowed?: boolean;
}
/**
 * Model entry definition
 */
export interface ModelEntry {
    /** Literal model name to put in settings.json */
    id: string;
    /** Human-readable name for display */
    name: string;
    /** Access tier indicator - 'ultra' for Claude, 'pro' for premium Gemini, 'free' for basic */
    tier?: 'free' | 'pro' | 'ultra';
    /** Optional description for the model */
    description?: string;
    /** Model has known issues - show warning when selected */
    broken?: boolean;
    /** Issue URL for broken models */
    issueUrl?: string;
    /** Model is deprecated - show warning when selected */
    deprecated?: boolean;
    /** Deprecation reason/message */
    deprecationReason?: string;
    /** Thinking/reasoning support configuration */
    thinking?: ThinkingSupport;
    /** Whether model supports 1M extended context window (appends [1m] suffix) */
    extendedContext?: boolean;
    /** Whether model can read image inputs natively without the Image transformer */
    nativeImageInput?: boolean;
    /** Additional Codex service-tier suffixes supported by this model. */
    codexServiceTiers?: Array<'fast'>;
}
/**
 * Provider catalog definition
 */
export interface ProviderCatalog {
    provider: CLIProxyProvider;
    displayName: string;
    models: ModelEntry[];
    defaultModel: string;
}
/**
 * Model catalog for providers that support interactive configuration
 *
 * Models listed in order of recommendation (top = best)
 */
export declare const MODEL_CATALOG: Partial<Record<CLIProxyProvider, ProviderCatalog>>;
/**
 * Check if provider supports interactive model configuration
 */
export declare function supportsModelConfig(provider: CLIProxyProvider): boolean;
/**
 * Get catalog for provider
 */
export declare function getProviderCatalog(provider: CLIProxyProvider): ProviderCatalog | undefined;
/**
 * Suggest a supported replacement model from the provider catalog.
 * Prefers the provider default unless it matches the excluded model or is itself broken.
 */
export declare function getSuggestedReplacementModel(provider: CLIProxyProvider, excludedModelId?: string): string | undefined;
/**
 * Find model entry by ID
 * Note: Model IDs are normalized to lowercase for case-insensitive comparison
 */
export declare function findModel(provider: CLIProxyProvider, modelId: string): ModelEntry | undefined;
/**
 * Check if model has known issues
 */
export declare function isModelBroken(provider: CLIProxyProvider, modelId: string): boolean;
/**
 * Get issue URL for broken model
 */
export declare function getModelIssueUrl(provider: CLIProxyProvider, modelId: string): string | undefined;
/**
 * Check if model is deprecated
 */
export declare function isModelDeprecated(provider: CLIProxyProvider, modelId: string): boolean;
/**
 * Get deprecation reason for deprecated model
 */
export declare function getModelDeprecationReason(provider: CLIProxyProvider, modelId: string): string | undefined;
/**
 * Get thinking support configuration for a model
 */
export declare function getModelThinkingSupport(provider: CLIProxyProvider, modelId: string): ThinkingSupport | undefined;
/**
 * Get the maximum reasoning effort level for a model.
 * Returns undefined if model has no cap or is not in catalog.
 */
export declare function getModelMaxLevel(provider: CLIProxyProvider, modelId: string): ThinkingSupport['maxLevel'] | undefined;
/**
 * Check if model supports thinking/reasoning
 */
export declare function supportsThinking(provider: CLIProxyProvider, modelId: string): boolean;
/**
 * Check if model supports extended context (1M tokens).
 * Returns true if model has extendedContext: true in catalog.
 */
export declare function supportsExtendedContext(provider: CLIProxyProvider, modelId: string): boolean;
/**
 * Check if a model can read image inputs natively.
 */
export declare function supportsNativeImageInput(provider: CLIProxyProvider, modelId: string): boolean;
/**
 * Check if model is a native Gemini model (not Claude via Antigravity).
 * Native Gemini models get extended context auto-enabled.
 */
export declare function isNativeGeminiModel(modelId: string): boolean;
//# sourceMappingURL=model-catalog.d.ts.map