import type { DeploymentDrainDefinition, DeploymentStateDefinition } from './deploy'; import type { DeploymentStateHandoff } from './deployment-evidence'; export interface RuntimeControlResponse { status: number; body: unknown; } export interface RuntimeTransitionHost { control(input: { port: number; path: string; method: 'GET' | 'POST'; token: string; timeoutMs: number; body?: Readonly>; }): Promise; sleep(ms: number): Promise; } export interface RuntimeSlot { revision: string; port: number; token: string; } export interface RuntimeDrainResult { status: 'not-required' | 'completed'; requestedMs: number; actualMs: number; } export declare function runtimeControlToken(): string; /** * Coordinates metadata only. The candidate runtime pulls the typed payload * directly from the old runtime's loopback export endpoint and acknowledges * the exact source revision, cursor and digest before ingress can move. */ export declare function handoffRuntimeState(input: { definition: DeploymentStateDefinition; previous?: RuntimeSlot; candidate: RuntimeSlot; host: RuntimeTransitionHost; }): Promise; /** Stops all declared intake on the old runtime and proves every counter is zero. */ export declare function drainRuntime(input: { definition?: DeploymentDrainDefinition; previous?: RuntimeSlot; targetRevision: string; host: RuntimeTransitionHost; now(): number; }): Promise;