@oxyhq/contracts 0.22.0 → 0.23.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.
@@ -157,10 +157,24 @@ export declare const userResponseSchema: z.ZodObject<{
157
157
  */
158
158
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
159
159
  /**
160
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
161
- * Absent on personal, project, bot, and channel accounts.
160
+ * What this account is about the field a profile screen RENDERS.
161
+ *
162
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
163
+ * category; there is deliberately no sibling `primaryCategory` field,
164
+ * because two representations of one fact can disagree (see rule 2 in
165
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
166
+ * otherwise reorder this array.
167
+ *
168
+ * **Ids, never labels.** Each element is a stable slug; the visible text
169
+ * comes from the reader's own translation catalogue, keyed
170
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
171
+ * profile in the language of whoever picked it.
172
+ *
173
+ * Absent when the account has none — which is every `personal` account,
174
+ * and any non-personal one that has not chosen. A renderer reads
175
+ * `user.accountCategories ?? []`.
162
176
  */
163
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
177
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
164
178
  /**
165
179
  * The authenticated viewer's relationship to this profile. Present ONLY
166
180
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -224,10 +238,24 @@ export declare const userResponseSchema: z.ZodObject<{
224
238
  */
225
239
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
226
240
  /**
227
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
228
- * Absent on personal, project, bot, and channel accounts.
241
+ * What this account is about the field a profile screen RENDERS.
242
+ *
243
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
244
+ * category; there is deliberately no sibling `primaryCategory` field,
245
+ * because two representations of one fact can disagree (see rule 2 in
246
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
247
+ * otherwise reorder this array.
248
+ *
249
+ * **Ids, never labels.** Each element is a stable slug; the visible text
250
+ * comes from the reader's own translation catalogue, keyed
251
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
252
+ * profile in the language of whoever picked it.
253
+ *
254
+ * Absent when the account has none — which is every `personal` account,
255
+ * and any non-personal one that has not chosen. A renderer reads
256
+ * `user.accountCategories ?? []`.
229
257
  */
230
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
258
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
231
259
  /**
232
260
  * The authenticated viewer's relationship to this profile. Present ONLY
233
261
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -291,10 +319,24 @@ export declare const userResponseSchema: z.ZodObject<{
291
319
  */
292
320
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
293
321
  /**
294
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
295
- * Absent on personal, project, bot, and channel accounts.
322
+ * What this account is about the field a profile screen RENDERS.
323
+ *
324
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
325
+ * category; there is deliberately no sibling `primaryCategory` field,
326
+ * because two representations of one fact can disagree (see rule 2 in
327
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
328
+ * otherwise reorder this array.
329
+ *
330
+ * **Ids, never labels.** Each element is a stable slug; the visible text
331
+ * comes from the reader's own translation catalogue, keyed
332
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
333
+ * profile in the language of whoever picked it.
334
+ *
335
+ * Absent when the account has none — which is every `personal` account,
336
+ * and any non-personal one that has not chosen. A renderer reads
337
+ * `user.accountCategories ?? []`.
296
338
  */
297
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
339
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
298
340
  /**
299
341
  * The authenticated viewer's relationship to this profile. Present ONLY
300
342
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -566,10 +608,24 @@ export declare const currentUserResponseSchema: z.ZodObject<{
566
608
  */
567
609
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
568
610
  /**
569
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
570
- * Absent on personal, project, bot, and channel accounts.
611
+ * What this account is about the field a profile screen RENDERS.
612
+ *
613
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
614
+ * category; there is deliberately no sibling `primaryCategory` field,
615
+ * because two representations of one fact can disagree (see rule 2 in
616
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
617
+ * otherwise reorder this array.
618
+ *
619
+ * **Ids, never labels.** Each element is a stable slug; the visible text
620
+ * comes from the reader's own translation catalogue, keyed
621
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
622
+ * profile in the language of whoever picked it.
623
+ *
624
+ * Absent when the account has none — which is every `personal` account,
625
+ * and any non-personal one that has not chosen. A renderer reads
626
+ * `user.accountCategories ?? []`.
571
627
  */
572
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
628
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
573
629
  /**
574
630
  * The authenticated viewer's relationship to this profile. Present ONLY
575
631
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -633,10 +689,24 @@ export declare const currentUserResponseSchema: z.ZodObject<{
633
689
  */
634
690
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
635
691
  /**
636
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
637
- * Absent on personal, project, bot, and channel accounts.
692
+ * What this account is about the field a profile screen RENDERS.
693
+ *
694
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
695
+ * category; there is deliberately no sibling `primaryCategory` field,
696
+ * because two representations of one fact can disagree (see rule 2 in
697
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
698
+ * otherwise reorder this array.
699
+ *
700
+ * **Ids, never labels.** Each element is a stable slug; the visible text
701
+ * comes from the reader's own translation catalogue, keyed
702
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
703
+ * profile in the language of whoever picked it.
704
+ *
705
+ * Absent when the account has none — which is every `personal` account,
706
+ * and any non-personal one that has not chosen. A renderer reads
707
+ * `user.accountCategories ?? []`.
638
708
  */
639
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
709
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
640
710
  /**
641
711
  * The authenticated viewer's relationship to this profile. Present ONLY
642
712
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -700,10 +770,24 @@ export declare const currentUserResponseSchema: z.ZodObject<{
700
770
  */
701
771
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
702
772
  /**
703
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
704
- * Absent on personal, project, bot, and channel accounts.
773
+ * What this account is about the field a profile screen RENDERS.
774
+ *
775
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
776
+ * category; there is deliberately no sibling `primaryCategory` field,
777
+ * because two representations of one fact can disagree (see rule 2 in
778
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
779
+ * otherwise reorder this array.
780
+ *
781
+ * **Ids, never labels.** Each element is a stable slug; the visible text
782
+ * comes from the reader's own translation catalogue, keyed
783
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
784
+ * profile in the language of whoever picked it.
785
+ *
786
+ * Absent when the account has none — which is every `personal` account,
787
+ * and any non-personal one that has not chosen. A renderer reads
788
+ * `user.accountCategories ?? []`.
705
789
  */
706
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
790
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
707
791
  /**
708
792
  * The authenticated viewer's relationship to this profile. Present ONLY
709
793
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -724,19 +808,19 @@ export declare const currentUserResponseSchema: z.ZodObject<{
724
808
  kind?: "personal" | "organization" | "project" | "bot" | "channel" | undefined;
725
809
  username?: string | undefined;
726
810
  avatar?: string | null | undefined;
727
- organizationCategory?: "agency" | "cooperative" | "landlord" | "other" | undefined;
811
+ accountCategories?: ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[] | undefined;
728
812
  id?: string | undefined;
729
- _id?: string | undefined;
730
813
  publicKey?: string | undefined;
814
+ did?: string | undefined;
815
+ verifiedDomains?: import("./identity").VerifiedDomain[] | undefined;
816
+ verified?: boolean | undefined;
731
817
  email?: string | undefined;
818
+ _id?: string | undefined;
732
819
  phone?: string | undefined;
733
820
  address?: string | undefined;
734
821
  birthday?: string | undefined;
735
822
  color?: string | null | undefined;
736
- verified?: boolean | undefined;
737
823
  languages?: string[] | undefined;
738
- did?: string | undefined;
739
- verifiedDomains?: import("./identity").VerifiedDomain[] | undefined;
740
824
  relationship?: UserRelationship | undefined;
741
825
  themePreference?: ThemePreference | undefined;
742
826
  } & {
@@ -748,19 +832,19 @@ export declare const currentUserResponseSchema: z.ZodObject<{
748
832
  kind?: "personal" | "organization" | "project" | "bot" | "channel" | undefined;
749
833
  username?: string | undefined;
750
834
  avatar?: string | null | undefined;
751
- organizationCategory?: "agency" | "cooperative" | "landlord" | "other" | undefined;
835
+ accountCategories?: ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[] | undefined;
752
836
  id?: string | undefined;
753
- _id?: string | undefined;
754
837
  publicKey?: string | undefined;
838
+ did?: string | undefined;
839
+ verifiedDomains?: import("./identity").VerifiedDomain[] | undefined;
840
+ verified?: boolean | undefined;
755
841
  email?: string | undefined;
842
+ _id?: string | undefined;
756
843
  phone?: string | undefined;
757
844
  address?: string | undefined;
758
845
  birthday?: string | undefined;
759
846
  color?: string | null | undefined;
760
- verified?: boolean | undefined;
761
847
  languages?: string[] | undefined;
762
- did?: string | undefined;
763
- verifiedDomains?: import("./identity").VerifiedDomain[] | undefined;
764
848
  relationship?: UserRelationship | undefined;
765
849
  themePreference?: ThemePreference | undefined;
766
850
  } & {
@@ -827,10 +911,24 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
827
911
  */
828
912
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
829
913
  /**
830
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
831
- * Absent on personal, project, bot, and channel accounts.
914
+ * What this account is about the field a profile screen RENDERS.
915
+ *
916
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
917
+ * category; there is deliberately no sibling `primaryCategory` field,
918
+ * because two representations of one fact can disagree (see rule 2 in
919
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
920
+ * otherwise reorder this array.
921
+ *
922
+ * **Ids, never labels.** Each element is a stable slug; the visible text
923
+ * comes from the reader's own translation catalogue, keyed
924
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
925
+ * profile in the language of whoever picked it.
926
+ *
927
+ * Absent when the account has none — which is every `personal` account,
928
+ * and any non-personal one that has not chosen. A renderer reads
929
+ * `user.accountCategories ?? []`.
832
930
  */
833
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
931
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
834
932
  /**
835
933
  * The authenticated viewer's relationship to this profile. Present ONLY
836
934
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -894,10 +992,24 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
894
992
  */
895
993
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
896
994
  /**
897
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
898
- * Absent on personal, project, bot, and channel accounts.
995
+ * What this account is about the field a profile screen RENDERS.
996
+ *
997
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
998
+ * category; there is deliberately no sibling `primaryCategory` field,
999
+ * because two representations of one fact can disagree (see rule 2 in
1000
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1001
+ * otherwise reorder this array.
1002
+ *
1003
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1004
+ * comes from the reader's own translation catalogue, keyed
1005
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1006
+ * profile in the language of whoever picked it.
1007
+ *
1008
+ * Absent when the account has none — which is every `personal` account,
1009
+ * and any non-personal one that has not chosen. A renderer reads
1010
+ * `user.accountCategories ?? []`.
899
1011
  */
900
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1012
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
901
1013
  /**
902
1014
  * The authenticated viewer's relationship to this profile. Present ONLY
903
1015
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -961,10 +1073,24 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
961
1073
  */
962
1074
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
963
1075
  /**
964
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
965
- * Absent on personal, project, bot, and channel accounts.
1076
+ * What this account is about the field a profile screen RENDERS.
1077
+ *
1078
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1079
+ * category; there is deliberately no sibling `primaryCategory` field,
1080
+ * because two representations of one fact can disagree (see rule 2 in
1081
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1082
+ * otherwise reorder this array.
1083
+ *
1084
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1085
+ * comes from the reader's own translation catalogue, keyed
1086
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1087
+ * profile in the language of whoever picked it.
1088
+ *
1089
+ * Absent when the account has none — which is every `personal` account,
1090
+ * and any non-personal one that has not chosen. A renderer reads
1091
+ * `user.accountCategories ?? []`.
966
1092
  */
967
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1093
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
968
1094
  /**
969
1095
  * The authenticated viewer's relationship to this profile. Present ONLY
970
1096
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -981,7 +1107,6 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
981
1107
  }, z.ZodTypeAny, "passthrough">>>>;
982
1108
  }, "strip", z.ZodTypeAny, {
983
1109
  sessionId: string;
984
- isCurrent?: boolean | undefined;
985
1110
  user?: z.objectOutputType<{
986
1111
  /** MongoDB ObjectId as a string. Present on `formatUserResponse` output. */
987
1112
  id: z.ZodOptional<z.ZodString>;
@@ -1032,10 +1157,24 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
1032
1157
  */
1033
1158
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1034
1159
  /**
1035
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1036
- * Absent on personal, project, bot, and channel accounts.
1160
+ * What this account is about the field a profile screen RENDERS.
1161
+ *
1162
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1163
+ * category; there is deliberately no sibling `primaryCategory` field,
1164
+ * because two representations of one fact can disagree (see rule 2 in
1165
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1166
+ * otherwise reorder this array.
1167
+ *
1168
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1169
+ * comes from the reader's own translation catalogue, keyed
1170
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1171
+ * profile in the language of whoever picked it.
1172
+ *
1173
+ * Absent when the account has none — which is every `personal` account,
1174
+ * and any non-personal one that has not chosen. A renderer reads
1175
+ * `user.accountCategories ?? []`.
1037
1176
  */
1038
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1177
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1039
1178
  /**
1040
1179
  * The authenticated viewer's relationship to this profile. Present ONLY
1041
1180
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1050,9 +1189,9 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
1050
1189
  */
1051
1190
  themePreference: z.ZodOptional<z.ZodType<ThemePreference, z.ZodTypeDef, ThemePreference>>;
1052
1191
  }, z.ZodTypeAny, "passthrough"> | null | undefined;
