/**
 * ModelManager — model switching, cycling, and thinking level management.
 *
 * Validates API keys, persists changes to SessionManager + SettingsManager.
 *
 * Stable deps (agent, registries, managers) are constructor-injected.
 * Part of the AgentSession extracted modules.
 */
import type { Model } from '../../ai/types.js';
import type { AgentModelRegistry } from '../../contracts/agent-model.js';
import type { RuntimeDefaultsStore } from '../../contracts/agent-settings.js';
import type { ThinkingLevel } from '../../core/index.js';
import { type ModelCycleResult } from './session-models.js';
import type { ModelSessionStore } from './session-store-types.js';
/** Minimal agent interface — only what ModelManager needs to push state. */
export interface ModelManagerAgent {
    state: {
        model: Model<any>;
        thinkingLevel: ThinkingLevel;
    };
    setModel(model: Model<any>): void;
    setThinkingLevel(level: ThinkingLevel): void;
}
export declare class ModelManager {
    private readonly _agent;
    private readonly _modelRegistry;
    private readonly _sessionManager;
    private readonly _settingsManager;
    constructor(_agent: ModelManagerAgent, _modelRegistry: AgentModelRegistry, _sessionManager: ModelSessionStore, _settingsManager: RuntimeDefaultsStore);
    /** Set a specific model. Validates API key and persists. */
    setModel(model: Model<any>): Promise<void>;
    /** Cycle to the next available model. Returns result or undefined if none available. */
    cycleModel(direction?: 'forward' | 'backward'): Promise<ModelCycleResult | undefined>;
    /**
     * Restore a model from session persistence. Sets model on agent
     * but does NOT persist (data already exists in session).
     */
    restoreModel(model: Model<any>): Promise<void>;
    /** Set thinking level, clamped to model capabilities. Persists only on change. */
    setThinkingLevel(level: ThinkingLevel): void;
    /** Cycle to the next thinking level. Returns new level, or undefined if not supported. */
    cycleThinkingLevel(): ThinkingLevel | undefined;
    private _validateApiKey;
    private _applyAndPersist;
}
//# sourceMappingURL=model-manager.d.ts.map