@oxyhq/contracts 0.21.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.
@@ -143,10 +143,38 @@ export declare const userResponseSchema: z.ZodObject<{
143
143
  */
144
144
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
145
145
  /**
146
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
147
- * Absent on personal, project, and bot accounts.
146
+ * Account-graph classification what KIND of account this is.
147
+ *
148
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
149
+ * which says where the account lives and how it is driven; the two
150
+ * coexist and neither substitutes for the other. A `channel` is a
151
+ * publishing identity nobody can act as, so a consumer that renders
152
+ * authored content reads THIS to tell a channel's post from a person's.
153
+ *
154
+ * Optional because a DTO produced from a source that never carried the
155
+ * column omits it; absent should be read as `personal`, the column's
156
+ * default, not as unknown.
148
157
  */
149
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
158
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
159
+ /**
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 ?? []`.
176
+ */
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")[]>>;
150
178
  /**
151
179
  * The authenticated viewer's relationship to this profile. Present ONLY
152
180
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -196,10 +224,38 @@ export declare const userResponseSchema: z.ZodObject<{
196
224
  */
197
225
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
198
226
  /**
199
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
200
- * Absent on personal, project, and bot accounts.
227
+ * Account-graph classification what KIND of account this is.
228
+ *
229
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
230
+ * which says where the account lives and how it is driven; the two
231
+ * coexist and neither substitutes for the other. A `channel` is a
232
+ * publishing identity nobody can act as, so a consumer that renders
233
+ * authored content reads THIS to tell a channel's post from a person's.
234
+ *
235
+ * Optional because a DTO produced from a source that never carried the
236
+ * column omits it; absent should be read as `personal`, the column's
237
+ * default, not as unknown.
238
+ */
239
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
240
+ /**
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 ?? []`.
201
257
  */
202
- 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")[]>>;
203
259
  /**
204
260
  * The authenticated viewer's relationship to this profile. Present ONLY
205
261
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -249,10 +305,38 @@ export declare const userResponseSchema: z.ZodObject<{
249
305
  */
250
306
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
251
307
  /**
252
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
253
- * Absent on personal, project, and bot accounts.
308
+ * Account-graph classification what KIND of account this is.
309
+ *
310
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
311
+ * which says where the account lives and how it is driven; the two
312
+ * coexist and neither substitutes for the other. A `channel` is a
313
+ * publishing identity nobody can act as, so a consumer that renders
314
+ * authored content reads THIS to tell a channel's post from a person's.
315
+ *
316
+ * Optional because a DTO produced from a source that never carried the
317
+ * column omits it; absent should be read as `personal`, the column's
318
+ * default, not as unknown.
254
319
  */
255
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
320
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
321
+ /**
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 ?? []`.
338
+ */
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")[]>>;
256
340
  /**
257
341
  * The authenticated viewer's relationship to this profile. Present ONLY
258
342
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -272,12 +356,20 @@ export declare const userProfileUpdateSchema: z.ZodObject<{
272
356
  name: z.ZodOptional<z.ZodObject<{
273
357
  first: z.ZodOptional<z.ZodString>;
274
358
  last: z.ZodOptional<z.ZodString>;
359
+ /**
360
+ * Explicit display name, stored rather than composed. Wins over
361
+ * `first`/`last` when set; send `''` to clear it and fall back
362
+ * to the composed pair.
363
+ */
364
+ displayName: z.ZodOptional<z.ZodString>;
275
365
  }, "strip", z.ZodTypeAny, {
276
366
  first?: string | undefined;
277
367
  last?: string | undefined;
368
+ displayName?: string | undefined;
278
369
  }, {
279
370
  first?: string | undefined;
280
371
  last?: string | undefined;
372
+ displayName?: string | undefined;
281
373
  }>>;
282
374
  username: z.ZodOptional<z.ZodString>;
283
375
  email: z.ZodOptional<z.ZodString>;
