ts-watches 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.
Files changed (44) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +358 -0
  3. package/dist/analysis/index.d.ts +5 -0
  4. package/dist/analysis/personal-records.d.ts +58 -0
  5. package/dist/analysis/race-predictor.d.ts +53 -0
  6. package/dist/analysis/running-dynamics.d.ts +66 -0
  7. package/dist/analysis/training-load.d.ts +40 -0
  8. package/dist/analysis/zones.d.ts +69 -0
  9. package/dist/bin/cli.js +52 -0
  10. package/dist/chunk-gsgt8r0z.js +2 -0
  11. package/dist/cloud/garmin-activity-api.d.ts +129 -0
  12. package/dist/cloud/garmin-connect.d.ts +67 -0
  13. package/dist/cloud/index.d.ts +4 -0
  14. package/dist/cloud/strava.d.ts +88 -0
  15. package/dist/cloud/trainingpeaks.d.ts +48 -0
  16. package/dist/config.d.ts +4 -0
  17. package/dist/drivers/apple.d.ts +17 -0
  18. package/dist/drivers/coros.d.ts +13 -0
  19. package/dist/drivers/garmin.d.ts +12 -0
  20. package/dist/drivers/index.d.ts +6 -0
  21. package/dist/drivers/polar.d.ts +14 -0
  22. package/dist/drivers/suunto.d.ts +13 -0
  23. package/dist/drivers/wahoo.d.ts +13 -0
  24. package/dist/export/csv.d.ts +15 -0
  25. package/dist/export/geojson.d.ts +23 -0
  26. package/dist/export/gpx.d.ts +10 -0
  27. package/dist/export/index.d.ts +4 -0
  28. package/dist/export/tcx.d.ts +10 -0
  29. package/dist/fit/constants.d.ts +606 -0
  30. package/dist/fit/decoder.d.ts +16 -0
  31. package/dist/fit/index.d.ts +3 -0
  32. package/dist/fit/parser.d.ts +21 -0
  33. package/dist/index.d.ts +40 -0
  34. package/dist/realtime/ant-plus.d.ts +201 -0
  35. package/dist/realtime/bluetooth.d.ts +153 -0
  36. package/dist/realtime/index.d.ts +3 -0
  37. package/dist/realtime/live-tracking.d.ts +70 -0
  38. package/dist/src/index.js +324 -0
  39. package/dist/types.d.ts +307 -0
  40. package/dist/workouts/builder.d.ts +184 -0
  41. package/dist/workouts/course.d.ts +74 -0
  42. package/dist/workouts/index.d.ts +3 -0
  43. package/dist/workouts/training-plan.d.ts +77 -0
  44. package/package.json +92 -0
