/** * F5 CLI - Requirement Prioritizer * Multiple prioritization methods for requirements * * @module @f5/cli/core/requirement-quality/prioritizer * @version 1.0.0 */ export type MoSCoWPriority = 'must' | 'should' | 'could' | 'wont'; export interface RequirementInput { id: string; description: string; businessValue?: number; timeCriticality?: number; riskReduction?: number; jobSize?: number; priority?: MoSCoWPriority; wsjfScore?: number; valueEffortQuadrant?: 'quick-win' | 'major-project' | 'fill-in' | 'thankless'; } export interface MoSCoWRules { keywords?: { must?: string[]; should?: string[]; could?: string[]; wont?: string[]; }; } export interface PrioritizationResult { method: string; requirements: RequirementInput[]; summary: { total: number; breakdown: Record; }; visualization?: string; } export declare class MoSCoWPrioritizer { /** * Assign MoSCoW priorities based on keywords or rules */ assignPriorities(requirements: RequirementInput[], rules?: MoSCoWRules): PrioritizationResult; private suggestPriority; private applyRules; private generateVisualization; } export declare class WSJFPrioritizer { /** * Calculate WSJF scores * WSJF = (Business Value + Time Criticality + Risk Reduction) / Job Size * Higher score = higher priority */ calculateScores(requirements: RequirementInput[]): PrioritizationResult; private generateVisualization; } export declare class ValueEffortPrioritizer { /** * Classify requirements into 4 quadrants * * High Value * | * Major | Quick * Project | Wins * -----------+----------- * Thankless| Fill-in * Tasks | Jobs * | * Low Value * High Effort Low Effort */ classify(requirements: RequirementInput[]): PrioritizationResult; private generateVisualization; } export declare class RequirementPrioritizer { moscow: MoSCoWPrioritizer; wsjf: WSJFPrioritizer; valueEffort: ValueEffortPrioritizer; prioritize(requirements: RequirementInput[], method: 'moscow' | 'wsjf' | 'value-effort', rules?: MoSCoWRules): PrioritizationResult; /** * Generate prioritization report in markdown format */ generateReport(result: PrioritizationResult): string; }