ts-garmin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,401 @@
1
+ export declare interface IActivity {
2
+ activityId: GCActivityId
3
+ activityName: string
4
+ description: unknown
5
+ startTimeLocal: string
6
+ startTimeGMT: string
7
+ activityType: {
8
+ typeId: number
9
+ typeKey: string
10
+ parentTypeId: number
11
+ isHidden: boolean
12
+ sortOrder: unknown
13
+ trimmable: boolean
14
+ restricted: boolean
15
+ }
16
+ eventType: { typeId: number, typeKey: string, sortOrder: number }
17
+ comments: unknown
18
+ parentId: unknown
19
+ distance: number
20
+ duration: number
21
+ elapsedDuration: number
22
+ movingDuration: number
23
+ elevationGain: number
24
+ elevationLoss: number
25
+ averageSpeed: number
26
+ maxSpeed: number
27
+ startLatitude: number
28
+ startLongitude: number
29
+ hasPolyline: boolean
30
+ ownerId: number
31
+ ownerDisplayName: string
32
+ ownerFullName: string
33
+ ownerProfileImageUrlSmall: string
34
+ ownerProfileImageUrlMedium: string
35
+ ownerProfileImageUrlLarge: string
36
+ calories: number
37
+ averageHR: number
38
+ maxHR: number
39
+ averageRunningCadenceInStepsPerMinute: number
40
+ maxRunningCadenceInStepsPerMinute: number
41
+ averageBikingCadenceInRevPerMinute: unknown
42
+ maxBikingCadenceInRevPerMinute: unknown
43
+ averageSwimCadenceInStrokesPerMinute: unknown
44
+ maxSwimCadenceInStrokesPerMinute: unknown
45
+ averageSwolf: unknown
46
+ activeLengths: unknown
47
+ steps: number
48
+ conversationUuid: unknown
49
+ conversationPk: unknown
50
+ numberOfActivityLikes: unknown
51
+ numberOfActivityComments: unknown
52
+ likedByUser: unknown
53
+ commentedByUser: unknown
54
+ activityLikeDisplayNames: unknown
55
+ activityLikeFullNames: unknown
56
+ activityLikeProfileImageUrls: unknown
57
+ requestorRelationship: unknown
58
+ userRoles: string[]
59
+ privacy: { typeId: number, typeKey: string }
60
+ userPro: boolean
61
+ courseId: unknown
62
+ poolLength: unknown
63
+ unitOfPoolLength: unknown
64
+ hasVideo: boolean
65
+ videoUrl: unknown
66
+ timeZoneId: number
67
+ beginTimestamp: number
68
+ sportTypeId: number
69
+ avgPower: unknown
70
+ maxPower: unknown
71
+ aerobicTrainingEffect: unknown
72
+ anaerobicTrainingEffect: unknown
73
+ strokes: unknown
74
+ normPower: unknown
75
+ leftBalance: unknown
76
+ rightBalance: unknown
77
+ avgLeftBalance: unknown
78
+ max20MinPower: unknown
79
+ avgVerticalOscillation: unknown
80
+ avgGroundContactTime: unknown
81
+ avgStrideLength: number
82
+ avgFractionalCadence: unknown
83
+ maxFractionalCadence: unknown
84
+ trainingStressScore: unknown
85
+ intensityFactor: unknown
86
+ vO2MaxValue: number
87
+ avgVerticalRatio: unknown
88
+ avgGroundContactBalance: unknown
89
+ lactateThresholdBpm: unknown
90
+ lactateThresholdSpeed: unknown
91
+ maxFtp: unknown
92
+ avgStrokeDistance: unknown
93
+ avgStrokeCadence: unknown
94
+ maxStrokeCadence: unknown
95
+ workoutId: unknown
96
+ avgStrokes: unknown
97
+ minStrokes: unknown
98
+ deviceId: number
99
+ minTemperature: unknown
100
+ maxTemperature: unknown
101
+ minElevation: number
102
+ maxElevation: number
103
+ avgDoubleCadence: unknown
104
+ maxDoubleCadence: number
105
+ summarizedExerciseSets: unknown
106
+ maxDepth: unknown
107
+ avgDepth: unknown
108
+ surfaceInterval: unknown
109
+ startN2: unknown
110
+ endN2: unknown
111
+ startCns: unknown
112
+ endCns: unknown
113
+ summarizedDiveInfo: {
114
+ weight: unknown
115
+ weightUnit: unknown
116
+ visibility: unknown
117
+ visibilityUnit: unknown
118
+ surfaceCondition: unknown
119
+ current: unknown
120
+ waterType: unknown
121
+ waterDensity: unknown
122
+ summarizedDiveGases: []
123
+ totalSurfaceTime: unknown
124
+ }
125
+ activityLikeAuthors: unknown
126
+ avgVerticalSpeed: unknown
127
+ maxVerticalSpeed: number
128
+ floorsClimbed: unknown
129
+ floorsDescended: unknown
130
+ manufacturer: string
131
+ diveNumber: unknown
132
+ locationName: string
133
+ bottomTime: unknown
134
+ lapCount: number
135
+ endLatitude: number
136
+ endLongitude: number
137
+ minAirSpeed: unknown
138
+ maxAirSpeed: unknown
139
+ avgAirSpeed: unknown
140
+ avgWindYawAngle: unknown
141
+ minCda: unknown
142
+ maxCda: unknown
143
+ avgCda: unknown
144
+ avgWattsPerCda: unknown
145
+ flow: unknown
146
+ grit: unknown
147
+ jumpCount: unknown
148
+ caloriesEstimated: unknown
149
+ caloriesConsumed: unknown
150
+ waterEstimated: unknown
151
+ waterConsumed: unknown
152
+ maxAvgPower_1: unknown
153
+ maxAvgPower_2: unknown
154
+ maxAvgPower_5: unknown
155
+ maxAvgPower_10: unknown
156
+ maxAvgPower_20: unknown
157
+ maxAvgPower_30: unknown
158
+ maxAvgPower_60: unknown
159
+ maxAvgPower_120: unknown
160
+ maxAvgPower_300: unknown
161
+ maxAvgPower_600: unknown
162
+ maxAvgPower_1200: unknown
163
+ maxAvgPower_1800: unknown
164
+ maxAvgPower_3600: unknown
165
+ maxAvgPower_7200: unknown
166
+ maxAvgPower_18000: unknown
167
+ excludeFromPowerCurveReports: unknown
168
+ totalSets: unknown
169
+ activeSets: unknown
170
+ totalReps: unknown
171
+ minRespirationRate: unknown
172
+ maxRespirationRate: unknown
173
+ avgRespirationRate: unknown
174
+ trainingEffectLabel: unknown
175
+ activityTrainingLoad: unknown
176
+ avgFlow: unknown
177
+ avgGrit: unknown
178
+ minActivityLapDuration: number
179
+ avgStress: unknown
180
+ startStress: unknown
181
+ endStress: unknown
182
+ differenceStress: unknown
183
+ maxStress: unknown
184
+ aerobicTrainingEffectMessage: unknown
185
+ anaerobicTrainingEffectMessage: unknown
186
+ splitSummaries: []
187
+ hasSplits: boolean
188
+ maxBottomTime: unknown
189
+ hasSeedFirstbeatProfile: unknown
190
+ calendarEventId: unknown
191
+ calendarEventUuid: unknown
192
+ avgGradeAdjustedSpeed: unknown
193
+ avgWheelchairCadence: unknown
194
+ maxWheelchairCadence: unknown
195
+ purposeful: boolean
196
+ manualActivity: boolean
197
+ autoCalcCalories: boolean
198
+ elevationCorrected: boolean
199
+ atpActivity: boolean
200
+ favorite: boolean
201
+ decoDive: unknown
202
+ pr: boolean
203
+ parent: boolean
204
+ }
205
+ export declare interface IActivityDetails {
206
+ activityId: number
207
+ activityUUID: {
208
+ uuid: string
209
+ }
210
+ activityName: string
211
+ userProfileId: number
212
+ isMultiSportParent: boolean
213
+ activityTypeDTO: {
214
+ typeId: number
215
+ typeKey: string
216
+ parentTypeId: number
217
+ isHidden: boolean
218
+ restricted: boolean
219
+ trimmable: boolean
220
+ }
221
+ eventTypeDTO: {
222
+ typeId: number
223
+ typeKey: string
224
+ sortOrder: number
225
+ }
226
+ accessControlRuleDTO: {
227
+ typeId: number
228
+ typeKey: string
229
+ }
230
+ timeZoneUnitDTO: {
231
+ unitId: number
232
+ unitKey: string
233
+ factor: number
234
+ timeZone: string
235
+ }
236
+ metadataDTO: {
237
+ isOriginal: boolean
238
+ deviceApplicationInstallationId: number
239
+ agentApplicationInstallationId?: null
240
+ agentString?: null
241
+ fileFormat: {
242
+ formatId: number
243
+ formatKey: string
244
+ }
245
+ associatedCourseId?: null
246
+ lastUpdateDate: string
247
+ uploadedDate: string
248
+ videoUrl?: null
249
+ hasPolyline: boolean
250
+ hasChartData: boolean
251
+ hasHrTimeInZones: boolean
252
+ hasPowerTimeInZones: boolean
253
+ userInfoDto: {
254
+ userProfilePk: number
255
+ displayname: string
256
+ fullname: string
257
+ profileImageUrlLarge?: null
258
+ profileImageUrlMedium: string
259
+ profileImageUrlSmall: string
260
+ userPro: boolean
261
+ }
262
+ childIds?: null[] | null
263
+ childActivityTypes?: null[] | null
264
+ sensors?: {
265
+ manufacturer: string
266
+ serialNumber: number
267
+ sku: string
268
+ fitProductNumber: number
269
+ sourceType: string
270
+ antplusDeviceType: string
271
+ softwareVersion: number
272
+ batteryStatus: string
273
+ }[] | null
274
+ activityImages?: {
275
+ imageId: string
276
+ url: string
277
+ smallUrl: string
278
+ mediumUrl: string
279
+ expirationTimestamp?: null
280
+ latitude?: null
281
+ longitude?: null
282
+ photoDate?: null
283
+ }[] | null
284
+ manufacturer: string
285
+ diveNumber?: null
286
+ lapCount: number
287
+ associatedWorkoutId: number
288
+ isAtpActivity?: null
289
+ deviceMetaDataDTO: {
290
+ deviceId: string
291
+ deviceTypePk: number
292
+ deviceVersionPk: number
293
+ }
294
+ hasIntensityIntervals: boolean
295
+ hasSplits: boolean
296
+ eBikeMaxAssistModes?: null
297
+ eBikeBatteryUsage?: null
298
+ eBikeBatteryRemaining?: null
299
+ eBikeAssistModeInfoDTOList?: null
300
+ calendarEventInfo?: null
301
+ personalRecord: boolean
302
+ gcj02: boolean
303
+ runPowerWindDataEnabled?: null
304
+ autoCalcCalories: boolean
305
+ favorite: boolean
306
+ manualActivity: boolean
307
+ trimmed: boolean
308
+ elevationCorrected: boolean
309
+ }
310
+ summaryDTO: {
311
+ startTimeLocal: string
312
+ startTimeGMT: string
313
+ startLatitude: number
314
+ startLongitude: number
315
+ distance: number
316
+ duration: number
317
+ movingDuration: number
318
+ elapsedDuration: number
319
+ elevationGain: number
320
+ elevationLoss: number
321
+ maxElevation: number
322
+ minElevation: number
323
+ averageSpeed: number
324
+ averageMovingSpeed: number
325
+ maxSpeed: number
326
+ calories: number
327
+ averageHR: number
328
+ maxHR: number
329
+ averageRunCadence: number
330
+ maxRunCadence: number
331
+ averageTemperature: number
332
+ maxTemperature: number
333
+ minTemperature: number
334
+ groundContactTime: number
335
+ groundContactBalanceLeft: number
336
+ strideLength: number
337
+ verticalOscillation: number
338
+ trainingEffect: number
339
+ anaerobicTrainingEffect: number
340
+ aerobicTrainingEffectMessage: string
341
+ anaerobicTrainingEffectMessage: string
342
+ verticalRatio: number
343
+ endLatitude: number
344
+ endLongitude: number
345
+ maxVerticalSpeed: number
346
+ minActivityLapDuration: number
347
+ }
348
+ locationName: string
349
+ splitSummaries?: {
350
+ distance: number
351
+ duration: number
352
+ movingDuration: number
353
+ elapsedDuration: number
354
+ elevationGain: number
355
+ elevationLoss: number
356
+ averageSpeed: number
357
+ averageMovingSpeed: number
358
+ maxSpeed: number
359
+ calories: number
360
+ averageHR: number
361
+ maxHR: number
362
+ averageRunCadence: number
363
+ maxRunCadence: number
364
+ averageTemperature: number
365
+ maxTemperature: number
366
+ minTemperature: number
367
+ groundContactTime: number
368
+ groundContactBalanceLeft: number
369
+ strideLength: number
370
+ verticalOscillation: number
371
+ verticalRatio: number
372
+ totalExerciseReps: number
373
+ splitType: string
374
+ noOfSplits: number
375
+ maxElevationGain: number
376
+ averageElevationGain: number
377
+ maxDistance: number
378
+ }[] | null
379
+ }
380
+ export type GCActivityId = number;
381
+ export declare enum ActivityType {
382
+ Cycling = 'cycling',
383
+ FitnessEquipment = 'fitness_equipment',
384
+ Walking = 'walking',
385
+ Hiking = 'hiking',
386
+ Other = 'other',
387
+ WaterSport = 'water_sports',
388
+ Running = 'street_running',
389
+ }
390
+ export declare enum ActivitySubType {
391
+ IndoorCardio = 'indoor_cardio',
392
+ StrengthTraining = 'strength_training',
393
+ HIIT = 'hiit',
394
+ Yoga = 'yoga',
395
+ IndoorCycling = 'indoor_cycling',
396
+ Breathwork = 'breathwork',
397
+ Surfing = 'surfing',
398
+ StreetRunning = 'street_running',
399
+ TrailRunning = 'trail_running',
400
+ IndoorRunning = 'indoor_running',
401
+ }
@@ -0,0 +1,108 @@
1
+ export declare interface YearCalendar {
2
+ startDayOfJanuary: number
3
+ leapYear: boolean
4
+ yearItems: Array<{
5
+ date: string
6
+ display: number
7
+ }>
8
+ yearSummaries: Array<{
9
+ activityTypeId: number
10
+ numberOfActivities: number
11
+ totalDistance: number
12
+ totalDuration: number
13
+ totalCalories: number
14
+ }>
15
+ }
16
+ export declare interface MonthCalendar {
17
+ year: number
18
+ month: number
19
+ numOfDaysInMonth: number
20
+ numOfDaysInPrevMonth: number
21
+ startDayOfMonth: number
22
+ calendarItems: Array<CalendarItem>
23
+ }
24
+ export declare interface WeekCalendar {
25
+ startDate: string
26
+ endDate: string
27
+ numOfDaysInMonth: number
28
+ calendarItems: Array<CalendarItem>
29
+ }
30
+ export type CalendarItem = {
31
+ id: number
32
+ groupId: number | null
33
+ trainingPlanId: number | null
34
+ activityTypeId: number | null
35
+ wellnessActivityUuid: string | null
36
+ duration: number | null
37
+ distance: number | null
38
+ calories: number | null
39
+ floorsClimbed: number | null
40
+ avgRespirationRate: number | null
41
+ unitOfPoolLength: string | null
42
+ courseId: number | null
43
+ courseName: string | null
44
+ sportTypeKey: string | null
45
+ url: string | null
46
+ isStart: boolean | null
47
+ recurrenceId: number | null
48
+ isParent: boolean | null
49
+ parentId: number | null
50
+ userBadgeId: number | null
51
+ badgeCategoryTypeId: number | null
52
+ badgeCategoryTypeDesc: string | null
53
+ badgeAwardedDate: string | null
54
+ badgeViewed: boolean | null
55
+ hideBadge: boolean | null
56
+ startTimestampLocal: string | null
57
+ diveNumber: number | null
58
+ maxDepth: number | null
59
+ avgDepth: number | null
60
+ surfaceInterval: number | null
61
+ elapsedDuration: number | null
62
+ lapCount: number | null
63
+ bottomTime: number | null
64
+ atpPlanId: number | null
65
+ workoutId: number | null
66
+ protectedWorkoutSchedule: boolean
67
+ activeSets: number | null
68
+ strokes: number | null
69
+ noOfSplits: number | null
70
+ maxGradeValue: object | null
71
+ totalAscent: number | null
72
+ differenceStress: number | null
73
+ climbDuration: number | null
74
+ maxSpeed: number | null
75
+ averageHR: number | null
76
+ activeSplitSummaryDuration: number | null
77
+ activeSplitSummaryDistance: number | null
78
+ maxSplitDistance: number | null
79
+ maxSplitSpeed: number | null
80
+ location: string | null
81
+ shareableEventUuid: string | null
82
+ splitSummaryMode: string | null
83
+ workoutUuid: string | null
84
+ napStartTimeLocal: string | null
85
+ beginPackWeight: number | null
86
+ hasSplits: boolean | null
87
+ shareableEvent: boolean
88
+ primaryEvent: boolean | null
89
+ autoCalcCalories: boolean | null
90
+ subscribed: boolean | null
91
+ phasedTrainingPlan: boolean | null
92
+ decoDive: boolean | null
93
+ itemType: string
94
+ title: string | null
95
+ date: string
96
+ weight?: number | null
97
+ difference?: number | null
98
+ isRace?: boolean | null
99
+ eventTimeLocal?: {
100
+ startTimeHhMm: string
101
+ timeZoneId: string
102
+ } | null
103
+ completionTarget?: {
104
+ value: number
105
+ unit: string
106
+ unitType: string
107
+ } | null
108
+ }
@@ -0,0 +1,20 @@
1
+ export declare interface GearData {
2
+ gearPk: number
3
+ uuid: string
4
+ userProfilePk: number
5
+ gearMakeName: string
6
+ gearModelName: string
7
+ gearTypeName: string | 'Shoes' | 'Bike' | 'Other'
8
+ gearStatusName: string | 'active' | 'retired'
9
+ displayName: string | null
10
+ customMakeModel: string
11
+ imageNameLarge: string | null
12
+ imageNameMedium: string | null
13
+ imageNameSmall: string | null
14
+ dateBegin: string
15
+ dateEnd: string | null
16
+ maximumMeters: number
17
+ notified: boolean
18
+ createDate: string
19
+ updateDate: string
20
+ }
@@ -0,0 +1,171 @@
1
+ export declare interface ImportedGpxResponse {
2
+ courseId: number | null
3
+ courseName: string | null
4
+ description: string | null
5
+ openStreetMap: boolean
6
+ matchedToSegments: boolean
7
+ userProfilePk: number | null
8
+ userGroupPk: number | null
9
+ rulePK: number | null
10
+ firstName: string | null
11
+ lastName: string | null
12
+ displayName: string | null
13
+ geoRoutePk: number | null
14
+ sourceTypeId: number | null
15
+ sourcePk: number | null
16
+ distanceMeter: number | null
17
+ elevationGainMeter: number | null
18
+ elevationLossMeter: number | null
19
+ startPoint: string | null
20
+ coursePoints: CoursePoint[]
21
+ boundingBox: unknown | null
22
+ hasShareableEvent: boolean | null
23
+ hasTurnDetectionDisabled: boolean
24
+ activityTypePk: number | null
25
+ virtualPartnerId: number | null
26
+ includeLaps: boolean
27
+ elapsedSeconds: number | null
28
+ speedMeterPerSecond: number | null
29
+ createDate: string | null
30
+ updateDate: string | null
31
+ courseLines: CourseLine[]
32
+ coordinateSystem: string | null
33
+ targetCoordinateSystem: string | null
34
+ originalCoordinateSystem: string | null
35
+ consumer: string | null
36
+ elevationSource: string | null
37
+ hasPaceBand: boolean
38
+ hasPowerGuide: boolean
39
+ favorite: boolean
40
+ startNote: string | null
41
+ finishNote: string | null
42
+ cutoffDuration: number | null
43
+ geoPoints: GeoPoint[]
44
+ }
45
+ export declare interface CourseRequest {
46
+ activityTypePk: GpxActivityType
47
+ hasTurnDetectionDisabled: boolean
48
+ geoPoints: GeoPoint[]
49
+ courseLines: []
50
+ coursePoints: CoursePoint[]
51
+ startPoint: GeoPoint
52
+ elapsedSeconds: number | null
53
+ openStreetMap: boolean
54
+ coordinateSystem: string
55
+ rulePK: number
56
+ courseName: string
57
+ matchedToSegments: boolean
58
+ includeLaps: boolean
59
+ hasPaceBand: boolean
60
+ hasPowerGuide: boolean
61
+ favorite: boolean
62
+ speedMeterPerSecond: number | null
63
+ sourceTypeId: number
64
+ }
65
+ export declare interface CoursePoint {
66
+ coursePointId: number | null
67
+ name: string | null
68
+ coursePk: number | null
69
+ coursePointType: string | null
70
+ lon: number
71
+ lat: number
72
+ distance: number
73
+ elevation: number | null
74
+ derivedElevation: number | null
75
+ timestamp: number | null
76
+ createdDate: string | null
77
+ modifiedDate: string | null
78
+ uuid: string | null
79
+ note: string | null
80
+ cutoffDuration: number | null
81
+ restDuration: number | null
82
+ }
83
+ export declare interface CourseLine {
84
+ courseId: number | null
85
+ sortOrder: number
86
+ numberOfPoints: number
87
+ distanceInMeters: number
88
+ bearing: number
89
+ points: unknown | null
90
+ coordinateSystem: string | null
91
+ originalCoordinateSystem: string | null
92
+ }
93
+ export declare interface GeoPoint {
94
+ latitude: number
95
+ longitude: number
96
+ elevation: number | null
97
+ distance: number
98
+ timestamp: number | null
99
+ }
100
+ export declare interface ListCoursesResponse {
101
+ coursesForUser: {
102
+ courseId: number
103
+ userProfileId: number
104
+ displayName: string
105
+ userGroupId: number | null
106
+ geoRoutePk: number | null
107
+ activityType: {
108
+ typeId: number
109
+ typeKey: string
110
+ parentTypeId: number
111
+ isHidden: boolean
112
+ restricted: boolean
113
+ trimmable: boolean
114
+ }
115
+ courseName: string
116
+ courseDescription: string | null
117
+ createdDate: number
118
+ updatedDate: number
119
+ privacyRule: {
120
+ typeId: number
121
+ typeKey: string
122
+ }
123
+ distanceInMeters: number
124
+ elevationGainInMeters: number
125
+ elevationLossInMeters: number
126
+ startLatitude: number
127
+ startLongitude: number
128
+ speedInMetersPerSecond: number
129
+ sourceTypeId: number
130
+ sourcePk: number | null
131
+ elapsedSeconds: number | null
132
+ coordinateSystem: string
133
+ originalCoordinateSystem: string
134
+ consumer: string
135
+ elevationSource: number
136
+ hasShareableEvent: boolean
137
+ hasPaceBand: boolean
138
+ hasPowerGuide: boolean
139
+ favorite: boolean
140
+ hasTurnDetectionDisabled: boolean
141
+ curatedCourseId: number | null
142
+ startNote: string | null
143
+ finishNote: string | null
144
+ cutoffDuration: number | null
145
+ activityTypeId: {
146
+ typeId: number
147
+ typeKey: string
148
+ parentTypeId: number
149
+ isHidden: boolean
150
+ restricted: boolean
151
+ trimmable: boolean
152
+ }
153
+ public: boolean
154
+ createdDateFormatted: string
155
+ updatedDateFormatted: string
156
+ applicationName: string
157
+ companyName: string
158
+ companyWebsite: string
159
+ imageURL: string
160
+ }[]
161
+ }
162
+ export declare enum GpxActivityType {
163
+ Running = 1,
164
+ Running_Road = 1,
165
+ Running_Trail = 1,
166
+ Cycling = 10,
167
+ Cycling_Road = 10,
168
+ Cycling_Gravel = 143,
169
+ Hiking = 3,
170
+ Other = 4,
171
+ }
@@ -0,0 +1,22 @@
1
+ export declare interface HeartRateValueDescriptor {
2
+ key: string
3
+ index: number
4
+ }
5
+ export declare interface HeartRateEntry {
6
+ timestamp: number
7
+ heartrate: number
8
+ }
9
+ export declare interface HeartRate {
10
+ userProfilePK: number
11
+ calendarDate: string
12
+ startTimestampGMT: string
13
+ endTimestampGMT: string
14
+ startTimestampLocal: string
15
+ endTimestampLocal: string
16
+ maxHeartRate: number
17
+ minHeartRate: number
18
+ restingHeartRate: number
19
+ lastSevenDaysAvgRestingHeartRate: number
20
+ heartRateValueDescriptors: HeartRateValueDescriptor[]
21
+ heartRateValues: [number, number][]
22
+ }