@sublay/js 7.9.2 → 8.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -771,6 +771,19 @@ interface PaginatedResponse<T> {
771
771
  data: T[];
772
772
  pagination: PaginationMetadata;
773
773
  }
774
+ /**
775
+ * Cursor pagination (comment lists). `nextCursor` continues after the last
776
+ * item of this page — pass it back as `cursor` — and is `null` when `hasMore`
777
+ * is `false`. `hasMore` is exact.
778
+ */
779
+ interface CursorPagination {
780
+ nextCursor: string | null;
781
+ hasMore: boolean;
782
+ }
783
+ interface CursorPaginatedResponse<T> {
784
+ data: T[];
785
+ pagination: CursorPagination;
786
+ }
774
787
 
775
788
  /**
776
789
  * Shared optional params for text-searching a list of users
@@ -887,156 +900,22 @@ interface FetchConnectionsCountByUserIdProps {
887
900
  }
888
901
  declare function fetchConnectionsCountByUserId(client: SublayHttpClient, data: FetchConnectionsCountByUserIdProps): Promise<ConnectionCountResponse>;
889
902
 
890
- interface CreateFollowProps {
891
- /** The user being followed (the target). The follower is the token holder. */
892
- userId: string;
893
- }
894
- declare function createFollow(client: SublayHttpClient, data: CreateFollowProps): Promise<Follow>;
895
-
896
- interface DeleteFollowProps {
897
- /** The user being unfollowed (the target). The follower is the token holder. */
898
- userId: string;
899
- }
900
- declare function deleteFollow$1(client: SublayHttpClient, data: DeleteFollowProps): Promise<void>;
901
-
902
- interface FetchFollowStatusProps {
903
- /**
904
- * The user whose follow relationship is being checked (the target). The
905
- * status is from the perspective of the token holder.
906
- */
907
- userId: string;
908
- }
909
- interface FollowStatusResponse {
910
- isFollowing: boolean;
911
- followId?: string;
912
- followedAt?: string;
913
- }
914
- declare function fetchFollowStatus(client: SublayHttpClient, data: FetchFollowStatusProps): Promise<FollowStatusResponse>;
915
-
916
- interface RequestConnectionProps {
917
- /**
918
- * The user the connection is requested with (the target). The requester is
919
- * the token holder.
920
- */
921
- userId: string;
922
- message?: string;
923
- }
924
- declare function requestConnection(client: SublayHttpClient, data: RequestConnectionProps): Promise<ConnectionRequestResponse>;
925
-
926
- interface FetchConnectionStatusProps {
927
- /**
928
- * The other user in the connection (the target). The status is from the
929
- * perspective of the token holder.
930
- */
931
- userId: string;
932
- }
933
- declare function fetchConnectionStatus(client: SublayHttpClient, data: FetchConnectionStatusProps): Promise<ConnectionStatusResponse>;
934
-
935
- interface RemoveConnectionByUserIdProps {
936
- /**
937
- * The other user in the connection (the target). The token holder is the
938
- * user withdrawing/declining/disconnecting.
939
- */
940
- userId: string;
941
- }
942
- declare function removeConnectionByUserId(client: SublayHttpClient, data: RemoveConnectionByUserIdProps): Promise<RemoveConnectionByUserIdResponse>;
943
-
944
- interface CreateBlockProps {
945
- /** The user being blocked (the target). The blocker is the token holder. */
946
- userId: string;
947
- }
948
- interface BlockResponse {
949
- id: string;
950
- blockerId: string;
951
- blockedId: string;
952
- createdAt: string;
953
- }
954
- /**
955
- * POST /users/:userId/block — block `:userId`.
956
- *
957
- * The blocker is derived from the token (Rule A — no `actingUserId`). Idempotent:
958
- * re-blocking an already-blocked user succeeds. Self-block is rejected server-side.
959
- * On a new block the server tears down existing follows/connections both ways.
960
- */
961
- declare function createBlock(client: SublayHttpClient, data: CreateBlockProps): Promise<BlockResponse>;
962
-
963
- interface DeleteBlockProps {
964
- /** The user being unblocked (the target). The blocker is the token holder. */
965
- userId: string;
966
- }
967
- /**
968
- * DELETE /users/:userId/block — unblock `:userId`.
969
- *
970
- * The blocker is derived from the token (Rule A — no `actingUserId`). Idempotent:
971
- * unblocking a user who isn't blocked succeeds. Restores nothing (torn-down
972
- * follows/connections are gone for good).
973
- */
974
- declare function deleteBlock(client: SublayHttpClient, data: DeleteBlockProps): Promise<void>;
975
-
976
- interface FetchBlockStatusProps {
977
- /**
978
- * The user whose block status is being checked (the target). The status is the
979
- * token holder's OUTBOUND state only: do *I* block `:userId`?
980
- */
981
- userId: string;
982
- }
983
- /**
984
- * The block-status response is outbound-only by design: it reports whether the
985
- * token holder blocks the target, and NEVER whether the target blocked the
986
- * caller (the inbound direction is deliberately not disclosed).
987
- */
988
- interface BlockStatusResponse {
989
- blocked: boolean;
990
- blockId?: string;
991
- createdAt?: string;
992
- }
903
+ /** Sorts that rank one way only: the server refuses `sortDir` with them. */
904
+ type OneWaySort = "hot" | "controversial";
993
905
  /**
994
- * GET /users/:userId/block — the token holder's outbound block status toward
995
- * `:userId` (Rule A — no `actingUserId`).
906
+ * A request's sort fields with `sortDir` ruled out for a one-way sort: with
907
+ * `sortBy: "hot"` or `"controversial"`, no `sortDir`; with any other sort (or
908
+ * none), `sortDir` as usual.
996
909
  */
