/**
 * Session lifecycle operations — extracted from AgentSession.
 *
 * Pure functions that orchestrate creating new sessions and switching between
 * existing sessions. Each function takes an explicit params object containing
 * the dependencies it needs, rather than reaching into class state.
 */
import type { AgentModelRegistry } from '../../contracts/agent-model.js';
import type { RuntimeSessionStore } from '../../contracts/agent-session-store.js';
import type { RuntimeDefaultsStore } from '../../contracts/agent-settings.js';
import type { AgentController, ThinkingLevel } from '../../core/index.js';
import type { ExtensionRunner } from '../extensions/runner.js';
import type { ExtensionSessionSetupStore } from '../extensions/types.js';
import type { ModelManager } from './model-manager.js';
import type { QueueTracker } from './queue-tracker.js';
export interface NewSessionParams {
    agent: AgentController;
    sessionManager: RuntimeSessionStore;
    extensionRunner: ExtensionRunner | undefined;
    models: ModelManager;
    queueTracker: QueueTracker;
    sessionFile: string | undefined;
    thinkingLevel: ThinkingLevel;
    abortFn: () => Promise<void>;
    disconnectFromAgent: () => void;
    reconnectToAgent: () => void;
    clearPendingNextTurnMessages: () => void;
    parentSession?: string;
    setup?: (sessionManager: ExtensionSessionSetupStore) => Promise<void>;
    observability?: {
        setSessionId?: (sessionId: string) => void;
        info?: (input: {
            module: string;
            event: string;
            data?: Record<string, unknown>;
        }) => void;
    };
}
/**
 * Create a new session, optionally with initial messages and parent tracking.
 * Returns true if completed, false if cancelled by extension.
 */
export declare function executeNewSession(params: NewSessionParams): Promise<boolean>;
export interface SwitchSessionParams {
    sessionPath: string;
    agent: AgentController;
    sessionManager: RuntimeSessionStore;
    extensionRunner: ExtensionRunner | undefined;
    models: ModelManager;
    modelRegistry: AgentModelRegistry;
    settingsManager: RuntimeDefaultsStore;
    queueTracker: QueueTracker;
    abortFn: () => Promise<void>;
    disconnectFromAgent: () => void;
    reconnectToAgent: () => void;
    clearPendingNextTurnMessages: () => void;
    setThinkingLevel: (level: ThinkingLevel) => void;
    observability?: {
        setSessionId?: (sessionId: string) => void;
        info?: (input: {
            module: string;
            event: string;
            data?: Record<string, unknown>;
        }) => void;
    };
}
/**
 * Switch to an existing session by file path.
 * Returns true if switch completed, false if cancelled by extension.
 */
export declare function executeSwitchSession(params: SwitchSessionParams): Promise<boolean>;
//# sourceMappingURL=session-lifecycle.d.ts.map