import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { NotebookControlRequest, NotebookControlResult, NotebookMemoryUsage, ToolExecutionContext } from "../code-mode/types.ts"; import type { DenoJupyterKernel } from "./jupyter-kernel.ts"; import type { RetainedProjectBinding } from "./project-state-metadata.ts"; import { type NotebookReleaseResult } from "./lifecycle-runtime.ts"; import type { NotebookRuntimeHealth } from "./runtime-health.ts"; interface NotebookLifecycleHost { prepare(context: ToolExecutionContext, signal?: AbortSignal): Promise; diagnostics(context: ToolExecutionContext, signal?: AbortSignal): Promise; reset(context: ToolExecutionContext, signal?: AbortSignal): Promise; kernel(): DenoJupyterKernel | undefined; activeCellId(): string | undefined; stopActive(): Promise; checkpoint(excludeNames?: ReadonlySet, pins?: { names: readonly string[]; pinned: boolean; }): Promise; retainedBindings(): RetainedProjectBinding[]; promoteBindings(names: string[]): Promise<() => Promise>; markChanged(): void; restart(context: ExtensionContext, signal?: AbortSignal): Promise; rollback(context: ExtensionContext): Promise; baselineNames(): ReadonlySet; profileStorage(): { agentDir: string; maxBytes: number; }; runtimeHealth(): NotebookRuntimeHealth; metadata(): { startedAt?: number | undefined; userCells: number; memory?: NotebookMemoryUsage | undefined; checkpoint: Record; }; } export declare class NotebookLifecycleController { private readonly host; private readonly profiles; constructor(host: NotebookLifecycleHost); control(request: NotebookControlRequest, context: ToolExecutionContext, signal?: AbortSignal): Promise; disposeAll(signal?: AbortSignal): Promise; private status; private checkpoint; private pin; private release; private prune; private restart; private userBindingNames; } export {};