import type { createCodexSessionLifecycle } from "./session-lifecycle.ts"; import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { CodeModeRegistration } from "../tools/code-mode/tools.ts"; import type { CodexExtensionRuntime } from "./runtime.ts"; import type { CodexUiController } from "./ui.ts"; import type { createCodexReserveController } from "../codex-usage/reserve.ts"; import type { TurnEndEvent, InputEvent, BeforeAgentStartEvent, AgentStartEvent, AgentSettledEvent, ContextWithSystemEvent, InputEventResult } from "@earendil-works/pi-coding-agent"; export declare function createCodexTurnLifecycle(pi: ExtensionAPI, runtime: CodexExtensionRuntime, ui: CodexUiController, codeMode: CodeModeRegistration, reserve: ReturnType, session: Pick, "activate" | "flushToolRefresh">): { turnEnded: (event: TurnEndEvent, ctx: ExtensionContext) => { entries: import("@earendil-works/pi-coding-agent").SessionBoundaryDraft[]; continue: true; } | undefined; input: (event: InputEvent, ctx: ExtensionContext) => Promise; beforeAgentStart: (event: BeforeAgentStartEvent, ctx: ExtensionContext) => Promise<{ message: import("@earendil-works/pi-coding-agent").CustomMessageEntryDraft; } | undefined>; agentStarted: (_event: AgentStartEvent, ctx: ExtensionContext) => Promise; agentSettled: (event: AgentSettledEvent, ctx: ExtensionContext) => Promise; contextWithSystem: (event: ContextWithSystemEvent, ctx: ExtensionContext) => Promise<{ messages: AgentMessage[]; }>; startManualNotesWindow: (ctx: ExtensionContext) => Promise; refreshNotebookStatus: (ctx: ExtensionContext, messages?: readonly AgentMessage[], selectedTools?: string[]) => Promise; };