1192
+ isCurrent?: boolean | undefined;
1053
1193
  }, {
1054
1194
  sessionId: string;
1055
- isCurrent?: boolean | undefined;
1056
1195
  user?: z.objectInputType<{
1057
1196
  /** MongoDB ObjectId as a string. Present on `formatUserResponse` output. */
1058
1197
  id: z.ZodOptional<z.ZodString>;
@@ -1103,10 +1242,24 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
1103
1242
  */
1104
1243
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1105
1244
  /**
1106
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1107
- * Absent on personal, project, bot, and channel accounts.
1245
+ * What this account is about the field a profile screen RENDERS.
1246
+ *
1247
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1248
+ * category; there is deliberately no sibling `primaryCategory` field,
1249
+ * because two representations of one fact can disagree (see rule 2 in
1250
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1251
+ * otherwise reorder this array.
1252
+ *
1253
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1254
+ * comes from the reader's own translation catalogue, keyed
1255
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1256
+ * profile in the language of whoever picked it.
1257
+ *
1258
+ * Absent when the account has none — which is every `personal` account,
1259
+ * and any non-personal one that has not chosen. A renderer reads
1260
+ * `user.accountCategories ?? []`.
1108
1261
  */
1109
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1262
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1110
1263
  /**
1111
1264
  * The authenticated viewer's relationship to this profile. Present ONLY
1112
1265
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1121,6 +1274,7 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
1121
1274
  */
1122
1275
  themePreference: z.ZodOptional<z.ZodType<ThemePreference, z.ZodTypeDef, ThemePreference>>;
1123
1276
  }, z.ZodTypeAny, "passthrough"> | null | undefined;
1277
+ isCurrent?: boolean | undefined;
1124
1278
  }>;
