import type { ExternalServiceProbe, HealthProbes, PackageManager, ProcessExecutor, RuntimeServiceDefinition, RuntimeServiceStatus } from "../types.js"; import { Pm2Manager } from "./pm2-manager.js"; export interface ServiceManagerDependencies { executor?: ProcessExecutor; pm2Manager?: Pm2Manager; packageManager?: PackageManager; healthProbes?: HealthProbes; } /** * @remarks * ServiceManager координирует обнаружение/установку server/worker и работу с pm2. * Использует абстракции PackageManager/ProcessExecutor/HealthProbes для * идемпотентных операций и инкапсуляции командной логики. */ export declare class ServiceManager { private readonly exec; private pm2; private ecosystemPath; private readonly packageManager; private readonly probes; constructor(options?: { ecosystemPath?: string; }, deps?: ServiceManagerDependencies); ensurePm2(): Promise<{ ok: boolean; message?: string; }>; ensureConfig(services: RuntimeServiceDefinition[]): Promise; ensureConfigWithPath(services: RuntimeServiceDefinition[], pm2Dir: string): Promise; getPm2List(): Promise<{ ok: boolean; message?: string; list: Array<{ name: string; pm2Status?: string; version?: string; }>; }>; status(services: RuntimeServiceDefinition[]): Promise; start(services: RuntimeServiceDefinition[], target?: string): Promise; stop(services: RuntimeServiceDefinition[], target?: string): Promise; restart(services: RuntimeServiceDefinition[], target?: string): Promise; delete(services: RuntimeServiceDefinition[], target?: string): Promise; scale(service: RuntimeServiceDefinition, count: number): Promise; resolveDefault(kind: "server" | "worker", opts?: { paths?: string[]; }): Promise; installPackage(packageName: string, options?: { cwd?: string; global?: boolean; }): Promise<{ ok: boolean; message?: string; }>; detectExternalService(probe: ExternalServiceProbe): Promise; private pm2Path; private runOrThrow; }