import type { Clock, KernelPaths, TaskRecord } from "./types.js"; export interface PaneHealthObservation { readonly pane_id: string; readonly session_id: string; readonly task_id: string | null; readonly status: "healthy" | "stopped" | "stalled"; } export interface PaneHealthAdapter { readonly observeKnownPanes: () => readonly PaneHealthObservation[]; } export declare function assertReadOnlyPaneAdapter(adapter: PaneHealthAdapter): void; export declare function normalizePaneObservations(raw: unknown): readonly PaneHealthObservation[]; export interface JournalPaneBinding { readonly task_id: string; readonly pane_id: string; readonly session_id: string; readonly attempt: number; readonly launch_operation_id: string; readonly launch_identity_digest: string; readonly physical_nonce: string; } /** * Load exact pane+session bindings from journal-authoritative task views * (replayTaskViews), validating each task's launch completion against the full * task-bound identity. Projection files never invent or hide ownership. */ export declare function loadJournalPaneBindings(paths: KernelPaths, runId: string, options?: { readonly includeStoppedBindings?: boolean; }): readonly JournalPaneBinding[]; /** * Project pane liveness → health only. Never mutates activity. * Preserves parked. stopped cannot revive to healthy via pane probe. */ export declare function projectPaneObservationsUnlocked(input: { readonly paths: KernelPaths; readonly clock: Clock; readonly runId: string; readonly observations: readonly PaneHealthObservation[]; }): { readonly projected: number; readonly ignored: number; readonly eventsCreated: number; }; export type { TaskRecord };