import { EventEmitter } from 'events'; import { SpecParser } from './parser.js'; import { SpecWatcher } from './watcher.js'; import { ApprovalStorage } from './approval-storage.js'; import { SpecArchiveService } from '../core/archive-service.js'; import { ProjectInstance } from '../core/project-registry.js'; export interface ProjectContext { projectId: string; projectPath: string; workspacePath: string; originalProjectPath: string; workflowRootPath: string; projectName: string; instances: ProjectInstance[]; parser: SpecParser; watcher: SpecWatcher; approvalStorage: ApprovalStorage; archiveService: SpecArchiveService; } export declare class ProjectManager extends EventEmitter { private registry; private projects; private registryWatcher?; constructor(); /** * Initialize the project manager * Loads projects from registry and starts watching for changes * Note: MCP servers handle their own lifecycle cleanup via stop() */ initialize(): Promise; /** * Load all projects from the registry */ private loadProjectsFromRegistry; /** * Start watching the registry file for changes */ private startRegistryWatcher; /** * Sync current projects with registry * Add new projects, remove deleted ones, update instances for existing projects */ private syncWithRegistry; /** * Add a project context */ private addProject; /** * Remove a project context */ private removeProject; /** * Get a project context by ID */ getProject(projectId: string): ProjectContext | undefined; /** * Get all project contexts */ getAllProjects(): ProjectContext[]; /** * Get projects list for API */ getProjectsList(): Array<{ projectId: string; projectName: string; projectPath: string; instances: ProjectInstance[]; }>; /** * Manually add a project by path */ addProjectByPath(projectPath: string): Promise; /** * Manually remove a project */ removeProjectById(projectId: string): Promise; /** * Stop the project manager */ stop(): Promise; } //# sourceMappingURL=project-manager.d.ts.map