/**
 * Scope Change Model
 * Database model for scope change requests and tracking
 *
 * @description Defines the data structure for scope changes with full
 * impact analysis and PMBOK compliance tracking
 *
 * @version 1.0.0
 * @since 3.2.0
 */
import mongoose, { Document } from 'mongoose';
export interface IScopeImpact {
    scheduleImpact: {
        days: number;
        percentage: number;
        criticalPath: boolean;
    };
    costImpact: {
        amount: number;
        percentage: number;
        budgetCategory: string;
    };
    resourceImpact: {
        additionalResources: string[];
        skillsRequired: string[];
        availabilityImpact: boolean;
    };
    qualityImpact: {
        riskToQuality: boolean;
        testingImpact: boolean;
        acceptanceCriteriaChanges: boolean;
    };
    stakeholderImpact: {
        affectedStakeholders: string[];
        communicationRequired: boolean;
        approvalRequired: boolean;
    };
}
export interface IScopeChange extends Document {
    _id: string;
    projectId: string;
    changeType: 'addition' | 'reduction' | 'modification' | 'clarification';
    description: string;
    requestedBy: string;
    requestDate: Date;
    impact: IScopeImpact;
    status: 'pending' | 'approved' | 'rejected' | 'implemented' | 'cancelled';
    approvedBy?: string;
    approvalDate?: Date;
    implementationDate?: Date;
    riskLevel: 'low' | 'medium' | 'high' | 'critical';
    pmbokCompliance: boolean;
    priority: 'low' | 'medium' | 'high' | 'urgent';
    estimatedEffort?: number;
    actualEffort?: number;
    businessJustification?: string;
    alternativesConsidered?: string[];
    rollbackPlan?: string;
    approvalWorkflow?: {
        level1Approver?: string;
        level1ApprovalDate?: Date;
        level2Approver?: string;
        level2ApprovalDate?: Date;
        finalApprover?: string;
        finalApprovalDate?: Date;
    };
    implementationPlan?: {
        steps: string[];
        assignedTo?: string;
        estimatedDuration?: number;
        dependencies?: string[];
        milestones?: {
            name: string;
            targetDate: Date;
            completed: boolean;
            completedDate?: Date;
        }[];
    };
    impactScore: number;
    complexityScore: number;
    statusHistory: {
        status: string;
        changedBy: string;
        changedDate: Date;
        comments?: string;
    }[];
    createdAt: Date;
    updatedAt: Date;
}
export declare const ScopeChange: mongoose.Model<IScopeChange, {}, {}, {}, mongoose.Document<unknown, {}, IScopeChange, {}, {}> & IScopeChange & Required<{
    _id: string;
}> & {
    __v: number;
}, any>;
//# sourceMappingURL=ScopeChange.d.ts.map