UNPKG

@sports-alliance/sports-lib

Version:

A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc

46 lines (45 loc) 2.15 kB
import { ActivityInterface } from '../../activities/activity.interface'; import { type DurabilityEvidenceValue } from '../../data/data.durability-evidence'; export interface DurabilityProtocol { smoothingWindowSeconds: number; warmupSeconds: number; cooldownSeconds: number; minimumActivityDurationSeconds: number; minimumQualifyingDurationSeconds: number; minimumCoverageRatio: number; maximumOutputCoefficientOfVariation: number; maximumHardZoneRatio: number; maximumFlatGradePercent: number; minimumFlatGradeCoverageRatio: number; minimumPoolComparableLengths: number; minimumPoolThirdLengths: number; } export declare const DEFAULT_DURABILITY_PROTOCOL: Readonly<DurabilityProtocol>; export interface DurabilityTimelinePoint { elapsedSeconds: number; sampleDurationSeconds: number; output: number; heartRateBpm: number; aerobicEfficiency: number; rawOutput: number; rawHeartRateBpm: number; inComparisonWindow: boolean; comparisonHalf: 'first' | 'second' | null; } export interface ActivityDurabilityAnalysis { /** Aerobic-only display series. Pool evidence is length-based and intentionally has no 1 Hz timeline. */ timeline: DurabilityTimelinePoint[]; summary: DurabilityEvidenceValue | null; } export interface AnalyzeActivityDurabilityOptions { includeTimeline?: boolean; } /** * Hashes the effective protocol-v1 source inputs without retaining a second copy of long streams. * The digest is an invalidation key, not a security boundary. */ export declare function calculateActivityDurabilitySourceFingerprint(activity: ActivityInterface): string; /** True when the activity still contains raw inputs from which durability can be recalculated. */ export declare function hasActivityDurabilitySourceData(activity: ActivityInterface): boolean; export declare function calculateAerobicEfficiency(output: number | null | undefined, heartRateBpm: number | null | undefined): number | null; export declare function analyzeActivityDurability(activity: ActivityInterface, options?: AnalyzeActivityDurabilityOptions): ActivityDurabilityAnalysis;