export interface Activity { date: Date; activityType?: string; title?: string; distance?: number; // in kilometers duration?: number; // in minutes trainingStressScore?: number; calories?: number; averageHR?: number; maxHR?: number; totalAscent?: number; // in meters } export interface ProcessedData { activities: Activity[]; dates: string[]; distances: (number | null)[]; durations: (number | null)[]; tss: (number | null)[]; } export interface MetricACWRData { dates: string[]; values: (number | null)[]; // Daily sum values average7d: (number | null)[]; // 7-day rolling average average28d: (number | null)[]; // 28-day rolling average acwr: (number | null)[]; // ACWR based on this metric targetTomorrowValue?: number | null; // Value needed tomorrow to reach target ACWR of 1.3 targetACWR?: number; // The target ACWR value used for calculation restTomorrowACWR?: number | null; // What ACWR would be with a rest day tomorrow todayValue?: number | null; // Today's value for reference activitiesByDate?: Map; // Activities grouped by date // Future predictions (next 7 days) futureDates?: string[]; // Dates for future predictions futureValues?: (number | null)[]; // Optimal activity values for future days futureAverage7d?: (number | null)[]; // Predicted 7-day rolling average futureAverage28d?: (number | null)[]; // Predicted 28-day rolling average futureAcwr?: (number | null)[]; // Predicted ACWR values }