import type { GatewayModelRoute, GatewayProviderContext, GatewayReasoningFormat, GatewayStreamRequest, ModelOperation, ModelReasoningOption, ReasoningEffort } from "@cline/shared"; interface ModelReasoningControls { effort?: Extract; budget?: Extract; toggle: boolean; efforts: ReasoningEffort[]; supportsOff: boolean; supportsDefault: boolean; } export declare function getModelReasoningControls(options: readonly ModelReasoningOption[] | undefined): ModelReasoningControls | undefined; export declare function normalizeReasoningEffort(effort: ReasoningEffort, supportedEfforts: readonly ReasoningEffort[]): ReasoningEffort | undefined; export declare function resolveModelFamily(context: GatewayProviderContext): string | undefined; export declare function normalizeRoutingValue(value: string | undefined): string | undefined; export declare function isAnthropicCompatibleModel(options: { modelId?: string; family?: string; }): boolean; export declare function isAnthropicCompatibleModelId(modelId: string | undefined): boolean; export declare function isClaudeModelId(modelId: string | undefined): boolean; export declare function isClaudeFableModelId(modelId: string | undefined): boolean; /** * Wire-shape era of a Claude model id, used only as a fallback when catalog * `reasoningOptions` metadata is unavailable (offline baked catalog, * user-typed unlisted ids such as "claude-opus-4-6:1m"). * * - "adaptive": 4.6+/5.x models; the Anthropic API rejects the manual * `thinking: {type: "enabled", budgetTokens}` shape for these. * - "legacy": known pre-4.6 families that require the manual shape. * - "unknown-claude": a Claude id the version parser does not recognize. * Callers should treat these as NEWER than the known list and prefer * adaptive — the forward-compatible policy the ecosystem converged on * (vercel/ai#17804 for @ai-sdk/anthropic's capability lookup; opencode's * transform.ts after repeated allowlist misses for opus-4.7, sonnet-5, * and opus-5). New Claude releases reject the manual shape, so an * allowlist that lags a release turns every reasoning request into a * hard API error. * - "not-claude": non-Claude ids (including Anthropic-compatible aliases) * stay conservative for third-party endpoints. */ export type ClaudeThinkingEra = "adaptive" | "legacy" | "unknown-claude" | "not-claude"; export declare function resolveClaudeThinkingEra(modelId: string | undefined): ClaudeThinkingEra; export declare function isQwenModel(options: { modelId?: string; family?: string; }): boolean; export declare function isOpenAIReasoningEraModelId(modelId: string | undefined): boolean; export declare function resolveGeminiThinkingMode(input: { request: Pick; context: GatewayProviderContext; }): "level" | "budget" | undefined; export declare function modelRouteMatches(route: GatewayModelRoute, options: { modelId?: string; family?: string; capabilities?: readonly string[]; operation?: ModelOperation; modalities?: import("@cline/shared").ModelModalities; }): boolean; export declare function providerReasoningRouteMatches(format: GatewayReasoningFormat, request: Pick, context: GatewayProviderContext): boolean; export declare function isGlmModel(request: Pick, context: GatewayProviderContext): boolean; export declare function isMiniMaxM3Model(request: Pick, _context: GatewayProviderContext): boolean; export declare function isKimiK26Family(context: GatewayProviderContext): boolean; export declare function isMoonshotKimiModelIdFallback(request: Pick): boolean; export declare function isDeepSeekFamily(context: GatewayProviderContext): boolean; /** * Whether the resolved model advertises image input (`"images"` in its * gateway capabilities). Models with no capability data at all (e.g. ids * resolved outside any catalog) fail open: images are kept rather than * hidden from a possibly capable model. */ export declare function modelSupportsImageInput(context: GatewayProviderContext): boolean; export declare function getReasoningDefaultOnMetadata(context: GatewayProviderContext): boolean | undefined; export declare function isOllamaQwen3ModelIdFallback(request: Pick): boolean; export declare function isCerebrasProvider(request: Pick, context: GatewayProviderContext): boolean; export declare function modelReasoningDefaultsOn(options: { request: Pick; context: GatewayProviderContext; }): boolean; export {}; //# sourceMappingURL=model-facts.d.ts.map