997
- declare function fetchBlockStatus(client: SublayHttpClient, data: FetchBlockStatusProps): Promise<BlockStatusResponse>;
998
-
999
- interface FetchBlockedUsersProps {
1000
- page?: number;
1001
- limit?: number;
1002
- }
1003
- /** An entry in the token holder's own block list (their outbound blocks). */
1004
- interface BlockedUserListItem {
1005
- id: string;
1006
- blockedUser: User | null;
1007
- createdAt: string;
1008
- }
1009
- /**
1010
- * GET /blocks — the token holder's own block list (their outbound blocks),
1011
- * paginated. This is the private "manage / way back to unblock" surface (Rule A
1012
- * — the subject is derived from the token, no `actingUserId`).
1013
- */
1014
- declare function fetchBlockedUsers(client: SublayHttpClient, data?: FetchBlockedUsersProps): Promise<PaginatedResponse<BlockedUserListItem>>;
1015
-
1016
- declare const Users_checkUsernameAvailability: typeof checkUsernameAvailability;
1017
- declare const Users_createBlock: typeof createBlock;
1018
- declare const Users_createFollow: typeof createFollow;
1019
- declare const Users_deleteBlock: typeof deleteBlock;
1020
- declare const Users_fetchBlockStatus: typeof fetchBlockStatus;
1021
- declare const Users_fetchBlockedUsers: typeof fetchBlockedUsers;
1022
- declare const Users_fetchConnectionStatus: typeof fetchConnectionStatus;
1023
- declare const Users_fetchConnectionsByUserId: typeof fetchConnectionsByUserId;
1024
- declare const Users_fetchConnectionsCountByUserId: typeof fetchConnectionsCountByUserId;
1025
- declare const Users_fetchFollowStatus: typeof fetchFollowStatus;
1026
- declare const Users_fetchFollowersByUserId: typeof fetchFollowersByUserId;
1027
- declare const Users_fetchFollowersCountByUserId: typeof fetchFollowersCountByUserId;
1028
- declare const Users_fetchFollowingByUserId: typeof fetchFollowingByUserId;
1029
- declare const Users_fetchFollowingCountByUserId: typeof fetchFollowingCountByUserId;
1030
- declare const Users_fetchUserByForeignId: typeof fetchUserByForeignId;
1031
- declare const Users_fetchUserById: typeof fetchUserById;
1032
- declare const Users_fetchUserByUsername: typeof fetchUserByUsername;
1033
- declare const Users_fetchUserSuggestions: typeof fetchUserSuggestions;
1034
- declare const Users_removeConnectionByUserId: typeof removeConnectionByUserId;
1035
- declare const Users_requestConnection: typeof requestConnection;
1036
- declare const Users_updateUser: typeof updateUser;
1037
- declare namespace Users {
1038
- export { Users_checkUsernameAvailability as checkUsernameAvailability, Users_createBlock as createBlock, Users_createFollow as createFollow, Users_deleteBlock as deleteBlock, deleteFollow$1 as deleteFollow, Users_fetchBlockStatus as fetchBlockStatus, Users_fetchBlockedUsers as fetchBlockedUsers, Users_fetchConnectionStatus as fetchConnectionStatus, Users_fetchConnectionsByUserId as fetchConnectionsByUserId, Users_fetchConnectionsCountByUserId as fetchConnectionsCountByUserId, Users_fetchFollowStatus as fetchFollowStatus, Users_fetchFollowersByUserId as fetchFollowersByUserId, Users_fetchFollowersCountByUserId as fetchFollowersCountByUserId, Users_fetchFollowingByUserId as fetchFollowingByUserId, Users_fetchFollowingCountByUserId as fetchFollowingCountByUserId, Users_fetchUserByForeignId as fetchUserByForeignId, Users_fetchUserById as fetchUserById, Users_fetchUserByUsername as fetchUserByUsername, Users_fetchUserSuggestions as fetchUserSuggestions, Users_removeConnectionByUserId as removeConnectionByUserId, Users_requestConnection as requestConnection, Users_updateUser as updateUser };
1039
- }
910
+ type WithOneWaySortDir<T extends {
911
+ sortBy?: unknown;
912
+ sortDir?: unknown;
913
+ }> = (Omit<T, "sortBy" | "sortDir"> & {
914
+ sortBy: Extract<NonNullable<T["sortBy"]>, OneWaySort>;
915
+ sortDir?: never;
916
+ }) | (Omit<T, "sortBy"> & {
917
+ sortBy?: Exclude<NonNullable<T["sortBy"]>, OneWaySort> | null;
918
+ });
1040
919
 
1041
920
  /** The three grantable target kinds. Polymorphic — `targetId` carries no FK. */
1042
921
  type ReputationGrantTargetType = "entity" | "comment" | "chat-message";
@@ -1288,13 +1167,6 @@ interface Reaction {
1288
1167
  user?: User;
1289
1168
  }
1290
1169
 
