/** * Phase Workflow - Pure domain logic for design phase transitions * * This module provides pure functions for managing phase transitions * and validation. All functions are deterministic and side-effect free. */ import type { PhaseId } from "./types.js"; /** * Validates if a phase transition is allowed * * @param current - Current phase * @param target - Target phase to transition to * @returns true if transition is valid * * @example * ```typescript * const canMove = canTransition('discovery', 'requirements'); // true * const cantSkip = canTransition('discovery', 'architecture'); // false * ``` */ export declare function canTransition(current: PhaseId, target: PhaseId): boolean; /** * Gets the next phase in the workflow * * @param current - Current phase * @returns Next phase ID or null if at the end * * @example * ```typescript * const next = getNextPhase('discovery'); // 'requirements' * const end = getNextPhase('implementation'); // null * ``` */ export declare function getNextPhase(current: PhaseId): PhaseId | null; /** * Gets the previous phase in the workflow * * @param current - Current phase * @returns Previous phase ID or null if at the start * * @example * ```typescript * const prev = getPreviousPhase('requirements'); // 'discovery' * const start = getPreviousPhase('discovery'); // null * ``` */ export declare function getPreviousPhase(current: PhaseId): PhaseId | null; /** * Validates phase completion based on content * * @param phase - Phase to validate * @param content - Phase output content * @returns Validation result with missing requirements * * @example * ```typescript * const result = validatePhaseCompletion('discovery', { * problem_statement: 'Auth system needed', * stakeholders: ['users', 'admins'] * }); * console.log(result.valid); // false (missing 'context') * console.log(result.missing); // ['context'] * ``` */ export declare function validatePhaseCompletion(phase: PhaseId, content: Record): { valid: boolean; missing: string[]; }; /** * Gets required outputs for a specific phase * * @param phase - Phase identifier * @returns Array of required output keys * * @example * ```typescript * const reqs = getPhaseRequirements('discovery'); * // ['problem_statement', 'stakeholders', 'context'] * ``` */ export declare function getPhaseRequirements(phase: PhaseId): string[]; /** * Gets the full phase order sequence * * @returns Array of phase IDs in order * * @example * ```typescript * const phases = getPhaseOrder(); * // ['discovery', 'requirements', 'planning', ...] * ``` */ export declare function getPhaseOrder(): PhaseId[]; /** * Gets the index of a phase in the workflow * * @param phase - Phase identifier * @returns Zero-based index or -1 if not found * * @example * ```typescript * const index = getPhaseIndex('requirements'); // 1 * ``` */ export declare function getPhaseIndex(phase: PhaseId): number; /** * Checks if a phase is the first in the workflow * * @param phase - Phase identifier * @returns true if phase is first * * @example * ```typescript * const isFirst = isFirstPhase('discovery'); // true * ``` */ export declare function isFirstPhase(phase: PhaseId): boolean; /** * Checks if a phase is the last in the workflow * * @param phase - Phase identifier * @returns true if phase is last * * @example * ```typescript * const isLast = isLastPhase('implementation'); // true * ``` */ export declare function isLastPhase(phase: PhaseId): boolean; /** * Calculates the percentage of phases completed * * @param current - Current phase * @returns Percentage (0-100) of workflow completion * * @example * ```typescript * const progress = getPhaseProgress('requirements'); // ~16.67 * ``` */ export declare function getPhaseProgress(current: PhaseId): number; /** * Gets all phases that come before the specified phase * * @param phase - Phase identifier * @returns Array of preceding phase IDs * * @example * ```typescript * const deps = getPhaseDependencies('architecture'); * // ['discovery', 'requirements', 'planning', 'specification'] * ``` */ export declare function getPhaseDependencies(phase: PhaseId): PhaseId[]; /** * Validates a custom phase sequence * * @param sequence - Custom phase sequence to validate * @returns Validation result with errors if invalid * * @example * ```typescript * const result = validatePhaseSequence(['discovery', 'implementation']); * // { valid: false, errors: ['Missing required phases: ...'] } * ``` */ export declare function validatePhaseSequence(sequence: string[]): { valid: boolean; errors: string[]; }; /** * Checks if all required phases are present in a sequence * * @param sequence - Phase sequence to check * @param required - Array of required phase IDs * @returns true if all required phases are present * * @example * ```typescript * const hasRequired = hasRequiredPhases( * ['discovery', 'requirements'], * ['discovery'] * ); // true * ``` */ export declare function hasRequiredPhases(sequence: PhaseId[], required: PhaseId[]): boolean; //# sourceMappingURL=phase-workflow.d.ts.map