import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { CodeModeProxyProviderRegistration } from "../providers/code-mode-proxy-provider.ts"; import type { CodeModeRegistration } from "../tools/code-mode/tools.ts"; import type { CodexExtensionRuntime } from "./runtime.ts"; import type { CodexToolRegistration } from "./tools.ts"; import type { CodexUiController } from "./ui.ts"; import type { SessionStartEvent, ModelSelectEvent, SessionBeforeTreeEvent, SessionTreeEvent, SessionShutdownEvent } from "@earendil-works/pi-coding-agent"; export declare function createCodexSessionLifecycle(pi: ExtensionAPI, runtime: CodexExtensionRuntime, tools: CodexToolRegistration, ui: CodexUiController, codeMode: CodeModeRegistration, proxyProvider: CodeModeProxyProviderRegistration, modelSelected: (ctx: ExtensionContext) => void): { start: (event: SessionStartEvent, ctx: ExtensionContext) => Promise; modelSelected: (_event: ModelSelectEvent, ctx: ExtensionContext) => Promise; beforeSwitch: () => { cancel: true; } | undefined; beforeFork: () => { cancel: true; } | undefined; beforeTree: (event: SessionBeforeTreeEvent, ctx: ExtensionContext) => Promise<{ cancel: boolean; summary?: never; } | { cancel?: never; summary: { summary: string; details: Record; }; } | undefined> | { cancel: true; } | undefined; tree: (event: SessionTreeEvent, ctx: ExtensionContext) => Promise; shutdown: (_event: SessionShutdownEvent, ctx: ExtensionContext) => Promise; activate: (ctx: ExtensionContext) => void; flushToolRefresh: (ctx: ExtensionContext) => void; }; export declare function prepareCodeModeHost(codeMode: CodeModeRegistration, ctx: ExtensionContext): void;