Power best efforts (+ W/kg from the profile's body weight); [] with no power.
Optionaldurations: number[]Time in each heart-rate zone; [] with no HR or no HR zones on the profile.
Time in each pace zone; [] with no time axis or no pace zones on the profile.
Time in each Coggan power zone (FTP-relative); [] with no power or no FTP.
Device-recorded laps as profile-bound sections (empty if none recorded).
Full power summary (NP, IF, TSS, distribution, zones, curve) at the
profile's FTP. undefined when no power was recorded or no FTP is known.
An arbitrary [from, to] slice as a profile-bound section.
Even-distance splits as profile-bound sections.
An Activity bound to an athlete Profile — the home for the analytics that need FTP / body weight / zone definitions. Obtained via
activity.usingProfile(bob). Its slices (splits/range/laps) return ProfiledSections carrying the same profile, so the binding flows all the way down. The bare Activity keeps only the profile-agnostic methods, so a missing FTP / weight is a type-level absence, not a runtimeundefined.