import { type ChildProcess } from 'node:child_process'; export interface ContainerProcessIdentity { pid: number; uid: number; startTicks: string; argv: string[]; parentPid?: number; processGroupId?: number; sessionId?: number; } export interface ContainerChildIdentity { pid: number; uid: number; parentPid: number; startTicks: string; } export interface ContainerRuntime { identity?: () => Promise; childIdentity?: (pid: number) => Promise; canonicalEntrypoint?: string; runtimeVersion?: string; controllerIdentity?: (pid: number) => Promise; dockerInitVerified?: () => Promise; dockerInitMainChild?: () => Promise; controllerExecutableVerified?: (identity: ContainerProcessIdentity) => Promise; currentControllerPid?: number; } export interface ContainerLifecycleOptions { home: string; uid?: number; containerRuntime?: ContainerRuntime; /** Internal official rollback path only; never a CLI/environment override. */ pinnedControllerRollback?: boolean; } export interface ContainerRelayRegistration { schema: 'dharma.relay-autostart/v3'; backend: 'container-entrypoint'; launcher: string; workspace: string; policy: string; version: string; taskName: null; } export declare function readContainerPid1Identity(): Promise; export declare function readContainerProcessIdentity(pid: number): Promise; export declare function verifyContainerControllerRuntime(candidate: string | undefined, caller: string, rollback?: boolean): Promise; export declare function readContainerChildIdentity(pid: number): Promise; export declare function containerEntrypointAvailable(options: ContainerLifecycleOptions): Promise; export declare function containerStartupControl(options: ContainerLifecycleOptions, registration: ContainerRelayRegistration, running: boolean): Promise; export declare function containerStartupState(options: ContainerLifecycleOptions, registration: ContainerRelayRegistration): Promise<{ state: "enabled"; backend: "container-entrypoint"; version: string; lifecycle: "running" | "unconfigured" | "paused" | "blocked" | "starting" | "configured"; restartCoverage: "container-entrypoint-only"; }>; export declare function ownsContainerStartup(options: ContainerLifecycleOptions, registration: ContainerRelayRegistration): Promise; export declare function writeContainerRegistration(options: ContainerLifecycleOptions, registration: ContainerRelayRegistration): Promise; export declare function readContainerRegistration(options: ContainerLifecycleOptions): Promise; export declare function assertContainerStartupOwnership(options: ContainerLifecycleOptions, version?: string): Promise; export declare function containerConsumerStoreReady(): Promise; export declare function runOwnedContainerEntrypoint(options: ContainerLifecycleOptions & { signal: AbortSignal; spawnRelay?: (registration: ContainerRelayRegistration) => ChildProcess; consumerStoreReady?: () => Promise; pollMs?: number; restartDelayMs?: number; }): Promise<{ stopped: boolean; restarts: number; }>; //# sourceMappingURL=containerRelayLifecycle.d.ts.map