1125
1279
  export type DeviceLinkedSessionResponse = z.infer<typeof deviceLinkedSessionSchema>;
1126
1280
  /** Wire shape of `GET /session/device/sessions/:sessionId` (an array). */
@@ -1177,10 +1331,24 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1177
1331
  */
1178
1332
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1179
1333
  /**
1180
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1181
- * Absent on personal, project, bot, and channel accounts.
1334
+ * What this account is about the field a profile screen RENDERS.
1335
+ *
1336
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1337
+ * category; there is deliberately no sibling `primaryCategory` field,
1338
+ * because two representations of one fact can disagree (see rule 2 in
1339
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1340
+ * otherwise reorder this array.
1341
+ *
1342
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1343
+ * comes from the reader's own translation catalogue, keyed
1344
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1345
+ * profile in the language of whoever picked it.
1346
+ *
1347
+ * Absent when the account has none — which is every `personal` account,
1348
+ * and any non-personal one that has not chosen. A renderer reads
1349
+ * `user.accountCategories ?? []`.
1182
1350
  */
1183
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1351
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1184
1352
  /**
1185
1353
  * The authenticated viewer's relationship to this profile. Present ONLY
1186
1354
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1244,10 +1412,24 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1244
1412
  */
1245
1413
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1246
1414
  /**
1247
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1248
- * Absent on personal, project, bot, and channel accounts.
1415
+ * What this account is about the field a profile screen RENDERS.
1416
+ *
1417
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1418
+ * category; there is deliberately no sibling `primaryCategory` field,
1419
+ * because two representations of one fact can disagree (see rule 2 in
1420
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1421
+ * otherwise reorder this array.
1422
+ *
1423
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1424
+ * comes from the reader's own translation catalogue, keyed
1425
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1426
+ * profile in the language of whoever picked it.
1427
+ *
1428
+ * Absent when the account has none — which is every `personal` account,
1429
+ * and any non-personal one that has not chosen. A renderer reads
1430
+ * `user.accountCategories ?? []`.
1249
1431
  */