@@ -328,12 +420,20 @@ export declare const userProfileUpdateSchema: z.ZodObject<{
328
420
  name: z.ZodOptional<z.ZodObject<{
329
421
  first: z.ZodOptional<z.ZodString>;
330
422
  last: z.ZodOptional<z.ZodString>;
423
+ /**
424
+ * Explicit display name, stored rather than composed. Wins over
425
+ * `first`/`last` when set; send `''` to clear it and fall back
426
+ * to the composed pair.
427
+ */
428
+ displayName: z.ZodOptional<z.ZodString>;
331
429
  }, "strip", z.ZodTypeAny, {
332
430
  first?: string | undefined;
333
431
  last?: string | undefined;
432
+ displayName?: string | undefined;
334
433
  }, {
335
434
  first?: string | undefined;
336
435
  last?: string | undefined;
436
+ displayName?: string | undefined;
337
437
  }>>;
338
438
  username: z.ZodOptional<z.ZodString>;
339
439
  email: z.ZodOptional<z.ZodString>;
@@ -384,12 +484,20 @@ export declare const userProfileUpdateSchema: z.ZodObject<{
384
484
  name: z.ZodOptional<z.ZodObject<{
385
485
  first: z.ZodOptional<z.ZodString>;
386
486
  last: z.ZodOptional<z.ZodString>;
487
+ /**
488
+ * Explicit display name, stored rather than composed. Wins over
489
+ * `first`/`last` when set; send `''` to clear it and fall back
490
+ * to the composed pair.
491
+ */
492
+ displayName: z.ZodOptional<z.ZodString>;
387
493
  }, "strip", z.ZodTypeAny, {
388
494
  first?: string | undefined;
389
495
  last?: string | undefined;
496
+ displayName?: string | undefined;
390
497
  }, {
391
498
  first?: string | undefined;
392
499
  last?: string | undefined;
500
+ displayName?: string | undefined;
393
501
  }>>;
394
502
  username: z.ZodOptional<z.ZodString>;
395
503
  email: z.ZodOptional<z.ZodString>;
@@ -486,10 +594,38 @@ export declare const currentUserResponseSchema: z.ZodObject<{
486
594
  */
487
595
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
488
596
  /**
489
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
490
- * Absent on personal, project, and bot accounts.
491
- */
492
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
597
+ * Account-graph classification what KIND of account this is.
598
+ *
599
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
600
+ * which says where the account lives and how it is driven; the two
601
+ * coexist and neither substitutes for the other. A `channel` is a
602
+ * publishing identity nobody can act as, so a consumer that renders
603
+ * authored content reads THIS to tell a channel's post from a person's.
604
+ *
605
+ * Optional because a DTO produced from a source that never carried the
606
+ * column omits it; absent should be read as `personal`, the column's
607
+ * default, not as unknown.
608
+ */
609
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
610
+ /**
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 ?? []`.
627
+ */
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")[]>>;
493
629
  /**
494
630
  * The authenticated viewer's relationship to this profile. Present ONLY
495
631
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -539,10 +675,38 @@ export declare const currentUserResponseSchema: z.ZodObject<{
539
675
  */
540
676
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
541
677
  /**
542
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
543
- * Absent on personal, project, and bot accounts.
544
- */
545
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
678
+ * Account-graph classification what KIND of account this is.
679
+ *
680
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
681
+ * which says where the account lives and how it is driven; the two
682
+ * coexist and neither substitutes for the other. A `channel` is a
683
+ * publishing identity nobody can act as, so a consumer that renders
684
+ * authored content reads THIS to tell a channel's post from a person's.
685
+ *
686
+ * Optional because a DTO produced from a source that never carried the
687
+ * column omits it; absent should be read as `personal`, the column's
688
+ * default, not as unknown.
689
+ */
690
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
691
+ /**
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 ?? []`.
708
+ */
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")[]>>;
546
710
  /**
547
711
  * The authenticated viewer's relationship to this profile. Present ONLY
548
712
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -592,10 +756,38 @@ export declare const currentUserResponseSchema: z.ZodObject<{
592
756
  */
593
757
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
594
758
  /**
595
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
596
- * Absent on personal, project, and bot accounts.
597
- */
598
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
759
+ * Account-graph classification what KIND of account this is.
760
+ *
761
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
762
+ * which says where the account lives and how it is driven; the two
763
+ * coexist and neither substitutes for the other. A `channel` is a
764
+ * publishing identity nobody can act as, so a consumer that renders
765
+ * authored content reads THIS to tell a channel's post from a person's.
766
+ *
767
+ * Optional because a DTO produced from a source that never carried the
768
+ * column omits it; absent should be read as `personal`, the column's
769
+ * default, not as unknown.
770
+ */
771
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
772
+ /**
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 ?? []`.
789
+ */
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")[]>>;
599
791
  /**
600
792
  * The authenticated viewer's relationship to this profile. Present ONLY
601
793
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -613,9 +805,10 @@ export declare const currentUserResponseSchema: z.ZodObject<{
613
805
  }, "strip", z.ZodTypeAny, {
614
806
  data: {
615
807
  name: UserNameResponse;
808
+ kind?: "personal" | "organization" | "project" | "bot" | "channel" | undefined;
616
809
  username?: string | undefined;
617
810
  avatar?: string | null | undefined;
618
- 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;
619
812
  id?: string | undefined;
620
813
  publicKey?: string | undefined;
621
814
  did?: string | undefined;
@@ -636,9 +829,10 @@ export declare const currentUserResponseSchema: z.ZodObject<{
636
829
  }, {
637
830
  data: {
638
831
  name: UserNameResponse;
832
+ kind?: "personal" | "organization" | "project" | "bot" | "channel" | undefined;
639
833
  username?: string | undefined;
640
834
  avatar?: string | null | undefined;
641
- 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;
642
836
  id?: string | undefined;
643
837
  publicKey?: string | undefined;
644
838
  did?: string | undefined;
@@ -703,10 +897,38 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
703
897
  */
704
898
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
705
899
  /**
706
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
707
- * Absent on personal, project, and bot accounts.
708
- */
709
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
900
+ * Account-graph classification what KIND of account this is.
901
+ *
902
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
903
+ * which says where the account lives and how it is driven; the two
904
+ * coexist and neither substitutes for the other. A `channel` is a
905
+ * publishing identity nobody can act as, so a consumer that renders
906
+ * authored content reads THIS to tell a channel's post from a person's.
907
+ *
908
+ * Optional because a DTO produced from a source that never carried the
909
+ * column omits it; absent should be read as `personal`, the column's
910
+ * default, not as unknown.
911
+ */
912
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
913
+ /**
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 ?? []`.
930
+ */
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")[]>>;
710
932
  /**
711
933
  * The authenticated viewer's relationship to this profile. Present ONLY
712
934
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -756,10 +978,38 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
756
978
  */
757
979
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
758
980
  /**
759
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
760
- * Absent on personal, project, and bot accounts.
761
- */
762
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
981
+ * Account-graph classification what KIND of account this is.
982
+ *
983
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
984
+ * which says where the account lives and how it is driven; the two
985
+ * coexist and neither substitutes for the other. A `channel` is a
986
+ * publishing identity nobody can act as, so a consumer that renders
987
+ * authored content reads THIS to tell a channel's post from a person's.
988
+ *
989
+ * Optional because a DTO produced from a source that never carried the
990
+ * column omits it; absent should be read as `personal`, the column's
991
+ * default, not as unknown.
992
+ */
993
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
994
+ /**
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 ?? []`.
1011
+ */
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")[]>>;
763
1013
  /**
764
1014
  * The authenticated viewer's relationship to this profile. Present ONLY
765
1015
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -809,10 +1059,38 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
809
1059
  */
810
1060
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
811
1061
  /**
812
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
813
- * Absent on personal, project, and bot accounts.
814
- */
815
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1062
+ * Account-graph classification what KIND of account this is.
1063
+ *
1064
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1065
+ * which says where the account lives and how it is driven; the two
1066
+ * coexist and neither substitutes for the other. A `channel` is a
1067
+ * publishing identity nobody can act as, so a consumer that renders
1068
+ * authored content reads THIS to tell a channel's post from a person's.
1069
+ *
1070
+ * Optional because a DTO produced from a source that never carried the
1071
+ * column omits it; absent should be read as `personal`, the column's
1072
+ * default, not as unknown.
1073
+ */
1074
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1075
+ /**
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 ?? []`.
1092
+ */
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")[]>>;
816
1094
  /**
817
1095
  * The authenticated viewer's relationship to this profile. Present ONLY
818
1096
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -865,10 +1143,38 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
865
1143
  */
866
1144
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
867
1145
  /**
868
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
869
- * Absent on personal, project, and bot accounts.
870
- */
871
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1146
+ * Account-graph classification what KIND of account this is.
1147
+ *
1148
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1149
+ * which says where the account lives and how it is driven; the two
1150
+ * coexist and neither substitutes for the other. A `channel` is a
1151
+ * publishing identity nobody can act as, so a consumer that renders
1152
+ * authored content reads THIS to tell a channel's post from a person's.
1153
+ *
1154
+ * Optional because a DTO produced from a source that never carried the
1155
+ * column omits it; absent should be read as `personal`, the column's
1156
+ * default, not as unknown.
1157
+ */
1158
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1159
+ /**
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 ?? []`.
1176
+ */
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")[]>>;
872
1178
  /**
873
1179
  * The authenticated viewer's relationship to this profile. Present ONLY
874
1180
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -922,10 +1228,38 @@ export declare const deviceLinkedSessionSchema: z.ZodObject<{
922
1228
  */
923
1229
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
924
1230
  /**
925
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
926
- * Absent on personal, project, and bot accounts.
927
- */
928
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1231
+ * Account-graph classification what KIND of account this is.
1232
+ *
1233
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1234
+ * which says where the account lives and how it is driven; the two
1235
+ * coexist and neither substitutes for the other. A `channel` is a
1236
+ * publishing identity nobody can act as, so a consumer that renders
1237
+ * authored content reads THIS to tell a channel's post from a person's.
1238
+ *
1239
+ * Optional because a DTO produced from a source that never carried the
1240
+ * column omits it; absent should be read as `personal`, the column's
1241
+ * default, not as unknown.
1242
+ */
1243
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1244
+ /**
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 ?? []`.
1261
+ */
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")[]>>;
929
1263
  /**
930
1264
  * The authenticated viewer's relationship to this profile. Present ONLY
931
1265
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -983,10 +1317,38 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
983
1317
  */
984
1318
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
985
1319
  /**
986
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
987
- * Absent on personal, project, and bot accounts.
988
- */
989
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1320
+ * Account-graph classification what KIND of account this is.
1321
+ *
1322
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1323
+ * which says where the account lives and how it is driven; the two
1324
+ * coexist and neither substitutes for the other. A `channel` is a
1325
+ * publishing identity nobody can act as, so a consumer that renders
1326
+ * authored content reads THIS to tell a channel's post from a person's.
1327
+ *
1328
+ * Optional because a DTO produced from a source that never carried the
1329
+ * column omits it; absent should be read as `personal`, the column's
1330
+ * default, not as unknown.
1331
+ */
1332
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1333
+ /**
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 ?? []`.
1350
+ */
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")[]>>;
990
1352
  /**
991
1353
  * The authenticated viewer's relationship to this profile. Present ONLY
992
1354
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1036,10 +1398,38 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1036
1398
  */
1037
1399
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
1038
1400
  /**
1039
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1040
- * Absent on personal, project, and bot accounts.
1041
- */
1042
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1401
+ * Account-graph classification what KIND of account this is.
1402
+ *
1403
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1404
+ * which says where the account lives and how it is driven; the two
1405
+ * coexist and neither substitutes for the other. A `channel` is a
1406
+ * publishing identity nobody can act as, so a consumer that renders
1407
+ * authored content reads THIS to tell a channel's post from a person's.
1408
+ *
1409
+ * Optional because a DTO produced from a source that never carried the
1410
+ * column omits it; absent should be read as `personal`, the column's
1411
+ * default, not as unknown.
1412
+ */
1413
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1414
+ /**
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 ?? []`.
1431
+ */
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")[]>>;
1043
1433
  /**
1044
1434
  * The authenticated viewer's relationship to this profile. Present ONLY
1045
1435
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1089,10 +1479,38 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1089
1479
  */
1090
1480
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
1091
1481
  /**
1092
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1093
- * Absent on personal, project, and bot accounts.
1094
- */
1095
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1482
+ * Account-graph classification what KIND of account this is.
1483
+ *
1484
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1485
+ * which says where the account lives and how it is driven; the two
1486
+ * coexist and neither substitutes for the other. A `channel` is a
1487
+ * publishing identity nobody can act as, so a consumer that renders
1488
+ * authored content reads THIS to tell a channel's post from a person's.
1489
+ *
1490
+ * Optional because a DTO produced from a source that never carried the
1491
+ * column omits it; absent should be read as `personal`, the column's
1492
+ * default, not as unknown.
1493
+ */
1494
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1495
+ /**
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 ?? []`.
1512
+ */
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")[]>>;
1096
1514
  /**
1097
1515
  * The authenticated viewer's relationship to this profile. Present ONLY
1098
1516
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1145,10 +1563,38 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1145
1563
  */
1146
1564
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
1147
1565
  /**
1148
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1149
- * Absent on personal, project, and bot accounts.
1150
- */
1151
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1566
+ * Account-graph classification what KIND of account this is.
1567
+ *
1568
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1569
+ * which says where the account lives and how it is driven; the two
1570
+ * coexist and neither substitutes for the other. A `channel` is a
1571
+ * publishing identity nobody can act as, so a consumer that renders
1572
+ * authored content reads THIS to tell a channel's post from a person's.
1573
+ *
1574
+ * Optional because a DTO produced from a source that never carried the
1575
+ * column omits it; absent should be read as `personal`, the column's
1576
+ * default, not as unknown.
1577
+ */
1578
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1579
+ /**
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 ?? []`.
1596
+ */
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")[]>>;
1152
1598
  /**
1153
1599
  * The authenticated viewer's relationship to this profile. Present ONLY
1154
1600
  * on single-profile fetches (`GET /profiles/username/:username`,
@@ -1202,10 +1648,38 @@ export declare const deviceLinkedSessionsResponseSchema: z.ZodArray<z.ZodObject<
1202
1648
  */
1203
1649
  verifiedDomains: z.ZodOptional<z.ZodArray<z.ZodType<import("./identity").VerifiedDomain, z.ZodTypeDef, import("./identity").VerifiedDomain>, "many">>;
1204
1650
  /**
1205
- * Real-estate / team taxonomy for `kind: 'organization'` accounts.
1206
- * Absent on personal, project, and bot accounts.
1207
- */
1208
- organizationCategory: z.ZodOptional<z.ZodEnum<["agency", "cooperative", "landlord", "other"]>>;
1651
+ * Account-graph classification what KIND of account this is.
1652
+ *
1653
+ * ORTHOGONAL to `type` (`local` / `federated` / `agent` / `automated`),
1654
+ * which says where the account lives and how it is driven; the two
1655
+ * coexist and neither substitutes for the other. A `channel` is a
1656
+ * publishing identity nobody can act as, so a consumer that renders
1657
+ * authored content reads THIS to tell a channel's post from a person's.
1658
+ *
1659
+ * Optional because a DTO produced from a source that never carried the
1660
+ * column omits it; absent should be read as `personal`, the column's
1661
+ * default, not as unknown.
1662
+ */
1663
+ kind: z.ZodOptional<z.ZodEnum<["personal", "organization", "project", "bot", "channel"]>>;
1664
+ /**
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 ?? []`.
1681
+ */
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")[]>>;
1209
1683
  /**
1210
1684
  * The authenticated viewer's relationship to this profile. Present ONLY
1211
1685
  * on single-profile fetches (`GET /profiles/username/:username`,