@pond-ts/fit API Reference
    Preparing search index...

    Interface PreparedActivity

    The streams decoded once into the per-sample arrays every downstream metric reads — track, columns, cumulative distance, derived speed, relative time. Building the pond track + reading columns is the expensive part of the summary compute, so prepareActivity does it once and both the summary (summaryFromPrepared) and the zoom-resolution profiles (windowChannels) reuse it — no second decode per zoom. Opaque shape; treat it as a handle, not a public data contract.

    interface PreparedActivity {
        coastMasks: Partial<Record<ChannelKey, boolean[]>>;
        cols: TrackColumns;
        cum: Float64Array;
        hasTime: boolean;
        hasTrack: boolean;
        imported: ImportedActivity;
        n: number;
        speed: Float64Array;
        step: Float64Array;
        timeRel: Float64Array;
        track: TrackSeries;
    }
    Index

    Properties

    coastMasks: Partial<Record<ChannelKey, boolean[]>>

    Per-sample sustained-coast mask per output channel (speed/power/cadence), computed ONCE here (it's window-independent and the pond-fill pass is the expensive part) and reused by every channel build / zoom.

    cum: Float64Array
    hasTime: boolean

    Whether the source carried timestamps (so speed is meaningful).

    hasTrack: boolean

    Whether the activity has a GPS track. False for GPS-less sources (indoor / GPS-off head units): no map, distance comes from the device stream.

    n: number
    speed: Float64Array

    Derived instantaneous speed (m/s); NaN where no timestamp delta.

    step: Float64Array
    timeRel: Float64Array

    Elapsed seconds since the first sample.

    The canonical pond series — always present (GPS or GPS-less). hasTrack says whether it carries positions.