import type { BotConfig } from "../../config/config.js"; import type { ThinkLevel } from "./directives.js"; import { loadModelCatalog } from "../../agents/model-catalog.js"; import { type ModelAliasIndex } from "../../agents/model-selection.js"; import { type SessionEntry } from "../../config/sessions.js"; export type ModelDirectiveSelection = { provider: string; model: string; isDefault: boolean; alias?: string; }; type ModelCatalog = Awaited>; type ModelSelectionState = { provider: string; model: string; allowedModelKeys: Set; allowedModelCatalog: ModelCatalog; resetModelOverride: boolean; resolveDefaultThinkingLevel: () => Promise; /** Default reasoning level from model capability: "on" if model has reasoning, else "off". */ resolveDefaultReasoningLevel: () => Promise<"on" | "off">; needsModelCatalog: boolean; }; export type StoredModelOverride = { provider?: string; model: string; source: "session" | "parent"; }; export declare function resolveStoredModelOverride(params: { sessionEntry?: SessionEntry; sessionStore?: Record; sessionKey?: string; parentSessionKey?: string; }): StoredModelOverride | null; export declare function createModelSelectionState(params: { cfg: BotConfig; agentCfg: NonNullable["defaults"]> | undefined; sessionEntry?: SessionEntry; sessionStore?: Record; sessionKey?: string; parentSessionKey?: string; storePath?: string; defaultProvider: string; defaultModel: string; provider: string; model: string; hasModelDirective: boolean; /** True when heartbeat.model was explicitly resolved for this run. * In that case, skip session-stored overrides so the heartbeat selection wins. */ hasResolvedHeartbeatModelOverride?: boolean; }): Promise; export declare function resolveModelDirectiveSelection(params: { raw: string; defaultProvider: string; defaultModel: string; aliasIndex: ModelAliasIndex; allowedModelKeys: Set; }): { selection?: ModelDirectiveSelection; error?: string; }; export declare function resolveContextTokens(params: { agentCfg: NonNullable["defaults"]> | undefined; model: string; }): number; export {};