1291
- interface TopComment {
1292
- id: string;
1293
- user: User;
1294
- upvotesCount: number;
1295
- content: string;
1296
- createdAt: string;
1297
- }
1298
1170
  interface Entity {
1299
1171
  id: string;
1300
1172
  foreignId: string | null;
@@ -1315,7 +1187,7 @@ interface Entity {
1315
1187
  downvotes: string[];
1316
1188
  reactionCounts: ReactionCounts;
1317
1189
  userReaction?: ReactionType | null;
1318
- repliesCount: number;
1190
+ commentsCount: number;
1319
1191
  views: number;
1320
1192
  score: number;
1321
1193
  scoreUpdatedAt: string;
@@ -1326,7 +1198,7 @@ interface Entity {
1326
1198
  metadata: Record<string, any>;
1327
1199
  nsfw: boolean;
1328
1200
  nsfwEffective: boolean;
1329
- topComment: TopComment | null;
1201
+ topComments?: Comment[];
1330
1202
  isSaved?: boolean;
1331
1203
  /**
1332
1204
  * Reputation-grant summary. Opt-in — present exactly when the read requested
@@ -1345,6 +1217,292 @@ interface Entity {
1345
1217
  updatedAt: string;
1346
1218
  deletedAt: string | null;
1347
1219
  }
1220
+ /** `include` values the entity fetches (by id, short id, foreign id, and lists) accept. */
1221
+ type EntityInclude = "user" | "space" | "topComments" | "saved" | "files" | "grants";
1222
+ /** `include` values the collection-entities fetch accepts (no `saved`). */
1223
+ type CollectionEntityInclude = Exclude<EntityInclude, "saved">;
1224
+ type CollectionEntityIncludeArray = CollectionEntityInclude[];
1225
+ type CollectionEntityIncludeParam = CollectionEntityInclude | CollectionEntityIncludeArray;
1226
+ /** `include` values the drafts fetch accepts. */
1227
+ type DraftInclude = "user" | "space" | "files" | "grants";
1228
+ type DraftIncludeArray = DraftInclude[];
1229
+ type DraftIncludeParam = DraftInclude | DraftIncludeArray;
1230
+ /** Options for `include=topComments` (rejected without that include). */
1231
+ interface TopCommentsParams {
1232
+ /** How many top comments per entity (default 1, max 5). */
1233
+ topCommentsLimit?: number;
1234
+ /** Which reaction's raw count ranks them (default "upvote"). */
1235
+ topCommentsSortByReaction?: ReactionType;
1236
+ }
1237
+
1238
+ interface GifData {
1239
+ id: string;
1240
+ url: string;
1241
+ gifUrl: string;
1242
+ gifPreviewUrl: string;
1243
+ altText: string;
1244
+ aspectRatio: string;
1245
+ }
1246
+ /**
1247
+ * The entity attached to a comment by `include=entity` / `include=space`: the
1248
+ * stored entity record only. The computed and associated fields an entity
1249
+ * fetch adds (`commentsCount`, `userReaction`, `nsfwEffective`, `user`,
1250
+ * `files`, `topComments`, `isSaved`, `grants`) are not included.
1251
+ */
1252
+ type CommentEntity = Omit<Entity, "commentsCount" | "userReaction" | "nsfwEffective" | "user" | "files" | "topComments" | "isSaved" | "grants" | "space"> & {
1253
+ space?: Omit<Space, "avatarFile" | "bannerFile"> | null;
1254
+ };
1255
+ interface Comment {
1256
+ id: string;
1257
+ foreignId: string | null;
1258
+ entityId: string;
1259
+ spaceId: string | null;
1260
+ entity?: CommentEntity | null;
1261
+ userId: string | null;
1262
+ user?: User | null;
1263
+ parentId: string | null;
1264
+ parentComment?: Comment | null;
1265
+ referencedCommentId: string | null;
1266
+ content: string | null;
1267
+ gif: GifData | null;
1268
+ mentions: Mention[];
1269
+ attachments: Record<string, any>[];
1270
+ upvotes: string[];
1271
+ downvotes: string[];
1272
+ reactionCounts: ReactionCounts;
1273
+ userReaction?: ReactionType | null;
1274
+ repliesCount: number;
1275
+ /**
1276
+ * Reputation-grant summary. Opt-in — present exactly when the read requested
1277
+ * `include=grants`. Once requested the server always returns the object,
1278
+ * zero-filled rather than omitted, on projects with no grants and on projects
1279
+ * without the reputation bundle alike.
1280
+ */
1281
+ grants?: GrantSummary;
1282
+ metadata: Record<string, any> | null;
1283
+ createdAt: string;
1284
+ updatedAt: string;
1285
+ deletedAt: string | null;
1286
+ parentDeletedAt: string | null;
1287
+ userDeletedAt: string | null;
1288
+ moderationStatus: "approved" | "removed" | null;
1289
+ moderatedAt: string | null;
1290
+ moderatedById: string | null;
1291
+ moderatedByType: "client" | "user" | null;
1292
+ moderationReason: string | null;
1293
+ /**
1294
+ * The viewer blocked this comment's author, and the comment is returned in
1295
+ * full. Present on thread, history, single-comment, `topComments` and
1296
+ * reaction responses.
1297
+ */
1298
+ isAuthorBlocked?: boolean;
1299
+ /**
1300
+ * The comment exists but can't be shown to the viewer (a placeholder). The
1301
+ * server refuses replies and reactions on it.
1302
+ */
1303
+ isUnavailable?: boolean;
1304
+ /**
1305
+ * Nested replies — present only on thread fetches with `replyDepth > 0`;
1306
+ * absent at the depth boundary ("not fetched").
1307
+ */
1308
+ replies?: CursorPaginatedResponse<Comment>;
1309
+ }
1310
+ /** `include` values of a user's comment history and single-comment fetches. */
1311
+ type CommentInclude = "user" | "entity" | "space" | "parent" | "grants";
1312
+ type CommentIncludeArray = CommentInclude[];
1313
+ type CommentIncludeParam = CommentInclude | CommentIncludeArray;
1314
+ /** `include` values the thread endpoint (`GET /comments`) accepts. */
1315
+ type CommentThreadInclude = "user" | "grants";
1316
+ type CommentThreadIncludeArray = CommentThreadInclude[];
1317
+ type CommentThreadIncludeParam = CommentThreadInclude | CommentThreadIncludeArray;
1318
+ /** Comment sorts. Time order is `"createdAt"` with `sortDir`. */
1319
+ type CommentsSortBy = "createdAt" | "top" | "controversial";
1320
+ /** Sorts for the nested reply levels. */
1321
+ type CommentReplySortBy = "createdAt" | "top" | "controversial";
1322
+
1323
+ interface FetchCommentsByUserIdBaseProps extends SpaceReputationContextParams {
1324
+ userId: string;
1325
+ /** Only comments on this entity. */
1326
+ entityId?: string;
1327
+ /** Only comments on entities from this source. */
1328
+ sourceId?: string;
1329
+ /**
1330
+ * Comments by users block-edged with the viewer are hidden by default
1331
+ * ("exclude"). "include-outbound-blocked" re-includes ONLY the viewer's own
1332
+ * outbound-blocked authors; never inbound.
1333
+ */
1334
+ blockedFilter?: "exclude" | "include-outbound-blocked";
1335
+ /** Server default "createdAt". */
1336
+ sortBy?: CommentsSortBy;
1337
+ /** Applies to every sort (server default "desc"). */
1338
+ sortDir?: "asc" | "desc";
1339
+ /** With `sortBy: "top"` only (server default "upvote"). */
1340
+ sortByReaction?: ReactionType;
1341
+ /** Server default 10, max 100. */
1342
+ limit?: number;
1343
+ /**
1344
+ * `pagination.nextCursor` from the previous response, passed as returned;
1345
+ * omit it (or pass `null`) for the first page.
1346
+ */
1347
+ cursor?: string | null;
1348
+ include?: CommentIncludeParam;
1349
+ }
1350
+ /** `sortDir` is not accepted with `sortBy: "controversial"`. */
1351
+ type FetchCommentsByUserIdProps = WithOneWaySortDir<FetchCommentsByUserIdBaseProps>;
1352
+ /** A user's comment history (`GET /users/:userId/comments`): flat, any depth, cursor-paged. */
1353
+ declare function fetchCommentsByUserId(client: SublayHttpClient, data: FetchCommentsByUserIdProps): Promise<CursorPaginatedResponse<Comment>>;
1354
+
1355
+ interface CreateFollowProps {
1356
+ /** The user being followed (the target). The follower is the token holder. */
1357
+ userId: string;
1358
+ }
1359
+ declare function createFollow(client: SublayHttpClient, data: CreateFollowProps): Promise<Follow>;
1360
+
1361
+ interface DeleteFollowProps {
1362
+ /** The user being unfollowed (the target). The follower is the token holder. */
1363
+ userId: string;
1364
+ }
1365
+ declare function deleteFollow$1(client: SublayHttpClient, data: DeleteFollowProps): Promise<void>;
1366
+
1367
+ interface FetchFollowStatusProps {
1368
+ /**
1369
+ * The user whose follow relationship is being checked (the target). The
1370
+ * status is from the perspective of the token holder.
1371
+ */
1372
+ userId: string;
1373
+ }
1374
+ interface FollowStatusResponse {
1375
+ isFollowing: boolean;
1376
+ followId?: string;
1377
+ followedAt?: string;
1378
+ }
1379
+ declare function fetchFollowStatus(client: SublayHttpClient, data: FetchFollowStatusProps): Promise<FollowStatusResponse>;
1380
+
1381
+ interface RequestConnectionProps {
1382
+ /**
1383
+ * The user the connection is requested with (the target). The requester is
1384
+ * the token holder.
1385
+ */
1386
+ userId: string;
1387
+ message?: string;
1388
+ }
1389
+ declare function requestConnection(client: SublayHttpClient, data: RequestConnectionProps): Promise<ConnectionRequestResponse>;
1390
+
1391
+ interface FetchConnectionStatusProps {
1392
+ /**
1393
+ * The other user in the connection (the target). The status is from the
1394
+ * perspective of the token holder.
1395
+ */
1396
+ userId: string;
1397
+ }
1398
+ declare function fetchConnectionStatus(client: SublayHttpClient, data: FetchConnectionStatusProps): Promise<ConnectionStatusResponse>;
1399
+
1400
+ interface RemoveConnectionByUserIdProps {
1401
+ /**
1402
+ * The other user in the connection (the target). The token holder is the
1403
+ * user withdrawing/declining/disconnecting.
1404
+ */
1405
+ userId: string;
1406
+ }
1407
+ declare function removeConnectionByUserId(client: SublayHttpClient, data: RemoveConnectionByUserIdProps): Promise<RemoveConnectionByUserIdResponse>;
1408
+
1409
+ interface CreateBlockProps {
1410
+ /** The user being blocked (the target). The blocker is the token holder. */
1411
+ userId: string;
1412
+ }
1413
+ interface BlockResponse {
1414
+ id: string;
1415
+ blockerId: string;
1416
+ blockedId: string;
1417
+ createdAt: string;
1418
+ }
1419
+ /**
1420
+ * POST /users/:userId/block — block `:userId`.
1421
+ *
1422
+ * The blocker is derived from the token (Rule A — no `actingUserId`). Idempotent:
1423
+ * re-blocking an already-blocked user succeeds. Self-block is rejected server-side.
1424
+ * On a new block the server tears down existing follows/connections both ways.
1425
+ */
1426
+ declare function createBlock(client: SublayHttpClient, data: CreateBlockProps): Promise<BlockResponse>;
1427
+
1428
+ interface DeleteBlockProps {
1429
+ /** The user being unblocked (the target). The blocker is the token holder. */
1430
+ userId: string;
1431
+ }
1432
+ /**
1433
+ * DELETE /users/:userId/block — unblock `:userId`.
1434
+ *
1435
+ * The blocker is derived from the token (Rule A — no `actingUserId`). Idempotent:
1436
+ * unblocking a user who isn't blocked succeeds. Restores nothing (torn-down
1437
+ * follows/connections are gone for good).
1438
+ */
1439
+ declare function deleteBlock(client: SublayHttpClient, data: DeleteBlockProps): Promise<void>;
1440
+
1441
+ interface FetchBlockStatusProps {
1442
+ /**
1443
+ * The user whose block status is being checked (the target). The status is the
1444
+ * token holder's OUTBOUND state only: do *I* block `:userId`?
1445
+ */
1446
+ userId: string;
1447
+ }
1448
+ /**
1449
+ * The block-status response is outbound-only by design: it reports whether the
1450
+ * token holder blocks the target, and NEVER whether the target blocked the
1451
+ * caller (the inbound direction is deliberately not disclosed).
1452
+ */
1453
+ interface BlockStatusResponse {
1454
+ blocked: boolean;
1455
+ blockId?: string;
1456
+ createdAt?: string;
1457
+ }
1458
+ /**
1459
+ * GET /users/:userId/block — the token holder's outbound block status toward
1460
+ * `:userId` (Rule A — no `actingUserId`).
1461
+ */
1462
+ declare function fetchBlockStatus(client: SublayHttpClient, data: FetchBlockStatusProps): Promise<BlockStatusResponse>;
1463
+
1464
+ interface FetchBlockedUsersProps {
1465
+ page?: number;
1466
+ limit?: number;
1467
+ }
1468
+ /** An entry in the token holder's own block list (their outbound blocks). */
1469
+ interface BlockedUserListItem {
1470
+ id: string;
1471
+ blockedUser: User | null;
1472
+ createdAt: string;
1473
+ }
1474
+ /**
1475
+ * GET /blocks — the token holder's own block list (their outbound blocks),
1476
+ * paginated. This is the private "manage / way back to unblock" surface (Rule A
1477
+ * — the subject is derived from the token, no `actingUserId`).
1478
+ */
1479
+ declare function fetchBlockedUsers(client: SublayHttpClient, data?: FetchBlockedUsersProps): Promise<PaginatedResponse<BlockedUserListItem>>;
1480
+
1481
+ declare const Users_checkUsernameAvailability: typeof checkUsernameAvailability;
1482
+ declare const Users_createBlock: typeof createBlock;
1483
+ declare const Users_createFollow: typeof createFollow;
1484
+ declare const Users_deleteBlock: typeof deleteBlock;
1485
+ declare const Users_fetchBlockStatus: typeof fetchBlockStatus;
1486
+ declare const Users_fetchBlockedUsers: typeof fetchBlockedUsers;
1487
+ declare const Users_fetchCommentsByUserId: typeof fetchCommentsByUserId;
1488
+ declare const Users_fetchConnectionStatus: typeof fetchConnectionStatus;
1489
+ declare const Users_fetchConnectionsByUserId: typeof fetchConnectionsByUserId;
1490
+ declare const Users_fetchConnectionsCountByUserId: typeof fetchConnectionsCountByUserId;
1491
+ declare const Users_fetchFollowStatus: typeof fetchFollowStatus;
1492
+ declare const Users_fetchFollowersByUserId: typeof fetchFollowersByUserId;
1493
+ declare const Users_fetchFollowersCountByUserId: typeof fetchFollowersCountByUserId;
1494
+ declare const Users_fetchFollowingByUserId: typeof fetchFollowingByUserId;
1495
+ declare const Users_fetchFollowingCountByUserId: typeof fetchFollowingCountByUserId;
1496
+ declare const Users_fetchUserByForeignId: typeof fetchUserByForeignId;
1497
+ declare const Users_fetchUserById: typeof fetchUserById;
1498
+ declare const Users_fetchUserByUsername: typeof fetchUserByUsername;
1499
+ declare const Users_fetchUserSuggestions: typeof fetchUserSuggestions;
1500
+ declare const Users_removeConnectionByUserId: typeof removeConnectionByUserId;
1501
+ declare const Users_requestConnection: typeof requestConnection;
1502
+ declare const Users_updateUser: typeof updateUser;
1503
+ declare namespace Users {
1504
+ export { Users_checkUsernameAvailability as checkUsernameAvailability, Users_createBlock as createBlock, Users_createFollow as createFollow, Users_deleteBlock as deleteBlock, deleteFollow$1 as deleteFollow, Users_fetchBlockStatus as fetchBlockStatus, Users_fetchBlockedUsers as fetchBlockedUsers, Users_fetchCommentsByUserId as fetchCommentsByUserId, Users_fetchConnectionStatus as fetchConnectionStatus, Users_fetchConnectionsByUserId as fetchConnectionsByUserId, Users_fetchConnectionsCountByUserId as fetchConnectionsCountByUserId, Users_fetchFollowStatus as fetchFollowStatus, Users_fetchFollowersByUserId as fetchFollowersByUserId, Users_fetchFollowersCountByUserId as fetchFollowersCountByUserId, Users_fetchFollowingByUserId as fetchFollowingByUserId, Users_fetchFollowingCountByUserId as fetchFollowingCountByUserId, Users_fetchUserByForeignId as fetchUserByForeignId, Users_fetchUserById as fetchUserById, Users_fetchUserByUsername as fetchUserByUsername, Users_fetchUserSuggestions as fetchUserSuggestions, Users_removeConnectionByUserId as removeConnectionByUserId, Users_requestConnection as requestConnection, Users_updateUser as updateUser };
1505
+ }
1348
1506
 
1349
1507
  interface CreateEntityProps {
1350
1508
  foreignId?: string;
@@ -1367,20 +1525,20 @@ interface CreateEntityProps {
1367
1525
  }
1368
1526
  declare function createEntity(client: SublayHttpClient, data: CreateEntityProps): Promise<Entity>;
1369
1527
 
1370
- interface FetchEntityProps extends SpaceReputationContextParams {
1528
+ interface FetchEntityProps extends SpaceReputationContextParams, TopCommentsParams {
1371
1529
  entityId: string;
1372
1530
  include?: string;
1373
1531
  }
1374
1532
  declare function fetchEntity(client: SublayHttpClient, data: FetchEntityProps): Promise<Entity>;
1375
1533
 
1376
- interface FetchEntityByForeignIdProps {
1534
+ interface FetchEntityByForeignIdProps extends TopCommentsParams {
1377
1535
  foreignId: string;
1378
1536
  createIfNotFound?: boolean;
1379
1537
  include?: string;
1380
1538
  }
1381
1539
  declare function fetchEntityByForeignId(client: SublayHttpClient, data: FetchEntityByForeignIdProps): Promise<Entity>;
1382
1540
 
1383
- interface FetchEntityByShortIdProps {
1541
+ interface FetchEntityByShortIdProps extends TopCommentsParams {
1384
1542
  shortId: string;
1385
1543
  include?: string;
1386
1544
  }
@@ -1416,16 +1574,13 @@ interface LocationFilters {
1416
1574
  longitude: string;
1417
1575
  radius: string;
1418
1576
  }
1419
- interface FetchManyEntitiesProps extends SpaceReputationContextParams {
1577
+ interface FetchManyEntitiesBaseProps extends SpaceReputationContextParams, TopCommentsParams {
1420
1578
  sourceId?: string;
1421
1579
  spaceId?: string;
1422
- sortBy?: "createdAt" | "hot" | "top" | "controversial"
1423
- /** @deprecated Use "createdAt" instead. "new" is a directional alias removed
1424
- * in v8; the server still accepts it (identical behavior) but responds with
1425
- * deprecation headers. */
1426
- | "new" | (string & {});
1580
+ sortBy?: "createdAt" | "hot" | "top" | "controversial" | `metadata.${string}`;
1427
1581
  sortDir?: "asc" | "desc";
1428
1582
  sortType?: "auto" | "numeric" | "text" | "boolean" | "timestamp";
1583
+ /** Which reaction `top` ranks by (server default: "upvote"). Only valid with `sortBy: "top"` — the server rejects it otherwise. */
1429
1584
  sortByReaction?: "upvote" | "downvote" | "like" | "love" | "wow" | "sad" | "angry" | "funny";
1430
1585
  page?: number;
1431
1586
  limit?: number;
@@ -1446,6 +1601,8 @@ interface FetchManyEntitiesProps extends SpaceReputationContextParams {
1446
1601
  nsfwFilter?: "include-all" | "exclude" | "only";
1447
1602
  blockedFilter?: "exclude" | "include-outbound-blocked";
1448
1603
  }
1604
+ /** `sortDir` is not accepted with `sortBy: "hot"` or `"controversial"`. */
1605
+ type FetchManyEntitiesProps = WithOneWaySortDir<FetchManyEntitiesBaseProps>;
1449
1606
  declare function fetchManyEntities(client: SublayHttpClient, data: FetchManyEntitiesProps): Promise<PaginatedResponse<Entity>>;
1450
1607
 
1451
1608
  interface UpdateEntityProps {
@@ -1474,7 +1631,7 @@ interface FetchDraftsProps {
1474
1631
  limit?: number;
1475
1632
  sourceId?: string;
1476
1633
  spaceId?: string;
1477
- include?: string;
1634
+ include?: DraftIncludeParam;
1478
1635
  }
1479
1636
  declare function fetchDrafts(client: SublayHttpClient, data: FetchDraftsProps): Promise<PaginatedResponse<Entity>>;
1480
1637
 
@@ -1483,11 +1640,6 @@ interface PublishDraftProps {
1483
1640
  }
1484
1641
  declare function publishDraft(client: SublayHttpClient, data: PublishDraftProps): Promise<Entity>;
1485
1642
 
1486
- interface FetchTopCommentProps {
1487
- entityId: string;
1488
- }
1489
- declare function fetchTopComment(client: SublayHttpClient, data: FetchTopCommentProps): Promise<TopComment | null>;
1490
-
1491
1643
  interface AddEntityReactionProps {
1492
1644
  entityId: string;
1493
1645
  reactionType: ReactionType;
@@ -1539,12 +1691,11 @@ declare const Entities_fetchEntity: typeof fetchEntity;
1539
1691
  declare const Entities_fetchEntityByForeignId: typeof fetchEntityByForeignId;
1540
1692
  declare const Entities_fetchEntityByShortId: typeof fetchEntityByShortId;
1541
1693
  declare const Entities_fetchManyEntities: typeof fetchManyEntities;
1542
- declare const Entities_fetchTopComment: typeof fetchTopComment;
1543
1694
  declare const Entities_isEntitySaved: typeof isEntitySaved;
1544
1695
  declare const Entities_publishDraft: typeof publishDraft;
1545
1696
  declare const Entities_updateEntity: typeof updateEntity;
1546
1697
  declare namespace Entities {
1547
- export { addReaction$1 as addReaction, Entities_createEntity as createEntity, Entities_deleteEntity as deleteEntity, Entities_fetchDrafts as fetchDrafts, Entities_fetchEntity as fetchEntity, Entities_fetchEntityByForeignId as fetchEntityByForeignId, Entities_fetchEntityByShortId as fetchEntityByShortId, Entities_fetchManyEntities as fetchManyEntities, fetchReactions$1 as fetchReactions, Entities_fetchTopComment as fetchTopComment, getUserReaction$1 as getUserReaction, Entities_isEntitySaved as isEntitySaved, Entities_publishDraft as publishDraft, removeReaction$1 as removeReaction, Entities_updateEntity as updateEntity };
1698
+ export { addReaction$1 as addReaction, Entities_createEntity as createEntity, Entities_deleteEntity as deleteEntity, Entities_fetchDrafts as fetchDrafts, Entities_fetchEntity as fetchEntity, Entities_fetchEntityByForeignId as fetchEntityByForeignId, Entities_fetchEntityByShortId as fetchEntityByShortId, Entities_fetchManyEntities as fetchManyEntities, fetchReactions$1 as fetchReactions, getUserReaction$1 as getUserReaction, Entities_isEntitySaved as isEntitySaved, Entities_publishDraft as publishDraft, removeReaction$1 as removeReaction, Entities_updateEntity as updateEntity };
1548
1699
  }
1549
1700
 
1550
1701
  type EventType = "online" | "physical" | "hybrid";
@@ -1840,52 +1991,6 @@ declare namespace Events {
1840
1991
  export { Events_addHost as addHost, Events_addInvite as addInvite, Events_cancelEvent as cancelEvent, Events_createEvent as createEvent, Events_deleteEvent as deleteEvent, Events_fetchEvent as fetchEvent, Events_fetchEventRsvps as fetchEventRsvps, Events_fetchInvitees as fetchInvitees, Events_fetchManyEvents as fetchManyEvents, Events_removeHost as removeHost, Events_removeInvite as removeInvite, Events_setRsvp as setRsvp, Events_updateEvent as updateEvent, Events_withdrawRsvp as withdrawRsvp };
1841
1992
  }
1842
1993
 
1843
- interface GifData {
1844
- id: string;
1845
- url: string;
1846
- gifUrl: string;
1847
- gifPreviewUrl: string;
1848
- altText: string;
1849
- aspectRatio: string;
1850
- }
1851
- interface Comment {
1852
- id: string;
1853
- projectId: string;
1854
- foreignId: string | null;
1855
- entityId: string;
1856
- entity?: Entity;
1857
- userId: string;
1858
- user?: User;
1859
- parentId: string | null;
1860
- parentComment?: Comment;
1861
- content: string | null;
1862
- gif: GifData | null;
1863
- mentions: Mention[];
1864
- upvotes: string[];
1865
- downvotes: string[];
1866
- reactionCounts: ReactionCounts;
1867
- userReaction?: ReactionType | null;
1868
- repliesCount: number;
1869
- /**
1870
- * Reputation-grant summary. Opt-in — present exactly when the read requested
1871
- * `include=grants`. Once requested the server always returns the object,
1872
- * zero-filled rather than omitted, on projects with no grants and on projects
1873
- * without the reputation bundle alike.
1874
- */
1875
- grants?: GrantSummary;
1876
- metadata: Record<string, any>;
1877
- createdAt: string;
1878
- updatedAt: string;
1879
- deletedAt: string | null;
1880
- parentDeletedAt: string | null;
1881
- userDeletedAt: string | null;
1882
- moderationStatus: "approved" | "removed" | null;
1883
- moderatedAt: string | null;
1884
- moderatedById: string | null;
1885
- moderatedByType: "client" | "user" | null;
1886
- moderationReason: string | null;
1887
- }
1888
-
1889
1994
  interface CreateCommentProps {
1890
1995
  entityId: string;
1891
1996
  foreignId?: string;
@@ -1925,28 +2030,45 @@ interface DeleteCommentProps {
1925
2030
  }
1926
2031
  declare function deleteComment(client: SublayHttpClient, data: DeleteCommentProps): Promise<void>;
1927
2032
 
1928
- interface FetchManyCommentsProps extends SpaceReputationContextParams {
1929
- entityId?: string;
1930
- userId?: string;
1931
- parentId?: string;
1932
- page?: number;
2033
+ interface FetchManyCommentsBaseProps extends SpaceReputationContextParams {
2034
+ /** How many comments at the level being fetched (server default 10, max 100). */
1933
2035
  limit?: number;
1934
- sortBy?: "createdAt" | "top" | "controversial"
1935
- /** @deprecated Use "createdAt" instead. "new" is a directional alias for
1936
- * createdAt DESC, removed in v8; the server still accepts it (identical
1937
- * behavior) but responds with deprecation headers. */
1938
- | "new"
1939
- /** @deprecated Use "createdAt" with sortDir:"asc" instead. "old" is a
1940
- * directional alias for createdAt ASC, removed in v8; the server still
1941
- * accepts it (identical behavior) but responds with deprecation headers. */
1942
- | "old";
1943
- /** Sort direction for `sortBy: "createdAt"`. Defaults to "desc". */
2036
+ /**
2037
+ * `pagination.nextCursor` from the previous response, passed as returned;
2038
+ * omit it (or pass `null`) for the first page.
2039
+ */
2040
+ cursor?: string | null;
2041
+ /** Sort for the level being fetched (server default "createdAt"). */
2042
+ sortBy?: CommentsSortBy;
2043
+ /** Applies to every sort (server default "desc"). */
1944
2044
  sortDir?: "asc" | "desc";
1945
- include?: string;
1946
- sourceId?: string;
1947
- blockedFilter?: "exclude" | "include-outbound-blocked";
2045
+ /** With `sortBy: "top"` only: rank by this reaction's raw count (server default "upvote"). */
2046
+ sortByReaction?: ReactionType;
2047
+ include?: CommentThreadIncludeParam;
2048
+ /** Levels of replies to nest under each returned comment (0–5, server default 0). */
2049
+ replyDepth?: number;
2050
+ /** Replies per comment in the nested levels only (≥ 1, server default 3). */
2051
+ replyLimit?: number;
2052
+ /** Sort for the nested levels; each defaults to the level's own. */
2053
+ replySortBy?: CommentReplySortBy;
2054
+ replySortDir?: "asc" | "desc";
2055
+ replySortByReaction?: ReactionType;
1948
2056
  }
1949
- declare function fetchManyComments(client: SublayHttpClient, data: FetchManyCommentsProps): Promise<PaginatedResponse<Comment>>;
2057
+ /**
2058
+ * A thread fetch (`GET /comments`): `entityId` → that entity's top-level
2059
+ * comments; `parentId` (alone — the parent decides the entity) → a comment's
2060
+ * direct replies. Exactly one of the two, and no `sortDir` with
2061
+ * `sortBy: "controversial"`. A user's comment history is
2062
+ * `users.fetchCommentsByUserId`.
2063
+ */
2064
+ type FetchManyCommentsProps = WithOneWaySortDir<FetchManyCommentsBaseProps & {
2065
+ entityId: string;
2066
+ parentId?: null;
2067
+ }> | WithOneWaySortDir<FetchManyCommentsBaseProps & {
2068
+ parentId: string;
2069
+ entityId?: null;
2070
+ }>;
2071
+ declare function fetchManyComments(client: SublayHttpClient, data: FetchManyCommentsProps): Promise<CursorPaginatedResponse<Comment>>;
1950
2072
 
1951
2073
  interface AddCommentReactionProps {
1952
2074
  commentId: string;
@@ -2024,7 +2146,8 @@ declare function createSpace(client: SublayHttpClient, data: CreateSpaceProps):
2024
2146
  interface FetchManySpacesProps {
2025
2147
  page?: number;
2026
2148
  limit?: number;
2027
- sortBy?: "alphabetical" | "newest" | "members";
2149
+ sortBy?: "createdAt" | "alphabetical" | "members";
2150
+ sortDir?: "asc" | "desc";
2028
2151
  searchSlug?: string;
2029
2152
  searchName?: string;
2030
2153
  searchDescription?: string;
@@ -2054,7 +2177,8 @@ declare function fetchSpaceBySlug(client: SublayHttpClient, data: FetchSpaceBySl
2054
2177
  interface FetchUserSpacesProps {
2055
2178
  page?: number;
2056
2179
  limit?: number;
2057
- sortBy?: "alphabetical" | "newest" | "members";
2180
+ sortBy?: "createdAt" | "alphabetical" | "members" | "joinedAt";
2181
+ sortDir?: "asc" | "desc";
2058
2182
  include?: string;
2059
2183
  role?: string;
2060
2184
  all?: "true" | "false";
@@ -2113,7 +2237,8 @@ interface FetchChildSpacesProps {
2113
2237
  spaceId: string;
2114
2238
  page?: number;
2115
2239
  limit?: number;
2116
- sortBy?: "alphabetical" | "newest" | "members";
2240
+ sortBy?: "createdAt" | "alphabetical" | "members";
2241
+ sortDir?: "asc" | "desc";
2117
2242
  include?: string;
2118
2243
  }
2119
2244
  declare function fetchChildSpaces(client: SublayHttpClient, data: FetchChildSpacesProps): Promise<PaginatedResponse<Space>>;
@@ -2192,6 +2317,8 @@ declare function declineMembership(client: SublayHttpClient, data: DeclineMember
2192
2317
  interface BanMemberProps {
2193
2318
  spaceId: string;
2194
2319
  memberId: string;
2320
+ /** Why the member is banned; kept in the space's ban log. */
2321
+ reason?: string;
2195
2322
  }
2196
2323
  interface BanMemberResponse {
2197
2324
  message: string;
@@ -2283,9 +2410,9 @@ interface HandleEntityReportProps {
2283
2410
  entityId: string;
2284
2411
  actions: EntityReportAction[];
2285
2412
  summary?: string;
2413
+ /** Why the user is banned, required when actions include "ban-user". The
2414
+ * banned user is always the author of the reported content. */
2286
2415
  reason?: string;
2287
- /** The user to ban (target), required when actions include "ban-user". */
2288
- userId?: string;
2289
2416
  }
2290
2417
  interface HandleReportResponse {
2291
2418
  message: string;
@@ -2300,9 +2427,9 @@ interface HandleCommentReportProps {
2300
2427
  commentId: string;
2301
2428
  actions: CommentReportAction[];
2302
2429
  summary?: string;
2430
+ /** Why the user is banned, required when actions include "ban-user". The
2431
+ * banned user is always the author of the reported content. */
2303
2432
  reason?: string;
2304
- /** The user to ban (target), required when actions include "ban-user". */
2305
- userId?: string;
2306
2433
  }
2307
2434
  declare function handleCommentReport(client: SublayHttpClient, data: HandleCommentReportProps): Promise<HandleReportResponse>;
2308
2435
 
@@ -2442,8 +2569,8 @@ interface HandleSpaceChatReportProps {
2442
2569
  reportId: string;
2443
2570
  actions: SpaceChatReportAction[];
2444
2571
  summary?: string;
2445
- /** The user to ban (target), required when actions include "ban-user". */
2446
- userId?: string;
2572
+ /** Why the user is banned, required when actions include "ban-user". The
2573
+ * banned user is always the author of the reported content. */
2447
2574
  reason?: string;
2448
2575
  /** The message to remove, required when actions include "remove-message". */
2449
2576
  messageId?: string;
@@ -2519,15 +2646,19 @@ interface CreateNewCollectionProps {
2519
2646
  }
2520
2647
  declare function createNewCollection(client: SublayHttpClient, data: CreateNewCollectionProps): Promise<Collection>;
2521
2648
 
2522
- interface FetchCollectionEntitiesProps {
2649
+ interface FetchCollectionEntitiesBaseProps extends TopCommentsParams {
2523
2650
  collectionId: string;
2524
2651
  page?: number;
2525
2652
  limit?: number;
2526
- sortBy?: "new" | "added" | "top" | "hot";
2653
+ sortBy?: "createdAt" | "addedAt" | "top" | "hot";
2654
+ /** Which reaction `top` ranks by (server default: "upvote"). Only valid with `sortBy: "top"` — the server rejects it otherwise. */
2655
+ sortByReaction?: "upvote" | "downvote" | "like" | "love" | "wow" | "sad" | "angry" | "funny";
2527
2656
  sortDir?: "asc" | "desc";
2528
- /** Comma-separated list of associations to populate, e.g. "user". */
2529
- include?: string;
2657
+ /** Associations to populate (no "saved": every item in a collection is saved). */
2658
+ include?: CollectionEntityIncludeParam;
2530
2659
  }
2660
+ /** `sortDir` is not accepted with `sortBy: "hot"`. */
2661
+ type FetchCollectionEntitiesProps = WithOneWaySortDir<FetchCollectionEntitiesBaseProps>;
2531
2662
  declare function fetchCollectionEntities(client: SublayHttpClient, data: FetchCollectionEntitiesProps): Promise<PaginatedResponse<Entity>>;
2532
2663
 
2533
2664
  interface AddEntityToCollectionProps {
@@ -2982,7 +3113,9 @@ interface FetchModeratedReportsProps extends SpaceReputationContextParams {
2982
3113
  spaceId?: string;
2983
3114
  targetType?: ReportTargetType;
2984
3115
  status?: ReportStatus;
2985
- sortBy?: "new" | "old";
3116
+ /** Time order: `createdAt` in `sortDir` (server default desc, newest first). */
3117
+ sortBy?: "createdAt";
3118
+ sortDir?: "asc" | "desc";
2986
3119
  page?: number;
2987
3120
  limit?: number;
2988
3121
  }
@@ -3535,7 +3668,7 @@ interface ListMessagesProps extends SpaceReputationContextParams {
3535
3668
  after?: string;
3536
3669
  /** Page size (default 50, max 100). */
3537
3670
  limit?: number;
3538
- sort?: "asc" | "desc";
3671
+ sortDir?: "asc" | "desc";
3539
3672
  /**
3540
3673
  * Comma-separated associations to populate: `"files"` (message
3541
3674
  * attachments) and `"grants"` (the reputation-grant summary). Combine
@@ -4395,4 +4528,4 @@ declare class SublayClient {
4395
4528
  clearTokens(): void;
4396
4529
  }
4397
4530
 
4398
- export { type AuthTokens, type BulkDeleteProps, type BulkDeleteResult, type ClientConfig, type CreateGrantProps, type DbFilter, type DbFilterOperator, type DeleteResult, type GrantSummary, type ListGrantsProps, type ListGrantsResponse, MUTE_DURATIONS, type MuteConversationProps, type MuteConversationResponse, type MuteDuration, type MyWorkspaceInvitation, type NotificationPreferences, PUSH_EVENT_TYPES, type PaginatedResponse, type PaginationMetadata, type PushDeviceIdentifier, type PushEventType, type PushUnbindSkipReason, type RemoveWorkspaceMemberFromSubtreeResponse, type ReputationGrant, type ReputationGrantSourceType, type ReputationGrantTargetFilter, type ReputationGrantTargetType, type SignOutResult, type SkippedWorkspace, type SpaceReputationContextParams, type SpaceReputationUserParams, SublayClient, type TableAccessor, type TableQuery, type TableRow, type UpdateNotificationPreferencesProps, type UserSearchParams, type WebPushSubscription, type Workspace, type WorkspaceAuthority, type WorkspaceAuthorityReason, type WorkspaceAuthorityReasonDetail, type WorkspaceCapability, type WorkspaceInvitation, type WorkspaceInvitationInviter, type WorkspaceInvitationStatus, type WorkspaceMember, type WorkspaceMemberStanding, type WorkspaceRosterCountsResponse, type WorkspaceRosterEntry, type WorkspaceRosterReason, type WorkspaceRosterResponse, type WorkspaceStandingUser };
4531
+ export { type AuthTokens, type BulkDeleteProps, type BulkDeleteResult, type ClientConfig, type CollectionEntityInclude, type CollectionEntityIncludeArray, type CollectionEntityIncludeParam, type Comment, type CommentEntity, type CommentInclude, type CommentIncludeArray, type CommentIncludeParam, type CommentReplySortBy, type CommentThreadInclude, type CommentThreadIncludeArray, type CommentThreadIncludeParam, type CommentsSortBy, type CreateGrantProps, type CursorPaginatedResponse, type CursorPagination, type DbFilter, type DbFilterOperator, type DeleteResult, type DraftInclude, type DraftIncludeArray, type DraftIncludeParam, type Entity, type EntityInclude, type GifData, type GrantSummary, type ListGrantsProps, type ListGrantsResponse, MUTE_DURATIONS, type MuteConversationProps, type MuteConversationResponse, type MuteDuration, type MyWorkspaceInvitation, type NotificationPreferences, PUSH_EVENT_TYPES, type PaginatedResponse, type PaginationMetadata, type PushDeviceIdentifier, type PushEventType, type PushUnbindSkipReason, type RemoveWorkspaceMemberFromSubtreeResponse, type ReputationGrant, type ReputationGrantSourceType, type ReputationGrantTargetFilter, type ReputationGrantTargetType, type SignOutResult, type SkippedWorkspace, type SpaceReputationContextParams, type SpaceReputationUserParams, SublayClient, type TableAccessor, type TableQuery, type TableRow, type TopCommentsParams, type UpdateNotificationPreferencesProps, type UserSearchParams, type WebPushSubscription, type Workspace, type WorkspaceAuthority, type WorkspaceAuthorityReason, type WorkspaceAuthorityReasonDetail, type WorkspaceCapability, type WorkspaceInvitation, type WorkspaceInvitationInviter, type WorkspaceInvitationStatus, type WorkspaceMember, type WorkspaceMemberStanding, type WorkspaceRosterCountsResponse, type WorkspaceRosterEntry, type WorkspaceRosterReason, type WorkspaceRosterResponse, type WorkspaceStandingUser };