import { type ManagedSessionState, type NativeThreadCandidate, type NativeThreadTransition } from "./managed-session.js"; import type { TerminalThreadLifecycleAgentRow, TerminalThreadLifecycleCandidateProvider, TerminalThreadLifecycleCandidateToken } from "./terminal-agent-adapter.js"; import type { TerminalNativeIdentity } from "./terminal-binding-authority.js"; import type { TerminalControlRef } from "./terminal-control-ref.js"; import type { ExecutorKind } from "./executors.js"; export type NativeThreadLifecycleIdentity = TerminalNativeIdentity; export interface LifecycleTerminalObservation { conversationId: string; agent: ExecutorKind; pid: number; terminalControl: TerminalControlRef; } export interface NativeThreadLifecycleQueryPorts { cwd(): string; listManagedSessions(): readonly ManagedSessionState[]; loadNativeThreadTransition(transitionId: string): NativeThreadTransition; blockingTurns(sessionId: string): readonly { turnId: string; status: string; }[]; assertStoreAuthority(terminalControl: TerminalControlRef, nativeThreadId: string): void; runningVersion(terminal: LifecycleTerminalObservation): string | undefined; candidateProvider(agent: ExecutorKind): TerminalThreadLifecycleCandidateProvider; sessionOwnerIsConclusivelyInactive(session: ManagedSessionState, terminal: LifecycleTerminalObservation, identity: NativeThreadLifecycleIdentity | undefined): boolean; rootActiveProcesses(agent: ExecutorKind): Promise; resolveProcessIdentity(agent: ExecutorKind, pid: number, cwd?: string): Promise; loadClaudeAgentRows(): readonly TerminalThreadLifecycleAgentRow[]; workspaceRelationship(expected: unknown, actual: unknown): "same" | "different" | "unknown"; } export interface ActiveNativeThreadOwnerScan { owners: Map; uncertaintyReasons: string[]; } export declare function activeNativeThreadOwners(request: { agent: ExecutorKind; currentPid: number; workspace?: string; }, ports: NativeThreadLifecycleQueryPorts): Promise; export declare function assertNativeThreadHasExclusiveOwnership(request: { terminalControl: TerminalControlRef; agent: ExecutorKind; currentPid: number; nativeThreadId: string; excludedManagedSessionId?: string; allowedManagedSessionIds?: readonly string[]; }, ports: NativeThreadLifecycleQueryPorts): Promise; export declare function resumableNativeThreadCandidates(request: { terminal: LifecycleTerminalObservation; currentIdentity?: NativeThreadLifecycleIdentity; }, ports: NativeThreadLifecycleQueryPorts): Promise; export declare function revalidateNativeThreadCandidate(request: { terminal: LifecycleTerminalObservation; nativeThreadId: string; encodedToken: string; agentVersion: string; }, ports: NativeThreadLifecycleQueryPorts): Promise; export declare function assertRestorableOriginSessionRelationship(request: { agent: ExecutorKind; nativeThreadId: string; currentSession?: ManagedSessionState; }, ports: NativeThreadLifecycleQueryPorts): void; export declare function requireRestorableLifecycleOrigin(request: { terminal: LifecycleTerminalObservation; currentIdentity: NativeThreadLifecycleIdentity; currentSession?: ManagedSessionState; agentVersion: string; }, ports: NativeThreadLifecycleQueryPorts): Promise; export declare function previousCommittedResumeCandidate(request: { terminal: LifecycleTerminalObservation; currentSession?: ManagedSessionState; candidates: NativeThreadCandidate[]; }, ports: NativeThreadLifecycleQueryPorts): NativeThreadCandidate | undefined;