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<void>;
    /**
     * 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<string>;
    /**
     * Manually remove a project
     */
    removeProjectById(projectId: string): Promise<void>;
    /**
     * Stop the project manager
     */
    stop(): Promise<void>;
}
//# sourceMappingURL=project-manager.d.ts.map