/**
 * Session Config Store
 *
 * Manages session-level configuration persistence.
 * Stores thinking level, reasoning visibility, verbose mode, and other
 * session-specific settings that can be overridden via commands.
 */
import type { ThinkLevel, ReasoningLevel, VerboseLevel, ElevatedMode } from '../agent/transcript/thinking-types.js';
/**
 * Session-level agent configuration.
 * These settings override agent defaults for a specific session.
 */
export interface SessionAgentConfig {
    /** Thinking level for this session */
    thinkingLevel?: ThinkLevel;
    /** Reasoning visibility for this session */
    reasoningLevel?: ReasoningLevel;
    /** Verbose level for this session */
    verboseLevel?: VerboseLevel;
    /** Elevated mode for this session */
    elevatedMode?: ElevatedMode;
    /** Model override for this session */
    modelOverride?: string;
    /** Provider override for this session */
    providerOverride?: string;
    /** Absolute markdown workspace root for this session (set once; immutable after save). */
    workingDirectoryOverride?: string;
    /** Last updated timestamp */
    updatedAt?: number;
}
/**
 * Session config store manager.
 * Each session can have its own configuration that overrides agent defaults.
 */
export declare class SessionConfigStore {
    private configDir;
    /** @param agentHomeDir — `resolveAgentHomeDir(…)` (parent of `sessions/` transcript store) */
    constructor(agentHomeDir: string);
    /**
     * Initialize the config store
     */
    initialize(): Promise<void>;
    /**
     * Get the config file path for a session
     */
    private getConfigPath;
    /**
     * Get config for a session
     */
    get(sessionKey: string): Promise<SessionAgentConfig | null>;
    /**
     * Set config for a session (full replacement)
     */
    set(sessionKey: string, config: SessionAgentConfig): Promise<void>;
    /**
     * Update config for a session (partial update)
     */
    update(sessionKey: string, partial: Partial<SessionAgentConfig>): Promise<SessionAgentConfig>;
    /**
     * Delete config for a session
     */
    delete(sessionKey: string): Promise<void>;
    /**
     * Check if config exists for a session
     */
    has(sessionKey: string): Promise<boolean>;
    /**
     * Get all session configs
     */
    getAll(): Promise<Map<string, SessionAgentConfig>>;
    /**
     * Clear all session configs
     */
    clear(): Promise<void>;
}
/**
 * Resolve thinking level for a session.
 * Returns session config if set, otherwise falls back to agent defaults.
 */
export declare function resolveThinkingLevel(sessionConfigStore: SessionConfigStore, sessionKey: string, agentDefault?: ThinkLevel): Promise<ThinkLevel | undefined>;
/**
 * Resolve reasoning level for a session.
 */
export declare function resolveReasoningLevel(sessionConfigStore: SessionConfigStore, sessionKey: string, agentDefault?: ReasoningLevel): Promise<ReasoningLevel | undefined>;
/**
 * Resolve verbose level for a session.
 */
export declare function resolveVerboseLevel(sessionConfigStore: SessionConfigStore, sessionKey: string, agentDefault?: VerboseLevel): Promise<VerboseLevel | undefined>;
