/** * Last-resort name heuristic, used only when the runtime can't tell us (e.g. a * non-Ollama OpenAI-compatible gateway). NOT the source of truth — the runtime * probe and response-learning override it. Kept deliberately small. */ export declare function isThinkingByName(model: string): boolean; export declare function cachedThinking(model: string): boolean | undefined; /** Once a model is known to think, it stays that way for the session. */ export declare function markThinking(model: string): void; /** * Learn from an actual response: a populated reasoning trace, or empty content * despite spent tokens, both prove a thinking channel — regardless of the * model's name or provider. This is what makes the characterization robust to * models no list knows about yet. */ export declare function observeResponse(model: string, r: { content: string; reasoning: string; completionTokens: number; }): void; /** * Best-effort upfront characterization, cached per model. Probes the runtime * first (authoritative), falls back to the name hint. Never throws. Call once * before the first request to a model; subsequent calls are cache hits. */ export declare function characterizeThinking(model: string, opts: { apiUrl: string; apiKey: string; }): Promise; /** Synchronous best-known answer: cache if populated, else the name hint. */ export declare function isThinkingModel(model: string): boolean; /** Test helper. */ export declare function _resetThinkingCache(): void;