import type { BotConfig } from "../config/config.js"; import type { ModelCatalogEntry } from "./model-catalog.js"; export type ModelRef = { provider: string; model: string; }; export type ThinkLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive"; export type ModelAliasIndex = { byAlias: Map; byKey: Map; }; export declare function modelKey(provider: string, model: string): string; export declare function normalizeProviderId(provider: string): string; /** Normalize provider ID for auth lookup. Coding-plan variants share auth with base. */ export declare function normalizeProviderIdForAuth(provider: string): string; export declare function findNormalizedProviderValue(entries: Record | undefined, provider: string): T | undefined; export declare function findNormalizedProviderKey(entries: Record | undefined, provider: string): string | undefined; export declare function isCliProvider(provider: string, cfg?: BotConfig): boolean; export declare function normalizeModelRef(provider: string, model: string): ModelRef; export declare function parseModelRef(raw: string, defaultProvider: string): ModelRef | null; export declare function inferUniqueProviderFromConfiguredModels(params: { cfg: BotConfig; model: string; }): string | undefined; export declare function resolveAllowlistModelKey(raw: string, defaultProvider: string): string | null; export declare function buildConfiguredAllowlistKeys(params: { cfg: BotConfig | undefined; defaultProvider: string; }): Set | null; export declare function buildModelAliasIndex(params: { cfg: BotConfig; defaultProvider: string; }): ModelAliasIndex; export declare function resolveModelRefFromString(params: { raw: string; defaultProvider: string; aliasIndex?: ModelAliasIndex; }): { ref: ModelRef; alias?: string; } | null; export declare function resolveConfiguredModelRef(params: { cfg: BotConfig; defaultProvider: string; defaultModel: string; }): ModelRef; export declare function resolveDefaultModelForAgent(params: { cfg: BotConfig; agentId?: string; }): ModelRef; export declare function resolveSubagentConfiguredModelSelection(params: { cfg: BotConfig; agentId: string; }): string | undefined; export declare function resolveSubagentSpawnModelSelection(params: { cfg: BotConfig; agentId: string; modelOverride?: unknown; }): string; export declare function buildAllowedModelSet(params: { cfg: BotConfig; catalog: ModelCatalogEntry[]; defaultProvider: string; defaultModel?: string; }): { allowAny: boolean; allowedCatalog: ModelCatalogEntry[]; allowedKeys: Set; }; export type ModelRefStatus = { key: string; inCatalog: boolean; allowAny: boolean; allowed: boolean; }; export declare function getModelRefStatus(params: { cfg: BotConfig; catalog: ModelCatalogEntry[]; ref: ModelRef; defaultProvider: string; defaultModel?: string; }): ModelRefStatus; export declare function resolveAllowedModelRef(params: { cfg: BotConfig; catalog: ModelCatalogEntry[]; raw: string; defaultProvider: string; defaultModel?: string; }): { ref: ModelRef; key: string; } | { error: string; }; export declare function resolveThinkingDefault(params: { cfg: BotConfig; provider: string; model: string; catalog?: ModelCatalogEntry[]; }): ThinkLevel; /** Default reasoning level when session/directive do not set it: "on" if model supports reasoning, else "off". */ export declare function resolveReasoningDefault(params: { provider: string; model: string; catalog?: ModelCatalogEntry[]; }): "on" | "off"; /** * Resolve the model configured for Gmail hook processing. * Returns null if hooks.gmail.model is not set. */ export declare function resolveHooksGmailModel(params: { cfg: BotConfig; defaultProvider: string; }): ModelRef | null; /** * Normalize a model selection value (string or `{primary?: string}`) to a * plain trimmed string. Returns `undefined` when the input is empty/missing. * Shared by sessions-spawn and cron isolated-agent model resolution. */ export declare function normalizeModelSelection(value: unknown): string | undefined;