@sunsteel/contracts 0.86.0 → 0.88.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.
package/dist/index.d.cts CHANGED
@@ -6,7 +6,7 @@ declare const SEXES: readonly ["MALE", "FEMALE"];
6
6
  type Sex = (typeof SEXES)[number];
7
7
  declare const REP_TYPES: readonly ["FIXED", "RANGE"];
8
8
  type RepType = (typeof REP_TYPES)[number];
9
- declare const PROGRESSION_SCHEMES: readonly ["NONE", "DOUBLE_PROGRESSION", "DYNAMIC_DOUBLE_PROGRESSION"];
9
+ declare const PROGRESSION_SCHEMES: readonly ["NONE", "DOUBLE_PROGRESSION", "DYNAMIC_DOUBLE_PROGRESSION", "LINEAR_PERIODIZATION"];
10
10
  type ProgressionScheme = (typeof PROGRESSION_SCHEMES)[number];
11
11
  declare const MUSCLE_GROUPS: readonly ["PECTORAL", "LATISSIMUS_DORSI", "TRAPEZIUS", "REAR_DELTOIDS", "ERECTOR_SPINAE", "TERES_MAJOR_MINOR", "ANTERIOR_DELTOIDS", "MEDIAL_DELTOIDS", "BICEPS", "TRICEPS", "FOREARMS", "QUADRICEPS", "HAMSTRINGS", "GLUTES", "CALVES", "CORE", "ADDUCTOR"];
12
12
  type MuscleGroup = (typeof MUSCLE_GROUPS)[number];
