/** * Training Plan Zod Schema * * Runtime validation schema that mirrors the TypeScript interfaces. * Use this to validate JSON plans before rendering to HTML. */ import { z } from "zod"; export declare const SportSchema: z.ZodEnum<{ strength: "strength"; swim: "swim"; bike: "bike"; run: "run"; brick: "brick"; }>; export declare const WorkoutTypeSchema: z.ZodString; export declare const IntensityUnitSchema: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; export declare const DurationUnitSchema: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; export declare const StepTypeSchema: z.ZodEnum<{ warmup: "warmup"; work: "work"; recovery: "recovery"; rest: "rest"; cooldown: "cooldown"; interval_set: "interval_set"; }>; export declare const SwimDistanceUnitSchema: z.ZodEnum<{ meters: "meters"; yards: "yards"; }>; export declare const LandDistanceUnitSchema: z.ZodEnum<{ kilometers: "kilometers"; miles: "miles"; }>; export declare const FirstDayOfWeekSchema: z.ZodEnum<{ monday: "monday"; sunday: "sunday"; }>; export declare const UnitPreferencesSchema: z.ZodObject<{ swim: z.ZodEnum<{ meters: "meters"; yards: "yards"; }>; bike: z.ZodEnum<{ kilometers: "kilometers"; miles: "miles"; }>; run: z.ZodEnum<{ kilometers: "kilometers"; miles: "miles"; }>; firstDayOfWeek: z.ZodEnum<{ monday: "monday"; sunday: "sunday"; }>; }, z.core.$strip>; export declare const IntensityTargetSchema: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; export declare const DurationTargetSchema: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; export declare const CadenceSchema: z.ZodObject<{ low: z.ZodNumber; high: z.ZodNumber; }, z.core.$strip>; export declare const WorkoutStepSchema: z.ZodObject<{ type: z.ZodEnum<{ warmup: "warmup"; work: "work"; recovery: "recovery"; rest: "rest"; cooldown: "cooldown"; interval_set: "interval_set"; }>; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>; export declare const IntervalSetSchema: z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>; export declare const StructuredWorkoutSchema: z.ZodObject<{ warmup: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; main: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>]>>; cooldown: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; totalDuration: z.ZodOptional; value: z.ZodNumber; }, z.core.$strip>>; estimatedTSS: z.ZodOptional; estimatedIF: z.ZodOptional; }, z.core.$strip>; export declare const HRRangeSchema: z.ZodObject<{ low: z.ZodNumber; high: z.ZodNumber; }, z.core.$strip>; export declare const PowerRangeSchema: z.ZodUnion, z.ZodString]>; export declare const PaceRangeSchema: z.ZodObject<{ low: z.ZodString; high: z.ZodString; }, z.core.$strip>; export declare const WorkoutSchema: z.ZodObject<{ id: z.ZodString; sport: z.ZodEnum<{ strength: "strength"; swim: "swim"; bike: "bike"; run: "run"; brick: "brick"; }>; type: z.ZodString; name: z.ZodString; description: z.ZodOptional; durationMinutes: z.ZodOptional; distanceMeters: z.ZodOptional; distanceKm: z.ZodOptional; primaryZone: z.ZodOptional; targetHR: z.ZodOptional>; targetPower: z.ZodOptional, z.ZodString]>>; targetPace: z.ZodOptional>; rpe: z.ZodOptional; structure: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; main: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>]>>; cooldown: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; totalDuration: z.ZodOptional; value: z.ZodNumber; }, z.core.$strip>>; estimatedTSS: z.ZodOptional; estimatedIF: z.ZodOptional; }, z.core.$strip>>; humanReadable: z.ZodOptional; completed: z.ZodBoolean; completedAt: z.ZodOptional; actualDuration: z.ZodOptional; actualDistance: z.ZodOptional; notes: z.ZodOptional; }, z.core.$strip>; export declare const TrainingDaySchema: z.ZodObject<{ date: z.ZodString; dayOfWeek: z.ZodString; workouts: z.ZodArray; type: z.ZodString; name: z.ZodString; description: z.ZodOptional; durationMinutes: z.ZodOptional; distanceMeters: z.ZodOptional; distanceKm: z.ZodOptional; primaryZone: z.ZodOptional; targetHR: z.ZodOptional>; targetPower: z.ZodOptional, z.ZodString]>>; targetPace: z.ZodOptional>; rpe: z.ZodOptional; structure: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; main: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>]>>; cooldown: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; totalDuration: z.ZodOptional; value: z.ZodNumber; }, z.core.$strip>>; estimatedTSS: z.ZodOptional; estimatedIF: z.ZodOptional; }, z.core.$strip>>; humanReadable: z.ZodOptional; completed: z.ZodBoolean; completedAt: z.ZodOptional; actualDuration: z.ZodOptional; actualDistance: z.ZodOptional; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>; export declare const SportSummarySchema: z.ZodObject<{ sessions: z.ZodNumber; hours: z.ZodOptional; km: z.ZodOptional>; meters: z.ZodOptional>; }, z.core.$strip>; export declare const WeekSummarySchema: z.ZodObject<{ totalHours: z.ZodNumber; totalTSS: z.ZodOptional; bySport: z.ZodOptional; km: z.ZodOptional>; meters: z.ZodOptional>; }, z.core.$strip>>>; }, z.core.$strip>; export declare const TrainingWeekSchema: z.ZodObject<{ weekNumber: z.ZodNumber; startDate: z.ZodString; endDate: z.ZodString; phase: z.ZodString; focus: z.ZodString; targetHours: z.ZodNumber; days: z.ZodArray; type: z.ZodString; name: z.ZodString; description: z.ZodOptional; durationMinutes: z.ZodOptional; distanceMeters: z.ZodOptional; distanceKm: z.ZodOptional; primaryZone: z.ZodOptional; targetHR: z.ZodOptional>; targetPower: z.ZodOptional, z.ZodString]>>; targetPace: z.ZodOptional>; rpe: z.ZodOptional; structure: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; main: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>]>>; cooldown: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; totalDuration: z.ZodOptional; value: z.ZodNumber; }, z.core.$strip>>; estimatedTSS: z.ZodOptional; estimatedIF: z.ZodOptional; }, z.core.$strip>>; humanReadable: z.ZodOptional; completed: z.ZodBoolean; completedAt: z.ZodOptional; actualDuration: z.ZodOptional; actualDistance: z.ZodOptional; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>>; summary: z.ZodObject<{ totalHours: z.ZodNumber; totalTSS: z.ZodOptional; bySport: z.ZodOptional; km: z.ZodOptional>; meters: z.ZodOptional>; }, z.core.$strip>>>; }, z.core.$strip>; isRecoveryWeek: z.ZodBoolean; }, z.core.$strip>; export declare const HeartRateZoneSchema: z.ZodObject<{ zone: z.ZodNumber; name: z.ZodString; percentLow: z.ZodOptional; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>; export declare const HeartRateZonesSchema: z.ZodObject<{ lthr: z.ZodNumber; zones: z.ZodArray; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>; export declare const PowerZoneSchema: z.ZodObject<{ zone: z.ZodNumber; name: z.ZodString; percentLow: z.ZodNumber; percentHigh: z.ZodNumber; wattsLow: z.ZodNumber; wattsHigh: z.ZodNumber; }, z.core.$strip>; export declare const PowerZonesSchema: z.ZodObject<{ ftp: z.ZodNumber; zones: z.ZodArray>; }, z.core.$strip>; export declare const SwimZoneSchema: z.ZodObject<{ zone: z.ZodNumber; name: z.ZodString; paceOffset: z.ZodNumber; pace: z.ZodString; }, z.core.$strip>; export declare const SwimZonesSchema: z.ZodObject<{ css: z.ZodString; cssSeconds: z.ZodNumber; zones: z.ZodArray>; }, z.core.$strip>; export declare const PaceZoneSchema: z.ZodObject<{ zone: z.ZodUnion; name: z.ZodString; pace: z.ZodString; paceOffset: z.ZodOptional; paceSeconds: z.ZodOptional; }, z.core.$strip>; export declare const PaceZonesSchema: z.ZodObject<{ threshold: z.ZodOptional; thresholdPace: z.ZodOptional; thresholdSeconds: z.ZodOptional; thresholdPaceSeconds: z.ZodOptional; zones: z.ZodOptional; name: z.ZodString; pace: z.ZodString; paceOffset: z.ZodOptional; paceSeconds: z.ZodOptional; }, z.core.$strip>>>; }, z.core.$strip>; export declare const AthleteZonesSchema: z.ZodObject<{ run: z.ZodOptional; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>>; pace: z.ZodOptional; thresholdPace: z.ZodOptional; thresholdSeconds: z.ZodOptional; thresholdPaceSeconds: z.ZodOptional; zones: z.ZodOptional; name: z.ZodString; pace: z.ZodString; paceOffset: z.ZodOptional; paceSeconds: z.ZodOptional; }, z.core.$strip>>>; }, z.core.$strip>>; }, z.core.$strip>>; bike: z.ZodOptional; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>>; power: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>>; swim: z.ZodOptional>; }, z.core.$strip>>; maxHR: z.ZodOptional; restingHR: z.ZodOptional; weight: z.ZodOptional; }, z.core.$strip>; export declare const FoundationLevelSchema: z.ZodString; export declare const FoundationSchema: z.ZodObject<{ raceHistory: z.ZodArray; peakTrainingLoad: z.ZodNumber; foundationLevel: z.ZodString; yearsInSport: z.ZodNumber; }, z.core.$strip>; export declare const WeeklyVolumeSchema: z.ZodObject<{ total: z.ZodNumber; swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; export declare const LongestSessionsSchema: z.ZodObject<{ swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; export declare const CurrentFormSchema: z.ZodObject<{ weeklyVolume: z.ZodObject<{ total: z.ZodNumber; swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; longestSessions: z.ZodObject<{ swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; consistency: z.ZodNumber; timeSincePeakFitness: z.ZodOptional; reasonForTimeOff: z.ZodOptional; }, z.core.$strip>; export declare const SportEvidenceSchema: z.ZodObject<{ sport: z.ZodEnum<{ strength: "strength"; swim: "swim"; bike: "bike"; run: "run"; brick: "brick"; }>; evidence: z.ZodString; }, z.core.$strip>; export declare const AthleteAssessmentSchema: z.ZodObject<{ foundation: z.ZodObject<{ raceHistory: z.ZodArray; peakTrainingLoad: z.ZodNumber; foundationLevel: z.ZodString; yearsInSport: z.ZodNumber; }, z.core.$strip>; currentForm: z.ZodObject<{ weeklyVolume: z.ZodObject<{ total: z.ZodNumber; swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; longestSessions: z.ZodObject<{ swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; consistency: z.ZodNumber; timeSincePeakFitness: z.ZodOptional; reasonForTimeOff: z.ZodOptional; }, z.core.$strip>; strengths: z.ZodArray; evidence: z.ZodString; }, z.core.$strip>>; limiters: z.ZodArray; evidence: z.ZodString; }, z.core.$strip>>; constraints: z.ZodArray; }, z.core.$strip>; export declare const WeeklyHoursRangeSchema: z.ZodObject<{ low: z.ZodNumber; high: z.ZodNumber; }, z.core.$strip>; export declare const TrainingPhaseSchema: z.ZodObject<{ name: z.ZodString; startWeek: z.ZodNumber; endWeek: z.ZodNumber; focus: z.ZodString; weeklyHoursRange: z.ZodObject<{ low: z.ZodNumber; high: z.ZodNumber; }, z.core.$strip>; keyWorkouts: z.ZodArray; physiologicalGoals: z.ZodArray; }, z.core.$strip>; export declare const EventDistancesSchema: z.ZodObject<{ swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; export declare const RaceEventSchema: z.ZodObject<{ name: z.ZodString; date: z.ZodString; type: z.ZodString; distances: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>; export declare const SwimPacingSchema: z.ZodRecord; export declare const BikePacingSchema: z.ZodRecord; export declare const RunPacingSchema: z.ZodRecord; export declare const RacePacingSchema: z.ZodRecord; export declare const RaceNutritionSchema: z.ZodRecord; export declare const TaperSchema: z.ZodRecord; export declare const RaceDaySchema: z.ZodRecord; export declare const RaceStrategySchema: z.ZodRecord; export declare const PlanMetaSchema: z.ZodObject<{ id: z.ZodString; athlete: z.ZodString; event: z.ZodString; eventDate: z.ZodString; planStartDate: z.ZodString; planEndDate: z.ZodString; createdAt: z.ZodString; updatedAt: z.ZodString; totalWeeks: z.ZodNumber; generatedBy: z.ZodString; }, z.core.$strip>; export declare const TrainingPlanSchema: z.ZodObject<{ version: z.ZodLiteral<"1.0">; meta: z.ZodObject<{ id: z.ZodString; athlete: z.ZodString; event: z.ZodString; eventDate: z.ZodString; planStartDate: z.ZodString; planEndDate: z.ZodString; createdAt: z.ZodString; updatedAt: z.ZodString; totalWeeks: z.ZodNumber; generatedBy: z.ZodString; }, z.core.$strip>; preferences: z.ZodObject<{ swim: z.ZodEnum<{ meters: "meters"; yards: "yards"; }>; bike: z.ZodEnum<{ kilometers: "kilometers"; miles: "miles"; }>; run: z.ZodEnum<{ kilometers: "kilometers"; miles: "miles"; }>; firstDayOfWeek: z.ZodEnum<{ monday: "monday"; sunday: "sunday"; }>; }, z.core.$strip>; assessment: z.ZodObject<{ foundation: z.ZodObject<{ raceHistory: z.ZodArray; peakTrainingLoad: z.ZodNumber; foundationLevel: z.ZodString; yearsInSport: z.ZodNumber; }, z.core.$strip>; currentForm: z.ZodObject<{ weeklyVolume: z.ZodObject<{ total: z.ZodNumber; swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; longestSessions: z.ZodObject<{ swim: z.ZodOptional; bike: z.ZodOptional; run: z.ZodOptional; }, z.core.$strip>; consistency: z.ZodNumber; timeSincePeakFitness: z.ZodOptional; reasonForTimeOff: z.ZodOptional; }, z.core.$strip>; strengths: z.ZodArray; evidence: z.ZodString; }, z.core.$strip>>; limiters: z.ZodArray; evidence: z.ZodString; }, z.core.$strip>>; constraints: z.ZodArray; }, z.core.$strip>; zones: z.ZodObject<{ run: z.ZodOptional; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>>; pace: z.ZodOptional; thresholdPace: z.ZodOptional; thresholdSeconds: z.ZodOptional; thresholdPaceSeconds: z.ZodOptional; zones: z.ZodOptional; name: z.ZodString; pace: z.ZodString; paceOffset: z.ZodOptional; paceSeconds: z.ZodOptional; }, z.core.$strip>>>; }, z.core.$strip>>; }, z.core.$strip>>; bike: z.ZodOptional; percentHigh: z.ZodOptional; hrLow: z.ZodNumber; hrHigh: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>>; power: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>>; swim: z.ZodOptional>; }, z.core.$strip>>; maxHR: z.ZodOptional; restingHR: z.ZodOptional; weight: z.ZodOptional; }, z.core.$strip>; phases: z.ZodArray; keyWorkouts: z.ZodArray; physiologicalGoals: z.ZodArray; }, z.core.$strip>>; weeks: z.ZodArray; type: z.ZodString; name: z.ZodString; description: z.ZodOptional; durationMinutes: z.ZodOptional; distanceMeters: z.ZodOptional; distanceKm: z.ZodOptional; primaryZone: z.ZodOptional; targetHR: z.ZodOptional>; targetPower: z.ZodOptional, z.ZodString]>>; targetPace: z.ZodOptional>; rpe: z.ZodOptional; structure: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; main: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"interval_set">; name: z.ZodOptional; repeats: z.ZodNumber; steps: z.ZodArray; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>]>>; cooldown: z.ZodOptional; name: z.ZodOptional; duration: z.ZodObject<{ unit: z.ZodEnum<{ seconds: "seconds"; minutes: "minutes"; hours: "hours"; meters: "meters"; kilometers: "kilometers"; miles: "miles"; yards: "yards"; laps: "laps"; }>; value: z.ZodNumber; }, z.core.$strip>; intensity: z.ZodObject<{ unit: z.ZodEnum<{ percent_ftp: "percent_ftp"; percent_lthr: "percent_lthr"; hr_zone: "hr_zone"; pace_zone: "pace_zone"; rpe: "rpe"; css_offset: "css_offset"; }>; value: z.ZodNumber; valueLow: z.ZodOptional; valueHigh: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>; cadence: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; totalDuration: z.ZodOptional; value: z.ZodNumber; }, z.core.$strip>>; estimatedTSS: z.ZodOptional; estimatedIF: z.ZodOptional; }, z.core.$strip>>; humanReadable: z.ZodOptional; completed: z.ZodBoolean; completedAt: z.ZodOptional; actualDuration: z.ZodOptional; actualDistance: z.ZodOptional; notes: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>>; summary: z.ZodObject<{ totalHours: z.ZodNumber; totalTSS: z.ZodOptional; bySport: z.ZodOptional; km: z.ZodOptional>; meters: z.ZodOptional>; }, z.core.$strip>>>; }, z.core.$strip>; isRecoveryWeek: z.ZodBoolean; }, z.core.$strip>>; raceStrategy: z.ZodRecord; }, z.core.$strip>; export type ValidationResult = { success: true; data: z.infer; } | { success: false; errors: ValidationError[]; }; export interface ValidationError { path: string; message: string; code: string; } /** * Validate a training plan JSON against the schema. * Returns a result object with either the validated data or an array of errors. */ export declare function validatePlan(data: unknown): ValidationResult; /** * Validate a training plan and throw an error if invalid. * Use this when you want to halt execution on validation failure. */ export declare function validatePlanOrThrow(data: unknown): z.infer; /** * Format validation errors into a human-readable string. */ export declare function formatValidationErrors(errors: ValidationError[]): string; /** * Get the JSON Schema representation of the training plan schema. * Useful for documentation and external validation tools. */ export declare function getJsonSchema(): object; export type TrainingPlan = z.infer; export type Workout = z.infer; export type TrainingWeek = z.infer; export type TrainingDay = z.infer; export type TrainingPhase = z.infer; export type AthleteAssessment = z.infer; export type AthleteZones = z.infer; export type RaceStrategy = z.infer; export type UnitPreferences = z.infer;