1250
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1432
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1251
1433
  /**
1252
1434
  * The authenticated viewer's relationship to this profile. Present ONLY
1253
1435
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1311,10 +1493,24 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1311
1493
  */
1312
1494
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1313
1495
  /**
1314
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1315
- * Absent on personal, project, bot, and channel accounts.
1496
+ * What this account is about the field a profile screen RENDERS.
1497
+ *
1498
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1499
+ * category; there is deliberately no sibling `primaryCategory` field,
1500
+ * because two representations of one fact can disagree (see rule 2 in
1501
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1502
+ * otherwise reorder this array.
1503
+ *
1504
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1505
+ * comes from the reader's own translation catalogue, keyed
1506
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1507
+ * profile in the language of whoever picked it.
1508
+ *
1509
+ * Absent when the account has none — which is every `personal` account,
1510
+ * and any non-personal one that has not chosen. A renderer reads
1511
+ * `user.accountCategories ?? []`.
1316
1512
  */
1317
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1513
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1318
1514
  /**
1319
1515
  * The authenticated viewer's relationship to this profile. Present ONLY
1320
1516
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1331,7 +1527,6 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1331
1527
  }, z.ZodTypeAny, "passthrough">>>>;
1332
1528
  }, "strip", z.ZodTypeAny, {
1333
1529
  sessionId: string;
1334
- isCurrent?: boolean | undefined;
1335
1530
  user?: z.objectOutputType<{
1336
1531
  /** MongoDB ObjectId as a string. Present on `formatUserResponse` output. */
