import type { CompletionChannel, CompletionPayload, CompletionView } from "./completion-channel.mjs"; export interface CompletionSessionManager { getBranch(): Array<{ type?: string; customType?: string; data?: unknown; payload?: unknown }>; } export interface CompletionContext { sessionManager: CompletionSessionManager; } export interface ControlledChild { handle: string; status: string; backend?: string; pluginWatcher?: { close(): void }; activityUnsubscribe?: () => void; session?: { abort(): Promise; dispose(): void; }; } export function createLaunchAdmission(options: { children: Map; completionChannel: CompletionChannel; maxActiveChildren: number; }): { reserve(record: T): { ok: true } | { ok: false; error: string }; }; export function restoreCompletionBranch( completionChannel: CompletionChannel, sessionManager: CompletionSessionManager, defer?: (callback: () => void) => unknown, ): void; export function registerCompletionRestoration( pi: { on(event: "session_start" | "session_tree", handler: (event: unknown, ctx: CompletionContext) => void): void }, completionChannel: CompletionChannel, defer?: (callback: () => void) => unknown, ): { ensure(ctx: CompletionContext): void }; export function settleCompletion( completionChannel: CompletionChannel, record: T, payload: CompletionPayload, ): CompletionView | undefined; export function shutdownAdapter( completionChannel: CompletionChannel, children: Map, ): Promise;