import { type ChildProcess } from "node:child_process"; import type { LibeamConfig, NodeDefinition } from "./config.js"; import type { NodeInfo, NodeStatus, SupervisorMessage, WorkerMessage } from "./ipc.js"; interface ManagedNode { name: string; definition: NodeDefinition; process: ChildProcess; status?: NodeStatus; startedAt: number; } export declare class NodeSupervisor { private config; private nodes; private nextAutoPort; private shutdownInProgress; constructor(config: LibeamConfig); /** * Start all nodes defined in config, or only those matching a role filter. */ startAll(roleFilter?: string): Promise; /** * Start a single node. */ startNode(name: string, definition: NodeDefinition): Promise; /** * Send a message to a worker and wait for a response of a specific type. */ sendAndWait(name: string, msg: SupervisorMessage, responseType: T, timeout?: number): Promise>; /** * Stop a specific node gracefully. */ stopNode(name: string, timeout?: number): Promise; /** * Stop all nodes gracefully. */ stopAll(timeout?: number): Promise; /** * Drain a specific node. */ drainNode(name: string, target?: string, timeout?: number): Promise<{ migrated: number; drained: number; failed: string[]; }>; /** * Get status of all running nodes. */ getAllStatus(): Promise; /** * Get actors from a specific node. */ getActors(name: string): Promise>; getRunningNodes(): string[]; getNode(name: string): ManagedNode | undefined; isRunning(): boolean; } export {}; //# sourceMappingURL=supervisor.d.ts.map