@@ -109,9 +109,18 @@ interface ConversationMember {
109
109
  interface ConversationMessage {
110
110
  id: string;
111
111
  sentByMe: boolean;
112
- /** Null once its author deleted it; the place stays as "Message deleted". */
112
+ /**
113
+ * Null once its author deleted it; the place stays as "Message deleted".
114
+ * Also null for the other participant while moderation hides it (MSG-09).
115
+ */
113
116
  body: string | null;
114
117
  deleted: boolean;
118
+ /**
119
+ * MSG-09: a moderator hid this message from the other participant. They read
120
+ * "Removed by moderation" in its place; its author still reads the text and
121
+ * is told it is hidden.
122
+ */
123
+ hiddenByModeration: boolean;
115
124
  createdAt: IsoDateString;
116
125
  }
117
126
  interface ConversationSummary {
@@ -123,15 +132,28 @@ interface ConversationSummary {
123
132
  lastMessageAt: IsoDateString | null;
124
133
  /**
125
134
  * Whether the viewer may write in it now. False when the other member's
126
- * account is gone, or the viewer's own messaging is unavailable.
135
+ * account is gone, or the viewer's own messaging is unavailable or
136
+ * restricted.
127
137
  */
128
138
  canSend: boolean;
139
+ /**
140
+ * MSG-09: a moderator restricted the viewer's messaging, which is why they
141
+ * cannot write. Only ever about the viewer: nobody else is told.
142
+ */
143
+ messagingRestricted: boolean;
129
144
  }
130
145
  /** GET /conversations, newest activity first. */
131
146
  interface ConversationsResponse {
132
147
  conversations: ConversationSummary[];
133
148
  nextCursor: string | null;
149
+ /** MSG-09: the viewer's own messaging is restricted by moderation. */
150
+ messagingRestricted: boolean;
134
151
  }
152
+ /**
153
+ * MSG-09: a report of a message captures it and at most this many messages
154
+ * before it in its conversation, as the reporter could see them then.
155
+ */
156
+ declare const MESSAGE_REPORT_CONTEXT_BEFORE = 5;
135
157
  /** GET /conversations/:id/messages, newest first; `cursor` pages older. */
136
158
  interface ConversationMessagesResponse {
137
159
  conversation: ConversationSummary;
@@ -265,6 +287,216 @@ declare function countsForProgression(kind?: SetKind | null): boolean;
265
287
  /** Whether a set must be done before a workout finishes without a prompt. */
266
288
  declare function requiredToFinish(kind?: SetKind | null): boolean;
267
289
 
290
+ /** Steps in one block. */
291
+ declare const LP_BLOCK_STEPS = 8;
292
+ /** Working sets per step, all at the step's load. */
293
+ declare const LP_WORKING_SETS = 3;
294
+ /** The rest a new LP exercise is offered with. */
295
+ declare const LP_REST_SECONDS = 180;
296
+ /** Upper bound for a reference max, in kg. */
297
+ declare const LP_REFERENCE_MAX_KG = 1000;
298
+ interface LpSetTarget {
299
+ /** Target RIR range; equal ends mean one value (the AMRAP's 0). */
300
+ rirMin: number;
301
+ rirMax: number;
302
+ /** A technical AMRAP: as many good reps as possible, to RIR 0. */
303
+ amrap: boolean;
304
+ }
305
+ interface LpStep {
306
+ step: number;
307
+ /** The share of the reference max, 0.63 for 63 %. */
308
+ percentage: number;
309
+ sets: [LpSetTarget, LpSetTarget, LpSetTarget];
310
+ }
311
+ /** The fixed table: steps 1-4 end in a technical AMRAP, 5-8 do not. */
312
+ declare const LP_STEPS: readonly LpStep[];
313
+ /** The step's prescription; out-of-range steps are clamped to 1-8. */
314
+ declare function lpStep(step: number): LpStep;
315
+ /** The optional recovery step after a block (ROUT-19): fixed reps, light. */
316
+ declare const LP_RECOVERY: {
317
+ readonly percentage: 0.7;
318
+ readonly sets: 2;
319
+ readonly reps: 5;
320
+ };
321
+ /**
322
+ * The nearest multiple of the increment, a tie rounding down. Rounding in kg
323
+ * equals rounding in pounds when the increment was entered in pounds, since
324
+ * the conversion is linear.
325
+ */
326
+ declare function roundToIncrement(value: number, increment: number): number;
327
+ /** The largest multiple of the increment not above the value. */
328
+ declare function roundDownToIncrement(value: number, increment: number): number;
329
+ /** The load of a share of the reference max, on the exercise's increment. */
330
+ declare function lpLoadKg(referenceMaxKg: number, percentage: number, incrementKg: number): number;
331
+ /**
332
+ * BLOCK trains `step`; FINISHED waits for the member's choice of what follows
333
+ * (ROUT-19); RECOVERY trains the optional recovery step, then the next block.
334
+ */
335
+ declare const LP_PHASES: readonly ["BLOCK", "RECOVERY", "FINISHED"];
336
+ type LpPhase = (typeof LP_PHASES)[number];
337
+ /** One working set of steps 7-8, kept for the end-of-block estimate. */
338
+ interface LpSample {
339
+ sessionId: string;
340
+ step: number;
341
+ /** 1-3: the set's place among the step's working sets. */
342
+ set: number;
343
+ loadKg: number;
344
+ reps: number;
345
+ }
346
+ /**
347
+ * Where a slot is in its block. It travels with the routine's setup like the
348
+ * set loads do, so an edit, a version or a block keeps it; a shared or cloned
349
+ * routine drops it, since the reference max is the owner's.
350
+ */
351
+ interface LinearPeriodizationState {
352
+ /** The block's reference max (an estimated 1RM), canonical kg. */
353
+ referenceMaxKg: number;
354
+ phase: LpPhase;
355
+ /** 1-8: the step the next workout of this slot trains. */
356
+ step: number;
357
+ /** 1 for the first block, one more for each block started after it. */
358
+ cycle: number;
359
+ /** Steps 7-8 of this block, for the estimate (ROUT-18). */
360
+ samples: LpSample[];
361
+ /** FINISHED and RECOVERY: when the block finished. */
362
+ finishedAt?: IsoDateString | null;
363
+ /** FINISHED and RECOVERY: the finished block's estimate, if one was possible. */
364
+ estimatedMaxKg?: number | null;
365
+ /** RECOVERY: the reference the next block starts from. */
366
+ nextReferenceMaxKg?: number | null;
367
+ }
368
+ /** A new block from step 1. */
369
+ declare function startLinearPeriodization(referenceMaxKg: number, cycle?: number): LinearPeriodizationState;
370
+ /** Why a state cannot be stored, or null. */
371
+ declare function linearPeriodizationProblem(state: LinearPeriodizationState): string | null;
372
+ /** What one set of an LP exercise prescribes this workout. */
373
+ interface LpSetPrescription {
374
+ loadKg: number;
375
+ /** Null on the recovery step, which prescribes reps instead. */
376
+ target: LpSetTarget | null;
377
+ /** The recovery step's fixed reps. */
378
+ reps: number | null;
379
+ }
380
+ /**
381
+ * The slot's working sets for its next workout: three at the step's load in
382
+ * BLOCK, the recovery step's two in RECOVERY, none while FINISHED waits for a
383
+ * choice.
384
+ */
385
+ declare function lpPrescription(state: LinearPeriodizationState, incrementKg: number): LpSetPrescription[];
386
+ /**
387
+ * The working sets of a list in order, the LP way: every set that is not a
388
+ * warm-up. Warm-ups stay outside the block.
389
+ */
390
+ declare function lpWorkingSets<T extends {
391
+ kind?: SetKind | null;
392
+ }>(sets: T[]): T[];
393
+ /** Only these steps feed the estimate: the heaviest, closest to a max. */
394
+ declare const LP_ESTIMATE_STEPS: readonly number[];
395
+ /** Sets whose reps plus RIR exceed this are left out (Epley drifts above it). */
396
+ declare const LP_ESTIMATE_MAX_REPS_TO_FAILURE = 10;
397
+ /** Fewer qualifying sets than this, and there is no estimate. */
398
+ declare const LP_ESTIMATE_MIN_SETS = 3;
399
+ /** The middle of a target RIR range: 2-3 counts 2.5, 1-2 counts 1.5. */
400
+ declare function lpRirMidpoint(target: LpSetTarget): number;
401
+ /** The RIR a sample is counted with: its prescribed target's midpoint. */
402
+ declare function lpSampleRir(sample: Pick<LpSample, 'step' | 'set'>): number;
403
+ /** Epley on reps to failure: `load × (1 + (reps + RIR) / 30)`. */
404
+ declare function lpSetEstimateKg(loadKg: number, reps: number, rir: number): number;
405
+ interface LpEstimate {
406
+ /** Rounded down to the increment; null with too few qualifying sets. */
407
+ estimatedMaxKg: number | null;
408
+ /** The sets it was computed from, in step and set order. */
409
+ sets: Array<LpSample & {
410
+ rir: number;
411
+ estimateKg: number;
412
+ }>;
413
+ }
414
+ /**
415
+ * The end-of-block estimate: each set of steps 7-8 with at least one rep and
416
+ * reps + RIR of 10 or fewer, estimated with Epley on reps to failure; their
417
+ * median, rounded down to the increment, once there are three.
418
+ */
419
+ declare function lpEstimate(samples: LpSample[], incrementKg: number): LpEstimate;
420
+ /** An estimate this far above the reference pre-selects a heavier block. */
421
+ declare const LP_PROGRESS_THRESHOLD = 0.025;
422
+ /** A heavier block's reference is at most this far above the last one. */
423
+ declare const LP_PROGRESS_CAP = 0.05;
424
+ /**
425
+ * PROGRESS: a new, heavier block. REPEAT: the same reference again. RESET: a
426
+ * new block at the lower estimate.
427
+ */
428
+ declare const LP_NEXT_BLOCK_KINDS: readonly ["PROGRESS", "REPEAT", "RESET"];
429
+ type LpNextBlockKind = (typeof LP_NEXT_BLOCK_KINDS)[number];
430
+ interface LpRecommendation {
431
+ kind: LpNextBlockKind;
432
+ /** The reference the pre-selected next block starts from, kg. */
433
+ nextReferenceMaxKg: number;
434
+ /** estimate / reference - 1, or null without an estimate. */
435
+ change: number | null;
436
+ }
437
+ /**
438
+ * The next block pre-selected from the evidence -- never applied without the
439
+ * member's choice: at least 2.5 % above, a block at the estimate capped at
440
+ * 5 % over the reference; more than 2.5 % below, a block at the estimate;
441
+ * otherwise, or without an estimate, the same reference again.
442
+ */
443
+ declare function lpRecommendation(referenceMaxKg: number, estimatedMaxKg: number | null | undefined, incrementKg: number): LpRecommendation;
444
+ /**
445
+ * Body of `PUT /routines/:id/exercises/:routineExerciseId/linear-block`: what
446
+ * a FINISHED slot does next. `recovery` takes the optional recovery step
447
+ * first; the reference is the member's choice, pre-filled from
448
+ * `lpRecommendation`.
449
+ */
450
+ interface ContinueLinearBlockRequest {
451
+ referenceMaxKg: number;
452
+ recovery: boolean;
453
+ }
454
+ /** One working set of the slot as a completed workout left it. */
455
+ interface LpLoggedSet {
456
+ /** 1-based place among the step's working sets. */
457
+ set: number;
458
+ reps: number;
459
+ loadKg: number;
460
+ completed: boolean;
461
+ }
462
+ /** Whether two states stand at the same place of the same block. */
463
+ declare function sameLpPosition(a: LinearPeriodizationState | null | undefined, b: LinearPeriodizationState | null | undefined): boolean;
464
+ /**
465
+ * Where a completed workout leaves the slot, or null when it does not move:
466
+ * a FINISHED slot waits for a choice, and a step or the recovery step counts
467
+ * only when every one of its working sets was ticked. Step 8 finishes the
468
+ * block with its estimate; the recovery step begins the next block. Reps
469
+ * never change a load.
470
+ */
471
+ declare function advanceLinearPeriodization(state: LinearPeriodizationState, logged: LpLoggedSet[], context: {
472
+ sessionId: string;
473
+ finishedAt: IsoDateString;
474
+ incrementKg: number;
475
+ }): LinearPeriodizationState | null;
476
+ /**
477
+ * What a FINISHED slot does next (ROUT-19): the optional recovery step on the
478
+ * finished block's reference, then the chosen reference; or the next block at
479
+ * once. Null when the slot has not finished.
480
+ */
481
+ declare function continueLinearPeriodization(state: LinearPeriodizationState, choice: ContinueLinearBlockRequest): LinearPeriodizationState | null;
482
+ /** A working set as the routine stores it for an LP slot. */
483
+ interface LpStoredSet {
484
+ repType: 'FIXED';
485
+ /** No rep target in a block; the recovery step's fixed reps. */
486
+ reps: number | null;
487
+ weight: number | null;
488
+ /** The target's lower end; the full range is read from `lpStep`. */
489
+ rir: number | null;
490
+ kind: 'WORKING';
491
+ }
492
+ /**
493
+ * The working sets a routine stores for an LP slot, after its warm-ups: the
494
+ * step's three in BLOCK, the final step's three while FINISHED waits for a
495
+ * choice (they repeat it and move nothing), the recovery step's two in
496
+ * RECOVERY, and three without loads while no reference max is set.
497
+ */
498
+ declare function lpStoredSets(state: LinearPeriodizationState | null | undefined, incrementKg: number): LpStoredSet[];
499
+
268
500
  /** A local calendar date, YYYY-MM-DD. */
269
501
  type CalendarDate = string;
270
502
  /**
@@ -631,6 +863,12 @@ interface RoutineExercise {
631
863
  * or a circuit of three to six); see `exerciseGroups`.
632
864
  */
633
865
  linkedToNext?: boolean;
866
+ /**
867
+ * ROUT-17: on a `LINEAR_PERIODIZATION` exercise, where the slot is in its
868
+ * block. Null on any other scheme, and on an LP exercise nobody has given
869
+ * a reference max yet (a shared or cloned routine drops the owner's).
870
+ */
871
+ linearPeriodization?: LinearPeriodizationState | null;
634
872
  exercise: {
635
873
  id: string;
636
874
  name: string;
@@ -653,6 +891,12 @@ interface CreateRoutineExerciseInput {
653
891
  * or a circuit of three to six); see `exerciseGroups`.
654
892
  */
655
893
  linkedToNext?: boolean;
894
+ /**
895
+ * ROUT-17: on a `LINEAR_PERIODIZATION` exercise, where the slot is in its
896
+ * block. Null on any other scheme, and on an LP exercise nobody has given
897
+ * a reference max yet (a shared or cloned routine drops the owner's).
898
+ */
899
+ linearPeriodization?: LinearPeriodizationState | null;
656
900
  sets: RoutineSet[];
657
901
  }
658
902
  interface RoutineDay {
@@ -788,6 +1032,12 @@ interface RoutineVersionExercise {
788
1032
  * or a circuit of three to six); see `exerciseGroups`.
789
1033
  */
790
1034
  linkedToNext?: boolean;
1035
+ /**
1036
+ * ROUT-17: on a `LINEAR_PERIODIZATION` exercise, where the slot is in its
1037
+ * block. Null on any other scheme, and on an LP exercise nobody has given
1038
+ * a reference max yet (a shared or cloned routine drops the owner's).
1039
+ */
1040
+ linearPeriodization?: LinearPeriodizationState | null;
791
1041
  sets: RoutineSet[];
792
1042
  }
793
1043
  interface RoutineVersionDay {
@@ -991,6 +1241,11 @@ interface WorkoutSession {
991
1241
  minWeightIncrement: number;
992
1242
  /** ROUT-12: done in rounds with the next exercise of the day. */
993
1243
  linkedToNext?: boolean;
1244
+ /**
1245
+ * ROUT-17: the slot's block as it stood when the workout started; the
1246
+ * sets' weights are the step's prescribed loads.
1247
+ */
1248
+ linearPeriodization?: LinearPeriodizationState | null;
994
1249
  exercise: {
995
1250
  id: string;
996
1251
  name: string;
@@ -1064,10 +1319,28 @@ interface ProgressionChange {
1064
1319
  minWeightIncrementKg: number;
1065
1320
  sets: ProgressionSetChange[];
1066
1321
  }
1322
+ /**
1323
+ * ROUT-17/ROUT-18: one LP slot's block moved by a completed workout -- a step
1324
+ * done, the block finished, or the recovery step done and the next block
1325
+ * begun. `after.phase === 'FINISHED'` with `before.phase === 'BLOCK'` is the
1326
+ * block finishing; its estimate is `after.estimatedMaxKg`, from
1327
+ * `after.samples`.
1328
+ */
1329
+ interface LinearBlockChange {
1330
+ routineExerciseId: string;
1331
+ exerciseId: string;
1332
+ exerciseName: string;
1333
+ /** The exercise's increment, kg, for rounding the estimate's sets. */
1334
+ minWeightIncrementKg: number;
1335
+ before: LinearPeriodizationState;
1336
+ after: LinearPeriodizationState;
1337
+ }
1067
1338
  /** Stable successful response of PATCH /workouts/sessions/:id/finish. */
1068
1339
  interface FinishWorkoutResponse {
1069
1340
  session: WorkoutSession;
1070
1341
  progressionChanges: ProgressionChange[];
1342
+ /** ROUT-17; absent from servers before it. */
1343
+ linearBlockChanges?: LinearBlockChange[];
1071
1344
  recap: WorkoutSessionRecap | null;
1072
1345
  }
1073
1346
  interface UpsertSetLogRequest {
@@ -1188,6 +1461,10 @@ interface WorkoutSessionRecap {
1188
1461
  exerciseNotes?: SessionRecapExerciseNote[];
1189
1462
  records: SessionRecapRecord[];
1190
1463
  progressionChanges: ProgressionChange[];
1464
+ /** ROUT-17/ROUT-18: LP blocks this workout moved; absent before them. */
1465
+ linearBlockChanges?: LinearBlockChange[];
1466
+ /** The routine trained, null once it was deleted; absent before ROUT-18. */
1467
+ routineId?: string | null;
1191
1468
  previousSession: PreviousSessionRecap | null;
1192
1469
  }
1193
1470
  interface SessionRecapExerciseNote {
@@ -1812,7 +2089,7 @@ interface MemberModerationState {
1812
2089
  /** The viewer has blocked this member. */
1813
2090
  isBlocked: boolean;
1814
2091
  }
1815
- declare const REPORT_SUBJECT_KINDS: readonly ["MEMBER", "ROUTINE", "SESSION", "COMMENT"];
2092
+ declare const REPORT_SUBJECT_KINDS: readonly ["MEMBER", "ROUTINE", "SESSION", "COMMENT", "MESSAGE"];
1816
2093
  type ReportSubjectKind = (typeof REPORT_SUBJECT_KINDS)[number];
1817
2094
  /**
1818
2095
  * Why something was reported. The list is short and fixed on purpose: a free
@@ -1826,7 +2103,10 @@ declare const REPORTS_PER_DAY_MAX = 20;
1826
2103
  /** POST /reports */
1827
2104
  interface CreateReportRequest {
1828
2105
  subjectKind: ReportSubjectKind;
1829
- /** A member id or username, a routine id, or a session share token. */
2106
+ /**
2107
+ * A member id or username, a routine id, a session share token, a comment
2108
+ * id, or a message id in a conversation the reporter is in (MSG-09).
2109
+ */
1830
2110
  subjectId: string;
1831
2111
  reason: ReportReason;
1832
2112
  /** Optional context from the reporter, never required. */
@@ -1851,7 +2131,7 @@ type ReportStatus = (typeof REPORT_STATUSES)[number];
1851
2131
  * same reason the others are: it is a thing a moderator did to somebody's
1852
2132
  * content, and it is the only one that leaves no other trace.
1853
2133
  */
1854
- declare const MODERATION_ACTION_KINDS: readonly ["VIEW_SUBJECT", "DISMISS_REPORT", "HIDE_SUBJECT", "RESTORE_SUBJECT"];
2134
+ declare const MODERATION_ACTION_KINDS: readonly ["VIEW_SUBJECT", "DISMISS_REPORT", "HIDE_SUBJECT", "RESTORE_SUBJECT", "RESTRICT_MESSAGING", "LIFT_MESSAGING_RESTRICTION"];
1855
2135
  type ModerationActionKind = (typeof MODERATION_ACTION_KINDS)[number];
1856
2136
  declare const MODERATION_NOTE_MAX_LENGTH = 500;
1857
2137
  declare const MODERATION_QUEUE_PAGE_SIZE = 20;
@@ -1885,6 +2165,44 @@ interface ReportSubjectPreview {
1885
2165
  isWithheld: boolean;
1886
2166
  /** A `HIDE_SUBJECT` is currently in force. */
1887
2167
  isHidden: boolean;
2168
+ /**
2169
+ * MSG-09, for a `MEMBER` or `MESSAGE` report: whether the member (for a
2170
+ * message, its author) has their messaging restricted. Null for the other
2171
+ * kinds and when the account is gone.
2172
+ */
2173
+ messagingRestricted: boolean | null;
2174
+ /**
2175
+ * MSG-09, for a `MESSAGE` report: the capture is still readable, but the
2176
+ * message itself was deleted or its conversation removed, so there is
2177
+ * nothing left to hide or restore.
2178
+ */
2179
+ messageGone: boolean;
2180
+ }
2181
+ /** One message of a report's capture, as the reporter could see it. */
2182
+ interface CapturedMessage {
2183
+ /** The message's id; the message itself may since have been deleted. */
2184
+ id: string;
2185
+ /** Written by the reporter, else by the reported member. */
2186
+ fromReporter: boolean;
2187
+ /** Null when it was already deleted or removed when the report was made. */
2188
+ body: string | null;
2189
+ deleted: boolean;
2190
+ /** The message the report is about; always the last one. */
2191
+ isReported: boolean;
2192
+ createdAt: IsoDateString;
2193
+ }
2194
+ /**
2195
+ * MSG-09: the reported message and up to `MESSAGE_REPORT_CONTEXT_BEFORE`
2196
+ * before it, oldest first, captured when the report was made. It outlives the
2197
+ * author deleting the message, so deleting cannot erase the evidence, and it
2198
+ * goes with the author's account. Reading it is recorded as a `VIEW_SUBJECT`,
2199
+ * and nothing else of the conversation is ever readable.
2200
+ */
2201
+ interface ReportedMessageContext {
2202
+ /** The member who wrote the reported message. */
2203
+ author: UserSearchResponse;
2204
+ messages: CapturedMessage[];
2205
+ capturedAt: IsoDateString;
1888
2206
  }
1889
2207
  /** One row of the queue. */
1890
2208
  interface ModerationReport {
@@ -1941,7 +2259,8 @@ interface ModerationHistoryResponse {
1941
2259
  nextCursor: string | null;
1942
2260
  }
1943
2261
  /**
1944
- * POST /moderation/reports/:id/dismiss, /hide and /restore. The note is the
2262
+ * POST /moderation/reports/:id/dismiss, /hide, /restore and (MSG-09)
2263
+ * /restrict-messaging and /lift-messaging-restriction. The note is the
1945
2264
  * reviewer's own record of why; it is never shown to the reporter or to the
1946
2265
  * subject's owner, because neither is promised an explanation.
1947
2266
  */
@@ -1952,6 +2271,11 @@ interface ReviewReportRequest {
1952
2271
  interface ReviewReportResponse {
1953
2272
  report: ModerationReport;
1954
2273
  action: ModerationActionRecord;
2274
+ /**
2275
+ * MSG-09: present only on the view of a `MESSAGE` report, which is the one
2276
+ * way to read its capture, so the read and its record are one request.
2277
+ */
2278
+ messageContext?: ReportedMessageContext;
1955
2279
  }
1956
2280
 
1957
2281
  declare const USERNAME_MIN_LENGTH = 3;
@@ -3314,6 +3638,14 @@ interface CorrectSessionResponse {
3314
3638
  exerciseId: string;
3315
3639
  exerciseName: string;
3316
3640
  }>;
3641
+ /**
3642
+ * ROUT-17: LP exercises whose block had moved on since this workout, so
3643
+ * the correction did not change it. Absent before ROUT-17.
3644
+ */
3645
+ linearBlockKept?: Array<{
3646
+ exerciseId: string;
3647
+ exerciseName: string;
3648
+ }>;
3317
3649
  }
3318
3650
  /**
3319
3651
  * The window rule, shared so the server and the page state it the same way.
@@ -3599,7 +3931,7 @@ interface SendTrainingPartnerEncouragementResponse {
3599
3931
  * history), a finished session that set records or changed loads, and a new
3600
3932
  * follower.
3601
3933
  */
3602
- declare const NOTIFICATION_KINDS: readonly ["ACHIEVEMENT", "SESSION_PROGRESS", "NEW_FOLLOWER", "ACTIVITY_COMMENT", "TRAINING_PARTNER_ENCOURAGEMENT", "TRAINING_PARTNER_SESSION", "TRAINING_PARTNER_ACHIEVEMENT"];
3934
+ declare const NOTIFICATION_KINDS: readonly ["ACHIEVEMENT", "SESSION_PROGRESS", "NEW_FOLLOWER", "ACTIVITY_COMMENT", "TRAINING_PARTNER_ENCOURAGEMENT", "TRAINING_PARTNER_SESSION", "TRAINING_PARTNER_ACHIEVEMENT", "LINEAR_BLOCK_FINISHED"];
3603
3935
  type NotificationKind = (typeof NOTIFICATION_KINDS)[number];
3604
3936
  /** Sources older than this many days are never gathered. */
3605
3937
  declare const NOTIFICATIONS_LOOKBACK_DAYS = 30;
@@ -3717,8 +4049,28 @@ interface TrainingPartnerAchievementNotification extends TrainingPartnerActivity
3717
4049
  title: string;
3718
4050
  };
3719
4051
  }
4052
+ /**
4053
+ * ROUT-18: an exercise finished its 8-step block in a completed workout. The
4054
+ * estimate is an estimate, never a tested max, and null when the logs did not
4055
+ * allow one. The link is the routine, where the next block is chosen.
4056
+ */
4057
+ interface LinearBlockFinishedNotification extends NotificationBase {
4058
+ kind: 'LINEAR_BLOCK_FINISHED';
4059
+ routine: {
4060
+ id: string;
4061
+ name: string;
4062
+ };
4063
+ exercise: {
4064
+ id: string;
4065
+ name: string;
4066
+ };
4067
+ sessionId: string;
4068
+ /** The finished block's reference max, kg. */
4069
+ referenceMaxKg: number;
4070
+ estimatedMaxKg: number | null;
4071
+ }
3720
4072
  /** Named to stay clear of the DOM's `Notification`. */
3721
- type AppNotification = AchievementNotification | SessionProgressNotification | NewFollowerNotification | ActivityCommentNotification | TrainingPartnerEncouragementNotification | TrainingPartnerSessionNotification | TrainingPartnerAchievementNotification;
4073
+ type AppNotification = AchievementNotification | SessionProgressNotification | NewFollowerNotification | ActivityCommentNotification | TrainingPartnerEncouragementNotification | TrainingPartnerSessionNotification | TrainingPartnerAchievementNotification | LinearBlockFinishedNotification;
3722
4074
  /** GET /notifications?limit=&cursor= */
3723
4075
  interface NotificationsQuery {
3724
4076
  /** 1 to `NOTIFICATIONS_PAGE_SIZE_MAX`; `NOTIFICATIONS_PAGE_SIZE` when left out. */
@@ -4319,6 +4671,13 @@ declare const API_ERROR_MESSAGES: {
4319
4671
  readonly SWAP_SESSION_NOT_ACTIVE: "Exercises can only be swapped in an active session";
4320
4672
  readonly SWAP_SETS_COMPLETED: "This exercise already has completed sets. Swap it before completing any.";
4321
4673
  readonly NOTES_DISCARDED_SESSION: "A discarded workout cannot take notes";
4674
+ readonly LINEAR_BLOCK_INVALID: "This exercise's block is not valid: {reason}";
4675
+ readonly LINEAR_BLOCK_EXTRA_SET: "An exercise on an 8-week block takes no extra sets";
4676
+ readonly LINEAR_BLOCK_KIND_FIXED: "The working sets of an 8-week block cannot change kind";
4677
+ readonly LINEAR_BLOCK_LOAD_FIXED: "The load of an 8-week block is prescribed and cannot be changed";
4678
+ readonly LINEAR_BLOCK_SWAP_ROUTINE: "An exercise on an 8-week block can be swapped for this workout only";
4679
+ readonly LINEAR_BLOCK_NOT_LINEAR: "This exercise is not on an 8-week block";
4680
+ readonly LINEAR_BLOCK_NOT_FINISHED: "This exercise's block has not finished, so there is nothing to choose yet";
4322
4681
  readonly CORRECTION_NOT_COMPLETED: "Only a completed workout can be corrected";
4323
4682
  readonly CORRECTION_NOT_LATEST: "Only your most recent workout can be corrected";
4324
4683
  readonly CORRECTION_LATER_SESSION: "This workout can no longer be corrected: another one has started since";
@@ -4366,6 +4725,10 @@ declare const API_ERROR_MESSAGES: {
4366
4725
  readonly MESSAGE_NOT_ADMITTED: "This member is not taking messages from you.";
4367
4726
  readonly CONVERSATION_CLOSED: "This conversation can no longer receive messages.";
4368
4727
  readonly MESSAGING_UNAVAILABLE: "Messaging is not available for this account.";
4728
+ readonly MESSAGING_RESTRICTED: "Moderation has restricted your messaging. You can still read and delete messages.";
4729
+ readonly REPORT_OWN_MESSAGE: "You cannot report your own message";
4730
+ readonly MESSAGING_ALREADY_RESTRICTED: "This member's messaging is already restricted";
4731
+ readonly MESSAGING_NOT_RESTRICTED: "This member's messaging is not restricted";
4369
4732
  readonly ACCOUNT_CONFLICT: "Account conflict for this email";
4370
4733
  readonly ACCOUNT_DELETE_CONFIRMATION: "Type your username exactly as it appears to confirm.";
4371
4734
  readonly ACCOUNT_DELETE_MODERATOR: "A moderator account cannot be deleted while it holds moderator access.";
@@ -4547,4 +4910,4 @@ declare function isRealtimeTopic(value: unknown): value is RealtimeTopic;
4547
4910
  /** The event in one `data:` payload, or null for anything else. */
4548
4911
  declare function parseRealtimeEvent(data: string): RealtimeEvent | null;
4549
4912
 
4550
- export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, API_ERROR_CODES, API_ERROR_MESSAGES, type AccountExportBodyMeasurement, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type ApiErrorBody, type ApiErrorCode, type ApiErrorParams, type AppLocale, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, BODY_MEASUREMENT_FIELDS, BODY_MEASUREMENT_FIELD_KEYS, BODY_PROGRESS_RANGES, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type BodyFieldSummary, type BodyMeasurement, type BodyMeasurementField, type BodyMeasurementProblem, type BodyMeasurementValues, type BodyProgressRange, type BodyProgressResponse, type Brand, CLONE_ROUTINE_REFUSALS, CM_PER_INCH, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CONVERSATIONS_PAGE_SIZE, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type ConversationMember, type ConversationMessage, type ConversationMessagesResponse, type ConversationSummary, type ConversationsResponse, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DASHBOARD_SECTION_IDS, DEFAULT_DASHBOARD_LAYOUT, DEFAULT_LOCALE, DEFAULT_MESSAGE_PERMISSION, DEFAULT_WEEK_STARTS_ON, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DashboardLayout, type DashboardLayoutEntry, type DashboardSectionId, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, type DismissGoalSuggestionRequest, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, GOAL_SUGGESTIONS_MAX, GOAL_SUGGESTION_DISMISSALS_MAX, GOAL_SUGGESTION_LIFT_MIN_SESSIONS, GOAL_SUGGESTION_LIFT_WINDOW_DAYS, GOAL_SUGGESTION_MIN_ACTIVE_WEEKS, GOAL_SUGGESTION_STRENGTH_STEP, GOAL_SUGGESTION_TYPES, GOAL_SUGGESTION_VOLUME_WEEKS, type GoalSuggestion, type GoalSuggestionBasis, type GoalSuggestionType, type GoalSuggestionsResponse, INCHES_PER_FOOT, type IsoDateString, LENGTH_UNITS, LIMITED_SHORTFALL_KG, type LengthUnit, type ListSessionsParams, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MESSAGES_PAGE_SIZE, MESSAGES_PER_MINUTE_MAX, MESSAGE_BODY_MAX, MESSAGE_PERMISSIONS, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberMessagingState, type MemberModerationState, type MemberRoutinesResponse, type MemberSearchPage, type MessagePermission, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NEW_CONVERSATIONS_PER_DAY_MAX, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_PAGE_SIZE, NOTIFICATIONS_PAGE_SIZE_MAX, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsQuery, type NotificationsResponse, ONBOARDING_STEPS_MAX, ONBOARDING_STEP_ID_PATTERN_SOURCE, ONBOARDING_VERSION_MAX, OTHER_WARM_UP_STEPS, type OnboardingState, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, REALTIME_HEARTBEAT_MS, REALTIME_MAX_STREAMS_PER_MEMBER, REALTIME_MAX_STREAM_MS, REALTIME_STREAM_PATH, REALTIME_TOPICS, REALTIME_UNAVAILABLE_RETRY_SECONDS, RECENT_SEARCHES_MAX, RECENT_SEARCH_KINDS, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RealtimeEvent, type RealtimeTopic, type RecentActivityEntry, type RecentExercise, type RecentRoutine, type RecentSearchItem, type RecentSearchKind, type RecentSearchesResponse, type RecordRecentSearchRequest, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSearchPage, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SEARCH_PAGE_SIZE, SEARCH_PAGE_SIZE_MAX, SEARCH_PREVIEW_LIMIT, SEARCH_QUERY_MAX_LENGTH, SEARCH_QUERY_MIN_LENGTH, SEARCH_SERVER_CATEGORIES, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, SUPPORTED_LOCALES, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SearchPage, type SearchPageQuery, type SearchPreviewQuery, type SearchPreviewResponse, type SearchServerCategory, type SendMessageRequest, type SendMessageResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSearchResult, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartConversationRequest, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateDashboardLayoutRequest, type UpdateLocaleRequest, type UpdateMessagePermissionRequest, type UpdateNotificationPreferencesRequest, type UpdateOnboardingRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpdateWeekStartRequest, type UpsertBodyMeasurementRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEEK_STARTS, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeekStartsOn, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSearchPage, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, apiError, apiErrorMessage, applyDeload, bodyMeasurementProblems, bodyProgressRangeStart, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, cmToFeetInches, cmToInches, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, feetInchesToCm, followWorkingLoad, goalSuggestionKey, hasOversizedGroup, inchesToCm, isApiErrorCode, isAppLocale, isBarLoaded, isBodyMeasurementDate, isDashboardSectionId, isDefaultDashboardLayout, isGoalSuggestionKey, isMessagePermission, isOnboardingStepId, isRealtimeTopic, isSetKind, isWeekStartsOn, isWithinQuietHours, latestBodyWeight, leadWorkingWeight, matchesDeletionConfirmation, messageBodyLength, normalizeDashboardLayout, normalizeExerciseLinks, normalizeExerciseName, normalizeMessageBody, normalizeSearchQuery, parseRealtimeEvent, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, summarizeBodyProgress, trainingBlockCovers, warmUpLoad, weekStartOf };
4913
+ export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, API_ERROR_CODES, API_ERROR_MESSAGES, type AccountExportBodyMeasurement, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type ApiErrorBody, type ApiErrorCode, type ApiErrorParams, type AppLocale, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, BODY_MEASUREMENT_FIELDS, BODY_MEASUREMENT_FIELD_KEYS, BODY_PROGRESS_RANGES, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type BodyFieldSummary, type BodyMeasurement, type BodyMeasurementField, type BodyMeasurementProblem, type BodyMeasurementValues, type BodyProgressRange, type BodyProgressResponse, type Brand, CLONE_ROUTINE_REFUSALS, CM_PER_INCH, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CONVERSATIONS_PAGE_SIZE, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CapturedMessage, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type ContinueLinearBlockRequest, type ConversationMember, type ConversationMessage, type ConversationMessagesResponse, type ConversationSummary, type ConversationsResponse, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DASHBOARD_SECTION_IDS, DEFAULT_DASHBOARD_LAYOUT, DEFAULT_LOCALE, DEFAULT_MESSAGE_PERMISSION, DEFAULT_WEEK_STARTS_ON, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DashboardLayout, type DashboardLayoutEntry, type DashboardSectionId, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, type DismissGoalSuggestionRequest, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, GOAL_SUGGESTIONS_MAX, GOAL_SUGGESTION_DISMISSALS_MAX, GOAL_SUGGESTION_LIFT_MIN_SESSIONS, GOAL_SUGGESTION_LIFT_WINDOW_DAYS, GOAL_SUGGESTION_MIN_ACTIVE_WEEKS, GOAL_SUGGESTION_STRENGTH_STEP, GOAL_SUGGESTION_TYPES, GOAL_SUGGESTION_VOLUME_WEEKS, type GoalSuggestion, type GoalSuggestionBasis, type GoalSuggestionType, type GoalSuggestionsResponse, INCHES_PER_FOOT, type IsoDateString, LENGTH_UNITS, LIMITED_SHORTFALL_KG, LP_BLOCK_STEPS, LP_ESTIMATE_MAX_REPS_TO_FAILURE, LP_ESTIMATE_MIN_SETS, LP_ESTIMATE_STEPS, LP_NEXT_BLOCK_KINDS, LP_PHASES, LP_PROGRESS_CAP, LP_PROGRESS_THRESHOLD, LP_RECOVERY, LP_REFERENCE_MAX_KG, LP_REST_SECONDS, LP_STEPS, LP_WORKING_SETS, type LengthUnit, type LinearBlockChange, type LinearBlockFinishedNotification, type LinearPeriodizationState, type ListSessionsParams, type LpEstimate, type LpLoggedSet, type LpNextBlockKind, type LpPhase, type LpRecommendation, type LpSample, type LpSetPrescription, type LpSetTarget, type LpStep, type LpStoredSet, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MESSAGES_PAGE_SIZE, MESSAGES_PER_MINUTE_MAX, MESSAGE_BODY_MAX, MESSAGE_PERMISSIONS, MESSAGE_REPORT_CONTEXT_BEFORE, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberMessagingState, type MemberModerationState, type MemberRoutinesResponse, type MemberSearchPage, type MessagePermission, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NEW_CONVERSATIONS_PER_DAY_MAX, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_PAGE_SIZE, NOTIFICATIONS_PAGE_SIZE_MAX, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsQuery, type NotificationsResponse, ONBOARDING_STEPS_MAX, ONBOARDING_STEP_ID_PATTERN_SOURCE, ONBOARDING_VERSION_MAX, OTHER_WARM_UP_STEPS, type OnboardingState, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, REALTIME_HEARTBEAT_MS, REALTIME_MAX_STREAMS_PER_MEMBER, REALTIME_MAX_STREAM_MS, REALTIME_STREAM_PATH, REALTIME_TOPICS, REALTIME_UNAVAILABLE_RETRY_SECONDS, RECENT_SEARCHES_MAX, RECENT_SEARCH_KINDS, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RealtimeEvent, type RealtimeTopic, type RecentActivityEntry, type RecentExercise, type RecentRoutine, type RecentSearchItem, type RecentSearchKind, type RecentSearchesResponse, type RecordRecentSearchRequest, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ReportedMessageContext, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSearchPage, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SEARCH_PAGE_SIZE, SEARCH_PAGE_SIZE_MAX, SEARCH_PREVIEW_LIMIT, SEARCH_QUERY_MAX_LENGTH, SEARCH_QUERY_MIN_LENGTH, SEARCH_SERVER_CATEGORIES, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, SUPPORTED_LOCALES, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SearchPage, type SearchPageQuery, type SearchPreviewQuery, type SearchPreviewResponse, type SearchServerCategory, type SendMessageRequest, type SendMessageResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSearchResult, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartConversationRequest, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateDashboardLayoutRequest, type UpdateLocaleRequest, type UpdateMessagePermissionRequest, type UpdateNotificationPreferencesRequest, type UpdateOnboardingRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpdateWeekStartRequest, type UpsertBodyMeasurementRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEEK_STARTS, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeekStartsOn, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSearchPage, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, advanceLinearPeriodization, apiError, apiErrorMessage, applyDeload, bodyMeasurementProblems, bodyProgressRangeStart, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, cmToFeetInches, cmToInches, continueLinearPeriodization, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, feetInchesToCm, followWorkingLoad, goalSuggestionKey, hasOversizedGroup, inchesToCm, isApiErrorCode, isAppLocale, isBarLoaded, isBodyMeasurementDate, isDashboardSectionId, isDefaultDashboardLayout, isGoalSuggestionKey, isMessagePermission, isOnboardingStepId, isRealtimeTopic, isSetKind, isWeekStartsOn, isWithinQuietHours, latestBodyWeight, leadWorkingWeight, linearPeriodizationProblem, lpEstimate, lpLoadKg, lpPrescription, lpRecommendation, lpRirMidpoint, lpSampleRir, lpSetEstimateKg, lpStep, lpStoredSets, lpWorkingSets, matchesDeletionConfirmation, messageBodyLength, normalizeDashboardLayout, normalizeExerciseLinks, normalizeExerciseName, normalizeMessageBody, normalizeSearchQuery, parseRealtimeEvent, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, roundDownToIncrement, roundToIncrement, routineDayLabel, sameLpPosition, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, startLinearPeriodization, summarizeBodyProgress, trainingBlockCovers, warmUpLoad, weekStartOf };