/**
 * ResolvedAgentCache — the DERIVED resolved-agent state for a turn.
 *
 * Holds the Agent plus the LLM client snapshot (transport + apiKey/model/provider/
 * baseUrl) that resolveAgent() produced for the current textGeneration config,
 * keyed by the resolved config key. Extracted from StdioServer to localize the
 * one subtle invariant the god-object carried inline:
 *
 *   - invalidate(): wipe EVERYTHING. Called on a ModelRegistry change — the resolved
 *     LLM client is now stale, so the next turn must re-resolve from scratch.
 *   - forgetAgent(): drop only the Agent + its config key, forcing a re-resolve on
 *     the next turn while leaving the last client snapshot readable. Called on
 *     session dispose (matches the prior `agent = null; lastLlmConfigKey = ""`).
 *
 * This is DERIVED state ONLY. Host-pinned per-session LLM config (sessionLlmConfig)
 * lives on the server and is NEVER touched here — a background catalog hydration
 * finishing between a member's set_config pin and its first prompt must not strip
 * its provider.
 */
import type { Agent } from "../agent/agent.js";
import type { LLMTransport } from "./provider-core-facade.js";
export interface ResolvedAgentSnapshot {
    agent: Agent;
    transport: LLMTransport;
    apiKey: string;
    model: string;
    provider: string;
    baseUrl: string;
    configKey: string;
}
export declare class ResolvedAgentCache {
    agent: Agent | null;
    transport: LLMTransport | null;
    apiKey: string;
    model: string;
    provider: string;
    baseUrl: string;
    private configKey;
    /** True when a cached Agent matches the given resolved config key. */
    matches(configKey: string): boolean;
    /** Store the freshly resolved Agent + LLM client snapshot. */
    store(snapshot: ResolvedAgentSnapshot): void;
    /** Drop only the Agent + config key — force re-resolve, keep the last snapshot. */
    forgetAgent(): void;
    /** Wipe ALL derived state — the resolved client is stale (registry change). */
    invalidate(): void;
}
