type Launchers = { shell: string; windows: string; }; type State = 'prepared' | 'installed' | 'completed' | 'rolled_back' | 'rollback_failed'; type Input = { home: string; workspace: string; version: string; organizationId: string; deviceId: string; workspaceId: string; dryRun?: boolean; rollback?: boolean; }; export type RelayUpgradeDependencies = { recoverableJournal?(version: string, previousVersion: string): boolean; launcherContents(version: string): Launchers; legacyLauncherContents?(version: string): Launchers; verifyPriorLaunchers?(version: string, contents: Launchers): Promise; recordNextLaunchers?: boolean; verifyRecoveryLaunchers?(version: string, contents: Launchers): Promise; assertStopped(): Promise; inspectStartup(): Promise<{ version: string; workspace: string; codexHome?: string; }>; configureStartup(version: string, restore?: { codexHome: string | null; }): Promise; start(): Promise; stop(): Promise; verify(version: string, since: string): Promise; }; export declare function upgradeRelayRuntime(input: Input, deps: RelayUpgradeDependencies): Promise<{ ok: boolean; schema: string; upgradeId: string; organizationId: string; deviceId: string; workspaceId: string; previousVersion: string; version: string; state: State | "planned"; createdAt: string; previousLauncherHash: string; enrollmentChanged: boolean; skillsChanged: boolean; runtimeObservation: "unconfirmed" | "not_performed" | "local_process_and_poll"; serverSignatureVerified: boolean; }>; export declare function relayRuntimeObservationReady(input: { version: string; workspaceId: string; since: string; now?: number; allowLegacyPoll?: boolean; supervisorPid: number; relayPid: number; supervisor: unknown; lastPoll: unknown; }): boolean; export {}; //# sourceMappingURL=relayRuntimeUpgrade.d.ts.map