import { AtomicTask } from '../types/task.js'; export interface Epic { id: string; title: string; createdAt: Date; completedAt?: Date; } export interface Project { id: string; name: string; createdAt: Date; completedAt?: Date; } export type ProgressMethod = 'task_count' | 'estimated_hours' | 'weighted' | 'complexity'; export interface TaskProgress { taskId: string; status: string; progressPercentage: number; startedAt?: Date; completedAt?: Date; estimatedHours?: number; actualHours?: number; blockers: string[]; lastUpdated: Date; } export interface EpicProgress { epicId: string; title: string; totalTasks: number; completedTasks: number; inProgressTasks: number; blockedTasks: number; progressPercentage: number; estimatedHours: number; actualHours: number; remainingHours: number; estimatedCompletionDate?: Date; startedAt?: Date; completedAt?: Date; tasks: TaskProgress[]; lastUpdated: Date; } export interface ProjectProgress { projectId: string; projectName: string; totalEpics: number; completedEpics: number; inProgressEpics: number; totalTasks: number; completedTasks: number; inProgressTasks: number; blockedTasks: number; progressPercentage: number; estimatedHours: number; actualHours: number; remainingHours: number; estimatedCompletionDate?: Date; startedAt?: Date; completedAt?: Date; epics: EpicProgress[]; lastUpdated: Date; } export interface ProgressConfig { method: ProgressMethod; updateIntervalMinutes: number; enableRealTimeUpdates: boolean; enableCompletionEstimation: boolean; enableDependencyTracking: boolean; enableCriticalPathMonitoring: boolean; enableScheduleDeviationAlerts: boolean; complexityWeights: Record; statusWeights: Record; deviationThresholdPercentage: number; criticalPathUpdateInterval: number; } export type ProgressEvent = 'task_started' | 'task_progress_updated' | 'task_completed' | 'task_blocked' | 'task_failed' | 'task_dependency_resolved' | 'task_dependency_blocked' | 'epic_progress_updated' | 'epic_completed' | 'project_progress_updated' | 'project_completed' | 'milestone_reached' | 'critical_path_updated' | 'schedule_deviation_detected' | 'decomposition_started' | 'decomposition_progress' | 'decomposition_completed' | 'validation_started' | 'validation_completed' | 'research_triggered' | 'research_completed' | 'context_gathering_started' | 'context_gathering_completed' | 'dependency_detection_started' | 'dependency_detection_completed'; export interface ProgressEventData { event: ProgressEvent; projectId?: string; epicId?: string; taskId?: string; progressPercentage?: number; estimatedCompletion?: Date; timestamp: Date; metadata?: Record; dependencyId?: string; deviationPercentage?: number; actualHours?: number; estimatedHours?: number; status?: string; criticalPathTasks?: Array<{ id: string; title: string; estimatedHours: number; status: string; }>; componentName?: string; stepName?: string; currentStep?: number; totalSteps?: number; message?: string; decompositionProgress?: { phase: 'research' | 'context_gathering' | 'decomposition' | 'validation' | 'dependency_detection'; progress: number; message: string; }; } export declare class ProgressTracker { private static instance; private config; private progressCache; private updateTimer?; private eventListeners; private constructor(); static getInstance(config?: Partial): ProgressTracker; calculateProjectProgress(projectId: string): Promise; calculateEpicProgress(epicId: string): Promise; calculateTaskProgress(task: AtomicTask): TaskProgress; updateTaskStatus(taskId: string, newStatus: string, progressPercentage?: number, actualHours?: number, dependencyUpdates?: { resolvedDependencies?: string[]; blockedDependencies?: string[]; }): Promise; updateTaskProgress(taskId: string, progressPercentage: number, actualHours?: number): Promise; getCachedProjectProgress(projectId: string): ProjectProgress | null; clearCache(projectId?: string): void; addEventListener(event: ProgressEvent, listener: (data: ProgressEventData) => void): void; removeEventListener(event: ProgressEvent, listener: (data: ProgressEventData) => void): void; private calculateProgressPercentage; private estimateCompletionDate; private startProgressUpdates; private updateAllCachedProgress; emitProgressEvent(event: ProgressEvent, data: Partial): void; private handleDependencyUpdates; private checkScheduleDeviation; monitorCriticalPath(projectId: string, tasks: AtomicTask[]): Promise; getTaskStatusSummary(projectId: string): Promise<{ total: number; pending: number; inProgress: number; completed: number; blocked: number; failed: number; progressPercentage: number; }>; trackDecompositionProgress(taskId: string, projectId: string, onProgress?: (progress: ProgressEventData) => void): Promise; trackValidationProgress(taskIds: string[], projectId: string, onProgress?: (progress: ProgressEventData) => void): Promise; trackResearchProgress(taskId: string, projectId: string, researchQueries: string[], onProgress?: (progress: ProgressEventData) => void): Promise; trackContextProgress(taskId: string, projectId: string, filesAnalyzed: number, totalFiles: number, onProgress?: (progress: ProgressEventData) => void): Promise; trackDependencyDetectionProgress(taskIds: string[], projectId: string, dependenciesDetected: number, onProgress?: (progress: ProgressEventData) => void): Promise; completeDependencyDetectionProgress(projectId: string, finalDependencyCount: number, appliedDependencies: number): Promise; getComponentProgress(_componentName: string, _projectId?: string): Promise<{ isActive: boolean; currentStep?: number; totalSteps?: number; progressPercentage: number; message?: string; lastUpdate: Date; }>; destroy(): void; } //# sourceMappingURL=progress-tracker.d.ts.map