@sunsteel/contracts 0.64.0 → 0.66.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.cjs +110 -3
- package/dist/index.d.cts +346 -178
- package/dist/index.d.ts +346 -178
- package/dist/index.js +99 -3
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,217 @@ interface PaginatedResponse<T> {
|
|
|
24
24
|
nextCursor?: string;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/** A local calendar date, YYYY-MM-DD. */
|
|
28
|
+
type CalendarDate = string;
|
|
29
|
+
/**
|
|
30
|
+
* The schedule-instance model: per-date overrides of a routine's plan. MOVE
|
|
31
|
+
* puts one weekly occurrence on another date (SCHED-04); SKIP marks it
|
|
32
|
+
* skipped on purpose (SCHED-05). Overrides are kept by calendar date, not by
|
|
33
|
+
* routine day, because routine edits replace the days.
|
|
34
|
+
*/
|
|
35
|
+
declare const SCHEDULE_OVERRIDE_KINDS: readonly ["MOVE", "SKIP"];
|
|
36
|
+
type ScheduleOverrideKind = (typeof SCHEDULE_OVERRIDE_KINDS)[number];
|
|
37
|
+
/** A move goes at most this many days before or after the planned date. */
|
|
38
|
+
declare const SCHEDULE_MOVE_MAX_DAYS = 6;
|
|
39
|
+
/**
|
|
40
|
+
* SCHED-05: a skip can explain a planned day up to this many days back;
|
|
41
|
+
* ahead, any planned day can be skipped.
|
|
42
|
+
*/
|
|
43
|
+
declare const SCHEDULE_SKIP_PAST_DAYS = 6;
|
|
44
|
+
/** Overrides are read for at most this many days at once. */
|
|
45
|
+
declare const SCHEDULE_OVERRIDES_MAX_RANGE_DAYS = 62;
|
|
46
|
+
interface ScheduleOverride {
|
|
47
|
+
id: string;
|
|
48
|
+
routineId: string;
|
|
49
|
+
/** The planned date this override changes. */
|
|
50
|
+
date: CalendarDate;
|
|
51
|
+
kind: ScheduleOverrideKind;
|
|
52
|
+
/** MOVE: the date the occurrence now falls on; null for SKIP. */
|
|
53
|
+
toDate: CalendarDate | null;
|
|
54
|
+
createdAt: IsoDateString;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `GET /schedule/overrides?from&to`: the owner's overrides whose date or
|
|
58
|
+
* target falls in the range, both ends included.
|
|
59
|
+
*/
|
|
60
|
+
interface ScheduleOverridesQuery {
|
|
61
|
+
from: CalendarDate;
|
|
62
|
+
to: CalendarDate;
|
|
63
|
+
}
|
|
64
|
+
interface ScheduleOverridesResponse {
|
|
65
|
+
overrides: ScheduleOverride[];
|
|
66
|
+
}
|
|
67
|
+
/** `PUT /schedule/overrides/move`: moves one occurrence, or moves it again. */
|
|
68
|
+
interface MoveOccurrenceRequest {
|
|
69
|
+
routineId: string;
|
|
70
|
+
date: CalendarDate;
|
|
71
|
+
toDate: CalendarDate;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* `PUT /schedule/overrides/skip`: marks one occurrence skipped. A moved
|
|
75
|
+
* occurrence is skipped as a whole; undoing is `DELETE` like a move.
|
|
76
|
+
*/
|
|
77
|
+
interface SkipOccurrenceRequest {
|
|
78
|
+
routineId: string;
|
|
79
|
+
date: CalendarDate;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** One routine may have this many current, non-overlapping planned blocks. */
|
|
83
|
+
declare const ROUTINE_TRAINING_BLOCKS_MAX = 24;
|
|
84
|
+
/** A started block keeps at most this many immutable revisions. */
|
|
85
|
+
declare const ROUTINE_TRAINING_BLOCK_REVISIONS_MAX = 20;
|
|
86
|
+
declare const ROUTINE_TRAINING_BLOCK_NAME_MAX = 60;
|
|
87
|
+
declare const ROUTINE_TRAINING_BLOCK_STATES: readonly ["FUTURE", "ACTIVE", "COMPLETE"];
|
|
88
|
+
type RoutineTrainingBlockState = (typeof ROUTINE_TRAINING_BLOCK_STATES)[number];
|
|
89
|
+
declare const ROUTINE_TRAINING_BLOCK_SOURCE_KINDS: readonly ["CURRENT_ROUTINE", "SAVED_VERSION"];
|
|
90
|
+
type RoutineTrainingBlockSourceKind = (typeof ROUTINE_TRAINING_BLOCK_SOURCE_KINDS)[number];
|
|
91
|
+
/**
|
|
92
|
+
* The origin is snapshotted so a later routine edit or ROUT-08 version
|
|
93
|
+
* deletion cannot change what this block says it was authored from.
|
|
94
|
+
*/
|
|
95
|
+
interface RoutineTrainingBlockSource {
|
|
96
|
+
kind: RoutineTrainingBlockSourceKind;
|
|
97
|
+
versionId: string | null;
|
|
98
|
+
versionNumber: number | null;
|
|
99
|
+
versionName: string | null;
|
|
100
|
+
}
|
|
101
|
+
/** One immutable revision of a named, dated setup. */
|
|
102
|
+
interface RoutineTrainingBlockRevision {
|
|
103
|
+
id: string;
|
|
104
|
+
routineId: string;
|
|
105
|
+
/** Stable across every replacement of the same logical block. */
|
|
106
|
+
seriesId: string;
|
|
107
|
+
/** 1, 2, 3… inside the series. */
|
|
108
|
+
revision: number;
|
|
109
|
+
name: string;
|
|
110
|
+
startDate: CalendarDate;
|
|
111
|
+
endDate: CalendarDate;
|
|
112
|
+
setup: RoutineVersionSetup;
|
|
113
|
+
source: RoutineTrainingBlockSource;
|
|
114
|
+
createdAt: IsoDateString;
|
|
115
|
+
/** Null only on the current revision. */
|
|
116
|
+
supersededAt: IsoDateString | null;
|
|
117
|
+
}
|
|
118
|
+
/** A current block in the routine timeline. State is relative to `today`. */
|
|
119
|
+
interface RoutineTrainingBlock extends Omit<RoutineTrainingBlockRevision, 'supersededAt'> {
|
|
120
|
+
state: RoutineTrainingBlockState;
|
|
121
|
+
revisionCount: number;
|
|
122
|
+
}
|
|
123
|
+
/** `GET /routines/:id/training-blocks`, ordered by start date. */
|
|
124
|
+
interface RoutineTrainingBlocksResponse {
|
|
125
|
+
blocks: RoutineTrainingBlock[];
|
|
126
|
+
max: number;
|
|
127
|
+
revisionMax: number;
|
|
128
|
+
/** The owner's local date used to derive every state in this response. */
|
|
129
|
+
today: CalendarDate;
|
|
130
|
+
}
|
|
131
|
+
/** `GET /routines/:id/training-blocks/:blockId/revisions`, newest first. */
|
|
132
|
+
interface RoutineTrainingBlockRevisionsResponse {
|
|
133
|
+
seriesId: string;
|
|
134
|
+
revisions: RoutineTrainingBlockRevision[];
|
|
135
|
+
max: number;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* `POST /routines/:id/training-blocks` and
|
|
139
|
+
* `PUT /routines/:id/training-blocks/:blockId`.
|
|
140
|
+
* Null or omission captures the routine as it exists at request time.
|
|
141
|
+
*/
|
|
142
|
+
interface UpsertRoutineTrainingBlockRequest {
|
|
143
|
+
name: string;
|
|
144
|
+
startDate: CalendarDate;
|
|
145
|
+
endDate: CalendarDate;
|
|
146
|
+
sourceVersionId?: string | null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* A current block as a plan the schedule, the dashboard and a session start
|
|
150
|
+
* use. Its days are the block's own working copy, with ids, kept apart from
|
|
151
|
+
* the routine's baseline `days`: a session of a block day logs against them
|
|
152
|
+
* and progression advances them, never the baseline, which resumes unchanged
|
|
153
|
+
* once the block ends. A new revision starts again from its authored setup.
|
|
154
|
+
*/
|
|
155
|
+
interface RoutineTrainingBlockPlan {
|
|
156
|
+
/** The current revision's id. */
|
|
157
|
+
id: string;
|
|
158
|
+
seriesId: string;
|
|
159
|
+
revision: number;
|
|
160
|
+
name: string;
|
|
161
|
+
startDate: CalendarDate;
|
|
162
|
+
endDate: CalendarDate;
|
|
163
|
+
scheduleMode: RoutineScheduleMode;
|
|
164
|
+
restDays: number[];
|
|
165
|
+
rotationWeekdays: number[];
|
|
166
|
+
/**
|
|
167
|
+
* ROTATION only: the day after the last completed session of this block
|
|
168
|
+
* (any revision), or its first day before any. Never a baseline day.
|
|
169
|
+
*/
|
|
170
|
+
nextRotationDayId: string | null;
|
|
171
|
+
days: RoutineDay[];
|
|
172
|
+
}
|
|
173
|
+
/** ROUT-15: the block a session trained, copied onto the session itself. */
|
|
174
|
+
interface SessionTrainingBlock {
|
|
175
|
+
/** The revision trained. */
|
|
176
|
+
id: string;
|
|
177
|
+
seriesId: string;
|
|
178
|
+
revision: number;
|
|
179
|
+
name: string;
|
|
180
|
+
}
|
|
181
|
+
type DatedBlock = {
|
|
182
|
+
startDate: CalendarDate;
|
|
183
|
+
endDate: CalendarDate;
|
|
184
|
+
};
|
|
185
|
+
/** Both ends are inclusive; dates compare as `YYYY-MM-DD` strings. */
|
|
186
|
+
declare function trainingBlockCovers(block: DatedBlock, date: CalendarDate): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* The one active block for a date, or null. Blocks of one routine never
|
|
189
|
+
* overlap (ROUT-09), so the first cover is the only one.
|
|
190
|
+
*/
|
|
191
|
+
declare function resolveActiveTrainingBlock<T extends DatedBlock>(blocks: readonly T[] | null | undefined, date: CalendarDate): T | null;
|
|
192
|
+
/** What a routine plans for one date: its active block, else its baseline. */
|
|
193
|
+
interface ResolvedRoutinePlan<D> {
|
|
194
|
+
/** The block in force, also while a deload lightens it (ROUT-16). */
|
|
195
|
+
block: SessionTrainingBlock & DatedBlock | null;
|
|
196
|
+
/** ROUT-16: the deload in force that date, or null. */
|
|
197
|
+
override: SessionTemporaryOverride & DatedBlock | null;
|
|
198
|
+
scheduleMode: RoutineScheduleMode;
|
|
199
|
+
restDays: number[];
|
|
200
|
+
rotationWeekdays: number[];
|
|
201
|
+
nextRotationDayId: string | null;
|
|
202
|
+
days: D[];
|
|
203
|
+
}
|
|
204
|
+
interface RoutinePlanSource<D> {
|
|
205
|
+
scheduleMode: RoutineScheduleMode;
|
|
206
|
+
restDays: number[];
|
|
207
|
+
rotationWeekdays?: number[] | null;
|
|
208
|
+
nextRotationDayId?: string | null;
|
|
209
|
+
days: D[];
|
|
210
|
+
trainingBlocks?: ReadonlyArray<DatedBlock & SessionTrainingBlock & {
|
|
211
|
+
scheduleMode: RoutineScheduleMode;
|
|
212
|
+
restDays: number[];
|
|
213
|
+
rotationWeekdays: number[];
|
|
214
|
+
nextRotationDayId: string | null;
|
|
215
|
+
days: D[];
|
|
216
|
+
}> | null;
|
|
217
|
+
/** ROUT-16: deloads, which take precedence over the plan they lighten. */
|
|
218
|
+
temporaryOverrides?: ReadonlyArray<DatedBlock & {
|
|
219
|
+
id: string;
|
|
220
|
+
kind: TemporaryOverrideKind;
|
|
221
|
+
scheduleMode: RoutineScheduleMode;
|
|
222
|
+
restDays: number[];
|
|
223
|
+
rotationWeekdays: number[];
|
|
224
|
+
nextRotationDayId: string | null;
|
|
225
|
+
days: D[];
|
|
226
|
+
}> | null;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* ROUT-15's single resolver. Every reader that decides what a routine trains
|
|
230
|
+
* on a date - the schedule, the dashboard, a session start, reminders and the
|
|
231
|
+
* partner schedule, on the frontend and the backend alike - asks this, so
|
|
232
|
+
* weekly and rotation routines, and the baseline and a block, never disagree.
|
|
233
|
+
* ROUT-16: a deload covering the date wins over the plan it lightened; the
|
|
234
|
+
* block it lightened is still reported, since a deload never crosses a plan.
|
|
235
|
+
*/
|
|
236
|
+
declare function resolveRoutinePlan<D>(routine: RoutinePlanSource<D>, date: CalendarDate): ResolvedRoutinePlan<D>;
|
|
237
|
+
|
|
27
238
|
/**
|
|
28
239
|
* Per-routine visibility. The account-level `PROF-06` routines rule is the
|
|
29
240
|
* upper bound: a routine marked `PUBLIC` inside an account whose routines are
|
|
@@ -257,6 +468,11 @@ interface Routine {
|
|
|
257
468
|
* `days` separately.
|
|
258
469
|
*/
|
|
259
470
|
trainingBlocks?: RoutineTrainingBlockPlan[];
|
|
471
|
+
/**
|
|
472
|
+
* ROUT-16: current and upcoming deloads as plans, each with its own
|
|
473
|
+
* working-copy days. Owner-only, and resolved with `resolveRoutinePlan`.
|
|
474
|
+
*/
|
|
475
|
+
temporaryOverrides?: RoutineTemporaryOverridePlan[];
|
|
260
476
|
createdAt: IsoDateString;
|
|
261
477
|
updatedAt: IsoDateString;
|
|
262
478
|
}
|
|
@@ -348,201 +564,99 @@ interface RestoreRoutineVersionResponse {
|
|
|
348
564
|
savedVersion: RoutineVersion;
|
|
349
565
|
}
|
|
350
566
|
|
|
351
|
-
/**
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
declare const
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
*/
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
interface
|
|
393
|
-
routineId: string;
|
|
394
|
-
date: CalendarDate;
|
|
395
|
-
toDate: CalendarDate;
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* `PUT /schedule/overrides/skip`: marks one occurrence skipped. A moved
|
|
399
|
-
* occurrence is skipped as a whole; undoing is `DELETE` like a move.
|
|
400
|
-
*/
|
|
401
|
-
interface SkipOccurrenceRequest {
|
|
402
|
-
routineId: string;
|
|
403
|
-
date: CalendarDate;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
/** One routine may have this many current, non-overlapping planned blocks. */
|
|
407
|
-
declare const ROUTINE_TRAINING_BLOCKS_MAX = 24;
|
|
408
|
-
/** A started block keeps at most this many immutable revisions. */
|
|
409
|
-
declare const ROUTINE_TRAINING_BLOCK_REVISIONS_MAX = 20;
|
|
410
|
-
declare const ROUTINE_TRAINING_BLOCK_NAME_MAX = 60;
|
|
411
|
-
declare const ROUTINE_TRAINING_BLOCK_STATES: readonly ["FUTURE", "ACTIVE", "COMPLETE"];
|
|
412
|
-
type RoutineTrainingBlockState = (typeof ROUTINE_TRAINING_BLOCK_STATES)[number];
|
|
413
|
-
declare const ROUTINE_TRAINING_BLOCK_SOURCE_KINDS: readonly ["CURRENT_ROUTINE", "SAVED_VERSION"];
|
|
414
|
-
type RoutineTrainingBlockSourceKind = (typeof ROUTINE_TRAINING_BLOCK_SOURCE_KINDS)[number];
|
|
415
|
-
/**
|
|
416
|
-
* The origin is snapshotted so a later routine edit or ROUT-08 version
|
|
417
|
-
* deletion cannot change what this block says it was authored from.
|
|
418
|
-
*/
|
|
419
|
-
interface RoutineTrainingBlockSource {
|
|
420
|
-
kind: RoutineTrainingBlockSourceKind;
|
|
421
|
-
versionId: string | null;
|
|
422
|
-
versionNumber: number | null;
|
|
423
|
-
versionName: string | null;
|
|
424
|
-
}
|
|
425
|
-
/** One immutable revision of a named, dated setup. */
|
|
426
|
-
interface RoutineTrainingBlockRevision {
|
|
567
|
+
/** The longest deload, inclusive of both ends. */
|
|
568
|
+
declare const DELOAD_MAX_DAYS = 14;
|
|
569
|
+
/** The length a new deload is offered with. */
|
|
570
|
+
declare const DELOAD_DEFAULT_DAYS = 7;
|
|
571
|
+
/** How much lighter each set's load is, in percent. */
|
|
572
|
+
declare const DELOAD_LOAD_REDUCTIONS: readonly [0, 10, 20, 30, 40];
|
|
573
|
+
type DeloadLoadReduction = (typeof DELOAD_LOAD_REDUCTIONS)[number];
|
|
574
|
+
declare const DELOAD_DEFAULT_LOAD_REDUCTION: DeloadLoadReduction;
|
|
575
|
+
/** `HALF` keeps the first half of each exercise's sets, rounded up. */
|
|
576
|
+
declare const DELOAD_SET_MODES: readonly ["ALL", "HALF"];
|
|
577
|
+
type DeloadSetMode = (typeof DELOAD_SET_MODES)[number];
|
|
578
|
+
declare const DELOAD_DEFAULT_SET_MODE: DeloadSetMode;
|
|
579
|
+
declare const TEMPORARY_OVERRIDE_KINDS: readonly ["DELOAD"];
|
|
580
|
+
type TemporaryOverrideKind = (typeof TEMPORARY_OVERRIDE_KINDS)[number];
|
|
581
|
+
declare const TEMPORARY_OVERRIDE_SOURCE_KINDS: readonly ["BASELINE", "TRAINING_BLOCK"];
|
|
582
|
+
type TemporaryOverrideSourceKind = (typeof TEMPORARY_OVERRIDE_SOURCE_KINDS)[number];
|
|
583
|
+
interface DeloadOptions {
|
|
584
|
+
loadReductionPercent: DeloadLoadReduction;
|
|
585
|
+
setMode: DeloadSetMode;
|
|
586
|
+
}
|
|
587
|
+
/** Why a deload cannot be made from a prescription with these options. */
|
|
588
|
+
declare const DELOAD_NOT_LIGHTER = "Those options leave every set as it is: choose a lighter load or fewer sets";
|
|
589
|
+
/**
|
|
590
|
+
* ROUT-16's one rule for what a deload is, shared so the preview the owner
|
|
591
|
+
* reviews and the prescription the server stores cannot disagree: every load
|
|
592
|
+
* drops by the chosen percentage, rounded to the exercise's own increment
|
|
593
|
+
* (a load whose grid cannot express the cut keeps its weight), and `HALF` keeps the first half of each
|
|
594
|
+
* exercise's sets (rounded up, so one set stays one). Reps, RIR, rest and everything else are
|
|
595
|
+
* untouched. Returns null when nothing would be lighter -- the override is an
|
|
596
|
+
* explicitly lighter prescription, never an unchanged copy.
|
|
597
|
+
*/
|
|
598
|
+
declare function applyDeload(setup: RoutineVersionSetup, options: DeloadOptions): RoutineVersionSetup | null;
|
|
599
|
+
/** Days from `start` to `end`, both included. */
|
|
600
|
+
declare function deloadLengthDays(startDate: CalendarDate, endDate: CalendarDate): number;
|
|
601
|
+
/** Where a deload's prescription was copied from. */
|
|
602
|
+
interface TemporaryOverrideSource {
|
|
603
|
+
kind: TemporaryOverrideSourceKind;
|
|
604
|
+
trainingBlockId: string | null;
|
|
605
|
+
trainingBlockName: string | null;
|
|
606
|
+
}
|
|
607
|
+
/** One deload of a routine. State is relative to `today`. */
|
|
608
|
+
interface RoutineTemporaryOverride {
|
|
427
609
|
id: string;
|
|
428
610
|
routineId: string;
|
|
429
|
-
|
|
430
|
-
seriesId: string;
|
|
431
|
-
/** 1, 2, 3… inside the series. */
|
|
432
|
-
revision: number;
|
|
433
|
-
name: string;
|
|
611
|
+
kind: TemporaryOverrideKind;
|
|
434
612
|
startDate: CalendarDate;
|
|
613
|
+
/** Moves to the day before it was ended when it is ended early. */
|
|
435
614
|
endDate: CalendarDate;
|
|
615
|
+
loadReductionPercent: DeloadLoadReduction;
|
|
616
|
+
setMode: DeloadSetMode;
|
|
617
|
+
source: TemporaryOverrideSource;
|
|
618
|
+
/** The prescription in force when the deload was created. */
|
|
619
|
+
originalSetup: RoutineVersionSetup;
|
|
620
|
+
/** The lighter prescription the deload trains. */
|
|
436
621
|
setup: RoutineVersionSetup;
|
|
437
|
-
|
|
622
|
+
endedEarlyAt: IsoDateString | null;
|
|
438
623
|
createdAt: IsoDateString;
|
|
439
|
-
|
|
440
|
-
supersededAt: IsoDateString | null;
|
|
441
|
-
}
|
|
442
|
-
/** A current block in the routine timeline. State is relative to `today`. */
|
|
443
|
-
interface RoutineTrainingBlock extends Omit<RoutineTrainingBlockRevision, 'supersededAt'> {
|
|
444
|
-
state: RoutineTrainingBlockState;
|
|
445
|
-
revisionCount: number;
|
|
624
|
+
state: 'FUTURE' | 'ACTIVE' | 'COMPLETE';
|
|
446
625
|
}
|
|
447
|
-
/** `GET /routines/:id/
|
|
448
|
-
interface
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
/** The owner's local date used to derive every state in this response. */
|
|
626
|
+
/** `GET /routines/:id/deloads`, newest start first. */
|
|
627
|
+
interface RoutineTemporaryOverridesResponse {
|
|
628
|
+
overrides: RoutineTemporaryOverride[];
|
|
629
|
+
maxDays: number;
|
|
630
|
+
/** The owner's local date every state is relative to. */
|
|
453
631
|
today: CalendarDate;
|
|
454
632
|
}
|
|
455
|
-
/** `
|
|
456
|
-
interface
|
|
457
|
-
seriesId: string;
|
|
458
|
-
revisions: RoutineTrainingBlockRevision[];
|
|
459
|
-
max: number;
|
|
460
|
-
}
|
|
461
|
-
/**
|
|
462
|
-
* `POST /routines/:id/training-blocks` and
|
|
463
|
-
* `PUT /routines/:id/training-blocks/:blockId`.
|
|
464
|
-
* Null or omission captures the routine as it exists at request time.
|
|
465
|
-
*/
|
|
466
|
-
interface UpsertRoutineTrainingBlockRequest {
|
|
467
|
-
name: string;
|
|
633
|
+
/** `POST /routines/:id/deloads` */
|
|
634
|
+
interface CreateDeloadRequest extends DeloadOptions {
|
|
468
635
|
startDate: CalendarDate;
|
|
469
636
|
endDate: CalendarDate;
|
|
470
|
-
sourceVersionId?: string | null;
|
|
471
637
|
}
|
|
472
638
|
/**
|
|
473
|
-
* A
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
* and progression advances them, never the baseline, which resumes unchanged
|
|
477
|
-
* once the block ends. A new revision starts again from its authored setup.
|
|
639
|
+
* A deload as a plan the resolver can place: its working-copy days (real ids,
|
|
640
|
+
* apart from the baseline and from any block) and the schedule of the plan it
|
|
641
|
+
* lightened. Owner-only, on `Routine.temporaryOverrides`.
|
|
478
642
|
*/
|
|
479
|
-
interface
|
|
480
|
-
/** The current revision's id. */
|
|
643
|
+
interface RoutineTemporaryOverridePlan {
|
|
481
644
|
id: string;
|
|
482
|
-
|
|
483
|
-
revision: number;
|
|
484
|
-
name: string;
|
|
645
|
+
kind: TemporaryOverrideKind;
|
|
485
646
|
startDate: CalendarDate;
|
|
486
647
|
endDate: CalendarDate;
|
|
487
648
|
scheduleMode: RoutineScheduleMode;
|
|
488
649
|
restDays: number[];
|
|
489
650
|
rotationWeekdays: number[];
|
|
490
|
-
/**
|
|
491
|
-
* ROTATION only: the day after the last completed session of this block
|
|
492
|
-
* (any revision), or its first day before any. Never a baseline day.
|
|
493
|
-
*/
|
|
651
|
+
/** ROTATION only: the underlying plan's next day, in this copy. */
|
|
494
652
|
nextRotationDayId: string | null;
|
|
495
653
|
days: RoutineDay[];
|
|
496
654
|
}
|
|
497
|
-
/** ROUT-
|
|
498
|
-
interface
|
|
499
|
-
/** The revision trained. */
|
|
655
|
+
/** ROUT-16: the temporary override a session trained, copied onto it. */
|
|
656
|
+
interface SessionTemporaryOverride {
|
|
500
657
|
id: string;
|
|
501
|
-
|
|
502
|
-
revision: number;
|
|
503
|
-
name: string;
|
|
658
|
+
kind: TemporaryOverrideKind;
|
|
504
659
|
}
|
|
505
|
-
type DatedBlock = {
|
|
506
|
-
startDate: CalendarDate;
|
|
507
|
-
endDate: CalendarDate;
|
|
508
|
-
};
|
|
509
|
-
/** Both ends are inclusive; dates compare as `YYYY-MM-DD` strings. */
|
|
510
|
-
declare function trainingBlockCovers(block: DatedBlock, date: CalendarDate): boolean;
|
|
511
|
-
/**
|
|
512
|
-
* The one active block for a date, or null. Blocks of one routine never
|
|
513
|
-
* overlap (ROUT-09), so the first cover is the only one.
|
|
514
|
-
*/
|
|
515
|
-
declare function resolveActiveTrainingBlock<T extends DatedBlock>(blocks: readonly T[] | null | undefined, date: CalendarDate): T | null;
|
|
516
|
-
/** What a routine plans for one date: its active block, else its baseline. */
|
|
517
|
-
interface ResolvedRoutinePlan<D> {
|
|
518
|
-
block: SessionTrainingBlock & DatedBlock | null;
|
|
519
|
-
scheduleMode: RoutineScheduleMode;
|
|
520
|
-
restDays: number[];
|
|
521
|
-
rotationWeekdays: number[];
|
|
522
|
-
nextRotationDayId: string | null;
|
|
523
|
-
days: D[];
|
|
524
|
-
}
|
|
525
|
-
interface RoutinePlanSource<D> {
|
|
526
|
-
scheduleMode: RoutineScheduleMode;
|
|
527
|
-
restDays: number[];
|
|
528
|
-
rotationWeekdays?: number[] | null;
|
|
529
|
-
nextRotationDayId?: string | null;
|
|
530
|
-
days: D[];
|
|
531
|
-
trainingBlocks?: ReadonlyArray<DatedBlock & SessionTrainingBlock & {
|
|
532
|
-
scheduleMode: RoutineScheduleMode;
|
|
533
|
-
restDays: number[];
|
|
534
|
-
rotationWeekdays: number[];
|
|
535
|
-
nextRotationDayId: string | null;
|
|
536
|
-
days: D[];
|
|
537
|
-
}> | null;
|
|
538
|
-
}
|
|
539
|
-
/**
|
|
540
|
-
* ROUT-15's single resolver. Every reader that decides what a routine trains
|
|
541
|
-
* on a date - the schedule, the dashboard, a session start, reminders and the
|
|
542
|
-
* partner schedule, on the frontend and the backend alike - asks this, so
|
|
543
|
-
* weekly and rotation routines, and the baseline and a block, never disagree.
|
|
544
|
-
*/
|
|
545
|
-
declare function resolveRoutinePlan<D>(routine: RoutinePlanSource<D>, date: CalendarDate): ResolvedRoutinePlan<D>;
|
|
546
660
|
|
|
547
661
|
interface SetLog {
|
|
548
662
|
id: string;
|
|
@@ -589,6 +703,11 @@ interface WorkoutSession {
|
|
|
589
703
|
* the block's end never rewrites what the session was.
|
|
590
704
|
*/
|
|
591
705
|
trainingBlock?: SessionTrainingBlock | null;
|
|
706
|
+
/**
|
|
707
|
+
* ROUT-16: the deload this session trained, or null. A deload session
|
|
708
|
+
* never advances progression.
|
|
709
|
+
*/
|
|
710
|
+
temporaryOverride?: SessionTemporaryOverride | null;
|
|
592
711
|
routine?: {
|
|
593
712
|
id: string;
|
|
594
713
|
name: string;
|
|
@@ -876,6 +995,8 @@ interface WorkoutSessionSummary {
|
|
|
876
995
|
dayName?: string | null;
|
|
877
996
|
/** ROUT-15: the block trained, when it was one. */
|
|
878
997
|
trainingBlockName?: string | null;
|
|
998
|
+
/** ROUT-16: set when the session trained a deload. */
|
|
999
|
+
temporaryOverrideKind?: 'DELOAD' | null;
|
|
879
1000
|
};
|
|
880
1001
|
}
|
|
881
1002
|
interface ListSessionsParams {
|
|
@@ -1179,6 +1300,8 @@ interface WorkoutSessionSnapshotV1 {
|
|
|
1179
1300
|
routineDay: NonNullable<WorkoutSession['routineDay']>;
|
|
1180
1301
|
/** ROUT-15; absent on snapshots captured before blocks executed. */
|
|
1181
1302
|
trainingBlock?: WorkoutSession['trainingBlock'];
|
|
1303
|
+
/** ROUT-16; absent on snapshots captured before deloads existed. */
|
|
1304
|
+
temporaryOverride?: WorkoutSession['temporaryOverride'];
|
|
1182
1305
|
}
|
|
1183
1306
|
interface SetAccountTimeZoneRequest {
|
|
1184
1307
|
timeZone: string;
|
|
@@ -2520,7 +2643,7 @@ interface SendTrainingPartnerEncouragementResponse {
|
|
|
2520
2643
|
* history), a finished session that set records or changed loads, and a new
|
|
2521
2644
|
* follower.
|
|
2522
2645
|
*/
|
|
2523
|
-
declare const NOTIFICATION_KINDS: readonly ["ACHIEVEMENT", "SESSION_PROGRESS", "NEW_FOLLOWER", "ACTIVITY_COMMENT", "TRAINING_PARTNER_ENCOURAGEMENT"];
|
|
2646
|
+
declare const NOTIFICATION_KINDS: readonly ["ACHIEVEMENT", "SESSION_PROGRESS", "NEW_FOLLOWER", "ACTIVITY_COMMENT", "TRAINING_PARTNER_ENCOURAGEMENT", "TRAINING_PARTNER_SESSION", "TRAINING_PARTNER_ACHIEVEMENT"];
|
|
2524
2647
|
type NotificationKind = (typeof NOTIFICATION_KINDS)[number];
|
|
2525
2648
|
/** Sources older than this many days are never gathered. */
|
|
2526
2649
|
declare const NOTIFICATIONS_LOOKBACK_DAYS = 30;
|
|
@@ -2600,8 +2723,36 @@ interface TrainingPartnerEncouragementNotification extends NotificationBase {
|
|
|
2600
2723
|
kind: TrainingPartnerEncouragementKind;
|
|
2601
2724
|
};
|
|
2602
2725
|
}
|
|
2726
|
+
interface TrainingPartnerActivityNotificationBase extends NotificationBase {
|
|
2727
|
+
actor: {
|
|
2728
|
+
id: string;
|
|
2729
|
+
username: string;
|
|
2730
|
+
name: string;
|
|
2731
|
+
lastName: string | null;
|
|
2732
|
+
avatarUrl: string | null;
|
|
2733
|
+
};
|
|
2734
|
+
/** Stable SOC-03 activity key whose current visibility authorizes the row. */
|
|
2735
|
+
entryId: string;
|
|
2736
|
+
}
|
|
2737
|
+
/** NOTIF-07: one summary for a completed workout, never one per set or record. */
|
|
2738
|
+
interface TrainingPartnerSessionNotification extends TrainingPartnerActivityNotificationBase {
|
|
2739
|
+
kind: 'TRAINING_PARTNER_SESSION';
|
|
2740
|
+
session: {
|
|
2741
|
+
id: string;
|
|
2742
|
+
routineName: string;
|
|
2743
|
+
dayName: string | null;
|
|
2744
|
+
};
|
|
2745
|
+
}
|
|
2746
|
+
/** NOTIF-07: only an achievement earned live, never a historical backfill. */
|
|
2747
|
+
interface TrainingPartnerAchievementNotification extends TrainingPartnerActivityNotificationBase {
|
|
2748
|
+
kind: 'TRAINING_PARTNER_ACHIEVEMENT';
|
|
2749
|
+
achievement: {
|
|
2750
|
+
id: string;
|
|
2751
|
+
title: string;
|
|
2752
|
+
};
|
|
2753
|
+
}
|
|
2603
2754
|
/** Named to stay clear of the DOM's `Notification`. */
|
|
2604
|
-
type AppNotification = AchievementNotification | SessionProgressNotification | NewFollowerNotification | ActivityCommentNotification | TrainingPartnerEncouragementNotification;
|
|
2755
|
+
type AppNotification = AchievementNotification | SessionProgressNotification | NewFollowerNotification | ActivityCommentNotification | TrainingPartnerEncouragementNotification | TrainingPartnerSessionNotification | TrainingPartnerAchievementNotification;
|
|
2605
2756
|
/** GET /notifications */
|
|
2606
2757
|
interface NotificationsResponse {
|
|
2607
2758
|
notifications: AppNotification[];
|
|
@@ -2669,7 +2820,7 @@ interface DeletePushSubscriptionRequest {
|
|
|
2669
2820
|
* What a delivered push asks the service worker to show. `kind` exists so the
|
|
2670
2821
|
* worker can branch without guessing from the copy.
|
|
2671
2822
|
*/
|
|
2672
|
-
declare const PUSH_PAYLOAD_KINDS: readonly ["REST_ALERT", "TRAINING_REMINDER", "STREAK_AT_RISK"];
|
|
2823
|
+
declare const PUSH_PAYLOAD_KINDS: readonly ["REST_ALERT", "TRAINING_REMINDER", "STREAK_AT_RISK", "TRAINING_PARTNER_SESSION", "TRAINING_PARTNER_ACHIEVEMENT"];
|
|
2673
2824
|
type PushPayloadKind = (typeof PUSH_PAYLOAD_KINDS)[number];
|
|
2674
2825
|
interface RestAlertPushPayload {
|
|
2675
2826
|
kind: 'REST_ALERT';
|
|
@@ -2705,7 +2856,23 @@ interface StreakAtRiskPushPayload {
|
|
|
2705
2856
|
url: string;
|
|
2706
2857
|
tag: string;
|
|
2707
2858
|
}
|
|
2708
|
-
|
|
2859
|
+
/** NOTIF-07. A partner finished one workout they currently share. */
|
|
2860
|
+
interface TrainingPartnerSessionPushPayload {
|
|
2861
|
+
kind: 'TRAINING_PARTNER_SESSION';
|
|
2862
|
+
title: string;
|
|
2863
|
+
body: string;
|
|
2864
|
+
url: string;
|
|
2865
|
+
tag: string;
|
|
2866
|
+
}
|
|
2867
|
+
/** NOTIF-07. A partner earned one live achievement they currently share. */
|
|
2868
|
+
interface TrainingPartnerAchievementPushPayload {
|
|
2869
|
+
kind: 'TRAINING_PARTNER_ACHIEVEMENT';
|
|
2870
|
+
title: string;
|
|
2871
|
+
body: string;
|
|
2872
|
+
url: string;
|
|
2873
|
+
tag: string;
|
|
2874
|
+
}
|
|
2875
|
+
type PushPayload = RestAlertPushPayload | TrainingReminderPushPayload | StreakAtRiskPushPayload | TrainingPartnerSessionPushPayload | TrainingPartnerAchievementPushPayload;
|
|
2709
2876
|
/** A rest alert is refused beyond this far ahead. */
|
|
2710
2877
|
declare const REST_ALERT_MAX_LEAD_SECONDS = 3600;
|
|
2711
2878
|
/**
|
|
@@ -2739,10 +2906,11 @@ type RestAlertRefusal = (typeof REST_ALERT_REFUSALS)[number];
|
|
|
2739
2906
|
*
|
|
2740
2907
|
* There is deliberately no "channel" axis beside this. Web Push is the only
|
|
2741
2908
|
* delivery channel that exists, so a channel switch would be the same switch
|
|
2742
|
-
* twice
|
|
2743
|
-
*
|
|
2909
|
+
* twice. The two NOTIF-07 partner categories are explicit opt-ins and also
|
|
2910
|
+
* govern their corresponding in-app rows; every earlier NOTIF-01 source stays
|
|
2911
|
+
* gathered independently of these delivery controls.
|
|
2744
2912
|
*/
|
|
2745
|
-
declare const NOTIFICATION_CATEGORIES: readonly ["REST_ALERT", "TRAINING_REMINDER", "STREAK_AT_RISK"];
|
|
2913
|
+
declare const NOTIFICATION_CATEGORIES: readonly ["REST_ALERT", "TRAINING_REMINDER", "STREAK_AT_RISK", "TRAINING_PARTNER_SESSION", "TRAINING_PARTNER_ACHIEVEMENT"];
|
|
2746
2914
|
type NotificationCategory = (typeof NOTIFICATION_CATEGORIES)[number];
|
|
2747
2915
|
/**
|
|
2748
2916
|
* A local-clock window in which nothing is delivered, as minutes from
|
|
@@ -3002,4 +3170,4 @@ interface AccountExportV1 {
|
|
|
3002
3170
|
/** The file name a download of the export is saved under. */
|
|
3003
3171
|
declare function accountExportFileName(username: string, exportedAt: string): string;
|
|
3004
3172
|
|
|
3005
|
-
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, 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 AppNotification, BLOCKED_MEMBERS_MAX, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, 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, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, 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 MemberModerationState, type MemberRoutinesResponse, 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, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, 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, 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 PlatePairInventory, 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, 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 RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, 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 RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, 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, 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, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, 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 SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, 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, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, isWithinQuietHours, matchesDeletionConfirmation, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setLogValuesDiffer, trainingBlockCovers };
|
|
3173
|
+
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, 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 AppNotification, BLOCKED_MEMBERS_MAX, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, 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, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, 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, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, 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 MemberModerationState, type MemberRoutinesResponse, 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, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, 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, 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 PlatePairInventory, 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, 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 RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, 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 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, 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, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, 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 SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, 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_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, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, 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, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, applyDeload, deloadLengthDays, isWithinQuietHours, matchesDeletionConfirmation, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setLogValuesDiffer, trainingBlockCovers };
|