import type { CoreSessionConfig } from "../../types/config"; export interface ConnectionUpdate { providerId?: string; modelId?: string; apiKey?: string; baseUrl?: string; headers?: Record; providerConfig?: CoreSessionConfig["providerConfig"]; reasoningEffort?: CoreSessionConfig["reasoningEffort"] | null; thinking?: CoreSessionConfig["thinking"] | null; thinkingBudgetTokens?: CoreSessionConfig["thinkingBudgetTokens"] | null; } export interface ConnectionUpdateInput { providerId?: string; modelId?: string; apiKey?: string; baseUrl?: string; headers?: Record; providerConfig?: CoreSessionConfig["providerConfig"]; thinking?: boolean; reasoningEffort?: CoreSessionConfig["reasoningEffort"]; thinkingBudgetTokens?: number; } /** * Builds a ConnectionUpdate for switching a live session's provider/model * connection. Shared by clients (CLI, desktop sidecar, …) so the * thinking/reasoning transition rules stay consistent: * - `thinking: false` disables reasoning and clears effort/budget. * - `thinking: true` (or a provided effort/budget) enables reasoning; an * explicit `thinking: true` resets the reasoning state, so a stale effort or * token budget from the previous connection is cleared unless a replacement * accompanies it. A bare effort/budget without a `thinking` flag updates * only the provided field. * - `thinking: undefined` leaves the session's reasoning state untouched. * Connection fields are included only when defined; an empty string is passed * through (it means "clear"), so callers that want to skip blanks must drop * them before calling. */ export declare function buildConnectionUpdate(input: ConnectionUpdateInput): ConnectionUpdate; export declare function normalizeConnectionUpdate(updates: ConnectionUpdate): ConnectionUpdate;