/**
 * ProjectRegistry - Centralized Project Management
 *
 * Single source of truth for all projects in SpecWeave.
 * Provides CRUD operations with file persistence and event emission.
 *
 * Storage: .specweave/state/projects.json
 */
import { Logger } from '../../utils/logger.js';
import { Project, ProjectValidationResult, AddProjectOptions, UpdateProjectOptions, RemoveProjectOptions, ProjectSyncStatus } from './types/project-types.js';
import { ProjectEventBus } from './project-event-bus.js';
export declare class ProjectRegistry {
    private projectRoot;
    private registryPath;
    private projects;
    private defaultProjectId?;
    private eventBus;
    private logger;
    private initialized;
    private isValid;
    constructor(projectRoot: string, options?: {
        logger?: Logger;
        eventBus?: ProjectEventBus;
    });
    /**
     * Checks if this registry instance is valid (project has .specweave dir)
     */
    isValidProject(): boolean;
    /**
     * Initialize the registry (lazy loading)
     */
    private ensureInitialized;
    /**
     * Load registry from disk
     */
    load(): Promise<void>;
    /**
     * Save registry to disk
     */
    save(): Promise<void>;
    /**
     * Migrate projects from config.json to registry
     */
    private migrateFromConfig;
    /**
     * Add a new project to the registry
     */
    addProject(project: Project, options?: AddProjectOptions): Promise<void>;
    /**
     * Update an existing project
     */
    updateProject(id: string, updates: Partial<Project>, options?: UpdateProjectOptions): Promise<void>;
    /**
     * Remove a project from the registry
     */
    removeProject(id: string, options?: RemoveProjectOptions): Promise<void>;
    /**
     * Get a project by ID
     */
    getProject(id: string): Promise<Project | null>;
    /**
     * List all projects
     */
    listProjects(): Promise<Project[]>;
    /**
     * Get the default project
     */
    getDefaultProject(): Promise<Project | null>;
    /**
     * Set the default project
     */
    setDefaultProject(id: string): Promise<void>;
    /**
     * Check if a project exists
     */
    hasProject(id: string): Promise<boolean>;
    /**
     * Get project count
     */
    count(): Promise<number>;
    /**
     * Validate project data
     */
    validateProject(project: Partial<Project>): ProjectValidationResult;
    /**
     * Get sync status for a project
     */
    getSyncStatus(id: string): Promise<ProjectSyncStatus | null>;
    /**
     * Calculate overall sync status from individual tool statuses
     */
    private calculateOverallStatus;
    /**
     * Request sync for a project or all projects
     */
    requestSync(projectId?: string, targets?: ('github' | 'ado' | 'jira')[]): Promise<void>;
    /**
     * Get the event bus for subscribing to events
     */
    getEventBus(): ProjectEventBus;
}
//# sourceMappingURL=project-registry.d.ts.map