@atproto/bsky 0.0.37 → 0.0.38

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.
Files changed (138) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts +2 -3
  3. package/dist/api/app/bsky/feed/getListFeed.d.ts +2 -2
  4. package/dist/api/app/bsky/feed/getTimeline.d.ts +4 -2
  5. package/dist/api/app/bsky/labeler/getServices.d.ts +3 -0
  6. package/dist/api/util.d.ts +9 -2
  7. package/dist/auth-verifier.d.ts +1 -1
  8. package/dist/context.d.ts +3 -0
  9. package/dist/data-plane/server/db/database-schema.d.ts +2 -2
  10. package/dist/data-plane/server/db/migrations/20240226T225725627Z-labelers.d.ts +3 -0
  11. package/dist/data-plane/server/db/migrations/index.d.ts +1 -0
  12. package/dist/data-plane/server/db/tables/labeler.d.ts +13 -0
  13. package/dist/data-plane/server/indexing/index.d.ts +2 -0
  14. package/dist/data-plane/server/indexing/plugins/labeler.d.ts +10 -0
  15. package/dist/data-plane/server/util.d.ts +6 -6
  16. package/dist/hydration/actor.d.ts +3 -0
  17. package/dist/hydration/hydrator.d.ts +27 -22
  18. package/dist/hydration/label.d.ts +23 -9
  19. package/dist/index.js +4068 -4641
  20. package/dist/index.js.map +3 -3
  21. package/dist/lexicon/index.d.ts +7 -27
  22. package/dist/lexicon/lexicons.d.ts +507 -1467
  23. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +23 -1
  24. package/dist/lexicon/types/app/bsky/embed/record.d.ts +2 -1
  25. package/dist/lexicon/types/app/bsky/feed/defs.d.ts +1 -0
  26. package/dist/lexicon/types/app/bsky/graph/defs.d.ts +3 -0
  27. package/dist/lexicon/types/app/bsky/labeler/defs.d.ts +41 -0
  28. package/dist/lexicon/types/{com/atproto/admin/searchRepos.d.ts → app/bsky/labeler/getServices.d.ts} +7 -7
  29. package/dist/lexicon/types/app/bsky/labeler/service.d.ts +14 -0
  30. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +0 -304
  31. package/dist/lexicon/types/com/atproto/label/defs.d.ts +23 -0
  32. package/dist/proto/bsky_connect.d.ts +7 -1
  33. package/dist/proto/bsky_pb.d.ts +25 -0
  34. package/dist/util.d.ts +7 -0
  35. package/dist/views/index.d.ts +3 -0
  36. package/dist/views/types.d.ts +2 -1
  37. package/package.json +14 -13
  38. package/proto/bsky.proto +12 -0
  39. package/src/api/app/bsky/actor/getProfile.ts +21 -17
  40. package/src/api/app/bsky/actor/getProfiles.ts +16 -7
  41. package/src/api/app/bsky/actor/getSuggestions.ts +18 -13
  42. package/src/api/app/bsky/actor/searchActors.ts +9 -5
  43. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +12 -5
  44. package/src/api/app/bsky/feed/getActorFeeds.ts +16 -6
  45. package/src/api/app/bsky/feed/getActorLikes.ts +18 -8
  46. package/src/api/app/bsky/feed/getAuthorFeed.ts +18 -19
  47. package/src/api/app/bsky/feed/getFeed.ts +14 -7
  48. package/src/api/app/bsky/feed/getFeedGenerator.ts +8 -2
  49. package/src/api/app/bsky/feed/getFeedGenerators.ts +16 -5
  50. package/src/api/app/bsky/feed/getLikes.ts +13 -6
  51. package/src/api/app/bsky/feed/getListFeed.ts +13 -7
  52. package/src/api/app/bsky/feed/getPostThread.ts +15 -8
  53. package/src/api/app/bsky/feed/getPosts.ts +14 -5
  54. package/src/api/app/bsky/feed/getRepostedBy.ts +13 -6
  55. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +8 -2
  56. package/src/api/app/bsky/feed/getTimeline.ts +14 -8
  57. package/src/api/app/bsky/feed/searchPosts.ts +9 -5
  58. package/src/api/app/bsky/graph/getBlocks.ts +10 -9
  59. package/src/api/app/bsky/graph/getFollowers.ts +23 -15
  60. package/src/api/app/bsky/graph/getFollows.ts +23 -15
  61. package/src/api/app/bsky/graph/getList.ts +14 -8
  62. package/src/api/app/bsky/graph/getListBlocks.ts +10 -7
  63. package/src/api/app/bsky/graph/getListMutes.ts +10 -7
  64. package/src/api/app/bsky/graph/getLists.ts +9 -7
  65. package/src/api/app/bsky/graph/getMutes.ts +10 -8
  66. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +10 -7
  67. package/src/api/app/bsky/graph/muteActor.ts +1 -1
  68. package/src/api/app/bsky/labeler/getServices.ts +46 -0
  69. package/src/api/app/bsky/notification/listNotifications.ts +12 -8
  70. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +6 -3
  71. package/src/api/com/atproto/admin/getAccountInfos.ts +10 -3
  72. package/src/api/index.ts +2 -0
  73. package/src/api/util.ts +19 -4
  74. package/src/auth-verifier.ts +2 -2
  75. package/src/context.ts +20 -0
  76. package/src/data-plane/server/db/database-schema.ts +4 -4
  77. package/src/data-plane/server/db/migrations/20240226T225725627Z-labelers.ts +27 -0
  78. package/src/data-plane/server/db/migrations/index.ts +1 -0
  79. package/src/data-plane/server/db/tables/labeler.ts +16 -0
  80. package/src/data-plane/server/indexing/index.ts +4 -0
  81. package/src/data-plane/server/indexing/plugins/labeler.ts +77 -0
  82. package/src/data-plane/server/routes/interactions.ts +17 -1
  83. package/src/data-plane/server/routes/profile.ts +15 -1
  84. package/src/data-plane/server/routes/records.ts +1 -0
  85. package/src/hydration/actor.ts +6 -0
  86. package/src/hydration/hydrator.ts +171 -97
  87. package/src/hydration/label.ts +106 -20
  88. package/src/index.ts +1 -3
  89. package/src/lexicon/index.ts +22 -137
  90. package/src/lexicon/lexicons.ts +502 -1598
  91. package/src/lexicon/types/app/bsky/actor/defs.ts +57 -1
  92. package/src/lexicon/types/app/bsky/embed/record.ts +2 -0
  93. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  94. package/src/lexicon/types/app/bsky/graph/defs.ts +3 -0
  95. package/src/lexicon/types/app/bsky/labeler/defs.ts +93 -0
  96. package/src/lexicon/types/{com/atproto/admin/searchRepos.ts → app/bsky/labeler/getServices.ts} +8 -8
  97. package/src/lexicon/types/app/bsky/labeler/service.ts +31 -0
  98. package/src/lexicon/types/com/atproto/admin/defs.ts +0 -694
  99. package/src/lexicon/types/com/atproto/label/defs.ts +78 -0
  100. package/src/proto/bsky_connect.ts +11 -0
  101. package/src/proto/bsky_pb.ts +146 -0
  102. package/src/util.ts +44 -0
  103. package/src/views/index.ts +76 -7
  104. package/src/views/types.ts +6 -3
  105. package/tests/__snapshots__/feed-generation.test.ts.snap +12 -0
  106. package/tests/_util.ts +21 -0
  107. package/tests/data-plane/__snapshots__/indexing.test.ts.snap +20 -0
  108. package/tests/label-hydration.test.ts +162 -0
  109. package/tests/views/__snapshots__/block-lists.test.ts.snap +7 -0
  110. package/tests/views/__snapshots__/labeler-service.test.ts.snap +160 -0
  111. package/tests/views/__snapshots__/mute-lists.test.ts.snap +10 -0
  112. package/tests/views/__snapshots__/profile.test.ts.snap +40 -0
  113. package/tests/views/__snapshots__/threadgating.test.ts.snap +2 -0
  114. package/tests/views/labeler-service.test.ts +156 -0
  115. package/tests/views/takedown-labels.test.ts +133 -0
  116. package/tests/views/timeline.test.ts +7 -2
  117. package/dist/data-plane/server/db/tables/moderation.d.ts +0 -42
  118. package/dist/lexicon/types/com/atproto/admin/createCommunicationTemplate.d.ts +0 -37
  119. package/dist/lexicon/types/com/atproto/admin/deleteCommunicationTemplate.d.ts +0 -25
  120. package/dist/lexicon/types/com/atproto/admin/emitModerationEvent.d.ts +0 -45
  121. package/dist/lexicon/types/com/atproto/admin/getModerationEvent.d.ts +0 -29
  122. package/dist/lexicon/types/com/atproto/admin/getRecord.d.ts +0 -31
  123. package/dist/lexicon/types/com/atproto/admin/getRepo.d.ts +0 -30
  124. package/dist/lexicon/types/com/atproto/admin/listCommunicationTemplates.d.ts +0 -31
  125. package/dist/lexicon/types/com/atproto/admin/queryModerationEvents.d.ts +0 -48
  126. package/dist/lexicon/types/com/atproto/admin/queryModerationStatuses.d.ts +0 -50
  127. package/dist/lexicon/types/com/atproto/admin/updateCommunicationTemplate.d.ts +0 -39
  128. package/src/data-plane/server/db/tables/moderation.ts +0 -59
  129. package/src/lexicon/types/com/atproto/admin/createCommunicationTemplate.ts +0 -54
  130. package/src/lexicon/types/com/atproto/admin/deleteCommunicationTemplate.ts +0 -38
  131. package/src/lexicon/types/com/atproto/admin/emitModerationEvent.ts +0 -67
  132. package/src/lexicon/types/com/atproto/admin/getModerationEvent.ts +0 -41
  133. package/src/lexicon/types/com/atproto/admin/getRecord.ts +0 -43
  134. package/src/lexicon/types/com/atproto/admin/getRepo.ts +0 -42
  135. package/src/lexicon/types/com/atproto/admin/listCommunicationTemplates.ts +0 -44
  136. package/src/lexicon/types/com/atproto/admin/queryModerationEvents.ts +0 -73
  137. package/src/lexicon/types/com/atproto/admin/queryModerationStatuses.ts +0 -74
  138. package/src/lexicon/types/com/atproto/admin/updateCommunicationTemplate.ts +0 -57
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atproto/bsky
2
2
 
