@sunsteel/contracts 0.53.0 → 0.55.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 CHANGED
@@ -29,6 +29,7 @@ __export(index_exports, {
29
29
  ACTIVITY_PAGE_DEFAULT_LIMIT: () => ACTIVITY_PAGE_DEFAULT_LIMIT,
30
30
  ACTIVITY_PAGE_MAX_LIMIT: () => ACTIVITY_PAGE_MAX_LIMIT,
31
31
  ACTIVITY_PREVIEW_AUDIENCES: () => ACTIVITY_PREVIEW_AUDIENCES,
32
+ ACTIVITY_REACTIONS: () => ACTIVITY_REACTIONS,
32
33
  ACTIVITY_TYPES: () => ACTIVITY_TYPES,
33
34
  ACTIVITY_TYPE_SECTIONS: () => ACTIVITY_TYPE_SECTIONS,
34
35
  BLOCKED_MEMBERS_MAX: () => BLOCKED_MEMBERS_MAX,
@@ -50,6 +51,10 @@ __export(index_exports, {
50
51
  MEASURABLE_GOAL_DIRECTIONS: () => MEASURABLE_GOAL_DIRECTIONS,
51
52
  MEASURABLE_GOAL_TYPES: () => MEASURABLE_GOAL_TYPES,
52
53
  MINUTES_IN_DAY: () => MINUTES_IN_DAY,
54
+ MODERATION_ACTION_KINDS: () => MODERATION_ACTION_KINDS,
55
+ MODERATION_HISTORY_PAGE_SIZE: () => MODERATION_HISTORY_PAGE_SIZE,
56
+ MODERATION_NOTE_MAX_LENGTH: () => MODERATION_NOTE_MAX_LENGTH,
57
+ MODERATION_QUEUE_PAGE_SIZE: () => MODERATION_QUEUE_PAGE_SIZE,
53
58
  MOVEMENT_PATTERNS: () => MOVEMENT_PATTERNS,
54
59
  MUSCLE_GROUPS: () => MUSCLE_GROUPS,
55
60
  NOTIFICATIONS_LIST_LIMIT: () => NOTIFICATIONS_LIST_LIMIT,
@@ -81,6 +86,7 @@ __export(index_exports, {
81
86
  REPORTS_PER_DAY_MAX: () => REPORTS_PER_DAY_MAX,
82
87
  REPORT_DETAILS_MAX_LENGTH: () => REPORT_DETAILS_MAX_LENGTH,
83
88
  REPORT_REASONS: () => REPORT_REASONS,
89
+ REPORT_STATUSES: () => REPORT_STATUSES,
84
90
  REPORT_SUBJECT_KINDS: () => REPORT_SUBJECT_KINDS,
85
91
  REP_TYPES: () => REP_TYPES,
86
92
  RESERVED_USERNAMES: () => RESERVED_USERNAMES,
@@ -270,6 +276,16 @@ var REPORT_REASONS = [
270
276
  ];
271
277
  var REPORT_DETAILS_MAX_LENGTH = 500;
272
278
  var REPORTS_PER_DAY_MAX = 20;
279
+ var REPORT_STATUSES = ["OPEN", "DISMISSED", "ACTIONED"];
280
+ var MODERATION_ACTION_KINDS = [
281
+ "VIEW_SUBJECT",
282
+ "DISMISS_REPORT",
283
+ "HIDE_SUBJECT",
284
+ "RESTORE_SUBJECT"
285
+ ];
286
+ var MODERATION_NOTE_MAX_LENGTH = 500;
287
+ var MODERATION_QUEUE_PAGE_SIZE = 20;
288
+ var MODERATION_HISTORY_PAGE_SIZE = 20;
273
289
 
274
290
  // src/exercise.ts
275
291
  var MOVEMENT_PATTERNS = [
@@ -500,6 +516,12 @@ var ACTIVITY_TYPE_SECTIONS = {
500
516
  ROUTINE_SHARED: "routines"
501
517
  };
502
518
  var ACTIVITY_DEFAULT_AUDIENCE = "PRIVATE";
519
+ var ACTIVITY_REACTIONS = [
520
+ "STRENGTH",
521
+ "DISCIPLINE",
522
+ "RESPECT",
523
+ "INSPIRING"
524
+ ];
503
525
  var ACTIVITY_PAGE_DEFAULT_LIMIT = 20;
504
526
  var ACTIVITY_PAGE_MAX_LIMIT = 50;
505
527
  var ACTIVITY_FEED_FOLLOWED_MAX = 500;
@@ -606,6 +628,7 @@ var STREAK_MAX_GAP_DAYS = 3;
606
628
  ACTIVITY_PAGE_DEFAULT_LIMIT,
607
629
  ACTIVITY_PAGE_MAX_LIMIT,
608
630
  ACTIVITY_PREVIEW_AUDIENCES,
631
+ ACTIVITY_REACTIONS,
609
632
  ACTIVITY_TYPES,
610
633
  ACTIVITY_TYPE_SECTIONS,
611
634
  BLOCKED_MEMBERS_MAX,
@@ -627,6 +650,10 @@ var STREAK_MAX_GAP_DAYS = 3;
627
650
  MEASURABLE_GOAL_DIRECTIONS,
628
651
  MEASURABLE_GOAL_TYPES,
629
652
  MINUTES_IN_DAY,
653
+ MODERATION_ACTION_KINDS,
654
+ MODERATION_HISTORY_PAGE_SIZE,
655
+ MODERATION_NOTE_MAX_LENGTH,
656
+ MODERATION_QUEUE_PAGE_SIZE,
630
657
  MOVEMENT_PATTERNS,
631
658
  MUSCLE_GROUPS,
632
659
  NOTIFICATIONS_LIST_LIMIT,
@@ -658,6 +685,7 @@ var STREAK_MAX_GAP_DAYS = 3;
658
685
  REPORTS_PER_DAY_MAX,
659
686
  REPORT_DETAILS_MAX_LENGTH,
660
687
  REPORT_REASONS,
688
+ REPORT_STATUSES,
661
689
  REPORT_SUBJECT_KINDS,
662
690
  REP_TYPES,
663
691
  RESERVED_USERNAMES,
package/dist/index.d.cts CHANGED
@@ -257,6 +257,13 @@ interface SessionShare {
257
257
  token: string;
258
258
  fields: SessionShareField[];
259
259
  createdAt: IsoDateString;
260
+ /**
261
+ * TRUST-04: a moderator has hidden the shared workout, so the link stops
262
+ * resolving for everyone but its owner. The link is not revoked and the
263
+ * session is untouched; the owner is told because a live-looking link that
264
+ * opens for nobody is worse than one that says why.
265
+ */
266
+ isHiddenByModeration?: boolean;
260
267
  }
261
268
  /** Stable successful response of GET /workouts/sessions/:id/shares. */
262
269
  interface SessionShareListResponse {
@@ -867,6 +874,119 @@ interface CreateReportResponse {
867
874
  id: string;
868
875
  createdAt: IsoDateString;
869
876
  }
877
+ /** Whether the signed-in account may open the queue at all. */
878
+ interface ModeratorState {
879
+ isModerator: boolean;
880
+ }
881
+ declare const REPORT_STATUSES: readonly ["OPEN", "DISMISSED", "ACTIONED"];
882
+ type ReportStatus = (typeof REPORT_STATUSES)[number];
883
+ /**
884
+ * Every moderator power, each one a record. `VIEW_SUBJECT` is here for the
885
+ * same reason the others are: it is a thing a moderator did to somebody's
886
+ * content, and it is the only one that leaves no other trace.
887
+ */
888
+ declare const MODERATION_ACTION_KINDS: readonly ["VIEW_SUBJECT", "DISMISS_REPORT", "HIDE_SUBJECT", "RESTORE_SUBJECT"];
889
+ type ModerationActionKind = (typeof MODERATION_ACTION_KINDS)[number];
890
+ declare const MODERATION_NOTE_MAX_LENGTH = 500;
891
+ declare const MODERATION_QUEUE_PAGE_SIZE = 20;
892
+ declare const MODERATION_HISTORY_PAGE_SIZE = 20;
893
+ /**
894
+ * What the reviewer may actually learn about a reported subject, resolved
895
+ * server-side through the rules that already govern the subject. A reviewer
896
+ * who may not read it is told so; the queue never fills the gap in.
897
+ */
898
+ interface ReportSubjectPreview {
899
+ kind: ReportSubjectKind;
900
+ /** As the reporter named it: a member id or username, a routine id, a token. */
901
+ id: string;
902
+ /**
903
+ * The member id, routine id or session-share token this resolves to, which
904
+ * is what a review action is recorded against. Null when the subject is
905
+ * gone.
906
+ */
907
+ resolvedId: string | null;
908
+ /** Present only when the reviewer may read the subject. */
909
+ title: string | null;
910
+ /** The subject's owner, when the reviewer may read the subject. */
911
+ owner: UserSearchResponse | null;
912
+ /** The subject no longer exists; only dismissing is left. */
913
+ isMissing: boolean;
914
+ /**
915
+ * The shipped `PROF-06`/`PROF-10` rules deny this reviewer this subject.
916
+ * It can still be hidden or dismissed on the strength of the report; it
917
+ * cannot be read, and no moderator flag changes that.
918
+ */
919
+ isWithheld: boolean;
920
+ /** A `HIDE_SUBJECT` is currently in force. */
921
+ isHidden: boolean;
922
+ }
923
+ /** One row of the queue. */
924
+ interface ModerationReport {
925
+ id: string;
926
+ status: ReportStatus;
927
+ reason: ReportReason;
928
+ details: string | null;
929
+ createdAt: IsoDateString;
930
+ reporter: UserSearchResponse;
931
+ subject: ReportSubjectPreview;
932
+ /** Other reports still open about the same subject, this one excluded. */
933
+ otherOpenReports: number;
934
+ resolvedAt: IsoDateString | null;
935
+ }
936
+ interface ModerationQueueQuery {
937
+ /** Omitted means `OPEN`, which is the queue's reason to exist. */
938
+ status?: ReportStatus;
939
+ cursor?: string;
940
+ limit?: number;
941
+ }
942
+ /** Stable successful response of GET /moderation/queue. */
943
+ interface ModerationQueueResponse {
944
+ reports: ModerationReport[];
945
+ nextCursor: string | null;
946
+ /** Open reports in total, independent of the page or the filter. */
947
+ openCount: number;
948
+ }
949
+ /**
950
+ * One enforcement record. It is written once and never updated or deleted —
951
+ * including when a hide is undone, which appends a `RESTORE_SUBJECT` record
952
+ * rather than editing the `HIDE_SUBJECT` one.
953
+ */
954
+ interface ModerationActionRecord {
955
+ id: string;
956
+ kind: ModerationActionKind;
957
+ moderator: UserSearchResponse;
958
+ /** The report the action was taken from, when it was taken from one. */
959
+ reportId: string | null;
960
+ subjectKind: ReportSubjectKind;
961
+ subjectId: string;
962
+ note: string | null;
963
+ createdAt: IsoDateString;
964
+ }
965
+ interface ModerationHistoryQuery {
966
+ cursor?: string;
967
+ limit?: number;
968
+ /** Narrow to one subject's records, newest first. */
969
+ subjectKind?: ReportSubjectKind;
970
+ subjectId?: string;
971
+ }
972
+ /** Stable successful response of GET /moderation/actions. */
973
+ interface ModerationHistoryResponse {
974
+ actions: ModerationActionRecord[];
975
+ nextCursor: string | null;
976
+ }
977
+ /**
978
+ * POST /moderation/reports/:id/dismiss, /hide and /restore. The note is the
979
+ * reviewer's own record of why; it is never shown to the reporter or to the
980
+ * subject's owner, because neither is promised an explanation.
981
+ */
982
+ interface ReviewReportRequest {
983
+ note?: string | null;
984
+ }
985
+ /** Stable successful response of every review action, including a view. */
986
+ interface ReviewReportResponse {
987
+ report: ModerationReport;
988
+ action: ModerationActionRecord;
989
+ }
870
990
 
871
991
  /**
872
992
  * ROUT-11: a WEEKLY routine ties each day to a weekday; a ROTATION routine
@@ -981,6 +1101,13 @@ interface Routine {
981
1101
  */
982
1102
  goal?: TrainingGoal | null;
983
1103
  experienceLevel?: TrainingExperienceLevel | null;
1104
+ /**
1105
+ * TRUST-04: a moderator has hidden this routine from everyone but its
1106
+ * owner. Owner-only field, and true on the owner's own read alone: a
1107
+ * routine nobody else can open while its own visibility still reads
1108
+ * "Public" would be a control with nothing behind it.
1109
+ */
1110
+ isHiddenByModeration?: boolean;
984
1111
  days: RoutineDay[];
985
1112
  createdAt: IsoDateString;
986
1113
  updatedAt: IsoDateString;
@@ -1317,6 +1444,12 @@ interface UserProfile {
1317
1444
  weightUnit: WeightUnit;
1318
1445
  privacySettings: ProfilePrivacySettings;
1319
1446
  discoverySettings: ProfileDiscoverySettings;
1447
+ /**
1448
+ * TRUST-04: whether this account may open the moderation queue. It is on
1449
+ * the owner's own profile only and never on `PublicUserProfile` — who
1450
+ * moderates is not a fact other members are owed.
1451
+ */
1452
+ isModerator: boolean;
1320
1453
  followerCount: number;
1321
1454
  followingCount: number;
1322
1455
  createdAt: IsoDateString;
@@ -1651,6 +1784,35 @@ declare const ACTIVITY_TYPE_SECTIONS: Record<ActivityType, ActivitySection>;
1651
1784
  type ActivityAudience = ProfileVisibility;
1652
1785
  /** Every type starts here until its owner chooses otherwise. */
1653
1786
  declare const ACTIVITY_DEFAULT_AUDIENCE: ActivityAudience;
1787
+ declare const ACTIVITY_REACTIONS: readonly ["STRENGTH", "DISCIPLINE", "RESPECT", "INSPIRING"];
1788
+ type ActivityReaction = (typeof ACTIVITY_REACTIONS)[number];
1789
+ /**
1790
+ * What a viewer may see of an entry's reactions: how many of each, and their
1791
+ * own, so the control can show what they chose. **Deliberately no list of who
1792
+ * reacted** -- that is an identity surface with its own privacy question, and
1793
+ * a name beside an entry would say more about the reactor than the work.
1794
+ * Members either side of a block are absent from the counts, so a number
1795
+ * cannot reveal one of them.
1796
+ */
1797
+ interface ActivityReactionSummary {
1798
+ counts: Record<ActivityReaction, number>;
1799
+ /** The viewer's own reaction, or null; always null on the viewer's own entry. */
1800
+ viewerReaction: ActivityReaction | null;
1801
+ }
1802
+ /**
1803
+ * PUT /activity/entries/reaction. `null` removes the viewer's reaction, and
1804
+ * choosing the one already chosen removes it too, so there is one per member
1805
+ * per entry and nothing to accumulate. Reacting to your own entry is refused.
1806
+ */
1807
+ interface SetActivityReactionRequest {
1808
+ entryId: string;
1809
+ reaction: ActivityReaction | null;
1810
+ }
1811
+ /** Stable successful response of PUT /activity/entries/reaction. */
1812
+ interface SetActivityReactionResponse {
1813
+ entryId: string;
1814
+ reactions: ActivityReactionSummary;
1815
+ }
1654
1816
  /**
1655
1817
  * Where the viewer may open the record an entry came from. The server decides
1656
1818
  * it, so the client never judges what a viewer may read; an entry whose
@@ -1693,6 +1855,12 @@ interface ActivityEntryBase {
1693
1855
  * can be shown together; null for a fact that belongs to no workout.
1694
1856
  */
1695
1857
  groupKey: string | null;
1858
+ /**
1859
+ * `SOC-05`. Travels inside the entry on purpose: a reaction can then never
1860
+ * be shown on an entry this viewer was not allowed to see, because the same
1861
+ * read decides both.
1862
+ */
1863
+ reactions: ActivityReactionSummary;
1696
1864
  }
1697
1865
  interface SessionCompletedActivity extends ActivityEntryBase {
1698
1866
  type: 'SESSION_COMPLETED';
@@ -2186,4 +2354,4 @@ interface PlannedReminder {
2186
2354
  routineNames: string[];
2187
2355
  }
2188
2356
 
2189
- export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, 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 CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, 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, 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 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_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_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 ReportSubjectKind, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, 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_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 SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetLog, 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, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, 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 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, isWithinQuietHours, routineDayLabel };
2357
+ export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, 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 AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, 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 CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, 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_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 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 RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, 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_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 SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetLog, 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, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, 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 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, isWithinQuietHours, routineDayLabel };
package/dist/index.d.ts CHANGED
@@ -257,6 +257,13 @@ interface SessionShare {
257
257
  token: string;
258
258
  fields: SessionShareField[];
259
259
  createdAt: IsoDateString;
260
+ /**
261
+ * TRUST-04: a moderator has hidden the shared workout, so the link stops
262
+ * resolving for everyone but its owner. The link is not revoked and the
263
+ * session is untouched; the owner is told because a live-looking link that
264
+ * opens for nobody is worse than one that says why.
265
+ */
266
+ isHiddenByModeration?: boolean;
260
267
  }
261
268
  /** Stable successful response of GET /workouts/sessions/:id/shares. */
262
269
  interface SessionShareListResponse {
@@ -867,6 +874,119 @@ interface CreateReportResponse {
867
874
  id: string;
868
875
  createdAt: IsoDateString;
869
876
  }
877
+ /** Whether the signed-in account may open the queue at all. */
878
+ interface ModeratorState {
879
+ isModerator: boolean;
880
+ }
881
+ declare const REPORT_STATUSES: readonly ["OPEN", "DISMISSED", "ACTIONED"];
882
+ type ReportStatus = (typeof REPORT_STATUSES)[number];
883
+ /**
884
+ * Every moderator power, each one a record. `VIEW_SUBJECT` is here for the
885
+ * same reason the others are: it is a thing a moderator did to somebody's
886
+ * content, and it is the only one that leaves no other trace.
887
+ */
888
+ declare const MODERATION_ACTION_KINDS: readonly ["VIEW_SUBJECT", "DISMISS_REPORT", "HIDE_SUBJECT", "RESTORE_SUBJECT"];
889
+ type ModerationActionKind = (typeof MODERATION_ACTION_KINDS)[number];
890
+ declare const MODERATION_NOTE_MAX_LENGTH = 500;
891
+ declare const MODERATION_QUEUE_PAGE_SIZE = 20;
892
+ declare const MODERATION_HISTORY_PAGE_SIZE = 20;
893
+ /**
894
+ * What the reviewer may actually learn about a reported subject, resolved
895
+ * server-side through the rules that already govern the subject. A reviewer
896
+ * who may not read it is told so; the queue never fills the gap in.
897
+ */
898
+ interface ReportSubjectPreview {
899
+ kind: ReportSubjectKind;
900
+ /** As the reporter named it: a member id or username, a routine id, a token. */
901
+ id: string;
902
+ /**
903
+ * The member id, routine id or session-share token this resolves to, which
904
+ * is what a review action is recorded against. Null when the subject is
905
+ * gone.
906
+ */
907
+ resolvedId: string | null;
908
+ /** Present only when the reviewer may read the subject. */
909
+ title: string | null;
910
+ /** The subject's owner, when the reviewer may read the subject. */
911
+ owner: UserSearchResponse | null;
912
+ /** The subject no longer exists; only dismissing is left. */
913
+ isMissing: boolean;
914
+ /**
915
+ * The shipped `PROF-06`/`PROF-10` rules deny this reviewer this subject.
916
+ * It can still be hidden or dismissed on the strength of the report; it
917
+ * cannot be read, and no moderator flag changes that.
918
+ */
919
+ isWithheld: boolean;
920
+ /** A `HIDE_SUBJECT` is currently in force. */
921
+ isHidden: boolean;
922
+ }
923
+ /** One row of the queue. */
924
+ interface ModerationReport {
925
+ id: string;
926
+ status: ReportStatus;
927
+ reason: ReportReason;
928
+ details: string | null;
929
+ createdAt: IsoDateString;
930
+ reporter: UserSearchResponse;
931
+ subject: ReportSubjectPreview;
932
+ /** Other reports still open about the same subject, this one excluded. */
933
+ otherOpenReports: number;
934
+ resolvedAt: IsoDateString | null;
935
+ }
936
+ interface ModerationQueueQuery {
937
+ /** Omitted means `OPEN`, which is the queue's reason to exist. */
938
+ status?: ReportStatus;
939
+ cursor?: string;
940
+ limit?: number;
941
+ }
942
+ /** Stable successful response of GET /moderation/queue. */
943
+ interface ModerationQueueResponse {
944
+ reports: ModerationReport[];
945
+ nextCursor: string | null;
946
+ /** Open reports in total, independent of the page or the filter. */
947
+ openCount: number;
948
+ }
949
+ /**
950
+ * One enforcement record. It is written once and never updated or deleted —
951
+ * including when a hide is undone, which appends a `RESTORE_SUBJECT` record
952
+ * rather than editing the `HIDE_SUBJECT` one.
953
+ */
954
+ interface ModerationActionRecord {
955
+ id: string;
956
+ kind: ModerationActionKind;
957
+ moderator: UserSearchResponse;
958
+ /** The report the action was taken from, when it was taken from one. */
959
+ reportId: string | null;
960
+ subjectKind: ReportSubjectKind;
961
+ subjectId: string;
962
+ note: string | null;
963
+ createdAt: IsoDateString;
964
+ }
965
+ interface ModerationHistoryQuery {
966
+ cursor?: string;
967
+ limit?: number;
968
+ /** Narrow to one subject's records, newest first. */
969
+ subjectKind?: ReportSubjectKind;
970
+ subjectId?: string;
971
+ }
972
+ /** Stable successful response of GET /moderation/actions. */
973
+ interface ModerationHistoryResponse {
974
+ actions: ModerationActionRecord[];
975
+ nextCursor: string | null;
976
+ }
977
+ /**
978
+ * POST /moderation/reports/:id/dismiss, /hide and /restore. The note is the
979
+ * reviewer's own record of why; it is never shown to the reporter or to the
980
+ * subject's owner, because neither is promised an explanation.
981
+ */
982
+ interface ReviewReportRequest {
983
+ note?: string | null;
984
+ }
985
+ /** Stable successful response of every review action, including a view. */
986
+ interface ReviewReportResponse {
987
+ report: ModerationReport;
988
+ action: ModerationActionRecord;
989
+ }
870
990
 
871
991
  /**
872
992
  * ROUT-11: a WEEKLY routine ties each day to a weekday; a ROTATION routine
@@ -981,6 +1101,13 @@ interface Routine {
981
1101
  */
982
1102
  goal?: TrainingGoal | null;
983
1103
  experienceLevel?: TrainingExperienceLevel | null;
1104
+ /**
1105
+ * TRUST-04: a moderator has hidden this routine from everyone but its
1106
+ * owner. Owner-only field, and true on the owner's own read alone: a
1107
+ * routine nobody else can open while its own visibility still reads
1108
+ * "Public" would be a control with nothing behind it.
1109
+ */
1110
+ isHiddenByModeration?: boolean;
984
1111
  days: RoutineDay[];
985
1112
  createdAt: IsoDateString;
986
1113
  updatedAt: IsoDateString;
@@ -1317,6 +1444,12 @@ interface UserProfile {
1317
1444
  weightUnit: WeightUnit;
1318
1445
  privacySettings: ProfilePrivacySettings;
1319
1446
  discoverySettings: ProfileDiscoverySettings;
1447
+ /**
1448
+ * TRUST-04: whether this account may open the moderation queue. It is on
1449
+ * the owner's own profile only and never on `PublicUserProfile` — who
1450
+ * moderates is not a fact other members are owed.
1451
+ */
1452
+ isModerator: boolean;
1320
1453
  followerCount: number;
1321
1454
  followingCount: number;
1322
1455
  createdAt: IsoDateString;
@@ -1651,6 +1784,35 @@ declare const ACTIVITY_TYPE_SECTIONS: Record<ActivityType, ActivitySection>;
1651
1784
  type ActivityAudience = ProfileVisibility;
1652
1785
  /** Every type starts here until its owner chooses otherwise. */
1653
1786
  declare const ACTIVITY_DEFAULT_AUDIENCE: ActivityAudience;
1787
+ declare const ACTIVITY_REACTIONS: readonly ["STRENGTH", "DISCIPLINE", "RESPECT", "INSPIRING"];
1788
+ type ActivityReaction = (typeof ACTIVITY_REACTIONS)[number];
1789
+ /**
1790
+ * What a viewer may see of an entry's reactions: how many of each, and their
1791
+ * own, so the control can show what they chose. **Deliberately no list of who
1792
+ * reacted** -- that is an identity surface with its own privacy question, and
1793
+ * a name beside an entry would say more about the reactor than the work.
1794
+ * Members either side of a block are absent from the counts, so a number
1795
+ * cannot reveal one of them.
1796
+ */
1797
+ interface ActivityReactionSummary {
1798
+ counts: Record<ActivityReaction, number>;
1799
+ /** The viewer's own reaction, or null; always null on the viewer's own entry. */
1800
+ viewerReaction: ActivityReaction | null;
1801
+ }
1802
+ /**
1803
+ * PUT /activity/entries/reaction. `null` removes the viewer's reaction, and
1804
+ * choosing the one already chosen removes it too, so there is one per member
1805
+ * per entry and nothing to accumulate. Reacting to your own entry is refused.
1806
+ */
1807
+ interface SetActivityReactionRequest {
1808
+ entryId: string;
1809
+ reaction: ActivityReaction | null;
1810
+ }
1811
+ /** Stable successful response of PUT /activity/entries/reaction. */
1812
+ interface SetActivityReactionResponse {
1813
+ entryId: string;
1814
+ reactions: ActivityReactionSummary;
1815
+ }
1654
1816
  /**
1655
1817
  * Where the viewer may open the record an entry came from. The server decides
1656
1818
  * it, so the client never judges what a viewer may read; an entry whose
@@ -1693,6 +1855,12 @@ interface ActivityEntryBase {
1693
1855
  * can be shown together; null for a fact that belongs to no workout.
1694
1856
  */
1695
1857
  groupKey: string | null;
1858
+ /**
1859
+ * `SOC-05`. Travels inside the entry on purpose: a reaction can then never
1860
+ * be shown on an entry this viewer was not allowed to see, because the same
1861
+ * read decides both.
1862
+ */
1863
+ reactions: ActivityReactionSummary;
1696
1864
  }
1697
1865
  interface SessionCompletedActivity extends ActivityEntryBase {
1698
1866
  type: 'SESSION_COMPLETED';
@@ -2186,4 +2354,4 @@ interface PlannedReminder {
2186
2354
  routineNames: string[];
2187
2355
  }
2188
2356
 
2189
- export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, 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 CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, 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, 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 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_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_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 ReportSubjectKind, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, 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_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 SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetLog, 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, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, 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 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, isWithinQuietHours, routineDayLabel };
2357
+ export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, 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 AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, 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 CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, 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_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 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 RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, 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_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 SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetLog, 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, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, 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 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, isWithinQuietHours, routineDayLabel };
package/dist/index.js CHANGED
@@ -143,6 +143,16 @@ var REPORT_REASONS = [
143
143
  ];
144
144
  var REPORT_DETAILS_MAX_LENGTH = 500;
145
145
  var REPORTS_PER_DAY_MAX = 20;
146
+ var REPORT_STATUSES = ["OPEN", "DISMISSED", "ACTIONED"];
147
+ var MODERATION_ACTION_KINDS = [
148
+ "VIEW_SUBJECT",
149
+ "DISMISS_REPORT",
150
+ "HIDE_SUBJECT",
151
+ "RESTORE_SUBJECT"
152
+ ];
153
+ var MODERATION_NOTE_MAX_LENGTH = 500;
154
+ var MODERATION_QUEUE_PAGE_SIZE = 20;
155
+ var MODERATION_HISTORY_PAGE_SIZE = 20;
146
156
 
147
157
  // src/exercise.ts
148
158
  var MOVEMENT_PATTERNS = [
@@ -373,6 +383,12 @@ var ACTIVITY_TYPE_SECTIONS = {
373
383
  ROUTINE_SHARED: "routines"
374
384
  };
375
385
  var ACTIVITY_DEFAULT_AUDIENCE = "PRIVATE";
386
+ var ACTIVITY_REACTIONS = [
387
+ "STRENGTH",
388
+ "DISCIPLINE",
389
+ "RESPECT",
390
+ "INSPIRING"
391
+ ];
376
392
  var ACTIVITY_PAGE_DEFAULT_LIMIT = 20;
377
393
  var ACTIVITY_PAGE_MAX_LIMIT = 50;
378
394
  var ACTIVITY_FEED_FOLLOWED_MAX = 500;
@@ -478,6 +494,7 @@ export {
478
494
  ACTIVITY_PAGE_DEFAULT_LIMIT,
479
495
  ACTIVITY_PAGE_MAX_LIMIT,
480
496
  ACTIVITY_PREVIEW_AUDIENCES,
497
+ ACTIVITY_REACTIONS,
481
498
  ACTIVITY_TYPES,
482
499
  ACTIVITY_TYPE_SECTIONS,
483
500
  BLOCKED_MEMBERS_MAX,
@@ -499,6 +516,10 @@ export {
499
516
  MEASURABLE_GOAL_DIRECTIONS,
500
517
  MEASURABLE_GOAL_TYPES,
501
518
  MINUTES_IN_DAY,
519
+ MODERATION_ACTION_KINDS,
520
+ MODERATION_HISTORY_PAGE_SIZE,
521
+ MODERATION_NOTE_MAX_LENGTH,
522
+ MODERATION_QUEUE_PAGE_SIZE,
502
523
  MOVEMENT_PATTERNS,
503
524
  MUSCLE_GROUPS,
504
525
  NOTIFICATIONS_LIST_LIMIT,
@@ -530,6 +551,7 @@ export {
530
551
  REPORTS_PER_DAY_MAX,
531
552
  REPORT_DETAILS_MAX_LENGTH,
532
553
  REPORT_REASONS,
554
+ REPORT_STATUSES,
533
555
  REPORT_SUBJECT_KINDS,
534
556
  REP_TYPES,
535
557
  RESERVED_USERNAMES,
package/package.json CHANGED
@@ -1,40 +1,40 @@
1
- {
2
- "name": "@sunsteel/contracts",
3
- "version": "0.53.0",
4
- "repository": {
5
- "type": "git",
6
- "url": "git+https://github.com/ezee969/sunsteel-contracts.git"
7
- },
8
- "private": false,
9
- "engines": {
10
- "node": ">=20.11"
11
- },
12
- "type": "module",
13
- "sideEffects": false,
14
- "main": "./dist/index.cjs",
15
- "module": "./dist/index.js",
16
- "types": "./dist/index.d.ts",
17
- "exports": {
18
- ".": {
19
- "types": "./dist/index.d.ts",
20
- "import": "./dist/index.js",
21
- "require": "./dist/index.cjs"
22
- }
23
- },
24
- "files": [
25
- "dist"
26
- ],
27
- "scripts": {
28
- "build": "tsup src/index.ts --format esm,cjs --dts --clean",
29
- "dev": "tsup src/index.ts --format esm,cjs --dts --watch",
30
- "typecheck": "tsc --noEmit",
31
- "lint": "npm run typecheck",
32
- "verify": "npm run typecheck && npm run build",
33
- "verify:security": "npm audit",
34
- "prepublishOnly": "npm run build"
35
- },
36
- "devDependencies": {
37
- "tsup": "^8.3.5",
38
- "typescript": "^5.7.3"
39
- }
40
- }
1
+ {
2
+ "name": "@sunsteel/contracts",
3
+ "version": "0.55.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/ezee969/sunsteel-contracts.git"
7
+ },
8
+ "private": false,
9
+ "engines": {
10
+ "node": ">=20.11"
11
+ },
12
+ "type": "module",
13
+ "sideEffects": false,
14
+ "main": "./dist/index.cjs",
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js",
21
+ "require": "./dist/index.cjs"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsup src/index.ts --format esm,cjs --dts --clean",
29
+ "dev": "tsup src/index.ts --format esm,cjs --dts --watch",
30
+ "typecheck": "tsc --noEmit",
31
+ "lint": "npm run typecheck",
32
+ "verify": "npm run typecheck && npm run build",
33
+ "verify:security": "npm audit",
34
+ "prepublishOnly": "npm run build"
35
+ },
36
+ "devDependencies": {
37
+ "tsup": "^8.3.5",
38
+ "typescript": "^5.7.3"
39
+ }
40
+ }