import { EventEmitter } from "events"; import { Logger } from "../core/logger.js"; import { ConfigManager } from "../core/config.js"; export interface ProjectPhase { id: string; name: string; description: string; status: "planned" | "in-progress" | "completed" | "blocked" | "cancelled"; startDate?: Date; endDate?: Date; estimatedDuration: number; actualDuration?: number; dependencies: string[]; assignedTeam: string[]; deliverables: string[]; risks: ProjectRisk[]; milestones: ProjectMilestone[]; budget: { estimated: number; actual: number; currency: string; }; resources: ProjectResource[]; completionPercentage: number; qualityMetrics: { testCoverage: number; codeQuality: number; documentation: number; securityScore: number; }; } export interface ProjectRisk { id: string; description: string; probability: "low" | "medium" | "high"; impact: "low" | "medium" | "high"; mitigation: string; status: "open" | "mitigated" | "closed"; assignedTo: string; createdAt: Date; updatedAt: Date; } export interface ProjectMilestone { id: string; name: string; description: string; targetDate: Date; actualDate?: Date; status: "pending" | "achieved" | "missed" | "at-risk"; dependencies: string[]; deliverables: string[]; successCriteria: string[]; } export interface ProjectResource { id: string; name: string; type: "human" | "infrastructure" | "software" | "hardware"; availability: number; cost: { amount: number; currency: string; period: "hour" | "day" | "week" | "month"; }; skills: string[]; allocation: { phaseId: string; percentage: number; startDate: Date; endDate: Date; }[]; } export interface Project { id: string; name: string; description: string; type: "web-app" | "api" | "microservice" | "infrastructure" | "research" | "migration" | "custom"; status: "planning" | "active" | "on-hold" | "completed" | "cancelled"; priority: "low" | "medium" | "high" | "critical"; owner: string; stakeholders: string[]; phases: ProjectPhase[]; budget: { total: number; spent: number; remaining: number; currency: string; }; timeline: { plannedStart: Date; plannedEnd: Date; actualStart?: Date; actualEnd?: Date; }; tags: string[]; metadata: Record; createdAt: Date; updatedAt: Date; auditLog: ProjectAuditEntry[]; collaboration: { teamMembers: TeamMember[]; communication: CommunicationChannel[]; sharedResources: string[]; }; qualityGates: QualityGate[]; complianceRequirements: ComplianceRequirement[]; } export interface TeamMember { id: string; name: string; email: string; role: string; skills: string[]; availability: number; permissions: string[]; joinDate: Date; status: "active" | "inactive" | "on-leave"; } export interface CommunicationChannel { id: string; name: string; type: "slack" | "teams" | "email" | "webhook" | "custom"; configuration: Record; isActive: boolean; } export interface QualityGate { id: string; name: string; phase: string; criteria: { metric: string; threshold: number; operator: ">" | "<" | ">=" | "<=" | "==" | "!="; }[]; status: "pending" | "passed" | "failed" | "skipped"; executedAt?: Date; results: Record; } export interface ComplianceRequirement { id: string; name: string; framework: string; description: string; status: "not-started" | "in-progress" | "compliant" | "non-compliant"; evidence: string[]; reviewer: string; reviewDate?: Date; dueDate: Date; } export interface ProjectAuditEntry { id: string; timestamp: Date; userId: string; action: string; target: string; details: Record; ipAddress?: string; userAgent?: string; } export interface ProjectMetrics { totalProjects: number; activeProjects: number; completedProjects: number; averageProjectDuration: number; budgetVariance: number; resourceUtilization: number; qualityScore: number; riskScore: number; teamProductivity: number; customerSatisfaction: number; } export interface ProjectReport { id: string; projectId: string; type: "status" | "financial" | "quality" | "risk" | "resource" | "compliance"; title: string; summary: string; details: Record; recommendations: string[]; generatedAt: Date; generatedBy: string; format: "json" | "pdf" | "html" | "csv"; recipients: string[]; } export declare class ProjectManager extends EventEmitter { private projects; private projectsPath; private logger; private config; constructor(projectsPath?: string, logger?: Logger, config?: ConfigManager); initialize(): Promise; createProject(projectData: Partial): Promise; updateProject(projectId: string, updates: Partial): Promise; deleteProject(projectId: string, userId?: string): Promise; getProject(projectId: string): Promise; listProjects(filters?: { status?: Project["status"]; type?: Project["type"]; priority?: Project["priority"]; owner?: string; tags?: string[]; }): Promise; addPhase(projectId: string, phase: Omit): Promise; updatePhase(projectId: string, phaseId: string, updates: Partial): Promise; addTeamMember(projectId: string, member: TeamMember): Promise; removeTeamMember(projectId: string, memberId: string): Promise; getProjectMetrics(projectId?: string): Promise; generateReport(projectId: string, type: ProjectReport["type"], userId?: string): Promise; private loadProjects; private saveProject; private addAuditEntry; private calculateProjectProgress; private getUpcomingMilestones; private calculateCostBreakdown; private projectFinalCost; private calculateQualityMetrics; private generateQualityRecommendations; private getAllRisks; private generateRiskMatrix; private generateRiskMitigation; private getTotalResources; private calculateResourceAllocation; private calculateResourceUtilization; private calculateCapacity; private calculateComplianceStatus; private identifyComplianceGaps; private generateComplianceRecommendations; } //# sourceMappingURL=project-manager.d.ts.map