@fytkit/sdk 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,1554 @@
1
+ import { $strip } from 'zod/v4/core';
2
+ import { DecoratedProcedure } from '@orpc/server';
3
+ import { MergedCurrentContext } from '@orpc/server';
4
+ import { MergedInitialContext } from '@orpc/server';
5
+ import type { RouterClient } from '@orpc/server';
6
+ import { Schema } from '@orpc/server';
7
+ import { ZodArray } from 'zod';
8
+ import { ZodBoolean } from 'zod';
9
+ import { ZodCoercedNumber } from 'zod';
10
+ import { ZodDate } from 'zod';
11
+ import { ZodDefault } from 'zod';
12
+ import { ZodEnum } from 'zod';
13
+ import { ZodLiteral } from 'zod';
14
+ import { ZodNullable } from 'zod';
15
+ import { ZodNumber } from 'zod';
16
+ import { ZodObject } from 'zod';
17
+ import { ZodOptional } from 'zod';
18
+ import { ZodString } from 'zod';
19
+
20
+ declare interface ApiKeyContext {
21
+ readonly trainerId: string;
22
+ readonly clientId?: string;
23
+ readonly hasActiveSubscription: boolean;
24
+ readonly authMode: "session" | "api-key" | "dev-app";
25
+ }
26
+
27
+ /** Auth-state events emitted on `onAuthStateChange`. */
28
+ export declare type AuthState = {
29
+ readonly type: "signed_in";
30
+ readonly session: Session;
31
+ } | {
32
+ readonly type: "signed_out";
33
+ } | {
34
+ readonly type: "session_refreshed";
35
+ readonly session: Session;
36
+ }
37
+ /**
38
+ * Reserved for a future backend that implements refresh-token rotation
39
+ * with reuse detection. The current Better-Auth bearer-plugin backend has
40
+ * no reuse-detection step, so the SDK never emits this in v0.1.0-pre. The
41
+ * variant exists so trainer apps can pattern-match on it today and not
42
+ * need a typecheck change when reuse detection ships.
43
+ */
44
+ | {
45
+ readonly type: "signed_out_due_to_token_reuse";
46
+ };
47
+
48
+ export declare function createFytkitClient(options: FytkitClientOptions): FytkitClient;
49
+
50
+ /**
51
+ * Default web storage. Reads/writes JSON under `fytkit:{clientId}:tokens`.
52
+ * Silently no-ops when localStorage throws (Safari private mode, SSR).
53
+ */
54
+ export declare function createLocalStorageAdapter(clientId: string): TokenStorage;
55
+
56
+ /** In-memory storage. Useful for tests and SSR. */
57
+ export declare function createMemoryStorageAdapter(): TokenStorage;
58
+
59
+ /** The full SDK client surface. `auth.*` plus the public-router slices, minus auth (those live on `client.auth`). */
60
+ export declare interface FytkitClient {
61
+ readonly auth: {
62
+ signUp: (input: {
63
+ email: string;
64
+ password: string;
65
+ name: string;
66
+ }) => Promise<Session>;
67
+ signIn: (input: {
68
+ email: string;
69
+ password: string;
70
+ }) => Promise<Session>;
71
+ signOut: () => Promise<void>;
72
+ /** Synchronously read the cached session, if any. */
73
+ getSession: () => Session | null;
74
+ /** Subscribe to auth-state changes. Returns an unsubscribe function. */
75
+ onAuthStateChange: (listener: (state: AuthState) => void) => () => void;
76
+ requestPasswordReset: (input: {
77
+ email: string;
78
+ }) => Promise<void>;
79
+ confirmPasswordReset: (input: {
80
+ token: string;
81
+ password: string;
82
+ }) => Promise<void>;
83
+ confirmEmail: (input: {
84
+ token: string;
85
+ }) => Promise<void>;
86
+ };
87
+ readonly workouts: PublicApi["workout"];
88
+ readonly programs: PublicApi["program"];
89
+ readonly recipes: PublicApi["recipe"];
90
+ readonly nutrition: PublicApi["nutrition"];
91
+ readonly articles: PublicApi["article"];
92
+ readonly enrollments: PublicApi["enrollment"];
93
+ readonly sessionLogs: PublicApi["sessionLog"];
94
+ readonly progression: PublicApi["progression"];
95
+ readonly media: PublicApi["media"];
96
+ readonly appConfig: PublicApi["appConfig"];
97
+ readonly subscription: PublicApi["subscription"];
98
+ }
99
+
100
+ /** Constructor options for createFytkitClient. */
101
+ export declare interface FytkitClientOptions {
102
+ readonly clientId: string;
103
+ readonly baseUrl?: string;
104
+ readonly storage?: TokenStorage;
105
+ readonly fetch?: typeof fetch;
106
+ }
107
+
108
+ /** Normalized error shape — the SDK never throws raw network/orpc errors. */
109
+ export declare type FytkitError = {
110
+ readonly kind: "auth_required";
111
+ } | {
112
+ readonly kind: "forbidden";
113
+ readonly reason: string;
114
+ } | {
115
+ readonly kind: "not_found";
116
+ } | {
117
+ readonly kind: "rate_limited";
118
+ readonly retryAfter: number;
119
+ } | {
120
+ readonly kind: "validation";
121
+ readonly issues: readonly unknown[];
122
+ } | {
123
+ readonly kind: "server";
124
+ readonly status: number;
125
+ } | {
126
+ readonly kind: "network";
127
+ };
128
+
129
+ export declare type PublicApi = RouterClient<PublicRouter>;
130
+
131
+ declare type PublicRouter = typeof publicRouter;
132
+
133
+ declare const publicRouter: {
134
+ auth: {
135
+ signUp: DecoratedProcedure<MergedInitialContext< {
136
+ headers: Headers;
137
+ } & Record<never, never>, {
138
+ headers: Headers;
139
+ } & Record<never, never>, {
140
+ headers: Headers;
141
+ }>, MergedCurrentContext< {
142
+ headers: Headers;
143
+ }, {
144
+ trainerId: string;
145
+ appId: string;
146
+ clientId: string | undefined;
147
+ hasActiveSubscription: boolean;
148
+ authMode: "dev-app";
149
+ }>, ZodObject< {
150
+ email: ZodString;
151
+ password: ZodString;
152
+ name: ZodString;
153
+ }, $strip>, ZodObject< {
154
+ data: ZodObject< {
155
+ user: ZodObject< {
156
+ id: ZodString;
157
+ email: ZodString;
158
+ }, $strip>;
159
+ session: ZodObject< {
160
+ accessToken: ZodString;
161
+ expiresAt: ZodString;
162
+ }, $strip>;
163
+ }, $strip>;
164
+ }, $strip>, Record<never, never>, Record<never, never>>;
165
+ signIn: DecoratedProcedure<MergedInitialContext< {
166
+ headers: Headers;
167
+ } & Record<never, never>, {
168
+ headers: Headers;
169
+ } & Record<never, never>, {
170
+ headers: Headers;
171
+ }>, MergedCurrentContext< {
172
+ headers: Headers;
173
+ }, {
174
+ trainerId: string;
175
+ appId: string;
176
+ clientId: string | undefined;
177
+ hasActiveSubscription: boolean;
178
+ authMode: "dev-app";
179
+ }>, ZodObject< {
180
+ email: ZodString;
181
+ password: ZodString;
182
+ }, $strip>, ZodObject< {
183
+ data: ZodObject< {
184
+ user: ZodObject< {
185
+ id: ZodString;
186
+ email: ZodString;
187
+ }, $strip>;
188
+ session: ZodObject< {
189
+ accessToken: ZodString;
190
+ expiresAt: ZodString;
191
+ }, $strip>;
192
+ }, $strip>;
193
+ }, $strip>, Record<never, never>, Record<never, never>>;
194
+ signOut: DecoratedProcedure<MergedInitialContext< {
195
+ headers: Headers;
196
+ } & Record<never, never>, {
197
+ headers: Headers;
198
+ } & Record<never, never>, {
199
+ headers: Headers;
200
+ }>, MergedCurrentContext< {
201
+ headers: Headers;
202
+ }, {
203
+ trainerId: string;
204
+ appId: string;
205
+ clientId: string | undefined;
206
+ hasActiveSubscription: boolean;
207
+ authMode: "dev-app";
208
+ }>, ZodObject< {
209
+ token: ZodString;
210
+ }, $strip>, ZodObject< {
211
+ data: ZodObject< {
212
+ ok: ZodLiteral<true>;
213
+ }, $strip>;
214
+ }, $strip>, Record<never, never>, Record<never, never>>;
215
+ refresh: DecoratedProcedure<MergedInitialContext< {
216
+ headers: Headers;
217
+ } & Record<never, never>, {
218
+ headers: Headers;
219
+ } & Record<never, never>, {
220
+ headers: Headers;
221
+ }>, MergedCurrentContext< {
222
+ headers: Headers;
223
+ }, {
224
+ trainerId: string;
225
+ appId: string;
226
+ clientId: string | undefined;
227
+ hasActiveSubscription: boolean;
228
+ authMode: "dev-app";
229
+ }>, ZodObject< {
230
+ token: ZodString;
231
+ }, $strip>, ZodObject< {
232
+ data: ZodObject< {
233
+ user: ZodObject< {
234
+ id: ZodString;
235
+ email: ZodString;
236
+ }, $strip>;
237
+ session: ZodObject< {
238
+ accessToken: ZodString;
239
+ expiresAt: ZodString;
240
+ }, $strip>;
241
+ }, $strip>;
242
+ }, $strip>, Record<never, never>, Record<never, never>>;
243
+ requestPasswordReset: DecoratedProcedure<MergedInitialContext< {
244
+ headers: Headers;
245
+ } & Record<never, never>, {
246
+ headers: Headers;
247
+ } & Record<never, never>, {
248
+ headers: Headers;
249
+ }>, MergedCurrentContext< {
250
+ headers: Headers;
251
+ }, {
252
+ trainerId: string;
253
+ appId: string;
254
+ clientId: string | undefined;
255
+ hasActiveSubscription: boolean;
256
+ authMode: "dev-app";
257
+ }>, ZodObject< {
258
+ email: ZodString;
259
+ }, $strip>, ZodObject< {
260
+ data: ZodObject< {
261
+ ok: ZodLiteral<true>;
262
+ }, $strip>;
263
+ }, $strip>, Record<never, never>, Record<never, never>>;
264
+ confirmPasswordReset: DecoratedProcedure<MergedInitialContext< {
265
+ headers: Headers;
266
+ } & Record<never, never>, {
267
+ headers: Headers;
268
+ } & Record<never, never>, {
269
+ headers: Headers;
270
+ }>, MergedCurrentContext< {
271
+ headers: Headers;
272
+ }, {
273
+ trainerId: string;
274
+ appId: string;
275
+ clientId: string | undefined;
276
+ hasActiveSubscription: boolean;
277
+ authMode: "dev-app";
278
+ }>, ZodObject< {
279
+ token: ZodString;
280
+ password: ZodString;
281
+ }, $strip>, ZodObject< {
282
+ data: ZodObject< {
283
+ ok: ZodLiteral<true>;
284
+ }, $strip>;
285
+ }, $strip>, Record<never, never>, Record<never, never>>;
286
+ confirmEmail: DecoratedProcedure<MergedInitialContext< {
287
+ headers: Headers;
288
+ } & Record<never, never>, {
289
+ headers: Headers;
290
+ } & Record<never, never>, {
291
+ headers: Headers;
292
+ }>, MergedCurrentContext< {
293
+ headers: Headers;
294
+ }, {
295
+ trainerId: string;
296
+ appId: string;
297
+ clientId: string | undefined;
298
+ hasActiveSubscription: boolean;
299
+ authMode: "dev-app";
300
+ }>, ZodObject< {
301
+ token: ZodString;
302
+ }, $strip>, ZodObject< {
303
+ data: ZodObject< {
304
+ ok: ZodLiteral<true>;
305
+ }, $strip>;
306
+ }, $strip>, Record<never, never>, Record<never, never>>;
307
+ };
308
+ workout: {
309
+ list: DecoratedProcedure<MergedInitialContext< {
310
+ headers: Headers;
311
+ } & Record<never, never>, {
312
+ headers: Headers;
313
+ } & Record<never, never>, {
314
+ headers: Headers;
315
+ }>, MergedCurrentContext< {
316
+ headers: Headers;
317
+ }, ApiKeyContext>, ZodObject< {
318
+ cursor: ZodOptional<ZodString>;
319
+ limit: ZodDefault<ZodCoercedNumber<unknown>>;
320
+ categoryId: ZodOptional<ZodString>;
321
+ }, $strip>, ZodObject< {
322
+ data: ZodArray<ZodObject< {
323
+ id: ZodString;
324
+ trainerId: ZodString;
325
+ title: ZodString;
326
+ description: ZodString;
327
+ accessLevel: ZodEnum< {
328
+ free: "free";
329
+ premium: "premium";
330
+ }>;
331
+ status: ZodEnum< {
332
+ draft: "draft";
333
+ published: "published";
334
+ archived: "archived";
335
+ }>;
336
+ publishedAt: ZodNullable<ZodDate>;
337
+ videoAssetId: ZodNullable<ZodString>;
338
+ headerImageId: ZodNullable<ZodString>;
339
+ createdAt: ZodDate;
340
+ }, $strip>>;
341
+ meta: ZodObject< {
342
+ nextCursor: ZodNullable<ZodString>;
343
+ limit: ZodNumber;
344
+ }, $strip>;
345
+ }, $strip>, Record<never, never>, Record<never, never>>;
346
+ get: DecoratedProcedure<MergedInitialContext< {
347
+ headers: Headers;
348
+ } & Record<never, never>, {
349
+ headers: Headers;
350
+ } & Record<never, never>, {
351
+ headers: Headers;
352
+ }>, MergedCurrentContext< {
353
+ headers: Headers;
354
+ }, ApiKeyContext>, ZodObject< {
355
+ id: ZodString;
356
+ }, $strip>, ZodObject< {
357
+ data: ZodObject< {
358
+ id: ZodString;
359
+ trainerId: ZodString;
360
+ title: ZodString;
361
+ description: ZodString;
362
+ accessLevel: ZodEnum< {
363
+ free: "free";
364
+ premium: "premium";
365
+ }>;
366
+ status: ZodEnum< {
367
+ draft: "draft";
368
+ published: "published";
369
+ archived: "archived";
370
+ }>;
371
+ publishedAt: ZodNullable<ZodDate>;
372
+ videoAssetId: ZodNullable<ZodString>;
373
+ headerImageId: ZodNullable<ZodString>;
374
+ createdAt: ZodDate;
375
+ blocks: ZodArray<ZodObject< {
376
+ id: ZodString;
377
+ workoutId: ZodString;
378
+ title: ZodString;
379
+ order: ZodNumber;
380
+ videoTimestampSeconds: ZodNullable<ZodNumber>;
381
+ exercises: ZodArray<ZodObject< {
382
+ id: ZodString;
383
+ blockId: ZodString;
384
+ catalogueExerciseId: ZodNullable<ZodString>;
385
+ name: ZodString;
386
+ sets: ZodNullable<ZodNumber>;
387
+ reps: ZodNullable<ZodString>;
388
+ restSeconds: ZodNullable<ZodNumber>;
389
+ weightKg: ZodOptional<ZodNullable<ZodCoercedNumber<unknown>>>;
390
+ notes: ZodNullable<ZodString>;
391
+ order: ZodNumber;
392
+ videoTimestampSeconds: ZodNullable<ZodNumber>;
393
+ catalogueExercise: ZodNullable<ZodObject< {
394
+ difficulty: ZodEnum< {
395
+ beginner: "beginner";
396
+ intermediate: "intermediate";
397
+ advanced: "advanced";
398
+ }>;
399
+ muscleGroups: ZodArray<ZodString>;
400
+ equipment: ZodArray<ZodString>;
401
+ videoAssetId: ZodNullable<ZodString>;
402
+ }, $strip>>;
403
+ }, $strip>>;
404
+ }, $strip>>;
405
+ categories: ZodArray<ZodObject< {
406
+ id: ZodString;
407
+ name: ZodString;
408
+ }, $strip>>;
409
+ }, $strip>;
410
+ }, $strip>, Record<never, never>, Record<never, never>>;
411
+ getPlayback: DecoratedProcedure<MergedInitialContext< {
412
+ headers: Headers;
413
+ } & Record<never, never>, {
414
+ headers: Headers;
415
+ } & Record<never, never>, {
416
+ headers: Headers;
417
+ }>, MergedCurrentContext< {
418
+ headers: Headers;
419
+ }, ApiKeyContext>, ZodObject< {
420
+ id: ZodString;
421
+ }, $strip>, ZodObject< {
422
+ data: ZodObject< {
423
+ playbackId: ZodString;
424
+ playbackToken: ZodString;
425
+ expiresAt: ZodDate;
426
+ thumbnailToken: ZodString;
427
+ thumbnailUrl: ZodString;
428
+ duration: ZodNullable<ZodNumber>;
429
+ aspectRatio: ZodNullable<ZodString>;
430
+ }, $strip>;
431
+ }, $strip>, Record<never, never>, Record<never, never>>;
432
+ browse: DecoratedProcedure<MergedInitialContext< {
433
+ headers: Headers;
434
+ } & Record<never, never>, {
435
+ headers: Headers;
436
+ } & Record<never, never>, {
437
+ headers: Headers;
438
+ }>, MergedCurrentContext< {
439
+ headers: Headers;
440
+ }, ApiKeyContext>, ZodObject< {
441
+ previewLimit: ZodDefault<ZodCoercedNumber<unknown>>;
442
+ }, $strip>, ZodObject< {
443
+ data: ZodObject< {
444
+ allWorkouts: ZodArray<ZodObject< {
445
+ id: ZodString;
446
+ trainerId: ZodString;
447
+ title: ZodString;
448
+ description: ZodString;
449
+ accessLevel: ZodEnum< {
450
+ free: "free";
451
+ premium: "premium";
452
+ }>;
453
+ status: ZodEnum< {
454
+ draft: "draft";
455
+ published: "published";
456
+ archived: "archived";
457
+ }>;
458
+ publishedAt: ZodNullable<ZodDate>;
459
+ videoAssetId: ZodNullable<ZodString>;
460
+ headerImageId: ZodNullable<ZodString>;
461
+ createdAt: ZodDate;
462
+ }, $strip>>;
463
+ allWorkoutsNextCursor: ZodNullable<ZodString>;
464
+ categories: ZodArray<ZodObject< {
465
+ id: ZodString;
466
+ name: ZodString;
467
+ displayOrder: ZodNumber;
468
+ workouts: ZodArray<ZodObject< {
469
+ id: ZodString;
470
+ trainerId: ZodString;
471
+ title: ZodString;
472
+ description: ZodString;
473
+ accessLevel: ZodEnum< {
474
+ free: "free";
475
+ premium: "premium";
476
+ }>;
477
+ status: ZodEnum< {
478
+ draft: "draft";
479
+ published: "published";
480
+ archived: "archived";
481
+ }>;
482
+ publishedAt: ZodNullable<ZodDate>;
483
+ videoAssetId: ZodNullable<ZodString>;
484
+ headerImageId: ZodNullable<ZodString>;
485
+ createdAt: ZodDate;
486
+ }, $strip>>;
487
+ nextCursor: ZodNullable<ZodString>;
488
+ }, $strip>>;
489
+ }, $strip>;
490
+ }, $strip>, Record<never, never>, Record<never, never>>;
491
+ };
492
+ nutrition: {
493
+ list: DecoratedProcedure<MergedInitialContext< {
494
+ headers: Headers;
495
+ } & Record<never, never>, {
496
+ headers: Headers;
497
+ } & Record<never, never>, {
498
+ headers: Headers;
499
+ }>, MergedCurrentContext< {
500
+ headers: Headers;
501
+ }, ApiKeyContext>, ZodObject< {
502
+ cursor: ZodOptional<ZodString>;
503
+ limit: ZodDefault<ZodCoercedNumber<unknown>>;
504
+ }, $strip>, ZodObject< {
505
+ data: ZodArray<ZodObject< {
506
+ id: ZodString;
507
+ trainerId: ZodString;
508
+ title: ZodString;
509
+ description: ZodString;
510
+ accessLevel: ZodEnum< {
511
+ free: "free";
512
+ premium: "premium";
513
+ }>;
514
+ status: ZodEnum< {
515
+ draft: "draft";
516
+ published: "published";
517
+ archived: "archived";
518
+ }>;
519
+ publishedAt: ZodNullable<ZodDate>;
520
+ headerImageId: ZodNullable<ZodString>;
521
+ createdAt: ZodDate;
522
+ }, $strip>>;
523
+ meta: ZodObject< {
524
+ nextCursor: ZodNullable<ZodString>;
525
+ limit: ZodNumber;
526
+ }, $strip>;
527
+ }, $strip>, Record<never, never>, Record<never, never>>;
528
+ get: DecoratedProcedure<MergedInitialContext< {
529
+ headers: Headers;
530
+ } & Record<never, never>, {
531
+ headers: Headers;
532
+ } & Record<never, never>, {
533
+ headers: Headers;
534
+ }>, MergedCurrentContext< {
535
+ headers: Headers;
536
+ }, ApiKeyContext>, ZodObject< {
537
+ id: ZodString;
538
+ }, $strip>, ZodObject< {
539
+ data: ZodObject< {
540
+ id: ZodString;
541
+ trainerId: ZodString;
542
+ title: ZodString;
543
+ description: ZodString;
544
+ accessLevel: ZodEnum< {
545
+ free: "free";
546
+ premium: "premium";
547
+ }>;
548
+ status: ZodEnum< {
549
+ draft: "draft";
550
+ published: "published";
551
+ archived: "archived";
552
+ }>;
553
+ publishedAt: ZodNullable<ZodDate>;
554
+ headerImageId: ZodNullable<ZodString>;
555
+ createdAt: ZodDate;
556
+ meals: ZodArray<ZodObject< {
557
+ id: ZodString;
558
+ planId: ZodString;
559
+ name: ZodString;
560
+ order: ZodNumber;
561
+ items: ZodArray<ZodObject< {
562
+ id: ZodString;
563
+ mealId: ZodString;
564
+ recipeId: ZodString;
565
+ order: ZodNumber;
566
+ recipe: ZodObject< {
567
+ id: ZodString;
568
+ trainerId: ZodString;
569
+ name: ZodString;
570
+ category: ZodEnum< {
571
+ breakfast: "breakfast";
572
+ lunch: "lunch";
573
+ dinner: "dinner";
574
+ snack: "snack";
575
+ }>;
576
+ calories: ZodNullable<ZodNumber>;
577
+ protein: ZodNullable<ZodString>;
578
+ carbs: ZodNullable<ZodString>;
579
+ fat: ZodNullable<ZodString>;
580
+ prepTime: ZodNullable<ZodNumber>;
581
+ servings: ZodNumber;
582
+ accessLevel: ZodEnum< {
583
+ free: "free";
584
+ premium: "premium";
585
+ }>;
586
+ status: ZodEnum< {
587
+ draft: "draft";
588
+ published: "published";
589
+ archived: "archived";
590
+ }>;
591
+ publishedAt: ZodNullable<ZodDate>;
592
+ headerImageId: ZodNullable<ZodString>;
593
+ createdAt: ZodDate;
594
+ }, $strip>;
595
+ }, $strip>>;
596
+ }, $strip>>;
597
+ }, $strip>;
598
+ }, $strip>, Record<never, never>, Record<never, never>>;
599
+ };
600
+ article: {
601
+ list: DecoratedProcedure<MergedInitialContext< {
602
+ headers: Headers;
603
+ } & Record<never, never>, {
604
+ headers: Headers;
605
+ } & Record<never, never>, {
606
+ headers: Headers;
607
+ }>, MergedCurrentContext< {
608
+ headers: Headers;
609
+ }, ApiKeyContext>, ZodObject< {
610
+ cursor: ZodOptional<ZodString>;
611
+ limit: ZodDefault<ZodCoercedNumber<unknown>>;
612
+ }, $strip>, ZodObject< {
613
+ data: ZodArray<ZodObject< {
614
+ id: ZodString;
615
+ trainerId: ZodString;
616
+ title: ZodString;
617
+ slug: ZodString;
618
+ body: ZodString;
619
+ accessLevel: ZodEnum< {
620
+ free: "free";
621
+ premium: "premium";
622
+ }>;
623
+ status: ZodEnum< {
624
+ draft: "draft";
625
+ published: "published";
626
+ archived: "archived";
627
+ }>;
628
+ publishedAt: ZodNullable<ZodDate>;
629
+ createdAt: ZodDate;
630
+ }, $strip>>;
631
+ meta: ZodObject< {
632
+ nextCursor: ZodNullable<ZodString>;
633
+ limit: ZodNumber;
634
+ }, $strip>;
635
+ }, $strip>, Record<never, never>, Record<never, never>>;
636
+ get: DecoratedProcedure<MergedInitialContext< {
637
+ headers: Headers;
638
+ } & Record<never, never>, {
639
+ headers: Headers;
640
+ } & Record<never, never>, {
641
+ headers: Headers;
642
+ }>, MergedCurrentContext< {
643
+ headers: Headers;
644
+ }, ApiKeyContext>, ZodObject< {
645
+ slug: ZodString;
646
+ }, $strip>, ZodObject< {
647
+ data: ZodObject< {
648
+ id: ZodString;
649
+ trainerId: ZodString;
650
+ title: ZodString;
651
+ slug: ZodString;
652
+ body: ZodString;
653
+ accessLevel: ZodEnum< {
654
+ free: "free";
655
+ premium: "premium";
656
+ }>;
657
+ status: ZodEnum< {
658
+ draft: "draft";
659
+ published: "published";
660
+ archived: "archived";
661
+ }>;
662
+ publishedAt: ZodNullable<ZodDate>;
663
+ createdAt: ZodDate;
664
+ }, $strip>;
665
+ }, $strip>, Record<never, never>, Record<never, never>>;
666
+ };
667
+ recipe: {
668
+ list: DecoratedProcedure<MergedInitialContext< {
669
+ headers: Headers;
670
+ } & Record<never, never>, {
671
+ headers: Headers;
672
+ } & Record<never, never>, {
673
+ headers: Headers;
674
+ }>, MergedCurrentContext< {
675
+ headers: Headers;
676
+ }, ApiKeyContext>, ZodObject< {
677
+ cursor: ZodOptional<ZodString>;
678
+ limit: ZodDefault<ZodCoercedNumber<unknown>>;
679
+ category: ZodOptional<ZodEnum< {
680
+ breakfast: "breakfast";
681
+ lunch: "lunch";
682
+ dinner: "dinner";
683
+ snack: "snack";
684
+ }>>;
685
+ }, $strip>, ZodObject< {
686
+ data: ZodArray<ZodObject< {
687
+ id: ZodString;
688
+ trainerId: ZodString;
689
+ name: ZodString;
690
+ category: ZodEnum< {
691
+ breakfast: "breakfast";
692
+ lunch: "lunch";
693
+ dinner: "dinner";
694
+ snack: "snack";
695
+ }>;
696
+ calories: ZodNullable<ZodNumber>;
697
+ protein: ZodNullable<ZodString>;
698
+ carbs: ZodNullable<ZodString>;
699
+ fat: ZodNullable<ZodString>;
700
+ prepTime: ZodNullable<ZodNumber>;
701
+ servings: ZodNumber;
702
+ accessLevel: ZodEnum< {
703
+ free: "free";
704
+ premium: "premium";
705
+ }>;
706
+ status: ZodEnum< {
707
+ draft: "draft";
708
+ published: "published";
709
+ archived: "archived";
710
+ }>;
711
+ publishedAt: ZodNullable<ZodDate>;
712
+ headerImageId: ZodNullable<ZodString>;
713
+ createdAt: ZodDate;
714
+ }, $strip>>;
715
+ meta: ZodObject< {
716
+ nextCursor: ZodNullable<ZodString>;
717
+ limit: ZodNumber;
718
+ }, $strip>;
719
+ }, $strip>, Record<never, never>, Record<never, never>>;
720
+ get: DecoratedProcedure<MergedInitialContext< {
721
+ headers: Headers;
722
+ } & Record<never, never>, {
723
+ headers: Headers;
724
+ } & Record<never, never>, {
725
+ headers: Headers;
726
+ }>, MergedCurrentContext< {
727
+ headers: Headers;
728
+ }, ApiKeyContext>, ZodObject< {
729
+ id: ZodString;
730
+ }, $strip>, ZodObject< {
731
+ data: ZodObject< {
732
+ id: ZodString;
733
+ trainerId: ZodString;
734
+ name: ZodString;
735
+ category: ZodEnum< {
736
+ breakfast: "breakfast";
737
+ lunch: "lunch";
738
+ dinner: "dinner";
739
+ snack: "snack";
740
+ }>;
741
+ calories: ZodNullable<ZodNumber>;
742
+ protein: ZodNullable<ZodString>;
743
+ carbs: ZodNullable<ZodString>;
744
+ fat: ZodNullable<ZodString>;
745
+ prepTime: ZodNullable<ZodNumber>;
746
+ servings: ZodNumber;
747
+ accessLevel: ZodEnum< {
748
+ free: "free";
749
+ premium: "premium";
750
+ }>;
751
+ status: ZodEnum< {
752
+ draft: "draft";
753
+ published: "published";
754
+ archived: "archived";
755
+ }>;
756
+ publishedAt: ZodNullable<ZodDate>;
757
+ headerImageId: ZodNullable<ZodString>;
758
+ createdAt: ZodDate;
759
+ ingredients: ZodArray<ZodObject< {
760
+ id: ZodString;
761
+ recipeId: ZodString;
762
+ name: ZodString;
763
+ quantity: ZodNullable<ZodString>;
764
+ unit: ZodNullable<ZodString>;
765
+ calories: ZodNullable<ZodNumber>;
766
+ notes: ZodNullable<ZodString>;
767
+ substitution: ZodNullable<ZodString>;
768
+ order: ZodNumber;
769
+ }, $strip>>;
770
+ instructions: ZodArray<ZodObject< {
771
+ id: ZodString;
772
+ recipeId: ZodString;
773
+ step: ZodString;
774
+ detail: ZodNullable<ZodString>;
775
+ order: ZodNumber;
776
+ }, $strip>>;
777
+ }, $strip>;
778
+ }, $strip>, Record<never, never>, Record<never, never>>;
779
+ };
780
+ program: {
781
+ list: DecoratedProcedure<MergedInitialContext< {
782
+ headers: Headers;
783
+ } & Record<never, never>, {
784
+ headers: Headers;
785
+ } & Record<never, never>, {
786
+ headers: Headers;
787
+ }>, MergedCurrentContext< {
788
+ headers: Headers;
789
+ }, ApiKeyContext>, ZodObject< {
790
+ cursor: ZodOptional<ZodString>;
791
+ limit: ZodDefault<ZodCoercedNumber<unknown>>;
792
+ difficulty: ZodOptional<ZodEnum< {
793
+ beginner: "beginner";
794
+ intermediate: "intermediate";
795
+ advanced: "advanced";
796
+ }>>;
797
+ }, $strip>, ZodObject< {
798
+ data: ZodArray<ZodObject< {
799
+ id: ZodString;
800
+ trainerId: ZodString;
801
+ title: ZodString;
802
+ description: ZodString;
803
+ accessLevel: ZodEnum< {
804
+ free: "free";
805
+ premium: "premium";
806
+ }>;
807
+ status: ZodEnum< {
808
+ draft: "draft";
809
+ published: "published";
810
+ archived: "archived";
811
+ }>;
812
+ difficulty: ZodNullable<ZodEnum< {
813
+ beginner: "beginner";
814
+ intermediate: "intermediate";
815
+ advanced: "advanced";
816
+ }>>;
817
+ coverImageId: ZodNullable<ZodString>;
818
+ publishedAt: ZodNullable<ZodString>;
819
+ createdAt: ZodString;
820
+ }, $strip>>;
821
+ meta: ZodObject< {
822
+ nextCursor: ZodNullable<ZodString>;
823
+ limit: ZodNumber;
824
+ }, $strip>;
825
+ }, $strip>, Record<never, never>, Record<never, never>>;
826
+ get: DecoratedProcedure<MergedInitialContext< {
827
+ headers: Headers;
828
+ } & Record<never, never>, {
829
+ headers: Headers;
830
+ } & Record<never, never>, {
831
+ headers: Headers;
832
+ }>, MergedCurrentContext< {
833
+ headers: Headers;
834
+ }, ApiKeyContext>, ZodObject< {
835
+ id: ZodString;
836
+ }, $strip>, ZodObject< {
837
+ data: ZodObject< {
838
+ id: ZodString;
839
+ trainerId: ZodString;
840
+ title: ZodString;
841
+ description: ZodString;
842
+ accessLevel: ZodEnum< {
843
+ free: "free";
844
+ premium: "premium";
845
+ }>;
846
+ status: ZodEnum< {
847
+ draft: "draft";
848
+ published: "published";
849
+ archived: "archived";
850
+ }>;
851
+ difficulty: ZodNullable<ZodEnum< {
852
+ beginner: "beginner";
853
+ intermediate: "intermediate";
854
+ advanced: "advanced";
855
+ }>>;
856
+ coverImageId: ZodNullable<ZodString>;
857
+ publishedAt: ZodNullable<ZodString>;
858
+ createdAt: ZodString;
859
+ goal: ZodNullable<ZodEnum< {
860
+ strength: "strength";
861
+ hypertrophy: "hypertrophy";
862
+ conditioning: "conditioning";
863
+ fat_loss: "fat_loss";
864
+ general: "general";
865
+ }>>;
866
+ sessionsPerWeek: ZodNullable<ZodNumber>;
867
+ updatedAt: ZodString;
868
+ tags: ZodArray<ZodString>;
869
+ phaseCount: ZodNumber;
870
+ weeks: ZodArray<ZodObject< {
871
+ id: ZodString;
872
+ order: ZodNumber;
873
+ title: ZodString;
874
+ description: ZodString;
875
+ sessions: ZodArray<ZodObject< {
876
+ id: ZodString;
877
+ programId: ZodString;
878
+ weekId: ZodNullable<ZodString>;
879
+ weekOrder: ZodNullable<ZodNumber>;
880
+ dayOfWeek: ZodEnum< {
881
+ mon: "mon";
882
+ tue: "tue";
883
+ wed: "wed";
884
+ thu: "thu";
885
+ fri: "fri";
886
+ sat: "sat";
887
+ sun: "sun";
888
+ }>;
889
+ workoutId: ZodString;
890
+ order: ZodNumber;
891
+ title: ZodNullable<ZodString>;
892
+ notes: ZodNullable<ZodString>;
893
+ overrides: ZodNullable<ZodObject< {
894
+ rename: ZodOptional<ZodString>;
895
+ exercise: ZodOptional<ZodObject< {
896
+ sets: ZodOptional<ZodString>;
897
+ reps: ZodOptional<ZodString>;
898
+ rest: ZodOptional<ZodString>;
899
+ weight: ZodOptional<ZodNullable<ZodNumber>>;
900
+ note: ZodOptional<ZodString>;
901
+ }, $strip>>;
902
+ }, $strip>>;
903
+ workout: ZodObject< {
904
+ id: ZodString;
905
+ title: ZodString;
906
+ description: ZodString;
907
+ videoAssetId: ZodNullable<ZodString>;
908
+ headerImageId: ZodNullable<ZodString>;
909
+ blocks: ZodArray<ZodObject< {
910
+ id: ZodString;
911
+ title: ZodString;
912
+ order: ZodNumber;
913
+ exercises: ZodArray<ZodObject< {
914
+ id: ZodString;
915
+ name: ZodString;
916
+ sets: ZodNullable<ZodNumber>;
917
+ reps: ZodNullable<ZodString>;
918
+ restSeconds: ZodNullable<ZodNumber>;
919
+ weightKg: ZodOptional<ZodNullable<ZodNumber>>;
920
+ notes: ZodNullable<ZodString>;
921
+ order: ZodNumber;
922
+ videoTimestampSeconds: ZodNullable<ZodNumber>;
923
+ }, $strip>>;
924
+ }, $strip>>;
925
+ }, $strip>;
926
+ }, $strip>>;
927
+ }, $strip>>;
928
+ extras: ZodArray<ZodObject< {
929
+ id: ZodString;
930
+ programId: ZodString;
931
+ weekId: ZodNullable<ZodString>;
932
+ weekOrder: ZodNullable<ZodNumber>;
933
+ dayOfWeek: ZodEnum< {
934
+ mon: "mon";
935
+ tue: "tue";
936
+ wed: "wed";
937
+ thu: "thu";
938
+ fri: "fri";
939
+ sat: "sat";
940
+ sun: "sun";
941
+ }>;
942
+ workoutId: ZodString;
943
+ order: ZodNumber;
944
+ title: ZodNullable<ZodString>;
945
+ notes: ZodNullable<ZodString>;
946
+ overrides: ZodNullable<ZodObject< {
947
+ rename: ZodOptional<ZodString>;
948
+ exercise: ZodOptional<ZodObject< {
949
+ sets: ZodOptional<ZodString>;
950
+ reps: ZodOptional<ZodString>;
951
+ rest: ZodOptional<ZodString>;
952
+ weight: ZodOptional<ZodNullable<ZodNumber>>;
953
+ note: ZodOptional<ZodString>;
954
+ }, $strip>>;
955
+ }, $strip>>;
956
+ workout: ZodObject< {
957
+ id: ZodString;
958
+ title: ZodString;
959
+ description: ZodString;
960
+ videoAssetId: ZodNullable<ZodString>;
961
+ headerImageId: ZodNullable<ZodString>;
962
+ blocks: ZodArray<ZodObject< {
963
+ id: ZodString;
964
+ title: ZodString;
965
+ order: ZodNumber;
966
+ exercises: ZodArray<ZodObject< {
967
+ id: ZodString;
968
+ name: ZodString;
969
+ sets: ZodNullable<ZodNumber>;
970
+ reps: ZodNullable<ZodString>;
971
+ restSeconds: ZodNullable<ZodNumber>;
972
+ weightKg: ZodOptional<ZodNullable<ZodNumber>>;
973
+ notes: ZodNullable<ZodString>;
974
+ order: ZodNumber;
975
+ videoTimestampSeconds: ZodNullable<ZodNumber>;
976
+ }, $strip>>;
977
+ }, $strip>>;
978
+ }, $strip>;
979
+ }, $strip>>;
980
+ }, $strip>;
981
+ }, $strip>, Record<never, never>, Record<never, never>>;
982
+ getSession: DecoratedProcedure<MergedInitialContext< {
983
+ headers: Headers;
984
+ } & Record<never, never>, {
985
+ headers: Headers;
986
+ } & Record<never, never>, {
987
+ headers: Headers;
988
+ }>, MergedCurrentContext< {
989
+ headers: Headers;
990
+ }, ApiKeyContext>, ZodObject< {
991
+ id: ZodString;
992
+ sessionId: ZodString;
993
+ }, $strip>, ZodObject< {
994
+ data: ZodObject< {
995
+ id: ZodString;
996
+ programId: ZodString;
997
+ weekId: ZodNullable<ZodString>;
998
+ weekOrder: ZodNullable<ZodNumber>;
999
+ dayOfWeek: ZodEnum< {
1000
+ mon: "mon";
1001
+ tue: "tue";
1002
+ wed: "wed";
1003
+ thu: "thu";
1004
+ fri: "fri";
1005
+ sat: "sat";
1006
+ sun: "sun";
1007
+ }>;
1008
+ workoutId: ZodString;
1009
+ order: ZodNumber;
1010
+ title: ZodNullable<ZodString>;
1011
+ notes: ZodNullable<ZodString>;
1012
+ overrides: ZodNullable<ZodObject< {
1013
+ rename: ZodOptional<ZodString>;
1014
+ exercise: ZodOptional<ZodObject< {
1015
+ sets: ZodOptional<ZodString>;
1016
+ reps: ZodOptional<ZodString>;
1017
+ rest: ZodOptional<ZodString>;
1018
+ weight: ZodOptional<ZodNullable<ZodNumber>>;
1019
+ note: ZodOptional<ZodString>;
1020
+ }, $strip>>;
1021
+ }, $strip>>;
1022
+ workout: ZodObject< {
1023
+ id: ZodString;
1024
+ title: ZodString;
1025
+ description: ZodString;
1026
+ videoAssetId: ZodNullable<ZodString>;
1027
+ headerImageId: ZodNullable<ZodString>;
1028
+ blocks: ZodArray<ZodObject< {
1029
+ id: ZodString;
1030
+ title: ZodString;
1031
+ order: ZodNumber;
1032
+ exercises: ZodArray<ZodObject< {
1033
+ id: ZodString;
1034
+ name: ZodString;
1035
+ sets: ZodNullable<ZodNumber>;
1036
+ reps: ZodNullable<ZodString>;
1037
+ restSeconds: ZodNullable<ZodNumber>;
1038
+ weightKg: ZodOptional<ZodNullable<ZodNumber>>;
1039
+ notes: ZodNullable<ZodString>;
1040
+ order: ZodNumber;
1041
+ videoTimestampSeconds: ZodNullable<ZodNumber>;
1042
+ }, $strip>>;
1043
+ }, $strip>>;
1044
+ }, $strip>;
1045
+ }, $strip>;
1046
+ program: ZodObject< {
1047
+ id: ZodString;
1048
+ title: ZodString;
1049
+ }, $strip>;
1050
+ myEnrollment: ZodNullable<ZodObject< {
1051
+ id: ZodString;
1052
+ }, $strip>>;
1053
+ lastLog: ZodNullable<ZodObject< {
1054
+ id: ZodString;
1055
+ startedAt: ZodString;
1056
+ completedAt: ZodNullable<ZodString>;
1057
+ overallRpe: ZodNullable<ZodNumber>;
1058
+ notes: ZodNullable<ZodString>;
1059
+ sets: ZodArray<ZodObject< {
1060
+ id: ZodString;
1061
+ exerciseId: ZodString;
1062
+ setNumber: ZodNumber;
1063
+ reps: ZodNullable<ZodNumber>;
1064
+ weightKg: ZodNullable<ZodString>;
1065
+ rpe: ZodNullable<ZodNumber>;
1066
+ notes: ZodNullable<ZodString>;
1067
+ }, $strip>>;
1068
+ }, $strip>>;
1069
+ }, $strip>, Record<never, never>, Record<never, never>>;
1070
+ };
1071
+ enrollment: {
1072
+ list: DecoratedProcedure<MergedInitialContext< {
1073
+ headers: Headers;
1074
+ } & Record<never, never>, {
1075
+ headers: Headers;
1076
+ } & Record<never, never>, {
1077
+ headers: Headers;
1078
+ }>, MergedCurrentContext< {
1079
+ headers: Headers;
1080
+ }, ApiKeyContext>, Schema<unknown, unknown>, ZodObject< {
1081
+ data: ZodArray<ZodObject< {
1082
+ id: ZodString;
1083
+ programId: ZodString;
1084
+ source: ZodEnum< {
1085
+ trainer: "trainer";
1086
+ self: "self";
1087
+ }>;
1088
+ status: ZodEnum< {
1089
+ active: "active";
1090
+ removed: "removed";
1091
+ completed: "completed";
1092
+ }>;
1093
+ enrolledAt: ZodString;
1094
+ removedAt: ZodNullable<ZodString>;
1095
+ completedAt: ZodNullable<ZodString>;
1096
+ program: ZodObject< {
1097
+ id: ZodString;
1098
+ trainerId: ZodString;
1099
+ title: ZodString;
1100
+ description: ZodString;
1101
+ accessLevel: ZodEnum< {
1102
+ free: "free";
1103
+ premium: "premium";
1104
+ }>;
1105
+ status: ZodEnum< {
1106
+ draft: "draft";
1107
+ published: "published";
1108
+ archived: "archived";
1109
+ }>;
1110
+ difficulty: ZodNullable<ZodEnum< {
1111
+ beginner: "beginner";
1112
+ intermediate: "intermediate";
1113
+ advanced: "advanced";
1114
+ }>>;
1115
+ coverImageId: ZodNullable<ZodString>;
1116
+ publishedAt: ZodNullable<ZodString>;
1117
+ createdAt: ZodString;
1118
+ }, $strip>;
1119
+ nextSession: ZodNullable<ZodObject< {
1120
+ id: ZodString;
1121
+ weekId: ZodNullable<ZodString>;
1122
+ weekOrder: ZodNullable<ZodNumber>;
1123
+ order: ZodNumber;
1124
+ title: ZodNullable<ZodString>;
1125
+ workoutTitle: ZodString;
1126
+ }, $strip>>;
1127
+ completedSessionCount: ZodNumber;
1128
+ totalSessionCount: ZodNumber;
1129
+ }, $strip>>;
1130
+ }, $strip>, Record<never, never>, Record<never, never>>;
1131
+ create: DecoratedProcedure<MergedInitialContext< {
1132
+ headers: Headers;
1133
+ } & Record<never, never>, {
1134
+ headers: Headers;
1135
+ } & Record<never, never>, {
1136
+ headers: Headers;
1137
+ }>, MergedCurrentContext< {
1138
+ headers: Headers;
1139
+ }, ApiKeyContext>, ZodObject< {
1140
+ programId: ZodString;
1141
+ }, $strip>, Schema< {
1142
+ data: {
1143
+ id: string;
1144
+ programId: string;
1145
+ source: "trainer" | "self";
1146
+ status: "active" | "removed" | "completed";
1147
+ enrolledAt: string;
1148
+ };
1149
+ }, {
1150
+ data: {
1151
+ id: string;
1152
+ programId: string;
1153
+ source: "trainer" | "self";
1154
+ status: "active" | "removed" | "completed";
1155
+ enrolledAt: string;
1156
+ };
1157
+ }>, Record<never, never>, Record<never, never>>;
1158
+ remove: DecoratedProcedure<MergedInitialContext< {
1159
+ headers: Headers;
1160
+ } & Record<never, never>, {
1161
+ headers: Headers;
1162
+ } & Record<never, never>, {
1163
+ headers: Headers;
1164
+ }>, MergedCurrentContext< {
1165
+ headers: Headers;
1166
+ }, ApiKeyContext>, ZodObject< {
1167
+ id: ZodString;
1168
+ }, $strip>, Schema< {
1169
+ data: {
1170
+ id: string;
1171
+ status: "removed";
1172
+ };
1173
+ }, {
1174
+ data: {
1175
+ id: string;
1176
+ status: "removed";
1177
+ };
1178
+ }>, Record<never, never>, Record<never, never>>;
1179
+ };
1180
+ sessionLog: {
1181
+ list: DecoratedProcedure<MergedInitialContext< {
1182
+ headers: Headers;
1183
+ } & Record<never, never>, {
1184
+ headers: Headers;
1185
+ } & Record<never, never>, {
1186
+ headers: Headers;
1187
+ }>, MergedCurrentContext< {
1188
+ headers: Headers;
1189
+ }, ApiKeyContext>, ZodObject< {
1190
+ programId: ZodOptional<ZodString>;
1191
+ sessionId: ZodOptional<ZodString>;
1192
+ completed: ZodOptional<ZodBoolean>;
1193
+ }, $strip>, ZodObject< {
1194
+ data: ZodArray<ZodObject< {
1195
+ id: ZodString;
1196
+ enrollmentId: ZodString;
1197
+ sessionId: ZodString;
1198
+ startedAt: ZodString;
1199
+ completedAt: ZodNullable<ZodString>;
1200
+ overallRpe: ZodNullable<ZodNumber>;
1201
+ notes: ZodNullable<ZodString>;
1202
+ sets: ZodArray<ZodObject< {
1203
+ id: ZodString;
1204
+ exerciseId: ZodString;
1205
+ setNumber: ZodNumber;
1206
+ reps: ZodNullable<ZodNumber>;
1207
+ weightKg: ZodNullable<ZodString>;
1208
+ rpe: ZodNullable<ZodNumber>;
1209
+ notes: ZodNullable<ZodString>;
1210
+ }, $strip>>;
1211
+ }, $strip>>;
1212
+ }, $strip>, Record<never, never>, Record<never, never>>;
1213
+ create: DecoratedProcedure<MergedInitialContext< {
1214
+ headers: Headers;
1215
+ } & Record<never, never>, {
1216
+ headers: Headers;
1217
+ } & Record<never, never>, {
1218
+ headers: Headers;
1219
+ }>, MergedCurrentContext< {
1220
+ headers: Headers;
1221
+ }, ApiKeyContext>, ZodObject< {
1222
+ sessionId: ZodString;
1223
+ enrollmentId: ZodString;
1224
+ }, $strip>, Schema< {
1225
+ data: {
1226
+ id: string;
1227
+ enrollmentId: string;
1228
+ sessionId: string;
1229
+ startedAt: string;
1230
+ completedAt: string | null;
1231
+ overallRpe: number | null;
1232
+ notes: string | null;
1233
+ sets: never[];
1234
+ };
1235
+ }, {
1236
+ data: {
1237
+ id: string;
1238
+ enrollmentId: string;
1239
+ sessionId: string;
1240
+ startedAt: string;
1241
+ completedAt: string | null;
1242
+ overallRpe: number | null;
1243
+ notes: string | null;
1244
+ sets: never[];
1245
+ };
1246
+ }>, Record<never, never>, Record<never, never>>;
1247
+ update: DecoratedProcedure<MergedInitialContext< {
1248
+ headers: Headers;
1249
+ } & Record<never, never>, {
1250
+ headers: Headers;
1251
+ } & Record<never, never>, {
1252
+ headers: Headers;
1253
+ }>, MergedCurrentContext< {
1254
+ headers: Headers;
1255
+ }, ApiKeyContext>, ZodObject< {
1256
+ id: ZodString;
1257
+ overallRpe: ZodOptional<ZodNullable<ZodNumber>>;
1258
+ notes: ZodOptional<ZodNullable<ZodString>>;
1259
+ completedAt: ZodOptional<ZodNullable<ZodString>>;
1260
+ }, $strip>, Schema< {
1261
+ data: {
1262
+ id: string;
1263
+ enrollmentId: string;
1264
+ sessionId: string;
1265
+ startedAt: string;
1266
+ completedAt: string | null;
1267
+ overallRpe: number | null;
1268
+ notes: string | null;
1269
+ sets: {
1270
+ id: string;
1271
+ exerciseId: string;
1272
+ setNumber: number;
1273
+ reps: number | null;
1274
+ weightKg: string | null;
1275
+ rpe: number | null;
1276
+ notes: string | null;
1277
+ }[];
1278
+ };
1279
+ }, {
1280
+ data: {
1281
+ id: string;
1282
+ enrollmentId: string;
1283
+ sessionId: string;
1284
+ startedAt: string;
1285
+ completedAt: string | null;
1286
+ overallRpe: number | null;
1287
+ notes: string | null;
1288
+ sets: {
1289
+ id: string;
1290
+ exerciseId: string;
1291
+ setNumber: number;
1292
+ reps: number | null;
1293
+ weightKg: string | null;
1294
+ rpe: number | null;
1295
+ notes: string | null;
1296
+ }[];
1297
+ };
1298
+ }>, Record<never, never>, Record<never, never>>;
1299
+ addSet: DecoratedProcedure<MergedInitialContext< {
1300
+ headers: Headers;
1301
+ } & Record<never, never>, {
1302
+ headers: Headers;
1303
+ } & Record<never, never>, {
1304
+ headers: Headers;
1305
+ }>, MergedCurrentContext< {
1306
+ headers: Headers;
1307
+ }, ApiKeyContext>, ZodObject< {
1308
+ id: ZodString;
1309
+ exerciseId: ZodString;
1310
+ setNumber: ZodNumber;
1311
+ reps: ZodOptional<ZodNullable<ZodNumber>>;
1312
+ weightKg: ZodOptional<ZodNullable<ZodString>>;
1313
+ rpe: ZodOptional<ZodNullable<ZodNumber>>;
1314
+ notes: ZodOptional<ZodNullable<ZodString>>;
1315
+ }, $strip>, Schema< {
1316
+ data: {
1317
+ id: string;
1318
+ exerciseId: string;
1319
+ setNumber: number;
1320
+ reps: number | null;
1321
+ weightKg: string | null;
1322
+ rpe: number | null;
1323
+ notes: string | null;
1324
+ };
1325
+ }, {
1326
+ data: {
1327
+ id: string;
1328
+ exerciseId: string;
1329
+ setNumber: number;
1330
+ reps: number | null;
1331
+ weightKg: string | null;
1332
+ rpe: number | null;
1333
+ notes: string | null;
1334
+ };
1335
+ }>, Record<never, never>, Record<never, never>>;
1336
+ editSet: DecoratedProcedure<MergedInitialContext< {
1337
+ headers: Headers;
1338
+ } & Record<never, never>, {
1339
+ headers: Headers;
1340
+ } & Record<never, never>, {
1341
+ headers: Headers;
1342
+ }>, MergedCurrentContext< {
1343
+ headers: Headers;
1344
+ }, ApiKeyContext>, ZodObject< {
1345
+ id: ZodString;
1346
+ setId: ZodString;
1347
+ setNumber: ZodOptional<ZodNumber>;
1348
+ reps: ZodOptional<ZodNullable<ZodNumber>>;
1349
+ weightKg: ZodOptional<ZodNullable<ZodString>>;
1350
+ rpe: ZodOptional<ZodNullable<ZodNumber>>;
1351
+ notes: ZodOptional<ZodNullable<ZodString>>;
1352
+ }, $strip>, Schema< {
1353
+ data: {
1354
+ id: string;
1355
+ exerciseId: string;
1356
+ setNumber: number;
1357
+ reps: number | null;
1358
+ weightKg: string | null;
1359
+ rpe: number | null;
1360
+ notes: string | null;
1361
+ };
1362
+ }, {
1363
+ data: {
1364
+ id: string;
1365
+ exerciseId: string;
1366
+ setNumber: number;
1367
+ reps: number | null;
1368
+ weightKg: string | null;
1369
+ rpe: number | null;
1370
+ notes: string | null;
1371
+ };
1372
+ }>, Record<never, never>, Record<never, never>>;
1373
+ deleteSet: DecoratedProcedure<MergedInitialContext< {
1374
+ headers: Headers;
1375
+ } & Record<never, never>, {
1376
+ headers: Headers;
1377
+ } & Record<never, never>, {
1378
+ headers: Headers;
1379
+ }>, MergedCurrentContext< {
1380
+ headers: Headers;
1381
+ }, ApiKeyContext>, ZodObject< {
1382
+ id: ZodString;
1383
+ setId: ZodString;
1384
+ }, $strip>, Schema< {
1385
+ data: {
1386
+ id: string;
1387
+ deleted: boolean;
1388
+ };
1389
+ }, {
1390
+ data: {
1391
+ id: string;
1392
+ deleted: boolean;
1393
+ };
1394
+ }>, Record<never, never>, Record<never, never>>;
1395
+ };
1396
+ progression: {
1397
+ getHistory: DecoratedProcedure<MergedInitialContext< {
1398
+ headers: Headers;
1399
+ } & Record<never, never>, {
1400
+ headers: Headers;
1401
+ } & Record<never, never>, {
1402
+ headers: Headers;
1403
+ }>, MergedCurrentContext< {
1404
+ headers: Headers;
1405
+ }, ApiKeyContext>, ZodObject< {
1406
+ id: ZodString;
1407
+ }, $strip>, ZodObject< {
1408
+ data: ZodArray<ZodObject< {
1409
+ sessionLogId: ZodString;
1410
+ startedAt: ZodString;
1411
+ completedAt: ZodNullable<ZodString>;
1412
+ sets: ZodArray<ZodObject< {
1413
+ id: ZodString;
1414
+ exerciseId: ZodString;
1415
+ setNumber: ZodNumber;
1416
+ reps: ZodNullable<ZodNumber>;
1417
+ weightKg: ZodNullable<ZodString>;
1418
+ rpe: ZodNullable<ZodNumber>;
1419
+ notes: ZodNullable<ZodString>;
1420
+ }, $strip>>;
1421
+ }, $strip>>;
1422
+ meta: ZodObject< {
1423
+ limit: ZodNumber;
1424
+ truncated: ZodBoolean;
1425
+ }, $strip>;
1426
+ }, $strip>, Record<never, never>, Record<never, never>>;
1427
+ };
1428
+ media: {
1429
+ get: DecoratedProcedure<MergedInitialContext< {
1430
+ headers: Headers;
1431
+ } & Record<never, never>, {
1432
+ headers: Headers;
1433
+ } & Record<never, never>, {
1434
+ headers: Headers;
1435
+ }>, MergedCurrentContext< {
1436
+ headers: Headers;
1437
+ }, ApiKeyContext>, ZodObject< {
1438
+ id: ZodString;
1439
+ }, $strip>, ZodObject< {
1440
+ data: ZodObject< {
1441
+ id: ZodString;
1442
+ trainerId: ZodString;
1443
+ type: ZodEnum< {
1444
+ image: "image";
1445
+ video: "video";
1446
+ }>;
1447
+ url: ZodString;
1448
+ title: ZodString;
1449
+ sizeBytes: ZodNullable<ZodNumber>;
1450
+ createdAt: ZodDate;
1451
+ }, $strip>;
1452
+ }, $strip>, Record<never, never>, Record<never, never>>;
1453
+ };
1454
+ appConfig: {
1455
+ get: DecoratedProcedure<MergedInitialContext< {
1456
+ headers: Headers;
1457
+ } & Record<never, never>, {
1458
+ headers: Headers;
1459
+ } & Record<never, never>, {
1460
+ headers: Headers;
1461
+ }>, MergedCurrentContext< {
1462
+ headers: Headers;
1463
+ }, ApiKeyContext>, Schema<unknown, unknown>, ZodObject< {
1464
+ data: ZodObject< {
1465
+ id: ZodString;
1466
+ trainerId: ZodString;
1467
+ appName: ZodString;
1468
+ primaryColor: ZodString;
1469
+ secondaryColor: ZodString;
1470
+ backgroundColor: ZodString;
1471
+ textColor: ZodString;
1472
+ iconDarkUrl: ZodNullable<ZodString>;
1473
+ iconTintedUrl: ZodNullable<ZodString>;
1474
+ adaptiveIconUrl: ZodNullable<ZodString>;
1475
+ faviconUrl: ZodNullable<ZodString>;
1476
+ buildStatus: ZodEnum< {
1477
+ published: "published";
1478
+ idle: "idle";
1479
+ building: "building";
1480
+ failed: "failed";
1481
+ }>;
1482
+ buildVersion: ZodNullable<ZodString>;
1483
+ }, $strip>;
1484
+ }, $strip>, Record<never, never>, Record<never, never>>;
1485
+ };
1486
+ subscription: {
1487
+ listPlans: DecoratedProcedure<MergedInitialContext< {
1488
+ headers: Headers;
1489
+ } & Record<never, never>, {
1490
+ headers: Headers;
1491
+ } & Record<never, never>, {
1492
+ headers: Headers;
1493
+ }>, MergedCurrentContext< {
1494
+ headers: Headers;
1495
+ }, ApiKeyContext>, Schema<unknown, unknown>, ZodObject< {
1496
+ data: ZodObject< {
1497
+ currency: ZodString;
1498
+ plans: ZodArray<ZodObject< {
1499
+ name: ZodString;
1500
+ monthlyPriceCents: ZodNumber;
1501
+ description: ZodString;
1502
+ sortOrder: ZodNumber;
1503
+ hasStripe: ZodBoolean;
1504
+ }, $strip>>;
1505
+ }, $strip>;
1506
+ }, $strip>, Record<never, never>, Record<never, never>>;
1507
+ getStatus: DecoratedProcedure<MergedInitialContext< {
1508
+ headers: Headers;
1509
+ } & Record<never, never>, {
1510
+ headers: Headers;
1511
+ } & Record<never, never>, {
1512
+ headers: Headers;
1513
+ }>, MergedCurrentContext< {
1514
+ headers: Headers;
1515
+ }, ApiKeyContext>, Schema<unknown, unknown>, ZodObject< {
1516
+ data: ZodObject< {
1517
+ hasActiveSubscription: ZodBoolean;
1518
+ subscription: ZodNullable<ZodObject< {
1519
+ plan: ZodEnum< {
1520
+ free: "free";
1521
+ premium: "premium";
1522
+ basic: "basic";
1523
+ }>;
1524
+ status: ZodEnum< {
1525
+ active: "active";
1526
+ cancelled: "cancelled";
1527
+ past_due: "past_due";
1528
+ }>;
1529
+ startedAt: ZodNullable<ZodDate>;
1530
+ expiresAt: ZodNullable<ZodDate>;
1531
+ }, $strip>>;
1532
+ }, $strip>;
1533
+ }, $strip>, Record<never, never>, Record<never, never>>;
1534
+ };
1535
+ };
1536
+
1537
+ /** Cached session in storage. `expiresAt` is an ISO-8601 string from the server. */
1538
+ export declare interface Session {
1539
+ readonly accessToken: string;
1540
+ readonly expiresAt: string;
1541
+ readonly user: {
1542
+ readonly id: string;
1543
+ readonly email: string;
1544
+ };
1545
+ }
1546
+
1547
+ /** Pluggable storage so the SDK runs in browser, SSR, and tests. */
1548
+ export declare interface TokenStorage {
1549
+ readonly get: () => Session | null | Promise<Session | null>;
1550
+ readonly set: (session: Session) => void | Promise<void>;
1551
+ readonly remove: () => void | Promise<void>;
1552
+ }
1553
+
1554
+ export { }