@@ -0,0 +1,13 @@
1
+ import type { WatchDriver, WatchDevice, DownloadOptions, DownloadResult, Activity, MonitoringData } from '../types';
2
+ export declare function createWahooDriver(): WahooDriver;
3
+ export declare interface WahooDevice extends WatchDevice {
4
+ type: 'wahoo'
5
+ }
6
+ export declare class WahooDriver implements WatchDriver {
7
+ readonly name: string;
8
+ readonly type: unknown;
9
+ detectDevices(): Promise<WahooDevice[]>;
10
+ downloadData(device: WatchDevice, options?: DownloadOptions): Promise<DownloadResult>;
11
+ parseActivityFile(filePath: string): Promise<Activity | null>;
12
+ parseMonitoringFile(filePath: string): Promise<MonitoringData>;
13
+ }
@@ -0,0 +1,15 @@
1
+ import type { Activity, MonitoringData } from '../types';
2
+ export declare function activityToCsv(activity: Activity, options?: CsvOptions): string;
3
+ export declare function activitySummaryToCsv(activities: Activity[], options?: CsvOptions): string;
4
+ export declare function lapsToCsv(activity: Activity, options?: CsvOptions): string;
5
+ export declare function heartRateToCsv(data: MonitoringData, options?: CsvOptions): string;
6
+ export declare function sleepToCsv(data: MonitoringData, options?: CsvOptions): string;
7
+ export declare function stressToCsv(data: MonitoringData, options?: CsvOptions): string;
8
+ // eslint-disable-next-line pickier/no-unused-vars
9
+ export declare function escapeForCsv(str: string): string;
10
+ export declare function writeCsv(data: string, filePath: string): Promise<void>;
11
+ export declare interface CsvOptions {
12
+ delimiter?: string
13
+ includeHeader?: boolean
14
+ dateFormat?: 'iso' | 'unix' | 'locale'
15
+ }
@@ -0,0 +1,23 @@
1
+ import type { Activity, ActivityRecord } from '../types';
2
+ export declare function activityToGeoJson(activity: Activity, options?: GeoJsonOptions): GeoJsonFeatureCollection;
3
+ export declare function recordsToGeoJsonPoints(records: ActivityRecord[], options?: GeoJsonOptions): GeoJsonFeatureCollection;
4
+ export declare function activitiesToGeoJson(activities: Activity[], options?: GeoJsonOptions): GeoJsonFeatureCollection;
5
+ export declare function writeGeoJson(geoJson: GeoJsonFeatureCollection, filePath: string, pretty?: boolean): Promise<void>;
6
+ export declare interface GeoJsonFeature {
7
+ type: 'Feature'
8
+ geometry: {
9
+ type: 'LineString' | 'Point'
10
+ coordinates: number[][] | number[]
11
+ }
12
+ properties: Record<string, unknown>
13
+ }
14
+ export declare interface GeoJsonFeatureCollection {
15
+ type: 'FeatureCollection'
16
+ features: GeoJsonFeature[]
17
+ }
18
+ export declare interface GeoJsonOptions {
19
+ includeElevation?: boolean
20
+ includeTimestamps?: boolean
21
+ includeMetrics?: boolean
22
+ simplifyTolerance?: number
23
+ }
@@ -0,0 +1,10 @@
1
+ import type { Activity } from '../types';
2
+ export declare function activityToGpx(activity: Activity, options?: GpxOptions): string;
3
+ export declare function writeGpx(activity: Activity, filePath: string, options?: GpxOptions): Promise<void>;
4
+ export declare interface GpxOptions {
5
+ creator?: string
6
+ includeHeartRate?: boolean
7
+ includeCadence?: boolean
8
+ includePower?: boolean
9
+ includeTemperature?: boolean
10
+ }
@@ -0,0 +1,4 @@
1
+ export * from './gpx';
2
+ export * from './tcx';
3
+ export * from './csv';
4
+ export * from './geojson';
@@ -0,0 +1,10 @@
1
+ import type { Activity } from '../types';
2
+ export declare function activityToTcx(activity: Activity, options?: TcxOptions): string;
3
+ export declare function writeTcx(activity: Activity, filePath: string, options?: TcxOptions): Promise<void>;
4
+ export declare interface TcxOptions {
5
+ creator?: string
6
+ deviceName?: string
7
+ includeHeartRate?: boolean
8
+ includeCadence?: boolean
9
+ includePower?: boolean
10
+ }
@@ -0,0 +1,606 @@
1
+ // FIT Protocol Constants
2
+ // Based on FIT SDK Profile.xlsx
3
+ export declare const FIT_HEADER_SIZE: 14;
4
+ export declare const FIT_HEADER_SIZE_LEGACY: 12;
5
+ export declare const FIT_SIGNATURE: '.FIT';
6
+ // Base Types
7
+ export declare const BASE_TYPES: {
8
+ ENUM: unknown;
9
+ SINT8: unknown;
10
+ UINT8: unknown;
11
+ SINT16: unknown;
12
+ UINT16: unknown;
13
+ SINT32: unknown;
14
+ UINT32: unknown;
15
+ STRING: unknown;
16
+ FLOAT32: unknown;
17
+ FLOAT64: unknown;
18
+ UINT8Z: unknown;
19
+ UINT16Z: unknown;
20
+ UINT32Z: unknown;
21
+ BYTE: unknown;
22
+ SINT64: unknown;
23
+ UINT64: unknown;
24
+ UINT64Z: unknown
25
+ };
26
+ export declare const BASE_TYPE_SIZES: {
27
+ [BASE_TYPES.ENUM]: 1;
28
+ [BASE_TYPES.SINT8]: 1;
29
+ [BASE_TYPES.UINT8]: 1;
30
+ [BASE_TYPES.SINT16]: 2;
31
+ [BASE_TYPES.UINT16]: 2;
32
+ [BASE_TYPES.SINT32]: 4;
33
+ [BASE_TYPES.UINT32]: 4;
34
+ [BASE_TYPES.STRING]: 1;
35
+ [BASE_TYPES.FLOAT32]: 4;
36
+ [BASE_TYPES.FLOAT64]: 8;
37
+ [BASE_TYPES.UINT8Z]: 1;
38
+ [BASE_TYPES.UINT16Z]: 2;
39
+ [BASE_TYPES.UINT32Z]: 4;
40
+ [BASE_TYPES.BYTE]: 1;
41
+ [BASE_TYPES.SINT64]: 8;
42
+ [BASE_TYPES.UINT64]: 8;
43
+ [BASE_TYPES.UINT64Z]: 8
44
+ };
45
+ // Global Message Numbers
46
+ export declare const MESG_NUM: {
47
+ FILE_ID: 0;
48
+ CAPABILITIES: 1;
49
+ DEVICE_SETTINGS: 2;
50
+ USER_PROFILE: 3;
51
+ HRM_PROFILE: 4;
52
+ SDM_PROFILE: 5;
53
+ BIKE_PROFILE: 6;
54
+ ZONES_TARGET: 7;
55
+ HR_ZONE: 8;
56
+ POWER_ZONE: 9;
57
+ MET_ZONE: 10;
58
+ SPORT: 12;
59
+ GOAL: 15;
60
+ SESSION: 18;
61
+ LAP: 19;
62
+ RECORD: 20;
63
+ EVENT: 21;
64
+ DEVICE_INFO: 23;
65
+ WORKOUT: 26;
66
+ WORKOUT_STEP: 27;
67
+ SCHEDULE: 28;
68
+ WEIGHT_SCALE: 30;
69
+ COURSE: 31;
70
+ COURSE_POINT: 32;
71
+ TOTALS: 33;
72
+ ACTIVITY: 34;
73
+ SOFTWARE: 35;
74
+ FILE_CAPABILITIES: 37;
75
+ MESG_CAPABILITIES: 38;
76
+ FIELD_CAPABILITIES: 39;
77
+ FILE_CREATOR: 49;
78
+ BLOOD_PRESSURE: 51;
79
+ SPEED_ZONE: 53;
80
+ MONITORING: 55;
81
+ TRAINING_FILE: 72;
82
+ HRV: 78;
83
+ ANT_RX: 80;
84
+ ANT_TX: 81;
85
+ ANT_CHANNEL_ID: 82;
86
+ LENGTH: 101;
87
+ MONITORING_INFO: 103;
88
+ PAD: 105;
89
+ SLAVE_DEVICE: 106;
90
+ CONNECTIVITY: 127;
91
+ WEATHER_CONDITIONS: 128;
92
+ WEATHER_ALERT: 129;
93
+ CADENCE_ZONE: 131;
94
+ HR: 132;
95
+ SEGMENT_LAP: 142;
96
+ MEMO_GLOB: 145;
97
+ SEGMENT_ID: 148;
98
+ SEGMENT_LEADERBOARD_ENTRY: 149;
99
+ SEGMENT_POINT: 150;
100
+ SEGMENT_FILE: 151;
101
+ WORKOUT_SESSION: 158;
102
+ WATCHFACE_SETTINGS: 159;
103
+ GPS_METADATA: 160;
104
+ CAMERA_EVENT: 161;
105
+ TIMESTAMP_CORRELATION: 162;
106
+ GYROSCOPE_DATA: 164;
107
+ ACCELEROMETER_DATA: 165;
108
+ THREE_D_SENSOR_CALIBRATION: 167;
109
+ VIDEO_FRAME: 169;
110
+ OBDII_DATA: 174;
111
+ NMEA_SENTENCE: 177;
112
+ AVIATION_ATTITUDE: 178;
113
+ VIDEO: 184;
114
+ VIDEO_TITLE: 185;
115
+ VIDEO_DESCRIPTION: 186;
116
+ VIDEO_CLIP: 187;
117
+ OHR_SETTINGS: 188;
118
+ EXD_SCREEN_CONFIGURATION: 200;
119
+ EXD_DATA_FIELD_CONFIGURATION: 201;
120
+ EXD_DATA_CONCEPT_CONFIGURATION: 202;
121
+ FIELD_DESCRIPTION: 206;
122
+ DEVELOPER_DATA_ID: 207;
123
+ MAGNETOMETER_DATA: 208;
124
+ BAROMETER_DATA: 209;
125
+ ONE_D_SENSOR_CALIBRATION: 210;
126
+ MONITORING_HR_DATA: 211;
127
+ TIME_IN_ZONE: 216;
128
+ SET: 225;
129
+ STRESS_LEVEL: 227;
130
+ MAX_MET_DATA: 229;
131
+ DIVE_SETTINGS: 258;
132
+ DIVE_GAS: 259;
133
+ DIVE_ALARM: 262;
134
+ EXERCISE_TITLE: 264;
135
+ DIVE_SUMMARY: 268;
136
+ SPO2_DATA: 269;
137
+ SLEEP_LEVEL: 275;
138
+ JUMP: 285;
139
+ BEAT_INTERVALS: 290;
140
+ RESPIRATION_RATE: 297;
141
+ SPLIT: 312;
142
+ CLIMB_PRO: 317;
143
+ TANK_UPDATE: 319;
144
+ TANK_SUMMARY: 323;
145
+ SLEEP_ASSESSMENT: 346;
146
+ HRV_STATUS_SUMMARY: 370;
147
+ HRV_VALUE: 371;
148
+ DEVICE_AUX_BATTERY_INFO: 375;
149
+ DIVE_APNEA_ALARM: 393;
150
+ SKIN_TEMP_OVERNIGHT: 398
151
+ };
152
+ // Field Definition Numbers for common message types
153
+ export declare const FIELD_DEF: {
154
+ FILE_ID: {
155
+ TYPE: 0;
156
+ MANUFACTURER: 1;
157
+ PRODUCT: 2;
158
+ SERIAL_NUMBER: 3;
159
+ TIME_CREATED: 4;
160
+ NUMBER: 5;
161
+ PRODUCT_NAME: 8
162
+ };
163
+ SESSION: {
164
+ TIMESTAMP: 253;
165
+ START_TIME: 2;
166
+ START_POSITION_LAT: 3;
167
+ START_POSITION_LONG: 4;
168
+ TOTAL_ELAPSED_TIME: 7;
169
+ TOTAL_TIMER_TIME: 8;
170
+ TOTAL_DISTANCE: 9;
171
+ TOTAL_CYCLES: 10;
172
+ TOTAL_CALORIES: 11;
173
+ TOTAL_FAT_CALORIES: 13;
174
+ AVG_SPEED: 14;
175
+ MAX_SPEED: 15;
176
+ AVG_HEART_RATE: 16;
177
+ MAX_HEART_RATE: 17;
178
+ AVG_CADENCE: 18;
179
+ MAX_CADENCE: 19;
180
+ AVG_POWER: 20;
181
+ MAX_POWER: 21;
182
+ TOTAL_ASCENT: 22;
183
+ TOTAL_DESCENT: 23;
184
+ SPORT: 5;
185
+ SUB_SPORT: 6;
186
+ EVENT: 0;
187
+ EVENT_TYPE: 1;
188
+ FIRST_LAP_INDEX: 25;
189
+ NUM_LAPS: 26;
190
+ NORMALIZED_POWER: 34;
191
+ TRAINING_STRESS_SCORE: 35;
192
+ INTENSITY_FACTOR: 36;
193
+ AVG_TEMPERATURE: 57;
194
+ MAX_TEMPERATURE: 58
195
+ };
196
+ LAP: {
197
+ TIMESTAMP: 253;
198
+ EVENT: 0;
199
+ EVENT_TYPE: 1;
200
+ START_TIME: 2;
201
+ START_POSITION_LAT: 3;
202
+ START_POSITION_LONG: 4;
203
+ END_POSITION_LAT: 5;
204
+ END_POSITION_LONG: 6;
205
+ TOTAL_ELAPSED_TIME: 7;
206
+ TOTAL_TIMER_TIME: 8;
207
+ TOTAL_DISTANCE: 9;
208
+ TOTAL_CYCLES: 10;
209
+ TOTAL_CALORIES: 11;
210
+ TOTAL_FAT_CALORIES: 12;
211
+ AVG_SPEED: 13;
212
+ MAX_SPEED: 14;
213
+ AVG_HEART_RATE: 15;
214
+ MAX_HEART_RATE: 16;
215
+ AVG_CADENCE: 17;
216
+ MAX_CADENCE: 18;
217
+ AVG_POWER: 19;
218
+ MAX_POWER: 20;
219
+ TOTAL_ASCENT: 21;
220
+ TOTAL_DESCENT: 22;
221
+ SPORT: 23;
222
+ SUB_SPORT: 24;
223
+ AVG_TEMPERATURE: 50;
224
+ MAX_TEMPERATURE: 51
225
+ };
226
+ RECORD: {
227
+ TIMESTAMP: 253;
228
+ POSITION_LAT: 0;
229
+ POSITION_LONG: 1;
230
+ ALTITUDE: 2;
231
+ HEART_RATE: 3;
232
+ CADENCE: 4;
233
+ DISTANCE: 5;
234
+ SPEED: 6;
235
+ POWER: 7;
236
+ COMPRESSED_SPEED_DISTANCE: 8;
237
+ GRADE: 9;
238
+ RESISTANCE: 10;
239
+ TIME_FROM_COURSE: 11;
240
+ CYCLE_LENGTH: 12;
241
+ TEMPERATURE: 13;
242
+ SPEED_1S: 17;
243
+ CYCLES: 18;
244
+ TOTAL_CYCLES: 19;
245
+ COMPRESSED_ACCUMULATED_POWER: 28;
246
+ ACCUMULATED_POWER: 29;
247
+ LEFT_RIGHT_BALANCE: 30;
248
+ GPS_ACCURACY: 31;
249
+ VERTICAL_SPEED: 32;
250
+ CALORIES: 33;
251
+ VERTICAL_OSCILLATION: 39;
252
+ STANCE_TIME_PERCENT: 40;
253
+ STANCE_TIME: 41;
254
+ ACTIVITY_TYPE: 42;
255
+ LEFT_TORQUE_EFFECTIVENESS: 43;
256
+ RIGHT_TORQUE_EFFECTIVENESS: 44;
257
+ LEFT_PEDAL_SMOOTHNESS: 45;
258
+ RIGHT_PEDAL_SMOOTHNESS: 46;
259
+ COMBINED_PEDAL_SMOOTHNESS: 47;
260
+ TIME128: 48;
261
+ STROKE_TYPE: 49;
262
+ ZONE: 50;
263
+ BALL_SPEED: 51;
264
+ CADENCE256: 52;
265
+ FRACTIONAL_CADENCE: 53;
266
+ TOTAL_HEMOGLOBIN_CONC: 54;
267
+ TOTAL_HEMOGLOBIN_CONC_MIN: 55;
268
+ TOTAL_HEMOGLOBIN_CONC_MAX: 56;
269
+ SATURATED_HEMOGLOBIN_PERCENT: 57;
270
+ SATURATED_HEMOGLOBIN_PERCENT_MIN: 58;
271
+ SATURATED_HEMOGLOBIN_PERCENT_MAX: 59;
272
+ DEVICE_INDEX: 62;
273
+ LEFT_PCO: 67;
274
+ RIGHT_PCO: 68;
275
+ LEFT_POWER_PHASE: 69;
276
+ LEFT_POWER_PHASE_PEAK: 70;
277
+ RIGHT_POWER_PHASE: 71;
278
+ RIGHT_POWER_PHASE_PEAK: 72;
279
+ ENHANCED_SPEED: 73;
280
+ ENHANCED_ALTITUDE: 78;
281
+ BATTERY_SOC: 81;
282
+ MOTOR_POWER: 82;
283
+ VERTICAL_RATIO: 83;
284
+ STANCE_TIME_BALANCE: 84;
285
+ STEP_LENGTH: 85;
286
+ ABSOLUTE_PRESSURE: 91;
287
+ DEPTH: 92;
288
+ NEXT_STOP_DEPTH: 93;
289
+ NEXT_STOP_TIME: 94;
290
+ TIME_TO_SURFACE: 95;
291
+ NDL_TIME: 96;
292
+ CNS_LOAD: 97;
293
+ N2_LOAD: 98;
294
+ RESPIRATION_RATE: 99;
295
+ ENHANCED_RESPIRATION_RATE: 108;
296
+ GRIT: 114;
297
+ FLOW: 115;
298
+ CURRENT_STRESS: 116;
299
+ EBIKE_TRAVEL_RANGE: 117;
300
+ EBIKE_BATTERY_LEVEL: 118;
301
+ EBIKE_ASSIST_MODE: 119;
302
+ EBIKE_ASSIST_LEVEL_PERCENT: 120;
303
+ AIR_TIME_REMAINING: 123;
304
+ PRESSURE_SAC: 124;
305
+ VOLUME_SAC: 125;
306
+ RMV: 126;
307
+ ASCENT_RATE: 127;
308
+ PO2: 129;
309
+ CORE_TEMPERATURE: 139
310
+ };
311
+ ACTIVITY: {
312
+ TIMESTAMP: 253;
313
+ TOTAL_TIMER_TIME: 0;
314
+ NUM_SESSIONS: 1;
315
+ TYPE: 2;
316
+ EVENT: 3;
317
+ EVENT_TYPE: 4;
318
+ LOCAL_TIMESTAMP: 5;
319
+ EVENT_GROUP: 6
320
+ };
321
+ MONITORING: {
322
+ TIMESTAMP: 253;
323
+ DEVICE_INDEX: 0;
324
+ CALORIES: 1;
325
+ DISTANCE: 2;
326
+ CYCLES: 3;
327
+ ACTIVE_TIME: 4;
328
+ ACTIVITY_TYPE: 5;
329
+ ACTIVITY_SUBTYPE: 6;
330
+ ACTIVITY_LEVEL: 7;
331
+ DISTANCE_16: 8;
332
+ CYCLES_16: 9;
333
+ ACTIVE_TIME_16: 10;
334
+ LOCAL_TIMESTAMP: 11;
335
+ TEMPERATURE: 12;
336
+ TEMPERATURE_MIN: 14;
337
+ TEMPERATURE_MAX: 15;
338
+ ACTIVITY_TIME: 16;
339
+ ACTIVE_CALORIES: 19;
340
+ CURRENT_ACTIVITY_TYPE_INTENSITY: 24;
341
+ TIMESTAMP_MIN_8: 25;
342
+ TIMESTAMP_16: 26;
343
+ HEART_RATE: 27;
344
+ INTENSITY: 28;
345
+ DURATION_MIN: 29;
346
+ DURATION: 30;
347
+ ASCENT: 31;
348
+ DESCENT: 32;
349
+ MODERATE_ACTIVITY_MINUTES: 33;
350
+ VIGOROUS_ACTIVITY_MINUTES: 34
351
+ };
352
+ HRV: {
353
+ TIME: 0
354
+ };
355
+ STRESS_LEVEL: {
356
+ STRESS_LEVEL_VALUE: 0;
357
+ STRESS_LEVEL_TIME: 1
358
+ };
359
+ SPO2_DATA: {
360
+ TIMESTAMP: 253;
361
+ READING_SPO2: 0;
362
+ READING_CONFIDENCE: 1;
363
+ MODE: 2
364
+ };
365
+ SLEEP_LEVEL: {
366
+ TIMESTAMP: 253;
367
+ SLEEP_LEVEL: 0
368
+ };
369
+ RESPIRATION_RATE: {
370
+ TIMESTAMP: 253;
371
+ RESPIRATION_RATE: 0
372
+ };
373
+ DEVICE_INFO: {
374
+ TIMESTAMP: 253;
375
+ DEVICE_INDEX: 0;
376
+ DEVICE_TYPE: 1;
377
+ MANUFACTURER: 2;
378
+ SERIAL_NUMBER: 3;
379
+ PRODUCT: 4;
380
+ SOFTWARE_VERSION: 5;
381
+ HARDWARE_VERSION: 6;
382
+ CUM_OPERATING_TIME: 7;
383
+ BATTERY_VOLTAGE: 10;
384
+ BATTERY_STATUS: 11;
385
+ SENSOR_POSITION: 18;
386
+ DESCRIPTOR: 19;
387
+ ANT_TRANSMISSION_TYPE: 20;
388
+ ANT_DEVICE_NUMBER: 21;
389
+ ANT_NETWORK: 22;
390
+ SOURCE_TYPE: 25;
391
+ PRODUCT_NAME: 27;
392
+ BATTERY_LEVEL: 32
393
+ }
394
+ };
395
+ // Sport Types
396
+ export declare const SPORT: {
397
+ GENERIC: 0;
398
+ RUNNING: 1;
399
+ CYCLING: 2;
400
+ TRANSITION: 3;
401
+ FITNESS_EQUIPMENT: 4;
402
+ SWIMMING: 5;
403
+ BASKETBALL: 6;
404
+ SOCCER: 7;
405
+ TENNIS: 8;
406
+ AMERICAN_FOOTBALL: 9;
407
+ TRAINING: 10;
408
+ WALKING: 11;
409
+ CROSS_COUNTRY_SKIING: 12;
410
+ ALPINE_SKIING: 13;
411
+ SNOWBOARDING: 14;
412
+ ROWING: 15;
413
+ MOUNTAINEERING: 16;
414
+ HIKING: 17;
415
+ MULTISPORT: 18;
416
+ PADDLING: 19;
417
+ FLYING: 20;
418
+ E_BIKING: 21;
419
+ MOTORCYCLING: 22;
420
+ BOATING: 23;
421
+ DRIVING: 24;
422
+ GOLF: 25;
423
+ HANG_GLIDING: 26;
424
+ HORSEBACK_RIDING: 27;
425
+ HUNTING: 28;
426
+ FISHING: 29;
427
+ INLINE_SKATING: 30;
428
+ ROCK_CLIMBING: 31;
429
+ SAILING: 32;
430
+ ICE_SKATING: 33;
431
+ SKY_DIVING: 34;
432
+ SNOWSHOEING: 35;
433
+ SNOWMOBILING: 36;
434
+ STAND_UP_PADDLEBOARDING: 37;
435
+ SURFING: 38;
436
+ WAKEBOARDING: 39;
437
+ WATER_SKIING: 40;
438
+ KAYAKING: 41;
439
+ RAFTING: 42;
440
+ WINDSURFING: 43;
441
+ KITESURFING: 44;
442
+ TACTICAL: 45;
443
+ JUMPMASTER: 46;
444
+ BOXING: 47;
445
+ FLOOR_CLIMBING: 48;
446
+ DIVING: 53;
447
+ HIIT: 62;
448
+ RACKET: 64;
449
+ WHEELCHAIR_PUSH_WALK: 65;
450
+ WHEELCHAIR_PUSH_RUN: 66;
451
+ MEDITATION: 67;
452
+ DISC_GOLF: 69;
453
+ CRICKET: 82;
454
+ RUGBY: 83;
455
+ HOCKEY: 84;
456
+ LACROSSE: 85;
457
+ VOLLEYBALL: 86;
458
+ WATER_TUBING: 87;
459
+ WAKESURFING: 88;
460
+ MIXED_MARTIAL_ARTS: 105;
461
+ SNORKELING: 109;
462
+ YOGA: 123;
463
+ PILATES: 124;
464
+ INDOOR_RUNNING: 125;
465
+ INDOOR_CYCLING: 126;
466
+ BREATHWORK: 134;
467
+ ALL: 254
468
+ };
469
+ // Sub-Sport Types
470
+ export declare const SUB_SPORT: {
471
+ GENERIC: 0;
472
+ TREADMILL: 1;
473
+ STREET: 2;
474
+ TRAIL: 3;
475
+ TRACK: 4;
476
+ SPIN: 5;
477
+ INDOOR_CYCLING: 6;
478
+ ROAD: 7;
479
+ MOUNTAIN: 8;
480
+ DOWNHILL: 9;
481
+ RECUMBENT: 10;
482
+ CYCLOCROSS: 11;
483
+ HAND_CYCLING: 12;
484
+ TRACK_CYCLING: 13;
485
+ INDOOR_ROWING: 14;
486
+ ELLIPTICAL: 15;
487
+ STAIR_CLIMBING: 16;
488
+ LAP_SWIMMING: 17;
489
+ OPEN_WATER: 18;
490
+ FLEXIBILITY_TRAINING: 19;
491
+ STRENGTH_TRAINING: 20;
492
+ WARM_UP: 21;
493
+ MATCH: 22;
494
+ EXERCISE: 23;
495
+ CHALLENGE: 24;
496
+ INDOOR_SKIING: 25;
497
+ CARDIO_TRAINING: 26;
498
+ INDOOR_WALKING: 27;
499
+ E_BIKE_FITNESS: 28;
500
+ BMX: 29;
501
+ CASUAL_WALKING: 30;
502
+ SPEED_WALKING: 31;
503
+ BIKE_TO_RUN_TRANSITION: 32;
504
+ RUN_TO_BIKE_TRANSITION: 33;
505
+ SWIM_TO_BIKE_TRANSITION: 34;
506
+ ATV: 35;
507
+ MOTOCROSS: 36;
508
+ BACKCOUNTRY: 37;
509
+ RESORT: 38;
510
+ RC_DRONE: 39;
511
+ WINGSUIT: 40;
512
+ WHITEWATER: 41;
513
+ SKATE_SKIING: 42;
514
+ YOGA: 43;
515
+ PILATES: 44;
516
+ INDOOR_RUNNING: 45;
517
+ GRAVEL_CYCLING: 46;
518
+ E_BIKE_MOUNTAIN: 47;
519
+ COMMUTING: 48;
520
+ MIXED_SURFACE: 49;
521
+ NAVIGATE: 50;
522
+ TRACK_ME: 51;
523
+ MAP: 52;
524
+ SINGLE_GAS_DIVING: 53;
525
+ MULTI_GAS_DIVING: 54;
526
+ GAUGE_DIVING: 55;
527
+ APNEA_DIVING: 56;
528
+ APNEA_HUNTING: 57;
529
+ VIRTUAL_ACTIVITY: 58;
530
+ OBSTACLE: 59;
531
+ BREATHING: 62;
532
+ SAIL_RACE: 65;
533
+ ULTRA: 67;
534
+ INDOOR_CLIMBING: 68;
535
+ BOULDERING: 69;
536
+ HIIT: 70;
537
+ AMRAP: 73;
538
+ EMOM: 74;
539
+ TABATA: 75;
540
+ PICKLEBALL: 84;
541
+ PADEL: 85;
542
+ INDOOR_WHEELCHAIR_WALK: 86;
543
+ INDOOR_WHEELCHAIR_RUN: 87;
544
+ INDOOR_HAND_CYCLING: 88;
545
+ FLY: 110;
546
+ ALL: 254
547
+ };
548
+ // Sleep Level Types
549
+ export declare const SLEEP_LEVEL: {
550
+ UNMEASURABLE: 0;
551
+ AWAKE: 1;
552
+ LIGHT: 2;
553
+ DEEP: 3;
554
+ REM: 4
555
+ };
556
+ // FIT Epoch (Dec 31, 1989 00:00:00 UTC)
557
+ export declare const FIT_EPOCH: number;
558
+ // Manufacturer IDs
559
+ export declare const MANUFACTURER: {
560
+ GARMIN: 1;
561
+ GARMIN_FR405_ANTFS: 2;
562
+ ZEPHYR: 3;
563
+ DAYTON: 4;
564
+ IDT: 5;
565
+ SRM: 6;
566
+ QUARQ: 7;
567
+ IBIKE: 8;
568
+ SARIS: 9;
569
+ SPARK_HK: 10;
570
+ TANITA: 11;
571
+ ECHOWELL: 12;
572
+ DYNASTREAM_OEM: 13;
573
+ NAUTILUS: 14;
574
+ DYNASTREAM: 15;
575
+ TIMEX: 16;
576
+ METRIGEAR: 17;
577
+ XELIC: 18;
578
+ BEURER: 19;
579
+ CARDIOSPORT: 20;
580
+ A_AND_D: 21;
581
+ HMM: 22;
582
+ SUUNTO: 23;
583
+ THITA_ELEKTRONIK: 24;
584
+ GPULSE: 25;
585
+ CLEAN_MOBILE: 26;
586
+ PEDAL_BRAIN: 27;
587
+ PEAKSWARE: 28;
588
+ SAXONAR: 29;
589
+ LEMOND_FITNESS: 30;
590
+ DEXCOM: 31;
591
+ WAHOO_FITNESS: 32;
592
+ OCTANE_FITNESS: 33;
593
+ ARCHINOETICS: 34;
594
+ THE_HURT_BOX: 35;
595
+ CITIZEN_SYSTEMS: 36;
596
+ MAGELLAN: 37;
597
+ OSYNCE: 38;
598
+ HOLUX: 39;
599
+ CONCEPT2: 40;
600
+ SHIMANO: 72;
601
+ PIONEER: 86;
602
+ BRYTON: 267;
603
+ ZWIFT: 260;
604
+ WAHOO: 32;
605
+ TACX: 89
606
+ };
@@ -0,0 +1,16 @@
1
+ import type { Activity, MonitoringData } from '../types';
2
+ import type { FitParseResult } from './parser';
3
+ declare interface DeviceInfo {
4
+ manufacturer?: number
5
+ product?: number
6
+ serialNumber?: number
7
+ softwareVersion?: number
8
+ productName?: string
9
+ }
10
+ export declare class FitDecoder {
11
+ constructor(parseResult: FitParseResult);
12
+ getFileType(): string;
13
+ getDeviceInfo(): DeviceInfo | null;
14
+ decodeActivity(): Activity | null;
15
+ decodeMonitoring(): MonitoringData;
16
+ }
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './parser';
3
+ export * from './decoder';