@clipin/convex-wearables 0.0.2 → 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 (104) hide show
  1. package/README.md +395 -0
  2. package/dist/client/index.d.ts +47 -6
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +30 -0
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/client/types.d.ts +83 -0
  7. package/dist/client/types.d.ts.map +1 -1
  8. package/dist/client/types.js.map +1 -1
  9. package/dist/component/_generated/component.d.ts +50 -0
  10. package/dist/component/_generated/component.d.ts.map +1 -0
  11. package/dist/component/_generated/component.js +11 -0
  12. package/dist/component/_generated/component.js.map +1 -0
  13. package/dist/component/backfillJobs.d.ts +11 -11
  14. package/dist/component/connections.d.ts +9 -9
  15. package/dist/component/connections.d.ts.map +1 -1
  16. package/dist/component/connections.js +2 -0
  17. package/dist/component/connections.js.map +1 -1
  18. package/dist/component/dataPoints.d.ts +153 -39
  19. package/dist/component/dataPoints.d.ts.map +1 -1
  20. package/dist/component/dataPoints.js +1048 -139
  21. package/dist/component/dataPoints.js.map +1 -1
  22. package/dist/component/events.d.ts +13 -13
  23. package/dist/component/garminBackfill.d.ts +2 -2
  24. package/dist/component/garminWebhooks.d.ts +2 -2
  25. package/dist/component/garminWebhooks.d.ts.map +1 -1
  26. package/dist/component/garminWebhooks.js +2 -0
  27. package/dist/component/garminWebhooks.js.map +1 -1
  28. package/dist/component/lifecycle.d.ts +1 -1
  29. package/dist/component/lifecycle.d.ts.map +1 -1
  30. package/dist/component/lifecycle.js +39 -1
  31. package/dist/component/lifecycle.js.map +1 -1
  32. package/dist/component/oauthStates.d.ts +3 -3
  33. package/dist/component/schema.d.ts +192 -28
  34. package/dist/component/schema.d.ts.map +1 -1
  35. package/dist/component/schema.js +89 -0
  36. package/dist/component/schema.js.map +1 -1
  37. package/dist/component/sdkPush.d.ts +11 -11
  38. package/dist/component/summaries.d.ts +4 -4
  39. package/dist/component/syncJobs.d.ts +23 -23
  40. package/dist/component/syncWorkflow.d.ts +2 -2
  41. package/dist/component/timeSeriesPolicyUtils.d.ts +97 -0
  42. package/dist/component/timeSeriesPolicyUtils.d.ts.map +1 -0
  43. package/dist/component/timeSeriesPolicyUtils.js +163 -0
  44. package/dist/component/timeSeriesPolicyUtils.js.map +1 -0
  45. package/dist/test.d.ts +581 -0
  46. package/dist/test.d.ts.map +1 -0
  47. package/dist/test.js +17 -0
  48. package/dist/test.js.map +1 -0
  49. package/package.json +12 -2
  50. package/src/client/_generated/_ignore.ts +2 -0
  51. package/src/client/index.test.ts +149 -0
  52. package/src/client/index.ts +859 -0
  53. package/src/client/types.ts +632 -0
  54. package/src/component/_generated/_ignore.ts +2 -0
  55. package/src/component/_generated/api.ts +16 -0
  56. package/src/component/_generated/component.ts +74 -0
  57. package/src/component/_generated/dataModel.ts +40 -0
  58. package/src/component/_generated/server.ts +48 -0
  59. package/src/component/backfillJobs.test.ts +47 -0
  60. package/src/component/backfillJobs.ts +245 -0
  61. package/src/component/connections.test.ts +297 -0
  62. package/src/component/connections.ts +329 -0
  63. package/src/component/convex.config.ts +7 -0
  64. package/src/component/dataPoints.test.ts +827 -0
  65. package/src/component/dataPoints.ts +1676 -0
  66. package/src/component/dataSources.test.ts +247 -0
  67. package/src/component/dataSources.ts +109 -0
  68. package/src/component/events.test.ts +380 -0
  69. package/src/component/events.ts +288 -0
  70. package/src/component/garminBackfill.ts +343 -0
  71. package/src/component/garminWebhooks.test.ts +609 -0
  72. package/src/component/garminWebhooks.ts +656 -0
  73. package/src/component/httpHandlers.ts +153 -0
  74. package/src/component/lifecycle.test.ts +179 -0
  75. package/src/component/lifecycle.ts +128 -0
  76. package/src/component/menstrualCycles.ts +124 -0
  77. package/src/component/oauthActions.ts +261 -0
  78. package/src/component/oauthStates.test.ts +170 -0
  79. package/src/component/oauthStates.ts +85 -0
  80. package/src/component/providerSettings.ts +66 -0
  81. package/src/component/providers/additionalProviders.test.ts +401 -0
  82. package/src/component/providers/garmin.ts +1169 -0
  83. package/src/component/providers/oauth.test.ts +174 -0
  84. package/src/component/providers/oauth.ts +246 -0
  85. package/src/component/providers/polar.ts +220 -0
  86. package/src/component/providers/registry.ts +37 -0
  87. package/src/component/providers/strava.test.ts +195 -0
  88. package/src/component/providers/strava.ts +253 -0
  89. package/src/component/providers/suunto.ts +592 -0
  90. package/src/component/providers/types.ts +189 -0
  91. package/src/component/providers/whoop.ts +600 -0
  92. package/src/component/schema.ts +445 -0
  93. package/src/component/sdkPush.test.ts +367 -0
  94. package/src/component/sdkPush.ts +440 -0
  95. package/src/component/summaries.test.ts +201 -0
  96. package/src/component/summaries.ts +143 -0
  97. package/src/component/syncJobs.test.ts +254 -0
  98. package/src/component/syncJobs.ts +140 -0
  99. package/src/component/syncWorkflow.test.ts +87 -0
  100. package/src/component/syncWorkflow.ts +739 -0
  101. package/src/component/test.setup.ts +6 -0
  102. package/src/component/timeSeriesPolicyUtils.ts +243 -0
  103. package/src/component/workflowManager.ts +19 -0
  104. package/src/test.ts +25 -0