3
+ ## 0.0.38
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`4eaadc0ac`](https://github.com/bluesky-social/atproto/commit/4eaadc0acb6b73b9745dd7a2b929d02e58083ab0), [`4eaadc0ac`](https://github.com/bluesky-social/atproto/commit/4eaadc0acb6b73b9745dd7a2b929d02e58083ab0)]:
8
+ - @atproto/identity@0.3.3
9
+ - @atproto/api@0.11.0
10
+ - @atproto/common@0.3.4
11
+ - @atproto/lexicon@0.3.3
12
+ - @atproto/repo@0.3.9
13
+ - @atproto/syntax@0.2.1
14
+ - @atproto/crypto@0.3.0
15
+ - @atproto/xrpc-server@0.4.4
16
+
3
17
  ## 0.0.37
4
18
 
5
19
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  import { Server } from '../../../../lexicon';
2
2
  import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getAuthorFeed';
3
3
  import AppContext from '../../../../context';
4
- import { Hydrator } from '../../../../hydration/hydrator';
4
+ import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator';
5
5
  import { Views } from '../../../../views';
6
6
  import { DataPlaneClient } from '../../../../data-plane';
7
7
  import { Actor } from '../../../../hydration/actor';
@@ -17,8 +17,7 @@ type Context = {
17
17
  dataplane: DataPlaneClient;
18
18
  };
19
19
  type Params = QueryParams & {
20
- viewer: string | null;
21
- includeTakedowns: boolean;
20
+ hydrateCtx: HydrateCtx;
22
21
  };
23
22
  type Skeleton = {
24
23
  actor: Actor;
@@ -1,7 +1,7 @@
1
1
  import { Server } from '../../../../lexicon';
2
2
  import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getListFeed';
3
3
  import AppContext from '../../../../context';
4
- import { Hydrator } from '../../../../hydration/hydrator';
4
+ import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator';
5
5
  import { Views } from '../../../../views';
6
6
  import { DataPlaneClient } from '../../../../data-plane';
7
7
  import { FeedItem } from '../../../../hydration/feed';
@@ -16,7 +16,7 @@ type Context = {
16
16
  dataplane: DataPlaneClient;
17
17
  };
18
18
  type Params = QueryParams & {
19
- viewer: string | null;
19
+ hydrateCtx: HydrateCtx;
20
20
  };
21
21
  type Skeleton = {
22
22
  items: FeedItem[];
@@ -1,7 +1,7 @@
1
1
  import { Server } from '../../../../lexicon';
2
2
  import AppContext from '../../../../context';
3
3
  import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getTimeline';
4
- import { Hydrator } from '../../../../hydration/hydrator';
4
+ import { HydrateCtx, Hydrator } from '../../../../hydration/hydrator';
5
5
  import { Views } from '../../../../views';
6
6
  import { DataPlaneClient } from '../../../../data-plane';
7
7
  import { FeedItem } from '../../../../hydration/feed';
@@ -16,7 +16,9 @@ type Context = {
16
16
  dataplane: DataPlaneClient;
17
17
  };
18
18
  type Params = QueryParams & {
19
- viewer: string;
19
+ hydrateCtx: HydrateCtx & {
20
+ viewer: string;
21
+ };
20
22
  };
21
23
  type Skeleton = {
22
24
  items: FeedItem[];
@@ -0,0 +1,3 @@
1
+ import { Server } from '../../../../lexicon';
2
+ import AppContext from '../../../../context';
3
+ export default function (server: Server, ctx: AppContext): void;
@@ -1,3 +1,10 @@
1
- import express from 'express';
2
- export declare const setRepoRev: (res: express.Response, rev: string | null) => void;
1
+ import { ParsedLabelers } from '../util';
2
+ export declare const ATPROTO_CONTENT_LABELERS = "Atproto-Content-Labelers";
3
+ export declare const ATPROTO_REPO_REV = "Atproto-Repo-Rev";
4
+ type ResHeaderOpts = {
5
+ labelers: ParsedLabelers;
6
+ repoRev: string | null;
7
+ };
8
+ export declare const resHeaders: (opts: Partial<ResHeaderOpts>) => Record<string, string>;
3
9
  export declare const clearlyBadCursor: (cursor?: string) => boolean;
10
+ export {};
@@ -75,7 +75,7 @@ export declare class AuthVerifier {
75
75
  nullCreds(): NullOutput;
76
76
  parseCreds(creds: StandardOutput | RoleOutput | ModServiceOutput | NullOutput): {
77
77
  viewer: string | null;
78
- canViewTakedowns: boolean;
78
+ includeTakedowns: boolean;
79
79
  canPerformTakedown: boolean;
80
80
  };
81
81
  }
package/dist/context.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import express from 'express';
1
2
  import * as plc from '@did-plc/lib';
2
3
  import { IdResolver } from '@atproto/identity';
3
4
  import AtpAgent from '@atproto/api';
@@ -9,6 +10,7 @@ import { Views } from './views';
9
10
  import { AuthVerifier } from './auth-verifier';
10
11
  import { BsyncClient } from './bsync';
11
12
  import { CourierClient } from './courier';
13
+ import { ParsedLabelers } from './util';
12
14
  export declare class AppContext {
13
15
  private opts;
14
16
  constructor(opts: {
@@ -35,5 +37,6 @@ export declare class AppContext {
35
37
  get courierClient(): CourierClient;
36
38
  get authVerifier(): AuthVerifier;
37
39
  serviceAuthJwt(aud: string): Promise<string>;
40
+ reqLabelers(req: express.Request): ParsedLabelers;
38
41
  }
39
42
  export default AppContext;
@@ -25,7 +25,6 @@ import * as record from './tables/record';
25
25
  import * as notification from './tables/notification';
26
26
  import * as notificationPushToken from './tables/notification-push-token';
27
27
  import * as didCache from './tables/did-cache';
28
- import * as moderation from './tables/moderation';
29
28
  import * as label from './tables/label';
30
29
  import * as algo from './tables/algo';
31
30
  import * as viewParam from './tables/view-param';
@@ -33,6 +32,7 @@ import * as suggestedFollow from './tables/suggested-follow';
33
32
  import * as suggestedFeed from './tables/suggested-feed';
34
33
  import * as taggedSuggestion from './tables/tagged-suggestion';
35
34
  import * as blobTakedown from './tables/blob-takedown';
36
- export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & profileAgg.PartialDB & post.PartialDB & postEmbed.PartialDB & postAgg.PartialDB & repost.PartialDB & threadGate.PartialDB & feedItem.PartialDB & follow.PartialDB & like.PartialDB & list.PartialDB & listItem.PartialDB & listMute.PartialDB & listBlock.PartialDB & mute.PartialDB & actorBlock.PartialDB & feedGenerator.PartialDB & subscription.PartialDB & actor.PartialDB & actorState.PartialDB & actorSync.PartialDB & record.PartialDB & notification.PartialDB & notificationPushToken.PartialDB & didCache.PartialDB & moderation.PartialDB & label.PartialDB & algo.PartialDB & viewParam.PartialDB & suggestedFollow.PartialDB & suggestedFeed.PartialDB & taggedSuggestion.PartialDB & blobTakedown.PartialDB;
35
+ import * as labeler from './tables/labeler';
36
+ export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & profileAgg.PartialDB & post.PartialDB & postEmbed.PartialDB & postAgg.PartialDB & repost.PartialDB & threadGate.PartialDB & feedItem.PartialDB & follow.PartialDB & like.PartialDB & list.PartialDB & listItem.PartialDB & listMute.PartialDB & listBlock.PartialDB & mute.PartialDB & actorBlock.PartialDB & feedGenerator.PartialDB & subscription.PartialDB & actor.PartialDB & actorState.PartialDB & actorSync.PartialDB & record.PartialDB & notification.PartialDB & notificationPushToken.PartialDB & didCache.PartialDB & label.PartialDB & algo.PartialDB & viewParam.PartialDB & suggestedFollow.PartialDB & suggestedFeed.PartialDB & blobTakedown.PartialDB & labeler.PartialDB & taggedSuggestion.PartialDB;
37
37
  export type DatabaseSchema = Kysely<DatabaseSchemaType>;
38
38
  export default DatabaseSchema;
@@ -0,0 +1,3 @@
1
+ import { Kysely } from 'kysely';
2
+ export declare function up(db: Kysely<unknown>): Promise<void>;
3
+ export declare function down(db: Kysely<unknown>): Promise<void>;
@@ -29,3 +29,4 @@ export * as _20230929T192920807Z from './20230929T192920807Z-record-cursor-index
29
29
  export * as _20231003T202833377Z from './20231003T202833377Z-create-moderation-subject-status';
30
30
  export * as _20231220T225126090Z from './20231220T225126090Z-blob-takedowns';
31
31
  export * as _20240124T023719200Z from './20240124T023719200Z-tagged-suggestions';
32
+ export * as _20240226T225725627Z from './20240226T225725627Z-labelers';
@@ -0,0 +1,13 @@
1
+ import { GeneratedAlways } from 'kysely';
2
+ export declare const tableName = "labeler";
3
+ export interface Labeler {
4
+ uri: string;
5
+ cid: string;
6
+ creator: string;
7
+ createdAt: string;
8
+ indexedAt: string;
9
+ sortAt: GeneratedAlways<string>;
10
+ }
11
+ export type PartialDB = {
12
+ [tableName]: Labeler;
13
+ };
@@ -14,6 +14,7 @@ import * as ListItem from './plugins/list-item';
14
14
  import * as ListBlock from './plugins/list-block';
15
15
  import * as Block from './plugins/block';
16
16
  import * as FeedGenerator from './plugins/feed-generator';
17
+ import * as Labeler from './plugins/labeler';
17
18
  import RecordProcessor from './processor';
18
19
  import { BackgroundQueue } from '../background';
19
20
  export declare class IndexingService {
@@ -32,6 +33,7 @@ export declare class IndexingService {
32
33
  listBlock: ListBlock.PluginType;
33
34
  block: Block.PluginType;
34
35
  feedGenerator: FeedGenerator.PluginType;
36
+ labeler: Labeler.PluginType;
35
37
  };
36
38
  constructor(db: Database, idResolver: IdResolver, background: BackgroundQueue);
37
39
  transact(txn: Database): IndexingService;
@@ -0,0 +1,10 @@
1
+ import { Selectable } from 'kysely';
2
+ import * as Labeler from '../../../../lexicon/types/app/bsky/labeler/service';
3
+ import { Database } from '../../db';
4
+ import { DatabaseSchemaType } from '../../db/database-schema';
5
+ import RecordProcessor from '../processor';
6
+ import { BackgroundQueue } from '../../background';
7
+ type IndexedLabeler = Selectable<DatabaseSchemaType['labeler']>;
8
+ export type PluginType = RecordProcessor<Labeler.Record, IndexedLabeler>;
9
+ export declare const makePlugin: (db: Database, background: BackgroundQueue) => PluginType;
10
+ export default makePlugin;
@@ -4,28 +4,28 @@ import DatabaseSchema from './db/database-schema';
4
4
  export declare const getDescendentsQb: (db: DatabaseSchema, opts: {
5
5
  uri: string;
6
6
  depth: number;
7
- }) => import("kysely/dist/cjs/parser/with-parser").QueryCreatorWithCommonTableExpression<import("./db/database-schema").DatabaseSchemaType, "descendent(uri, depth)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"descendent", {
7
+ }) => import("kysely/dist/cjs/parser/with-parser").QueryCreatorWithCommonTableExpression<import("./db/database-schema").DatabaseSchemaType, "descendent(uri, depth)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"descendent", {
8
8
  uri: any;
9
9
  depth: any;
10
- }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"descendent", {
10
+ }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"descendent", {
11
11
  uri: any;
12
12
  depth: any;
13
- }>, "post">, "post", import("kysely").Selection<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"descendent", {
13
+ }>, "post">, "post", import("kysely").Selection<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"descendent", {
14
14
  uri: any;
15
15
  depth: any;
16
16
  }>, "post">, "post", "post.uri as uri" | import("kysely").AliasedRawBuilder<number, "depth">>>>;
17
17
  export declare const getAncestorsAndSelfQb: (db: DatabaseSchema, opts: {
18
18
  uri: string;
19
19
  parentHeight: number;
20
- }) => import("kysely/dist/cjs/parser/with-parser").QueryCreatorWithCommonTableExpression<import("./db/database-schema").DatabaseSchemaType, "ancestor(uri, ancestorUri, height)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"ancestor", {
20
+ }) => import("kysely/dist/cjs/parser/with-parser").QueryCreatorWithCommonTableExpression<import("./db/database-schema").DatabaseSchemaType, "ancestor(uri, ancestorUri, height)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"ancestor", {
21
21
  uri: any;
22
22
  ancestorUri: any;
23
23
  height: any;
24
- }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"ancestor", {
24
+ }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"ancestor", {
25
25
  uri: any;
26
26
  ancestorUri: any;
27
27
  height: any;
28
- }>, "post">, "post", import("kysely").Selection<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/moderation").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & import("./db/tables/blob-takedown").PartialDB & Record<"ancestor", {
28
+ }>, "post">, "post", import("kysely").Selection<import("kysely/dist/cjs/parser/table-parser").From<import("./db/tables/duplicate-record").PartialDB & import("./db/tables/profile").PartialDB & import("./db/tables/profile-agg").PartialDB & import("./db/tables/post").PartialDB & import("./db/tables/post-embed").PartialDB & import("./db/tables/post-agg").PartialDB & import("./db/tables/repost").PartialDB & import("./db/tables/thread-gate").PartialDB & import("./db/tables/feed-item").PartialDB & import("./db/tables/follow").PartialDB & import("./db/tables/like").PartialDB & import("./db/tables/list").PartialDB & import("./db/tables/list-item").PartialDB & import("./db/tables/list-mute").PartialDB & import("./db/tables/list-block").PartialDB & import("./db/tables/mute").PartialDB & import("./db/tables/actor-block").PartialDB & import("./db/tables/feed-generator").PartialDB & import("./db/tables/subscription").PartialDB & import("./db/tables/actor").PartialDB & import("./db/tables/actor-state").PartialDB & import("./db/tables/actor-sync").PartialDB & import("./db/tables/record").PartialDB & import("./db/tables/notification").PartialDB & import("./db/tables/notification-push-token").PartialDB & import("./db/tables/did-cache").PartialDB & import("./db/tables/label").PartialDB & import("./db/tables/algo").PartialDB & import("./db/tables/view-param").PartialDB & import("./db/tables/suggested-follow").PartialDB & import("./db/tables/suggested-feed").PartialDB & import("./db/tables/blob-takedown").PartialDB & import("./db/tables/labeler").PartialDB & import("./db/tables/tagged-suggestion").PartialDB & Record<"ancestor", {
29
29
  uri: any;
30
30
  ancestorUri: any;
31
31
  height: any;
@@ -9,6 +9,7 @@ export type Actor = {
9
9
  profileTakedownRef?: string;
10
10
  sortedAt?: Date;
11
11
  takedownRef?: string;
12
+ isLabeler: boolean;
12
13
  };
13
14
  export type Actors = HydrationMap<Actor>;
14
15
  export type ProfileViewerState = {
@@ -26,6 +27,8 @@ export type ProfileAgg = {
26
27
  followers: number;
27
28
  follows: number;
28
29
  posts: number;
30
+ lists: number;
31
+ feeds: number;
29
32
  };
30
33
  export type ProfileAggs = HydrationMap<ProfileAgg>;
31
34
  export declare class ActorHydrator {
@@ -2,11 +2,17 @@ import { DataPlaneClient } from '../data-plane/client';
2
2
  import { Notification } from '../proto/bsky_pb';
3
3
  import { ActorHydrator, ProfileAggs, Actors, ProfileViewerStates } from './actor';
4
4
  import { Follows, GraphHydrator, ListItems, ListViewerStates, Lists } from './graph';
5
- import { LabelHydrator, Labels } from './label';
5
+ import { LabelHydrator, LabelerAggs, LabelerViewerStates, Labelers, Labels } from './label';
6
6
  import { HydrationMap, RecordInfo } from './util';
7
7
  import { FeedGenAggs, FeedGens, FeedGenViewerStates, FeedHydrator, Likes, Posts, Reposts, PostAggs, PostViewerStates, Threadgates, FeedItem, ItemRef } from './feed';
8
+ import { ParsedLabelers } from '../util';
9
+ export type HydrateCtx = {
10
+ labelers: ParsedLabelers;
11
+ viewer: string | null;
12
+ includeTakedowns?: boolean;
13
+ };
8
14
  export type HydrationState = {
9
- viewer?: string | null;
15
+ ctx?: HydrateCtx;
10
16
  actors?: Actors;
11
17
  profileViewers?: ProfileViewerStates;
12
18
  profileAggs?: ProfileAggs;
@@ -26,6 +32,9 @@ export type HydrationState = {
26
32
  feedgens?: FeedGens;
27
33
  feedgenViewers?: FeedGenViewerStates;
28
34
  feedgenAggs?: FeedGenAggs;
35
+ labelers?: Labelers;
36
+ labelerViewers?: LabelerViewerStates;
37
+ labelerAggs?: LabelerAggs;
29
38
  };
30
39
  export type PostBlock = {
31
40
  embed: boolean;
@@ -36,32 +45,28 @@ export type FollowBlock = boolean;
36
45
  export type FollowBlocks = HydrationMap<FollowBlock>;
37
46
  export declare class Hydrator {
38
47
  dataplane: DataPlaneClient;
39
- opts?: {
40
- labelsFromIssuerDids?: string[] | undefined;
41
- } | undefined;
42
48
  actor: ActorHydrator;
43
49
  feed: FeedHydrator;
44
50
  graph: GraphHydrator;
45
51
  label: LabelHydrator;
46
- constructor(dataplane: DataPlaneClient, opts?: {
47
- labelsFromIssuerDids?: string[] | undefined;
48
- } | undefined);
49
- hydrateProfileViewers(dids: string[], viewer: string): Promise<HydrationState>;
50
- hydrateProfiles(dids: string[], viewer: string | null, includeTakedowns?: boolean): Promise<HydrationState>;
51
- hydrateProfilesBasic(dids: string[], viewer: string | null, includeTakedowns?: boolean): Promise<HydrationState>;
52
- hydrateProfilesDetailed(dids: string[], viewer: string | null, includeTakedowns?: boolean): Promise<HydrationState>;
53
- hydrateLists(uris: string[], viewer: string | null): Promise<HydrationState>;
54
- hydrateListsBasic(uris: string[], viewer: string | null): Promise<HydrationState>;
55
- hydrateListItems(uris: string[], viewer: string | null): Promise<HydrationState>;
56
- hydratePosts(refs: ItemRef[], viewer: string | null, includeTakedowns?: boolean, state?: HydrationState): Promise<HydrationState>;
52
+ constructor(dataplane: DataPlaneClient);
53
+ hydrateProfileViewers(dids: string[], ctx: HydrateCtx): Promise<HydrationState>;
54
+ hydrateProfiles(dids: string[], ctx: HydrateCtx): Promise<HydrationState>;
55
+ hydrateProfilesBasic(dids: string[], ctx: HydrateCtx): Promise<HydrationState>;
56
+ hydrateProfilesDetailed(dids: string[], ctx: HydrateCtx): Promise<HydrationState>;
57
+ hydrateLists(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
58
+ hydrateListsBasic(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
59
+ hydrateListItems(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
60
+ hydratePosts(refs: ItemRef[], ctx: HydrateCtx, state?: HydrationState): Promise<HydrationState>;
57
61
  private hydratePostBlocks;
58
- hydrateFeedItems(items: FeedItem[], viewer: string | null, includeTakedowns?: boolean): Promise<HydrationState>;
59
- hydrateThreadPosts(refs: ItemRef[], viewer: string | null): Promise<HydrationState>;
60
- hydrateFeedGens(uris: string[], viewer: string | null): Promise<HydrationState>;
61
- hydrateLikes(uris: string[], viewer: string | null): Promise<HydrationState>;
62
- hydrateReposts(uris: string[], viewer: string | null): Promise<HydrationState>;
63
- hydrateNotifications(notifs: Notification[], viewer: string | null): Promise<HydrationState>;
62
+ hydrateFeedItems(items: FeedItem[], ctx: HydrateCtx): Promise<HydrationState>;
63
+ hydrateThreadPosts(refs: ItemRef[], ctx: HydrateCtx): Promise<HydrationState>;
64
+ hydrateFeedGens(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
65
+ hydrateLikes(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
66
+ hydrateReposts(uris: string[], ctx: HydrateCtx): Promise<HydrationState>;
67
+ hydrateNotifications(notifs: Notification[], ctx: HydrateCtx): Promise<HydrationState>;
64
68
  hydrateFollows(uris: string[]): Promise<HydrationState>;
69
+ hydrateLabelers(dids: string[], ctx: HydrateCtx): Promise<HydrationState>;
65
70
  getRecord(uri: string, includeTakedowns?: boolean): Promise<RecordInfo<Record<string, unknown>> | undefined>;
66
71
  }
67
72
  export declare const mergeStates: (stateA: HydrationState, stateB: HydrationState) => HydrationState;
@@ -1,15 +1,29 @@
1
1
  import { DataPlaneClient } from '../data-plane/client';
2
2
  import { Label } from '../lexicon/types/com/atproto/label/defs';
3
- import { HydrationMap } from './util';
3
+ import { Record as LabelerRecord } from '../lexicon/types/app/bsky/labeler/service';
4
+ import { HydrationMap, RecordInfo } from './util';
5
+ import { ParsedLabelers } from '../util';
4
6
  export type { Label } from '../lexicon/types/com/atproto/label/defs';
5
- export type Labels = HydrationMap<Label[]>;
7
+ export type SubjectLabels = {
8
+ isTakendown: boolean;
9
+ labels: Label[];
10
+ };
11
+ export type Labels = HydrationMap<SubjectLabels>;
12
+ export type LabelerAgg = {
13
+ likes: number;
14
+ };
15
+ export type LabelerAggs = HydrationMap<LabelerAgg>;
16
+ export type Labeler = RecordInfo<LabelerRecord>;
17
+ export type Labelers = HydrationMap<Labeler>;
18
+ export type LabelerViewerState = {
19
+ like?: string;
20
+ };
21
+ export type LabelerViewerStates = HydrationMap<LabelerViewerState>;
6
22
  export declare class LabelHydrator {
7
23
  dataplane: DataPlaneClient;
8
- opts?: {
9
- labelsFromIssuerDids?: string[] | undefined;
10
- } | undefined;
11
- constructor(dataplane: DataPlaneClient, opts?: {
12
- labelsFromIssuerDids?: string[] | undefined;
13
- } | undefined);
14
- getLabelsForSubjects(subjects: string[], issuers?: string[]): Promise<Labels>;
24
+ constructor(dataplane: DataPlaneClient);
25
+ getLabelsForSubjects(subjects: string[], labelers: ParsedLabelers): Promise<Labels>;
26
+ getLabelers(dids: string[], includeTakedowns?: boolean): Promise<Labelers>;
27
+ getLabelerViewerStates(dids: string[], viewer: string): Promise<LabelerViewerStates>;
28
+ getLabelerAggregates(dids: string[]): Promise<LabelerAggs>;
15
29
  }