/// import { EventEmitter } from 'events'; import { ExecaChildProcess } from 'execa'; import { ProcessManager } from '../../utils/process-manager.js'; import { Logger } from '../../utils/logger.js'; export interface ServiceConfig { name: string; path: string; command: string; port?: number; env?: Record; } export declare enum ServiceState { STOPPED = "stopped", STARTING = "starting", RUNNING = "running", STOPPING = "stopping", ERROR = "error" } export declare abstract class BaseService extends EventEmitter { protected config: ServiceConfig; protected logger: Logger; protected processManager: ProcessManager; protected process?: ExecaChildProcess; protected state: ServiceState; protected startTime?: Date; protected error?: Error; protected runtimeConfig?: any; constructor(config: ServiceConfig, processManager: ProcessManager, runtimeConfig?: any); /** * Get the current service state */ getState(): ServiceState; /** * Get service info */ getInfo(): { name: string; state: ServiceState; port: number | undefined; startTime: Date | undefined; error: Error | undefined; pid: number | undefined; }; /** * Start the service */ start(): Promise; /** * Stop the service */ stop(): Promise; /** * Parse command string into command and args */ protected parseCommand(): { command: string; args: string[]; }; /** * Set up process event handlers */ protected setupProcessHandlers(): void; /** * Set the service state and emit event */ protected setState(state: ServiceState): void; /** * Handle process output (override in subclasses) */ protected handleOutput(_output: string): void; /** * Handle process errors (override in subclasses) */ protected handleError(_output: string): void; /** * Check if port is available (override if needed) */ protected checkPort(): Promise; /** * Wait for service to be ready (must override) */ protected abstract waitForReady(): Promise; } //# sourceMappingURL=base-service.d.ts.map