package/dist/test.d.ts ADDED
@@ -0,0 +1,581 @@
1
+ import type { GenericSchema, SchemaDefinition } from "convex/server";
2
+ import type { TestConvex } from "convex-test";
3
+ /**
4
+ * Register the component with a test Convex instance.
5
+ * @param t - The test Convex instance, for example from `convexTest`.
6
+ * @param name - The component name, as registered in the host app.
7
+ */
8
+ export declare function register(t: TestConvex<SchemaDefinition<GenericSchema, boolean>>, name?: string): void;
9
+ declare const _default: {
10
+ register: typeof register;
11
+ schema: SchemaDefinition<{
12
+ connections: import("convex/server").TableDefinition<import("convex/values").VObject<{
13
+ providerUserId?: string | undefined;
14
+ providerUsername?: string | undefined;
15
+ accessToken?: string | undefined;
16
+ refreshToken?: string | undefined;
17
+ tokenExpiresAt?: number | undefined;
18
+ scope?: string | undefined;
19
+ lastSyncedAt?: number | undefined;
20
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
21
+ status: "error" | "active" | "inactive" | "revoked" | "expired";
22
+ userId: string;
23
+ }, {
24
+ userId: import("convex/values").VString<string, "required">;
25
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
26
+ providerUserId: import("convex/values").VString<string | undefined, "optional">;
27
+ providerUsername: import("convex/values").VString<string | undefined, "optional">;
28
+ accessToken: import("convex/values").VString<string | undefined, "optional">;
29
+ refreshToken: import("convex/values").VString<string | undefined, "optional">;
30
+ tokenExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
31
+ scope: import("convex/values").VString<string | undefined, "optional">;
32
+ status: import("convex/values").VUnion<"error" | "active" | "inactive" | "revoked" | "expired", [import("convex/values").VLiteral<"active", "required">, import("convex/values").VLiteral<"inactive", "required">, import("convex/values").VLiteral<"revoked", "required">, import("convex/values").VLiteral<"expired", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
33
+ lastSyncedAt: import("convex/values").VFloat64<number | undefined, "optional">;
34
+ }, "required", "provider" | "status" | "userId" | "providerUserId" | "providerUsername" | "accessToken" | "refreshToken" | "tokenExpiresAt" | "scope" | "lastSyncedAt">, {
35
+ by_user: ["userId", "_creationTime"];
36
+ by_user_provider: ["userId", "provider", "_creationTime"];
37
+ by_provider_user: ["provider", "providerUserId", "_creationTime"];
38
+ by_status: ["status", "_creationTime"];
39
+ }, {}, {}>;
40
+ dataSources: import("convex/server").TableDefinition<import("convex/values").VObject<{
41
+ connectionId?: import("convex/values").GenericId<"connections"> | undefined;
42
+ deviceModel?: string | undefined;
43
+ softwareVersion?: string | undefined;
44
+ source?: string | undefined;
45
+ deviceType?: string | undefined;
46
+ originalSourceName?: string | undefined;
47
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
48
+ userId: string;
49
+ }, {
50
+ userId: import("convex/values").VString<string, "required">;
51
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
52
+ connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections"> | undefined, "optional">;
53
+ deviceModel: import("convex/values").VString<string | undefined, "optional">;
54
+ softwareVersion: import("convex/values").VString<string | undefined, "optional">;
55
+ source: import("convex/values").VString<string | undefined, "optional">;
56
+ deviceType: import("convex/values").VString<string | undefined, "optional">;
57
+ originalSourceName: import("convex/values").VString<string | undefined, "optional">;
58
+ }, "required", "provider" | "userId" | "connectionId" | "deviceModel" | "softwareVersion" | "source" | "deviceType" | "originalSourceName">, {
59
+ by_user_provider: ["userId", "provider", "_creationTime"];
60
+ by_user_provider_device: ["userId", "provider", "deviceModel", "source", "_creationTime"];
61
+ by_connection: ["connectionId", "_creationTime"];
62
+ }, {}, {}>;
63
+ dataPoints: import("convex/server").TableDefinition<import("convex/values").VObject<{
64
+ externalId?: string | undefined;
65
+ dataSourceId: import("convex/values").GenericId<"dataSources">;
66
+ seriesType: string;
67
+ recordedAt: number;
68
+ value: number;
69
+ }, {
70
+ dataSourceId: import("convex/values").VId<import("convex/values").GenericId<"dataSources">, "required">;
71
+ seriesType: import("convex/values").VString<string, "required">;
72
+ recordedAt: import("convex/values").VFloat64<number, "required">;
73
+ value: import("convex/values").VFloat64<number, "required">;
74
+ externalId: import("convex/values").VString<string | undefined, "optional">;
75
+ }, "required", "dataSourceId" | "seriesType" | "recordedAt" | "value" | "externalId">, {
76
+ by_source_type_time: ["dataSourceId", "seriesType", "recordedAt", "_creationTime"];
77
+ by_type_time: ["seriesType", "recordedAt", "_creationTime"];
78
+ }, {}, {}>;
79
+ timeSeriesRollups: import("convex/server").TableDefinition<import("convex/values").VObject<{
80
+ avg: number;
81
+ min: number;
82
+ max: number;
83
+ last: number;
84
+ count: number;
85
+ dataSourceId: import("convex/values").GenericId<"dataSources">;
86
+ seriesType: string;
87
+ bucketMs: number;
88
+ bucketStart: number;
89
+ bucketEnd: number;
90
+ lastRecordedAt: number;
91
+ updatedAt: number;
92
+ }, {
93
+ dataSourceId: import("convex/values").VId<import("convex/values").GenericId<"dataSources">, "required">;
94
+ seriesType: import("convex/values").VString<string, "required">;
95
+ bucketMs: import("convex/values").VFloat64<number, "required">;
96
+ bucketStart: import("convex/values").VFloat64<number, "required">;
97
+ bucketEnd: import("convex/values").VFloat64<number, "required">;
98
+ avg: import("convex/values").VFloat64<number, "required">;
99
+ min: import("convex/values").VFloat64<number, "required">;
100
+ max: import("convex/values").VFloat64<number, "required">;
101
+ last: import("convex/values").VFloat64<number, "required">;
102
+ lastRecordedAt: import("convex/values").VFloat64<number, "required">;
103
+ count: import("convex/values").VFloat64<number, "required">;
104
+ updatedAt: import("convex/values").VFloat64<number, "required">;
105
+ }, "required", "avg" | "min" | "max" | "last" | "count" | "dataSourceId" | "seriesType" | "bucketMs" | "bucketStart" | "bucketEnd" | "lastRecordedAt" | "updatedAt">, {
106
+ by_source_type_bucket: ["dataSourceId", "seriesType", "bucketStart", "_creationTime"];
107
+ by_source_type_bucket_size: ["dataSourceId", "seriesType", "bucketMs", "bucketStart", "_creationTime"];
108
+ by_source_bucket: ["dataSourceId", "bucketStart", "_creationTime"];
109
+ by_type_bucket: ["seriesType", "bucketStart", "_creationTime"];
110
+ }, {}, {}>;
111
+ events: import("convex/server").TableDefinition<import("convex/values").VObject<{
112
+ type?: string | undefined;
113
+ externalId?: string | undefined;
114
+ sourceName?: string | undefined;
115
+ durationSeconds?: number | undefined;
116
+ endDatetime?: number | undefined;
117
+ heartRateMin?: number | undefined;
118
+ heartRateMax?: number | undefined;
119
+ heartRateAvg?: number | undefined;
120
+ energyBurned?: number | undefined;
121
+ distance?: number | undefined;
122
+ stepsCount?: number | undefined;
123
+ maxSpeed?: number | undefined;
124
+ maxWatts?: number | undefined;
125
+ movingTimeSeconds?: number | undefined;
126
+ totalElevationGain?: number | undefined;
127
+ averageSpeed?: number | undefined;
128
+ averageWatts?: number | undefined;
129
+ elevHigh?: number | undefined;
130
+ elevLow?: number | undefined;
131
+ sleepTotalDurationMinutes?: number | undefined;
132
+ sleepTimeInBedMinutes?: number | undefined;
133
+ sleepEfficiencyScore?: number | undefined;
134
+ sleepDeepMinutes?: number | undefined;
135
+ sleepRemMinutes?: number | undefined;
136
+ sleepLightMinutes?: number | undefined;
137
+ sleepAwakeMinutes?: number | undefined;
138
+ isNap?: boolean | undefined;
139
+ sleepStages?: {
140
+ stage: string;
141
+ startTime: number;
142
+ endTime: number;
143
+ }[] | undefined;
144
+ userId: string;
145
+ dataSourceId: import("convex/values").GenericId<"dataSources">;
146
+ category: "workout" | "sleep";
147
+ startDatetime: number;
148
+ }, {
149
+ dataSourceId: import("convex/values").VId<import("convex/values").GenericId<"dataSources">, "required">;
150
+ userId: import("convex/values").VString<string, "required">;
151
+ category: import("convex/values").VUnion<"workout" | "sleep", [import("convex/values").VLiteral<"workout", "required">, import("convex/values").VLiteral<"sleep", "required">], "required", never>;
152
+ type: import("convex/values").VString<string | undefined, "optional">;
153
+ sourceName: import("convex/values").VString<string | undefined, "optional">;
154
+ durationSeconds: import("convex/values").VFloat64<number | undefined, "optional">;
155
+ startDatetime: import("convex/values").VFloat64<number, "required">;
156
+ endDatetime: import("convex/values").VFloat64<number | undefined, "optional">;
157
+ externalId: import("convex/values").VString<string | undefined, "optional">;
158
+ heartRateMin: import("convex/values").VFloat64<number | undefined, "optional">;
159
+ heartRateMax: import("convex/values").VFloat64<number | undefined, "optional">;
160
+ heartRateAvg: import("convex/values").VFloat64<number | undefined, "optional">;
161
+ energyBurned: import("convex/values").VFloat64<number | undefined, "optional">;
162
+ distance: import("convex/values").VFloat64<number | undefined, "optional">;
163
+ stepsCount: import("convex/values").VFloat64<number | undefined, "optional">;
164
+ maxSpeed: import("convex/values").VFloat64<number | undefined, "optional">;
165
+ maxWatts: import("convex/values").VFloat64<number | undefined, "optional">;
166
+ movingTimeSeconds: import("convex/values").VFloat64<number | undefined, "optional">;
167
+ totalElevationGain: import("convex/values").VFloat64<number | undefined, "optional">;
168
+ averageSpeed: import("convex/values").VFloat64<number | undefined, "optional">;
169
+ averageWatts: import("convex/values").VFloat64<number | undefined, "optional">;
170
+ elevHigh: import("convex/values").VFloat64<number | undefined, "optional">;
171
+ elevLow: import("convex/values").VFloat64<number | undefined, "optional">;
172
+ sleepTotalDurationMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
173
+ sleepTimeInBedMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
174
+ sleepEfficiencyScore: import("convex/values").VFloat64<number | undefined, "optional">;
175
+ sleepDeepMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
176
+ sleepRemMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
177
+ sleepLightMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
178
+ sleepAwakeMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
179
+ isNap: import("convex/values").VBoolean<boolean | undefined, "optional">;
180
+ sleepStages: import("convex/values").VArray<{
181
+ stage: string;
182
+ startTime: number;
183
+ endTime: number;
184
+ }[] | undefined, import("convex/values").VObject<{
185
+ stage: string;
186
+ startTime: number;
187
+ endTime: number;
188
+ }, {
189
+ stage: import("convex/values").VString<string, "required">;
190
+ startTime: import("convex/values").VFloat64<number, "required">;
191
+ endTime: import("convex/values").VFloat64<number, "required">;
192
+ }, "required", "stage" | "startTime" | "endTime">, "optional">;
193
+ }, "required", "type" | "userId" | "dataSourceId" | "externalId" | "category" | "sourceName" | "durationSeconds" | "startDatetime" | "endDatetime" | "heartRateMin" | "heartRateMax" | "heartRateAvg" | "energyBurned" | "distance" | "stepsCount" | "maxSpeed" | "maxWatts" | "movingTimeSeconds" | "totalElevationGain" | "averageSpeed" | "averageWatts" | "elevHigh" | "elevLow" | "sleepTotalDurationMinutes" | "sleepTimeInBedMinutes" | "sleepEfficiencyScore" | "sleepDeepMinutes" | "sleepRemMinutes" | "sleepLightMinutes" | "sleepAwakeMinutes" | "isNap" | "sleepStages">, {
194
+ by_user_category_time: ["userId", "category", "startDatetime", "_creationTime"];
195
+ by_source_category_time: ["dataSourceId", "category", "startDatetime", "_creationTime"];
196
+ by_source_start_end: ["dataSourceId", "startDatetime", "endDatetime", "_creationTime"];
197
+ by_external_id: ["externalId", "_creationTime"];
198
+ }, {}, {}>;
199
+ dailySummaries: import("convex/server").TableDefinition<import("convex/values").VObject<{
200
+ totalSteps?: number | undefined;
201
+ totalCalories?: number | undefined;
202
+ activeCalories?: number | undefined;
203
+ activeMinutes?: number | undefined;
204
+ totalDistance?: number | undefined;
205
+ floorsClimbed?: number | undefined;
206
+ avgHeartRate?: number | undefined;
207
+ maxHeartRate?: number | undefined;
208
+ minHeartRate?: number | undefined;
209
+ sleepDurationMinutes?: number | undefined;
210
+ sleepEfficiency?: number | undefined;
211
+ deepSleepMinutes?: number | undefined;
212
+ remSleepMinutes?: number | undefined;
213
+ lightSleepMinutes?: number | undefined;
214
+ awakeDuringMinutes?: number | undefined;
215
+ timeInBedMinutes?: number | undefined;
216
+ hrvAvg?: number | undefined;
217
+ hrvRmssd?: number | undefined;
218
+ restingHeartRate?: number | undefined;
219
+ recoveryScore?: number | undefined;
220
+ weight?: number | undefined;
221
+ bodyFatPercentage?: number | undefined;
222
+ bodyMassIndex?: number | undefined;
223
+ leanBodyMass?: number | undefined;
224
+ bodyTemperature?: number | undefined;
225
+ avgStressLevel?: number | undefined;
226
+ bodyBattery?: number | undefined;
227
+ spo2Avg?: number | undefined;
228
+ userId: string;
229
+ category: string;
230
+ date: string;
231
+ }, {
232
+ userId: import("convex/values").VString<string, "required">;
233
+ date: import("convex/values").VString<string, "required">;
234
+ category: import("convex/values").VString<string, "required">;
235
+ totalSteps: import("convex/values").VFloat64<number | undefined, "optional">;
236
+ totalCalories: import("convex/values").VFloat64<number | undefined, "optional">;
237
+ activeCalories: import("convex/values").VFloat64<number | undefined, "optional">;
238
+ activeMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
239
+ totalDistance: import("convex/values").VFloat64<number | undefined, "optional">;
240
+ floorsClimbed: import("convex/values").VFloat64<number | undefined, "optional">;
241
+ avgHeartRate: import("convex/values").VFloat64<number | undefined, "optional">;
242
+ maxHeartRate: import("convex/values").VFloat64<number | undefined, "optional">;
243
+ minHeartRate: import("convex/values").VFloat64<number | undefined, "optional">;
244
+ sleepDurationMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
245
+ sleepEfficiency: import("convex/values").VFloat64<number | undefined, "optional">;
246
+ deepSleepMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
247
+ remSleepMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
248
+ lightSleepMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
249
+ awakeDuringMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
250
+ timeInBedMinutes: import("convex/values").VFloat64<number | undefined, "optional">;
251
+ hrvAvg: import("convex/values").VFloat64<number | undefined, "optional">;
252
+ hrvRmssd: import("convex/values").VFloat64<number | undefined, "optional">;
253
+ restingHeartRate: import("convex/values").VFloat64<number | undefined, "optional">;
254
+ recoveryScore: import("convex/values").VFloat64<number | undefined, "optional">;
255
+ weight: import("convex/values").VFloat64<number | undefined, "optional">;
256
+ bodyFatPercentage: import("convex/values").VFloat64<number | undefined, "optional">;
257
+ bodyMassIndex: import("convex/values").VFloat64<number | undefined, "optional">;
258
+ leanBodyMass: import("convex/values").VFloat64<number | undefined, "optional">;
259
+ bodyTemperature: import("convex/values").VFloat64<number | undefined, "optional">;
260
+ avgStressLevel: import("convex/values").VFloat64<number | undefined, "optional">;
261
+ bodyBattery: import("convex/values").VFloat64<number | undefined, "optional">;
262
+ spo2Avg: import("convex/values").VFloat64<number | undefined, "optional">;
263
+ }, "required", "userId" | "category" | "date" | "totalSteps" | "totalCalories" | "activeCalories" | "activeMinutes" | "totalDistance" | "floorsClimbed" | "avgHeartRate" | "maxHeartRate" | "minHeartRate" | "sleepDurationMinutes" | "sleepEfficiency" | "deepSleepMinutes" | "remSleepMinutes" | "lightSleepMinutes" | "awakeDuringMinutes" | "timeInBedMinutes" | "hrvAvg" | "hrvRmssd" | "restingHeartRate" | "recoveryScore" | "weight" | "bodyFatPercentage" | "bodyMassIndex" | "leanBodyMass" | "bodyTemperature" | "avgStressLevel" | "bodyBattery" | "spo2Avg">, {
264
+ by_user_category_date: ["userId", "category", "date", "_creationTime"];
265
+ by_user_date: ["userId", "date", "_creationTime"];
266
+ }, {}, {}>;
267
+ syncJobs: import("convex/server").TableDefinition<import("convex/values").VObject<{
268
+ error?: string | undefined;
269
+ completedAt?: number | undefined;
270
+ workflowId?: string | undefined;
271
+ mode?: "manual" | "cron" | "webhook" | undefined;
272
+ triggerSource?: string | undefined;
273
+ recordsProcessed?: number | undefined;
274
+ windowStart?: number | undefined;
275
+ windowEnd?: number | undefined;
276
+ attempt?: number | undefined;
277
+ lastHeartbeatAt?: number | undefined;
278
+ cursor?: string | undefined;
279
+ currentPhase?: "events" | "dataPoints" | "summaries" | undefined;
280
+ startedAt: number;
281
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
282
+ status: "failed" | "canceled" | "running" | "completed" | "queued";
283
+ userId: string;
284
+ connectionId: import("convex/values").GenericId<"connections">;
285
+ idempotencyKey: string;
286
+ }, {
287
+ connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections">, "required">;
288
+ userId: import("convex/values").VString<string, "required">;
289
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
290
+ mode: import("convex/values").VUnion<"manual" | "cron" | "webhook" | undefined, [import("convex/values").VLiteral<"manual", "required">, import("convex/values").VLiteral<"cron", "required">, import("convex/values").VLiteral<"webhook", "required">], "optional", never>;
291
+ triggerSource: import("convex/values").VString<string | undefined, "optional">;
292
+ idempotencyKey: import("convex/values").VString<string, "required">;
293
+ status: import("convex/values").VUnion<"failed" | "canceled" | "running" | "completed" | "queued", [import("convex/values").VLiteral<"queued", "required">, import("convex/values").VLiteral<"running", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"canceled", "required">], "required", never>;
294
+ startedAt: import("convex/values").VFloat64<number, "required">;
295
+ completedAt: import("convex/values").VFloat64<number | undefined, "optional">;
296
+ error: import("convex/values").VString<string | undefined, "optional">;
297
+ recordsProcessed: import("convex/values").VFloat64<number | undefined, "optional">;
298
+ workflowId: import("convex/values").VString<string | undefined, "optional">;
299
+ windowStart: import("convex/values").VFloat64<number | undefined, "optional">;
300
+ windowEnd: import("convex/values").VFloat64<number | undefined, "optional">;
301
+ attempt: import("convex/values").VFloat64<number | undefined, "optional">;
302
+ lastHeartbeatAt: import("convex/values").VFloat64<number | undefined, "optional">;
303
+ cursor: import("convex/values").VString<string | undefined, "optional">;
304
+ currentPhase: import("convex/values").VUnion<"events" | "dataPoints" | "summaries" | undefined, [import("convex/values").VLiteral<"events", "required">, import("convex/values").VLiteral<"dataPoints", "required">, import("convex/values").VLiteral<"summaries", "required">], "optional", never>;
305
+ }, "required", "error" | "startedAt" | "completedAt" | "workflowId" | "provider" | "status" | "userId" | "connectionId" | "mode" | "triggerSource" | "idempotencyKey" | "recordsProcessed" | "windowStart" | "windowEnd" | "attempt" | "lastHeartbeatAt" | "cursor" | "currentPhase">, {
306
+ by_user: ["userId", "_creationTime"];
307
+ by_connection: ["connectionId", "_creationTime"];
308
+ by_user_provider: ["userId", "provider", "_creationTime"];
309
+ by_user_status: ["userId", "status", "_creationTime"];
310
+ by_status: ["status", "_creationTime"];
311
+ by_idempotency_key: ["idempotencyKey", "_creationTime"];
312
+ by_workflow: ["workflowId", "_creationTime"];
313
+ }, {}, {}>;
314
+ oauthStates: import("convex/server").TableDefinition<import("convex/values").VObject<{
315
+ codeVerifier?: string | undefined;
316
+ redirectUri?: string | undefined;
317
+ state: string;
318
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
319
+ userId: string;
320
+ createdAt: number;
321
+ }, {
322
+ state: import("convex/values").VString<string, "required">;
323
+ userId: import("convex/values").VString<string, "required">;
324
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
325
+ codeVerifier: import("convex/values").VString<string | undefined, "optional">;
326
+ redirectUri: import("convex/values").VString<string | undefined, "optional">;
327
+ createdAt: import("convex/values").VFloat64<number, "required">;
328
+ }, "required", "state" | "provider" | "userId" | "codeVerifier" | "redirectUri" | "createdAt">, {
329
+ by_state: ["state", "_creationTime"];
330
+ }, {}, {}>;
331
+ providerSettings: import("convex/server").TableDefinition<import("convex/values").VObject<{
332
+ updatedAt?: number | undefined;
333
+ clientId?: string | undefined;
334
+ clientSecret?: string | undefined;
335
+ subscriptionKey?: string | undefined;
336
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
337
+ isEnabled: boolean;
338
+ }, {
339
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
340
+ isEnabled: import("convex/values").VBoolean<boolean, "required">;
341
+ clientId: import("convex/values").VString<string | undefined, "optional">;
342
+ clientSecret: import("convex/values").VString<string | undefined, "optional">;
343
+ subscriptionKey: import("convex/values").VString<string | undefined, "optional">;
344
+ updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
345
+ }, "required", "provider" | "updatedAt" | "isEnabled" | "clientId" | "clientSecret" | "subscriptionKey">, {
346
+ by_provider: ["provider", "_creationTime"];
347
+ }, {}, {}>;
348
+ timeSeriesPolicyRules: import("convex/server").TableDefinition<import("convex/values").VObject<{
349
+ provider?: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google" | undefined;
350
+ seriesType?: string | undefined;
351
+ updatedAt: number;
352
+ policySetKind: "default" | "preset";
353
+ policySetKey: string;
354
+ scopeKey: string;
355
+ tiers: ({
356
+ kind: "raw";
357
+ fromAgeMs: number;
358
+ toAgeMs: number | null;
359
+ } | {
360
+ kind: "rollup";
361
+ bucketMs: number;
362
+ fromAgeMs: number;
363
+ toAgeMs: number | null;
364
+ aggregations: ("avg" | "min" | "max" | "last" | "count")[];
365
+ })[];
366
+ }, {
367
+ policySetKind: import("convex/values").VUnion<"default" | "preset", [import("convex/values").VLiteral<"default", "required">, import("convex/values").VLiteral<"preset", "required">], "required", never>;
368
+ policySetKey: import("convex/values").VString<string, "required">;
369
+ scopeKey: import("convex/values").VString<string, "required">;
370
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google" | undefined, [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "optional", never>;
371
+ seriesType: import("convex/values").VString<string | undefined, "optional">;
372
+ tiers: import("convex/values").VArray<({
373
+ kind: "raw";
374
+ fromAgeMs: number;
375
+ toAgeMs: number | null;
376
+ } | {
377
+ kind: "rollup";
378
+ bucketMs: number;
379
+ fromAgeMs: number;
380
+ toAgeMs: number | null;
381
+ aggregations: ("avg" | "min" | "max" | "last" | "count")[];
382
+ })[], import("convex/values").VUnion<{
383
+ kind: "raw";
384
+ fromAgeMs: number;
385
+ toAgeMs: number | null;
386
+ } | {
387
+ kind: "rollup";
388
+ bucketMs: number;
389
+ fromAgeMs: number;
390
+ toAgeMs: number | null;
391
+ aggregations: ("avg" | "min" | "max" | "last" | "count")[];
392
+ }, [import("convex/values").VObject<{
393
+ kind: "raw";
394
+ fromAgeMs: number;
395
+ toAgeMs: number | null;
396
+ }, {
397
+ kind: import("convex/values").VLiteral<"raw", "required">;
398
+ fromAgeMs: import("convex/values").VFloat64<number, "required">;
399
+ toAgeMs: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
400
+ }, "required", "kind" | "fromAgeMs" | "toAgeMs">, import("convex/values").VObject<{
401
+ kind: "rollup";
402
+ bucketMs: number;
403
+ fromAgeMs: number;
404
+ toAgeMs: number | null;
405
+ aggregations: ("avg" | "min" | "max" | "last" | "count")[];
406
+ }, {
407
+ kind: import("convex/values").VLiteral<"rollup", "required">;
408
+ fromAgeMs: import("convex/values").VFloat64<number, "required">;
409
+ toAgeMs: import("convex/values").VUnion<number | null, [import("convex/values").VFloat64<number, "required">, import("convex/values").VNull<null, "required">], "required", never>;
410
+ bucketMs: import("convex/values").VFloat64<number, "required">;
411
+ aggregations: import("convex/values").VArray<("avg" | "min" | "max" | "last" | "count")[], import("convex/values").VUnion<"avg" | "min" | "max" | "last" | "count", [import("convex/values").VLiteral<"avg", "required">, import("convex/values").VLiteral<"min", "required">, import("convex/values").VLiteral<"max", "required">, import("convex/values").VLiteral<"last", "required">, import("convex/values").VLiteral<"count", "required">], "required", never>, "required">;
412
+ }, "required", "kind" | "bucketMs" | "fromAgeMs" | "toAgeMs" | "aggregations">], "required", "kind" | "bucketMs" | "fromAgeMs" | "toAgeMs" | "aggregations">, "required">;
413
+ updatedAt: import("convex/values").VFloat64<number, "required">;
414
+ }, "required", "provider" | "seriesType" | "updatedAt" | "policySetKind" | "policySetKey" | "scopeKey" | "tiers">, {
415
+ by_set: ["policySetKind", "policySetKey", "_creationTime"];
416
+ by_set_scope: ["policySetKind", "policySetKey", "provider", "seriesType", "_creationTime"];
417
+ }, {}, {}>;
418
+ timeSeriesPolicyAssignments: import("convex/server").TableDefinition<import("convex/values").VObject<{
419
+ userId: string;
420
+ updatedAt: number;
421
+ presetKey: string;
422
+ }, {
423
+ userId: import("convex/values").VString<string, "required">;
424
+ presetKey: import("convex/values").VString<string, "required">;
425
+ updatedAt: import("convex/values").VFloat64<number, "required">;
426
+ }, "required", "userId" | "updatedAt" | "presetKey">, {
427
+ by_user: ["userId", "_creationTime"];
428
+ by_preset: ["presetKey", "_creationTime"];
429
+ }, {}, {}>;
430
+ timeSeriesPolicySettings: import("convex/server").TableDefinition<import("convex/values").VObject<{
431
+ scheduledAt?: number | undefined;
432
+ lastRunAt?: number | undefined;
433
+ lastError?: string | undefined;
434
+ updatedAt: number;
435
+ key: string;
436
+ maintenanceEnabled: boolean;
437
+ maintenanceIntervalMs: number;
438
+ }, {
439
+ key: import("convex/values").VString<string, "required">;
440
+ maintenanceEnabled: import("convex/values").VBoolean<boolean, "required">;
441
+ maintenanceIntervalMs: import("convex/values").VFloat64<number, "required">;
442
+ scheduledAt: import("convex/values").VFloat64<number | undefined, "optional">;
443
+ lastRunAt: import("convex/values").VFloat64<number | undefined, "optional">;
444
+ lastError: import("convex/values").VString<string | undefined, "optional">;
445
+ updatedAt: import("convex/values").VFloat64<number, "required">;
446
+ }, "required", "updatedAt" | "key" | "maintenanceEnabled" | "maintenanceIntervalMs" | "scheduledAt" | "lastRunAt" | "lastError">, {
447
+ by_key: ["key", "_creationTime"];
448
+ }, {}, {}>;
449
+ timeSeriesSeriesState: import("convex/server").TableDefinition<import("convex/values").VObject<{
450
+ connectionId?: import("convex/values").GenericId<"connections"> | undefined;
451
+ lastMaintenanceAt?: number | undefined;
452
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
453
+ userId: string;
454
+ dataSourceId: import("convex/values").GenericId<"dataSources">;
455
+ seriesType: string;
456
+ updatedAt: number;
457
+ latestRecordedAt: number;
458
+ lastIngestedAt: number;
459
+ nextMaintenanceAt: number;
460
+ }, {
461
+ dataSourceId: import("convex/values").VId<import("convex/values").GenericId<"dataSources">, "required">;
462
+ connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections"> | undefined, "optional">;
463
+ userId: import("convex/values").VString<string, "required">;
464
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
465
+ seriesType: import("convex/values").VString<string, "required">;
466
+ latestRecordedAt: import("convex/values").VFloat64<number, "required">;
467
+ lastIngestedAt: import("convex/values").VFloat64<number, "required">;
468
+ nextMaintenanceAt: import("convex/values").VFloat64<number, "required">;
469
+ lastMaintenanceAt: import("convex/values").VFloat64<number | undefined, "optional">;
470
+ updatedAt: import("convex/values").VFloat64<number, "required">;
471
+ }, "required", "provider" | "userId" | "connectionId" | "dataSourceId" | "seriesType" | "updatedAt" | "latestRecordedAt" | "lastIngestedAt" | "nextMaintenanceAt" | "lastMaintenanceAt">, {
472
+ by_source_series: ["dataSourceId", "seriesType", "_creationTime"];
473
+ by_next_maintenance: ["nextMaintenanceAt", "_creationTime"];
474
+ by_user: ["userId", "_creationTime"];
475
+ }, {}, {}>;
476
+ providerPriorities: import("convex/server").TableDefinition<import("convex/values").VObject<{
477
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
478
+ priority: number;
479
+ }, {
480
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
481
+ priority: import("convex/values").VFloat64<number, "required">;
482
+ }, "required", "provider" | "priority">, {
483
+ by_provider: ["provider", "_creationTime"];
484
+ by_priority: ["priority", "_creationTime"];
485
+ }, {}, {}>;
486
+ menstrualCycles: import("convex/server").TableDefinition<import("convex/values").VObject<{
487
+ externalId?: string | undefined;
488
+ currentPhase?: number | undefined;
489
+ dayInCycle?: number | undefined;
490
+ cycleLength?: number | undefined;
491
+ predictedCycleLength?: number | undefined;
492
+ periodLength?: number | undefined;
493
+ currentPhaseType?: string | undefined;
494
+ lengthOfCurrentPhase?: number | undefined;
495
+ daysUntilNextPhase?: number | undefined;
496
+ isPredictedCycle?: boolean | undefined;
497
+ fertileWindowStart?: number | undefined;
498
+ lengthOfFertileWindow?: number | undefined;
499
+ lastUpdatedAt?: number | undefined;
500
+ isPregnant?: boolean | undefined;
501
+ pregnancyDueDate?: string | undefined;
502
+ pregnancyOriginalDueDate?: string | undefined;
503
+ pregnancyCycleStartDate?: string | undefined;
504
+ pregnancyTitle?: string | undefined;
505
+ numberOfBabies?: string | undefined;
506
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
507
+ userId: string;
508
+ periodStartDate: string;
509
+ }, {
510
+ userId: import("convex/values").VString<string, "required">;
511
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
512
+ externalId: import("convex/values").VString<string | undefined, "optional">;
513
+ periodStartDate: import("convex/values").VString<string, "required">;
514
+ dayInCycle: import("convex/values").VFloat64<number | undefined, "optional">;
515
+ cycleLength: import("convex/values").VFloat64<number | undefined, "optional">;
516
+ predictedCycleLength: import("convex/values").VFloat64<number | undefined, "optional">;
517
+ periodLength: import("convex/values").VFloat64<number | undefined, "optional">;
518
+ currentPhase: import("convex/values").VFloat64<number | undefined, "optional">;
519
+ currentPhaseType: import("convex/values").VString<string | undefined, "optional">;
520
+ lengthOfCurrentPhase: import("convex/values").VFloat64<number | undefined, "optional">;
521
+ daysUntilNextPhase: import("convex/values").VFloat64<number | undefined, "optional">;
522
+ isPredictedCycle: import("convex/values").VBoolean<boolean | undefined, "optional">;
523
+ fertileWindowStart: import("convex/values").VFloat64<number | undefined, "optional">;
524
+ lengthOfFertileWindow: import("convex/values").VFloat64<number | undefined, "optional">;
525
+ lastUpdatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
526
+ isPregnant: import("convex/values").VBoolean<boolean | undefined, "optional">;
527
+ pregnancyDueDate: import("convex/values").VString<string | undefined, "optional">;
528
+ pregnancyOriginalDueDate: import("convex/values").VString<string | undefined, "optional">;
529
+ pregnancyCycleStartDate: import("convex/values").VString<string | undefined, "optional">;
530
+ pregnancyTitle: import("convex/values").VString<string | undefined, "optional">;
531
+ numberOfBabies: import("convex/values").VString<string | undefined, "optional">;
532
+ }, "required", "provider" | "userId" | "externalId" | "currentPhase" | "periodStartDate" | "dayInCycle" | "cycleLength" | "predictedCycleLength" | "periodLength" | "currentPhaseType" | "lengthOfCurrentPhase" | "daysUntilNextPhase" | "isPredictedCycle" | "fertileWindowStart" | "lengthOfFertileWindow" | "lastUpdatedAt" | "isPregnant" | "pregnancyDueDate" | "pregnancyOriginalDueDate" | "pregnancyCycleStartDate" | "pregnancyTitle" | "numberOfBabies">, {
533
+ by_user_date: ["userId", "periodStartDate", "_creationTime"];
534
+ by_user_provider: ["userId", "provider", "_creationTime"];
535
+ by_external_id: ["externalId", "_creationTime"];
536
+ }, {}, {}>;
537
+ backfillJobs: import("convex/server").TableDefinition<import("convex/values").VObject<{
538
+ error?: string | undefined;
539
+ completedAt?: number | undefined;
540
+ workflowId?: string | undefined;
541
+ windowStart?: number | undefined;
542
+ windowEnd?: number | undefined;
543
+ lastHeartbeatAt?: number | undefined;
544
+ currentDataType?: string | undefined;
545
+ currentAttempt?: number | undefined;
546
+ currentEventId?: string | undefined;
547
+ completedDataTypes?: string[] | undefined;
548
+ startedAt: number;
549
+ provider: "garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google";
550
+ status: "failed" | "canceled" | "running" | "completed" | "queued";
551
+ userId: string;
552
+ connectionId: import("convex/values").GenericId<"connections">;
553
+ dataType: string;
554
+ }, {
555
+ connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections">, "required">;
556
+ userId: import("convex/values").VString<string, "required">;
557
+ provider: import("convex/values").VUnion<"garmin" | "suunto" | "polar" | "whoop" | "strava" | "apple" | "samsung" | "google", [import("convex/values").VLiteral<"garmin", "required">, import("convex/values").VLiteral<"suunto", "required">, import("convex/values").VLiteral<"polar", "required">, import("convex/values").VLiteral<"whoop", "required">, import("convex/values").VLiteral<"strava", "required">, import("convex/values").VLiteral<"apple", "required">, import("convex/values").VLiteral<"samsung", "required">, import("convex/values").VLiteral<"google", "required">], "required", never>;
558
+ dataType: import("convex/values").VString<string, "required">;
559
+ status: import("convex/values").VUnion<"failed" | "canceled" | "running" | "completed" | "queued", [import("convex/values").VLiteral<"queued", "required">, import("convex/values").VLiteral<"running", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"canceled", "required">], "required", never>;
560
+ startedAt: import("convex/values").VFloat64<number, "required">;
561
+ completedAt: import("convex/values").VFloat64<number | undefined, "optional">;
562
+ error: import("convex/values").VString<string | undefined, "optional">;
563
+ workflowId: import("convex/values").VString<string | undefined, "optional">;
564
+ windowStart: import("convex/values").VFloat64<number | undefined, "optional">;
565
+ windowEnd: import("convex/values").VFloat64<number | undefined, "optional">;
566
+ currentDataType: import("convex/values").VString<string | undefined, "optional">;
567
+ currentAttempt: import("convex/values").VFloat64<number | undefined, "optional">;
568
+ currentEventId: import("convex/values").VString<string | undefined, "optional">;
569
+ completedDataTypes: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
570
+ lastHeartbeatAt: import("convex/values").VFloat64<number | undefined, "optional">;
571
+ }, "required", "error" | "startedAt" | "completedAt" | "workflowId" | "provider" | "status" | "userId" | "connectionId" | "windowStart" | "windowEnd" | "lastHeartbeatAt" | "dataType" | "currentDataType" | "currentAttempt" | "currentEventId" | "completedDataTypes">, {
572
+ by_connection: ["connectionId", "_creationTime"];
573
+ by_connection_type: ["connectionId", "dataType", "_creationTime"];
574
+ by_status: ["status", "_creationTime"];
575
+ by_workflow: ["workflowId", "_creationTime"];
576
+ }, {}, {}>;
577
+ }, true>;
578
+ modules: Record<string, () => Promise<unknown>>;
579
+ };
580
+ export default _default;
581
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EACvD,IAAI,GAAE,MAAoB,QAK3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAA6C"}