1337
1532
  id: z.ZodOptional<z.ZodString>;
@@ -1382,10 +1577,24 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1382
1577
  */
1383
1578
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1384
1579
  /**
1385
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1386
- * Absent on personal, project, bot, and channel accounts.
1580
+ * What this account is about the field a profile screen RENDERS.
1581
+ *
1582
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1583
+ * category; there is deliberately no sibling `primaryCategory` field,
1584
+ * because two representations of one fact can disagree (see rule 2 in
1585
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1586
+ * otherwise reorder this array.
1587
+ *
1588
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1589
+ * comes from the reader's own translation catalogue, keyed
1590
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1591
+ * profile in the language of whoever picked it.
1592
+ *
1593
+ * Absent when the account has none — which is every `personal` account,
1594
+ * and any non-personal one that has not chosen. A renderer reads
1595
+ * `user.accountCategories ?? []`.
1387
1596
  */
1388
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1597
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1389
1598
  /**
1390
1599
  * The authenticated viewer's relationship to this profile. Present ONLY
1391
1600
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1400,9 +1609,9 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1400
1609
  */
1401
1610
  themePreference: z.ZodOptional<z.ZodType<ThemePreference, z.ZodTypeDef, ThemePreference>>;
1402
1611
  }, z.ZodTypeAny, "passthrough"> | null | undefined;
