import type { UUID } from 'crypto'; import type { WorkoutMuscleGroupVolumeCTO, WorkoutVolumeLandmarkEstimate } from '../../../../ctos/workout/WorkoutMuscleGroupVolumeCTO.js'; import type WorkoutMesocyclePlanContext from '../../Mesocycle/WorkoutMesocyclePlanContext.js'; /** * A service for handling volume planning operations across microcycles. * * RESPONSIBILITIES: * - Calculate set counts for exercises across a microcycle * - Apply progressive overload rules (baseline + historical adjustments) * - Handle recovery exercise identification * - Enforce volume limits (per exercise, per muscle group per session) * * RELATED SERVICES: * - {@link WorkoutMicrocycleService} - Calls this to get set plans before generating sessions * - {@link WorkoutSessionService} - Uses the output to generate actual sessions * - {@link WorkoutSessionExerciseService} - Used to calculate SFR and recovery recommendations */ export default class WorkoutVolumePlanningService { #private; /** * Controls the volume *progression rate* across accumulation microcycles. * * Both modes start at estimated MEV when historical volume data exists * (falling back to 2 sets per exercise when no history is available). * * When `false` (default): legacy progression — adds 1 set per muscle group * every `progressionInterval` microcycles from the MEV starting point. * * When `true`: MEV-to-MRV interpolation — linearly distributes sets from * estimated MEV to estimated MRV across all accumulation microcycles. * * This flag exists to allow toggling between the two progression algorithms * while the MEV-to-MRV approach is validated in practice. Once confidence is * established, the flag and legacy path should be removed. */ static USE_VOLUME_LANDMARK_PROGRESSION: boolean; /** * Calculates the set plan for an entire microcycle. */ static calculateSetPlanForMicrocycle(context: WorkoutMesocyclePlanContext, microcycleIndex: number, isDeloadMicrocycle: boolean): { exerciseIdToSetCount: Map; recoveryExerciseIds: Set; }; /** * Estimates MEV, MRV, and MAV for a muscle group based on historical data * across completed mesocycles. * * @param volumeCTO The WorkoutMuscleGroupVolumeCTO containing mesocycle * history for this muscle group. */ static estimateVolumeLandmarks(volumeCTO: WorkoutMuscleGroupVolumeCTO): WorkoutVolumeLandmarkEstimate; } //# sourceMappingURL=WorkoutVolumePlanning.service.d.ts.map