1612
+ isCurrent?: boolean | undefined;
1403
1613
  }, {
1404
1614
  sessionId: string;
1405
- isCurrent?: boolean | undefined;
1406
1615
  user?: z.objectInputType<{
1407
1616
  /** MongoDB ObjectId as a string. Present on `formatUserResponse` output. */
1408
1617
  id: z.ZodOptional<z.ZodString>;
@@ -1453,10 +1662,24 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1453
1662
  */
1454
1663
  kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1455
1664
  /**
1456
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1457
- * Absent on personal, project, bot, and channel accounts.
1665
+ * What this account is about the field a profile screen RENDERS.
1666
+ *
1667
+ * **Ordered, primary first.** `accountCategories[0]` is the primary
1668
+ * category; there is deliberately no sibling `primaryCategory` field,
1669
+ * because two representations of one fact can disagree (see rule 2 in
1670
+ * `accountGraph.ts`). Nothing downstream may sort, de-duplicate or
1671
+ * otherwise reorder this array.
1672
+ *
1673
+ * **Ids, never labels.** Each element is a stable slug; the visible text
1674
+ * comes from the reader's own translation catalogue, keyed
1675
+ * `accounts.accountCategory.<id>`. A label on the wire would paint every
1676
+ * profile in the language of whoever picked it.
1677
+ *
1678
+ * Absent when the account has none — which is every `personal` account,
1679
+ * and any non-personal one that has not chosen. A renderer reads
1680
+ * `user.accountCategories ?? []`.
1458
1681
  */
1459
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1682
+ accountCategories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodEnum<["news", "politics", "business", "startup", "finance", "crypto", "marketplace", "retail", "real_estate", "agency", "landlord", "cooperative", "architecture", "technology", "software", "ai", "security", "automation", "science", "education", "books", "health", "fitness", "sports", "gaming", "music", "film", "podcast", "art", "photography", "comedy", "food", "travel", "fashion", "home_garden", "diy", "automotive", "animals", "family", "nonprofit", "government", "community", "activism", "environment", "religion", "other"]>, "many">, ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[], ("news" | "politics" | "business" | "startup" | "finance" | "crypto" | "marketplace" | "retail" | "real_estate" | "agency" | "landlord" | "cooperative" | "architecture" | "technology" | "software" | "ai" | "security" | "automation" | "science" | "education" | "books" | "health" | "fitness" | "sports" | "gaming" | "music" | "film" | "podcast" | "art" | "photography" | "comedy" | "food" | "travel" | "fashion" | "home_garden" | "diy" | "automotive" | "animals" | "family" | "nonprofit" | "government" | "community" | "activism" | "environment" | "religion" | "other")[]>>;
1460
1683
  /**
1461
1684
  * The authenticated viewer's relationship to this profile. Present ONLY
1462
1685
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1471,6 +1694,7 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1471
1694
  */
1472
1695
  themePreference: z.ZodOptional<z.ZodType<ThemePreference, z.ZodTypeDef, ThemePreference>>;
1473
1696
  }, z.ZodTypeAny, "passthrough"> | null | undefined;
1697
+ isCurrent?: boolean | undefined;
1474
1698
  }>, "many">;
1475
1699
  export type DeviceLinkedSessionsResponseContract = z.infer<typeof deviceLinkedSessionsResponseSchema>;
1476
1700
  /**