@singi-labs/sifa-sdk 0.12.31 → 0.12.33

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.
@@ -190,6 +190,33 @@ declare function uploadAvatar(config: SifaApiConfig, file: Blob, options?: ApiFe
190
190
  /** Delete the authenticated user's avatar override (revert to PDS avatar). */
191
191
  declare function deleteAvatarOverride(config: SifaApiConfig, options?: ApiFetchOptions): Promise<WriteResult>;
192
192
 
193
+ /**
194
+ * Create a new `id.sifa.profile.skill` record on the authenticated
195
+ * user's PDS.
196
+ */
197
+ declare function createSkill(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
198
+ /** Update an existing skill record by `rkey`. */
199
+ declare function updateSkill(config: SifaApiConfig, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
200
+ /** Outcome of a bulk sub-category assign. */
201
+ interface SubCategoryBulkResult {
202
+ /** Records written. */
203
+ updated: number;
204
+ /** Records that already carried the label, so no write was needed. */
205
+ unchanged: number;
206
+ /** Requested rkeys with no matching record on the PDS. */
207
+ skipped: string[];
208
+ }
209
+ /**
210
+ * Set (or clear) the sub-category on many skills in one request.
211
+ *
212
+ * A single call replaces one PUT per skill, which tripped the AppView's
213
+ * per-IP rate limit on any sizeable profile (#324). An empty `subCategory`
214
+ * clears the field.
215
+ */
216
+ declare function updateSkillSubCategories(config: SifaApiConfig, rkeys: string[], subCategory: string, options?: ApiFetchOptions): Promise<WriteResult & SubCategoryBulkResult>;
217
+ /** Delete a skill record by `rkey`. */
218
+ declare function deleteSkill(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
219
+
193
220
  /**
194
221
  * Address payload accepted by `/api/profile/location` endpoints.
195
222
  *
@@ -1099,6 +1126,32 @@ interface PdsWipeOutcome {
1099
1126
  */
1100
1127
  unknown: boolean;
1101
1128
  }
1129
+ /**
1130
+ * What a PDS wipe could not remove with the grant the session holds today.
1131
+ *
1132
+ * Read this BEFORE the destructive step. Deleting an account destroys the
1133
+ * session, so a missing scope cannot be granted afterwards -- there is nobody
1134
+ * left to ask. A non-empty `needsScopeFor` means the wipe would strand those
1135
+ * records on the user's data server.
1136
+ */
1137
+ interface WipePreview {
1138
+ /** id.sifa.* collections the current grant cannot delete. */
1139
+ needsScopeFor: string[];
1140
+ /**
1141
+ * The server could not enumerate the repo, so the gap list is not
1142
+ * authoritative. Distinct from an empty list, which means "nothing to ask for".
1143
+ */
1144
+ unknown?: boolean;
1145
+ }
1146
+ /**
1147
+ * Ask which id.sifa.* collections the current grant cannot delete.
1148
+ *
1149
+ * Unlike most read fetchers in this file's neighbourhood, a failure is NOT
1150
+ * flattened into an empty result: an empty gap list reads as "a wipe will be
1151
+ * clean", and a caller must not promise that on the strength of a request that
1152
+ * never arrived. Let it throw and warn.
1153
+ */
1154
+ declare function fetchWipePreview(config: SifaApiConfig, options?: ApiFetchOptions): Promise<WipePreview>;
1102
1155
  /** Extended write result for {@link resetProfile}. */
1103
1156
  interface ResetProfileResult extends WriteResult {
1104
1157
  /** Present when `deletePdsData: true`. See {@link PdsWipeOutcome}. */
@@ -1237,8 +1290,12 @@ declare const sifaQueryKeys: {
1237
1290
  readonly all: () => readonly ["sifa", "bsky-preferences"];
1238
1291
  readonly contentLabels: () => readonly ["sifa", "bsky-preferences", "content-labels"];
1239
1292
  };
1293
+ readonly destructive: {
1294
+ readonly all: () => readonly ["sifa", "destructive"];
1295
+ readonly wipePreview: () => readonly ["sifa", "destructive", "wipe-preview"];
1296
+ };
1240
1297
  };
1241
- type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.profile.atFundLink> | ReturnType<typeof sifaQueryKeys.profile.externalAccounts> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.canonicalSkills> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | ReturnType<typeof sifaQueryKeys.entity.all> | ReturnType<typeof sifaQueryKeys.entity.search> | ReturnType<typeof sifaQueryKeys.discovery.all> | ReturnType<typeof sifaQueryKeys.discovery.similar> | ReturnType<typeof sifaQueryKeys.discovery.suggestions> | ReturnType<typeof sifaQueryKeys.discovery.suggestionCount> | ReturnType<typeof sifaQueryKeys.discovery.featured> | ReturnType<typeof sifaQueryKeys.follow.all> | ReturnType<typeof sifaQueryKeys.follow.following> | ReturnType<typeof sifaQueryKeys.follow.followers> | ReturnType<typeof sifaQueryKeys.follow.followingOf> | ReturnType<typeof sifaQueryKeys.follow.feed> | ReturnType<typeof sifaQueryKeys.follow.mutuals> | ReturnType<typeof sifaQueryKeys.follow.blueskySuggestions> | ReturnType<typeof sifaQueryKeys.admin.all> | ReturnType<typeof sifaQueryKeys.admin.featureAllowlist> | ReturnType<typeof sifaQueryKeys.stats.all> | ReturnType<typeof sifaQueryKeys.stats.homepage> | ReturnType<typeof sifaQueryKeys.apps.all> | ReturnType<typeof sifaQueryKeys.apps.registry> | ReturnType<typeof sifaQueryKeys.apps.hidden> | ReturnType<typeof sifaQueryKeys.activity.all> | ReturnType<typeof sifaQueryKeys.activity.heatmap> | ReturnType<typeof sifaQueryKeys.activity.teaser> | ReturnType<typeof sifaQueryKeys.activity.feed> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.stream.all> | ReturnType<typeof sifaQueryKeys.stream.networkCount> | ReturnType<typeof sifaQueryKeys.reactions.all> | ReturnType<typeof sifaQueryKeys.reactions.status> | ReturnType<typeof sifaQueryKeys.reactions.accountCheck> | ReturnType<typeof sifaQueryKeys.roadmap.all> | ReturnType<typeof sifaQueryKeys.roadmap.votes> | ReturnType<typeof sifaQueryKeys.roadmap.myVotes> | ReturnType<typeof sifaQueryKeys.bskyPreferences.all> | ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>;
1298
+ type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.profile.atFundLink> | ReturnType<typeof sifaQueryKeys.profile.externalAccounts> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.canonicalSkills> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | ReturnType<typeof sifaQueryKeys.entity.all> | ReturnType<typeof sifaQueryKeys.entity.search> | ReturnType<typeof sifaQueryKeys.discovery.all> | ReturnType<typeof sifaQueryKeys.discovery.similar> | ReturnType<typeof sifaQueryKeys.discovery.suggestions> | ReturnType<typeof sifaQueryKeys.discovery.suggestionCount> | ReturnType<typeof sifaQueryKeys.discovery.featured> | ReturnType<typeof sifaQueryKeys.follow.all> | ReturnType<typeof sifaQueryKeys.follow.following> | ReturnType<typeof sifaQueryKeys.follow.followers> | ReturnType<typeof sifaQueryKeys.follow.followingOf> | ReturnType<typeof sifaQueryKeys.follow.feed> | ReturnType<typeof sifaQueryKeys.follow.mutuals> | ReturnType<typeof sifaQueryKeys.follow.blueskySuggestions> | ReturnType<typeof sifaQueryKeys.admin.all> | ReturnType<typeof sifaQueryKeys.admin.featureAllowlist> | ReturnType<typeof sifaQueryKeys.stats.all> | ReturnType<typeof sifaQueryKeys.stats.homepage> | ReturnType<typeof sifaQueryKeys.apps.all> | ReturnType<typeof sifaQueryKeys.apps.registry> | ReturnType<typeof sifaQueryKeys.apps.hidden> | ReturnType<typeof sifaQueryKeys.activity.all> | ReturnType<typeof sifaQueryKeys.activity.heatmap> | ReturnType<typeof sifaQueryKeys.activity.teaser> | ReturnType<typeof sifaQueryKeys.activity.feed> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.stream.all> | ReturnType<typeof sifaQueryKeys.stream.networkCount> | ReturnType<typeof sifaQueryKeys.reactions.all> | ReturnType<typeof sifaQueryKeys.reactions.status> | ReturnType<typeof sifaQueryKeys.reactions.accountCheck> | ReturnType<typeof sifaQueryKeys.roadmap.all> | ReturnType<typeof sifaQueryKeys.roadmap.votes> | ReturnType<typeof sifaQueryKeys.roadmap.myVotes> | ReturnType<typeof sifaQueryKeys.bskyPreferences.all> | ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels> | ReturnType<typeof sifaQueryKeys.destructive.all> | ReturnType<typeof sifaQueryKeys.destructive.wipePreview>;
1242
1299
 
1243
1300
  /** How a single entity binding was resolved during a claim. */
1244
1301
  interface OrgClaimBinding {
@@ -1325,4 +1382,4 @@ declare function addOrgNotificationEmail(config: SifaApiConfig, body: OrgNotific
1325
1382
  */
1326
1383
  declare function removeOrgNotificationEmail(config: SifaApiConfig, body: OrgNotificationEmailRequestInput, options?: Omit<ApiFetchOptions, 'method' | 'body'>): Promise<WriteResult & Partial<OrgNotificationEmailRemoveResult>>;
1327
1384
 
1328
- export { type OrgNotificationEmailRemoveResult as $, type ApiFetchOptions as A, type BulkHideProfileItemInput as B, type CastRoadmapVoteResult as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FollowProfilePageResponse as G, type FollowUserResult as H, type FollowingResponse as I, type GithubPullRequest as J, HIDDEN_ITEM_SOURCES as K, HIDDEN_ITEM_TYPES as L, type HeatmapDay as M, type HeatmapResponse as N, type HiddenApp as O, type HiddenItemSource as P, type HiddenItemType as Q, type HideProfileItemInput as R, type SifaApiConfig as S, type ListFeatureAllowlistOptions as T, type MyGithubPullRequestsResponse as U, type OrgClaimBinding as V, type WriteResult as W, type OrgClaimResult as X, type OrgDomainChallengeResult as Y, type OrgDomainVerifyResult as Z, type OrgNotificationEmailAddResult as _, type AccountCheckResult as a, fetchHeatmapData as a$, type OrgProfileEcho as a0, type OrgProfileUpdateResult as a1, type PdsWipeOutcome as a2, type ProfileIndustryInput as a3, type ProfileLocationAddress as a4, type ProfileLocationInput as a5, type ProfileSearchResult as a6, type ProfileSelfLocation as a7, QUOTED_POSTS_BATCH_MAX as a8, type QuotedPostAuthor as a9, addFeatureAllowlist as aA, addOrgNotificationEmail as aB, apiFetch as aC, apiFetchOrNull as aD, apiWrite as aE, apiWriteCreate as aF, bulkHideProfileItems as aG, bulkHideStandardPublications as aH, bulkUnhideProfileItems as aI, bulkUnhideStandardPublications as aJ, castRoadmapVote as aK, checkAppAccount as aL, createEndorsement as aM, createExternalAccount as aN, createProfileLocation as aO, createReaction as aP, deleteAccount as aQ, deleteAvatarOverride as aR, deleteExternalAccount as aS, deleteProfileLocation as aT, deleteReaction as aU, fetchActivityFeed as aV, fetchActivityTeaser as aW, fetchAppsRegistry as aX, fetchExternalAccounts as aY, fetchFeaturedProfile as aZ, fetchFollowing as a_, type QuotedPostImage as aa, type QuotedPostResult as ab, type QuotedPostView as ac, type ReactionError as ad, type ReactionResult as ae, type ReactionStatus as af, type RefreshOrcidPublicationsResult as ag, type RefreshPdsResult as ah, type ResetProfileResult as ai, type ResolveQuotedPostsOptions as aj, type RoadmapVoteError as ak, type RoadmapVoteResult as al, type RoadmapVoter as am, type RoadmapVotesResponse as an, type SearchFilters as ao, type SearchResponse as ap, type SifaQueryKey as aq, type SimilarProfile as ar, type SkillSearchResult as as, type StatsResponse as at, type SuggestionProfile as au, type SuggestionsResponse as av, type UpdateProfileOverrideInput as aw, type UpdateProfileSelfInput as ax, type UploadAvatarResult as ay, type VerifyExternalAccountResult as az, type ActivityFeedResponse as b, fetchHiddenApps as b0, fetchMyGithubPullRequests as b1, fetchMyRoadmapVotes as b2, fetchReactionStatus as b3, fetchRoadmapVotes as b4, fetchSearchFilters as b5, fetchSearchProfiles as b6, fetchSimilarProfiles as b7, fetchSkillSuggestions as b8, fetchStats as b9, unhideProfileItem as bA, unhideSifaPublication as bB, unhideStandardPublication as bC, unsetExternalAccountPrimary as bD, updateExternalAccount as bE, updateOrgProfile as bF, updateProfileLocation as bG, updateProfileOverride as bH, updateProfileSelf as bI, uploadAvatar as bJ, verifyExternalAccount as bK, verifyOrgDomain as bL, fetchSuggestionCount as ba, fetchSuggestions as bb, followUser as bc, getBlueskySuggestions as bd, getFollowers as be, getFollowing as bf, getFollowingFeed as bg, getMutuals as bh, hideOrcidPublication as bi, hideProfileItem as bj, hideSifaPublication as bk, hideStandardPublication as bl, listFeatureAllowlist as bm, refreshOrcidPublications as bn, refreshPds as bo, removeFeatureAllowlist as bp, removeOrgNotificationEmail as bq, requestOrgDomainChallenge as br, resetProfile as bs, resolveQuotedPosts as bt, retractRoadmapVote as bu, searchSkills as bv, setExternalAccountPrimary as bw, submitOrgClaim as bx, unfollowUser as by, unhideOrcidPublication as bz, type ActivityItem as c, type ActivityItemLinkHealth as d, type ActivityTeaserResponse as e, ApiError as f, type AppRegistryEntry as g, type CheckAppAccountOptions as h, type CreateExternalAccountResult as i, type CreateResult as j, type ExternalAccountInput as k, type FeaturedProfile as l, type FetchActivityFeedOptions as m, type FetchActivityTeaserOptions as n, type FetchFollowListOptions as o, type FetchFollowProfilePageOptions as p, type FetchFollowingFeedOptions as q, type FetchHiddenAppsOptions as r, sifaQueryKeys as s, type FetchMyGithubPullRequestsOptions as t, type FetchMyRoadmapVotesOptions as u, type FetchReactionStatusOptions as v, type FetchSuggestionsOptions as w, type FilterOptions as x, type FollowListPage as y, type FollowProfile as z };
1385
+ export { type OrgNotificationEmailRemoveResult as $, type ApiFetchOptions as A, type BulkHideProfileItemInput as B, type CastRoadmapVoteResult as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FollowProfilePageResponse as G, type FollowUserResult as H, type FollowingResponse as I, type GithubPullRequest as J, HIDDEN_ITEM_SOURCES as K, HIDDEN_ITEM_TYPES as L, type HeatmapDay as M, type HeatmapResponse as N, type HiddenApp as O, type HiddenItemSource as P, type HiddenItemType as Q, type HideProfileItemInput as R, type SifaApiConfig as S, type ListFeatureAllowlistOptions as T, type MyGithubPullRequestsResponse as U, type OrgClaimBinding as V, type WriteResult as W, type OrgClaimResult as X, type OrgDomainChallengeResult as Y, type OrgDomainVerifyResult as Z, type OrgNotificationEmailAddResult as _, type AccountCheckResult as a, fetchAppsRegistry as a$, type OrgProfileEcho as a0, type OrgProfileUpdateResult as a1, type PdsWipeOutcome as a2, type ProfileIndustryInput as a3, type ProfileLocationAddress as a4, type ProfileLocationInput as a5, type ProfileSearchResult as a6, type ProfileSelfLocation as a7, QUOTED_POSTS_BATCH_MAX as a8, type QuotedPostAuthor as a9, type VerifyExternalAccountResult as aA, type WipePreview as aB, addFeatureAllowlist as aC, addOrgNotificationEmail as aD, apiFetch as aE, apiFetchOrNull as aF, apiWrite as aG, apiWriteCreate as aH, bulkHideProfileItems as aI, bulkHideStandardPublications as aJ, bulkUnhideProfileItems as aK, bulkUnhideStandardPublications as aL, castRoadmapVote as aM, checkAppAccount as aN, createEndorsement as aO, createExternalAccount as aP, createProfileLocation as aQ, createReaction as aR, createSkill as aS, deleteAccount as aT, deleteAvatarOverride as aU, deleteExternalAccount as aV, deleteProfileLocation as aW, deleteReaction as aX, deleteSkill as aY, fetchActivityFeed as aZ, fetchActivityTeaser as a_, type QuotedPostImage as aa, type QuotedPostResult as ab, type QuotedPostView as ac, type ReactionError as ad, type ReactionResult as ae, type ReactionStatus as af, type RefreshOrcidPublicationsResult as ag, type RefreshPdsResult as ah, type ResetProfileResult as ai, type ResolveQuotedPostsOptions as aj, type RoadmapVoteError as ak, type RoadmapVoteResult as al, type RoadmapVoter as am, type RoadmapVotesResponse as an, type SearchFilters as ao, type SearchResponse as ap, type SifaQueryKey as aq, type SimilarProfile as ar, type SkillSearchResult as as, type StatsResponse as at, type SubCategoryBulkResult as au, type SuggestionProfile as av, type SuggestionsResponse as aw, type UpdateProfileOverrideInput as ax, type UpdateProfileSelfInput as ay, type UploadAvatarResult as az, type ActivityFeedResponse as b, fetchExternalAccounts as b0, fetchFeaturedProfile as b1, fetchFollowing as b2, fetchHeatmapData as b3, fetchHiddenApps as b4, fetchMyGithubPullRequests as b5, fetchMyRoadmapVotes as b6, fetchReactionStatus as b7, fetchRoadmapVotes as b8, fetchSearchFilters as b9, searchSkills as bA, setExternalAccountPrimary as bB, submitOrgClaim as bC, unfollowUser as bD, unhideOrcidPublication as bE, unhideProfileItem as bF, unhideSifaPublication as bG, unhideStandardPublication as bH, unsetExternalAccountPrimary as bI, updateExternalAccount as bJ, updateOrgProfile as bK, updateProfileLocation as bL, updateProfileOverride as bM, updateProfileSelf as bN, updateSkill as bO, updateSkillSubCategories as bP, uploadAvatar as bQ, verifyExternalAccount as bR, verifyOrgDomain as bS, fetchSearchProfiles as ba, fetchSimilarProfiles as bb, fetchSkillSuggestions as bc, fetchStats as bd, fetchSuggestionCount as be, fetchSuggestions as bf, fetchWipePreview as bg, followUser as bh, getBlueskySuggestions as bi, getFollowers as bj, getFollowing as bk, getFollowingFeed as bl, getMutuals as bm, hideOrcidPublication as bn, hideProfileItem as bo, hideSifaPublication as bp, hideStandardPublication as bq, listFeatureAllowlist as br, refreshOrcidPublications as bs, refreshPds as bt, removeFeatureAllowlist as bu, removeOrgNotificationEmail as bv, requestOrgDomainChallenge as bw, resetProfile as bx, resolveQuotedPosts as by, retractRoadmapVote as bz, type ActivityItem as c, type ActivityItemLinkHealth as d, type ActivityTeaserResponse as e, ApiError as f, type AppRegistryEntry as g, type CheckAppAccountOptions as h, type CreateExternalAccountResult as i, type CreateResult as j, type ExternalAccountInput as k, type FeaturedProfile as l, type FetchActivityFeedOptions as m, type FetchActivityTeaserOptions as n, type FetchFollowListOptions as o, type FetchFollowProfilePageOptions as p, type FetchFollowingFeedOptions as q, type FetchHiddenAppsOptions as r, sifaQueryKeys as s, type FetchMyGithubPullRequestsOptions as t, type FetchMyRoadmapVotesOptions as u, type FetchReactionStatusOptions as v, type FetchSuggestionsOptions as w, type FilterOptions as x, type FollowListPage as y, type FollowProfile as z };
@@ -190,6 +190,33 @@ declare function uploadAvatar(config: SifaApiConfig, file: Blob, options?: ApiFe
190
190
  /** Delete the authenticated user's avatar override (revert to PDS avatar). */
191
191
  declare function deleteAvatarOverride(config: SifaApiConfig, options?: ApiFetchOptions): Promise<WriteResult>;
192
192
 
193
+ /**
194
+ * Create a new `id.sifa.profile.skill` record on the authenticated
195
+ * user's PDS.
196
+ */
197
+ declare function createSkill(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
198
+ /** Update an existing skill record by `rkey`. */
199
+ declare function updateSkill(config: SifaApiConfig, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
200
+ /** Outcome of a bulk sub-category assign. */
201
+ interface SubCategoryBulkResult {
202
+ /** Records written. */
203
+ updated: number;
204
+ /** Records that already carried the label, so no write was needed. */
205
+ unchanged: number;
206
+ /** Requested rkeys with no matching record on the PDS. */
207
+ skipped: string[];
208
+ }
209
+ /**
210
+ * Set (or clear) the sub-category on many skills in one request.
211
+ *
212
+ * A single call replaces one PUT per skill, which tripped the AppView's
213
+ * per-IP rate limit on any sizeable profile (#324). An empty `subCategory`
214
+ * clears the field.
215
+ */
216
+ declare function updateSkillSubCategories(config: SifaApiConfig, rkeys: string[], subCategory: string, options?: ApiFetchOptions): Promise<WriteResult & SubCategoryBulkResult>;
217
+ /** Delete a skill record by `rkey`. */
218
+ declare function deleteSkill(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
219
+
193
220
  /**
194
221
  * Address payload accepted by `/api/profile/location` endpoints.
195
222
  *
@@ -1099,6 +1126,32 @@ interface PdsWipeOutcome {
1099
1126
  */
1100
1127
  unknown: boolean;
1101
1128
  }
1129
+ /**
1130
+ * What a PDS wipe could not remove with the grant the session holds today.
1131
+ *
1132
+ * Read this BEFORE the destructive step. Deleting an account destroys the
1133
+ * session, so a missing scope cannot be granted afterwards -- there is nobody
1134
+ * left to ask. A non-empty `needsScopeFor` means the wipe would strand those
1135
+ * records on the user's data server.
1136
+ */
1137
+ interface WipePreview {
1138
+ /** id.sifa.* collections the current grant cannot delete. */
1139
+ needsScopeFor: string[];
1140
+ /**
1141
+ * The server could not enumerate the repo, so the gap list is not
1142
+ * authoritative. Distinct from an empty list, which means "nothing to ask for".
1143
+ */
1144
+ unknown?: boolean;
1145
+ }
1146
+ /**
1147
+ * Ask which id.sifa.* collections the current grant cannot delete.
1148
+ *
1149
+ * Unlike most read fetchers in this file's neighbourhood, a failure is NOT
1150
+ * flattened into an empty result: an empty gap list reads as "a wipe will be
1151
+ * clean", and a caller must not promise that on the strength of a request that
1152
+ * never arrived. Let it throw and warn.
1153
+ */
1154
+ declare function fetchWipePreview(config: SifaApiConfig, options?: ApiFetchOptions): Promise<WipePreview>;
1102
1155
  /** Extended write result for {@link resetProfile}. */
1103
1156
  interface ResetProfileResult extends WriteResult {
1104
1157
  /** Present when `deletePdsData: true`. See {@link PdsWipeOutcome}. */
@@ -1237,8 +1290,12 @@ declare const sifaQueryKeys: {
1237
1290
  readonly all: () => readonly ["sifa", "bsky-preferences"];
1238
1291
  readonly contentLabels: () => readonly ["sifa", "bsky-preferences", "content-labels"];
1239
1292
  };
1293
+ readonly destructive: {
1294
+ readonly all: () => readonly ["sifa", "destructive"];
1295
+ readonly wipePreview: () => readonly ["sifa", "destructive", "wipe-preview"];
1296
+ };
1240
1297
  };
1241
- type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.profile.atFundLink> | ReturnType<typeof sifaQueryKeys.profile.externalAccounts> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.canonicalSkills> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | ReturnType<typeof sifaQueryKeys.entity.all> | ReturnType<typeof sifaQueryKeys.entity.search> | ReturnType<typeof sifaQueryKeys.discovery.all> | ReturnType<typeof sifaQueryKeys.discovery.similar> | ReturnType<typeof sifaQueryKeys.discovery.suggestions> | ReturnType<typeof sifaQueryKeys.discovery.suggestionCount> | ReturnType<typeof sifaQueryKeys.discovery.featured> | ReturnType<typeof sifaQueryKeys.follow.all> | ReturnType<typeof sifaQueryKeys.follow.following> | ReturnType<typeof sifaQueryKeys.follow.followers> | ReturnType<typeof sifaQueryKeys.follow.followingOf> | ReturnType<typeof sifaQueryKeys.follow.feed> | ReturnType<typeof sifaQueryKeys.follow.mutuals> | ReturnType<typeof sifaQueryKeys.follow.blueskySuggestions> | ReturnType<typeof sifaQueryKeys.admin.all> | ReturnType<typeof sifaQueryKeys.admin.featureAllowlist> | ReturnType<typeof sifaQueryKeys.stats.all> | ReturnType<typeof sifaQueryKeys.stats.homepage> | ReturnType<typeof sifaQueryKeys.apps.all> | ReturnType<typeof sifaQueryKeys.apps.registry> | ReturnType<typeof sifaQueryKeys.apps.hidden> | ReturnType<typeof sifaQueryKeys.activity.all> | ReturnType<typeof sifaQueryKeys.activity.heatmap> | ReturnType<typeof sifaQueryKeys.activity.teaser> | ReturnType<typeof sifaQueryKeys.activity.feed> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.stream.all> | ReturnType<typeof sifaQueryKeys.stream.networkCount> | ReturnType<typeof sifaQueryKeys.reactions.all> | ReturnType<typeof sifaQueryKeys.reactions.status> | ReturnType<typeof sifaQueryKeys.reactions.accountCheck> | ReturnType<typeof sifaQueryKeys.roadmap.all> | ReturnType<typeof sifaQueryKeys.roadmap.votes> | ReturnType<typeof sifaQueryKeys.roadmap.myVotes> | ReturnType<typeof sifaQueryKeys.bskyPreferences.all> | ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>;
1298
+ type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.profile.atFundLink> | ReturnType<typeof sifaQueryKeys.profile.externalAccounts> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.canonicalSkills> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | ReturnType<typeof sifaQueryKeys.entity.all> | ReturnType<typeof sifaQueryKeys.entity.search> | ReturnType<typeof sifaQueryKeys.discovery.all> | ReturnType<typeof sifaQueryKeys.discovery.similar> | ReturnType<typeof sifaQueryKeys.discovery.suggestions> | ReturnType<typeof sifaQueryKeys.discovery.suggestionCount> | ReturnType<typeof sifaQueryKeys.discovery.featured> | ReturnType<typeof sifaQueryKeys.follow.all> | ReturnType<typeof sifaQueryKeys.follow.following> | ReturnType<typeof sifaQueryKeys.follow.followers> | ReturnType<typeof sifaQueryKeys.follow.followingOf> | ReturnType<typeof sifaQueryKeys.follow.feed> | ReturnType<typeof sifaQueryKeys.follow.mutuals> | ReturnType<typeof sifaQueryKeys.follow.blueskySuggestions> | ReturnType<typeof sifaQueryKeys.admin.all> | ReturnType<typeof sifaQueryKeys.admin.featureAllowlist> | ReturnType<typeof sifaQueryKeys.stats.all> | ReturnType<typeof sifaQueryKeys.stats.homepage> | ReturnType<typeof sifaQueryKeys.apps.all> | ReturnType<typeof sifaQueryKeys.apps.registry> | ReturnType<typeof sifaQueryKeys.apps.hidden> | ReturnType<typeof sifaQueryKeys.activity.all> | ReturnType<typeof sifaQueryKeys.activity.heatmap> | ReturnType<typeof sifaQueryKeys.activity.teaser> | ReturnType<typeof sifaQueryKeys.activity.feed> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.stream.all> | ReturnType<typeof sifaQueryKeys.stream.networkCount> | ReturnType<typeof sifaQueryKeys.reactions.all> | ReturnType<typeof sifaQueryKeys.reactions.status> | ReturnType<typeof sifaQueryKeys.reactions.accountCheck> | ReturnType<typeof sifaQueryKeys.roadmap.all> | ReturnType<typeof sifaQueryKeys.roadmap.votes> | ReturnType<typeof sifaQueryKeys.roadmap.myVotes> | ReturnType<typeof sifaQueryKeys.bskyPreferences.all> | ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels> | ReturnType<typeof sifaQueryKeys.destructive.all> | ReturnType<typeof sifaQueryKeys.destructive.wipePreview>;
1242
1299
 
1243
1300
  /** How a single entity binding was resolved during a claim. */
1244
1301
  interface OrgClaimBinding {
@@ -1325,4 +1382,4 @@ declare function addOrgNotificationEmail(config: SifaApiConfig, body: OrgNotific
1325
1382
  */
1326
1383
  declare function removeOrgNotificationEmail(config: SifaApiConfig, body: OrgNotificationEmailRequestInput, options?: Omit<ApiFetchOptions, 'method' | 'body'>): Promise<WriteResult & Partial<OrgNotificationEmailRemoveResult>>;
1327
1384
 
1328
- export { type OrgNotificationEmailRemoveResult as $, type ApiFetchOptions as A, type BulkHideProfileItemInput as B, type CastRoadmapVoteResult as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FollowProfilePageResponse as G, type FollowUserResult as H, type FollowingResponse as I, type GithubPullRequest as J, HIDDEN_ITEM_SOURCES as K, HIDDEN_ITEM_TYPES as L, type HeatmapDay as M, type HeatmapResponse as N, type HiddenApp as O, type HiddenItemSource as P, type HiddenItemType as Q, type HideProfileItemInput as R, type SifaApiConfig as S, type ListFeatureAllowlistOptions as T, type MyGithubPullRequestsResponse as U, type OrgClaimBinding as V, type WriteResult as W, type OrgClaimResult as X, type OrgDomainChallengeResult as Y, type OrgDomainVerifyResult as Z, type OrgNotificationEmailAddResult as _, type AccountCheckResult as a, fetchHeatmapData as a$, type OrgProfileEcho as a0, type OrgProfileUpdateResult as a1, type PdsWipeOutcome as a2, type ProfileIndustryInput as a3, type ProfileLocationAddress as a4, type ProfileLocationInput as a5, type ProfileSearchResult as a6, type ProfileSelfLocation as a7, QUOTED_POSTS_BATCH_MAX as a8, type QuotedPostAuthor as a9, addFeatureAllowlist as aA, addOrgNotificationEmail as aB, apiFetch as aC, apiFetchOrNull as aD, apiWrite as aE, apiWriteCreate as aF, bulkHideProfileItems as aG, bulkHideStandardPublications as aH, bulkUnhideProfileItems as aI, bulkUnhideStandardPublications as aJ, castRoadmapVote as aK, checkAppAccount as aL, createEndorsement as aM, createExternalAccount as aN, createProfileLocation as aO, createReaction as aP, deleteAccount as aQ, deleteAvatarOverride as aR, deleteExternalAccount as aS, deleteProfileLocation as aT, deleteReaction as aU, fetchActivityFeed as aV, fetchActivityTeaser as aW, fetchAppsRegistry as aX, fetchExternalAccounts as aY, fetchFeaturedProfile as aZ, fetchFollowing as a_, type QuotedPostImage as aa, type QuotedPostResult as ab, type QuotedPostView as ac, type ReactionError as ad, type ReactionResult as ae, type ReactionStatus as af, type RefreshOrcidPublicationsResult as ag, type RefreshPdsResult as ah, type ResetProfileResult as ai, type ResolveQuotedPostsOptions as aj, type RoadmapVoteError as ak, type RoadmapVoteResult as al, type RoadmapVoter as am, type RoadmapVotesResponse as an, type SearchFilters as ao, type SearchResponse as ap, type SifaQueryKey as aq, type SimilarProfile as ar, type SkillSearchResult as as, type StatsResponse as at, type SuggestionProfile as au, type SuggestionsResponse as av, type UpdateProfileOverrideInput as aw, type UpdateProfileSelfInput as ax, type UploadAvatarResult as ay, type VerifyExternalAccountResult as az, type ActivityFeedResponse as b, fetchHiddenApps as b0, fetchMyGithubPullRequests as b1, fetchMyRoadmapVotes as b2, fetchReactionStatus as b3, fetchRoadmapVotes as b4, fetchSearchFilters as b5, fetchSearchProfiles as b6, fetchSimilarProfiles as b7, fetchSkillSuggestions as b8, fetchStats as b9, unhideProfileItem as bA, unhideSifaPublication as bB, unhideStandardPublication as bC, unsetExternalAccountPrimary as bD, updateExternalAccount as bE, updateOrgProfile as bF, updateProfileLocation as bG, updateProfileOverride as bH, updateProfileSelf as bI, uploadAvatar as bJ, verifyExternalAccount as bK, verifyOrgDomain as bL, fetchSuggestionCount as ba, fetchSuggestions as bb, followUser as bc, getBlueskySuggestions as bd, getFollowers as be, getFollowing as bf, getFollowingFeed as bg, getMutuals as bh, hideOrcidPublication as bi, hideProfileItem as bj, hideSifaPublication as bk, hideStandardPublication as bl, listFeatureAllowlist as bm, refreshOrcidPublications as bn, refreshPds as bo, removeFeatureAllowlist as bp, removeOrgNotificationEmail as bq, requestOrgDomainChallenge as br, resetProfile as bs, resolveQuotedPosts as bt, retractRoadmapVote as bu, searchSkills as bv, setExternalAccountPrimary as bw, submitOrgClaim as bx, unfollowUser as by, unhideOrcidPublication as bz, type ActivityItem as c, type ActivityItemLinkHealth as d, type ActivityTeaserResponse as e, ApiError as f, type AppRegistryEntry as g, type CheckAppAccountOptions as h, type CreateExternalAccountResult as i, type CreateResult as j, type ExternalAccountInput as k, type FeaturedProfile as l, type FetchActivityFeedOptions as m, type FetchActivityTeaserOptions as n, type FetchFollowListOptions as o, type FetchFollowProfilePageOptions as p, type FetchFollowingFeedOptions as q, type FetchHiddenAppsOptions as r, sifaQueryKeys as s, type FetchMyGithubPullRequestsOptions as t, type FetchMyRoadmapVotesOptions as u, type FetchReactionStatusOptions as v, type FetchSuggestionsOptions as w, type FilterOptions as x, type FollowListPage as y, type FollowProfile as z };
1385
+ export { type OrgNotificationEmailRemoveResult as $, type ApiFetchOptions as A, type BulkHideProfileItemInput as B, type CastRoadmapVoteResult as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FollowProfilePageResponse as G, type FollowUserResult as H, type FollowingResponse as I, type GithubPullRequest as J, HIDDEN_ITEM_SOURCES as K, HIDDEN_ITEM_TYPES as L, type HeatmapDay as M, type HeatmapResponse as N, type HiddenApp as O, type HiddenItemSource as P, type HiddenItemType as Q, type HideProfileItemInput as R, type SifaApiConfig as S, type ListFeatureAllowlistOptions as T, type MyGithubPullRequestsResponse as U, type OrgClaimBinding as V, type WriteResult as W, type OrgClaimResult as X, type OrgDomainChallengeResult as Y, type OrgDomainVerifyResult as Z, type OrgNotificationEmailAddResult as _, type AccountCheckResult as a, fetchAppsRegistry as a$, type OrgProfileEcho as a0, type OrgProfileUpdateResult as a1, type PdsWipeOutcome as a2, type ProfileIndustryInput as a3, type ProfileLocationAddress as a4, type ProfileLocationInput as a5, type ProfileSearchResult as a6, type ProfileSelfLocation as a7, QUOTED_POSTS_BATCH_MAX as a8, type QuotedPostAuthor as a9, type VerifyExternalAccountResult as aA, type WipePreview as aB, addFeatureAllowlist as aC, addOrgNotificationEmail as aD, apiFetch as aE, apiFetchOrNull as aF, apiWrite as aG, apiWriteCreate as aH, bulkHideProfileItems as aI, bulkHideStandardPublications as aJ, bulkUnhideProfileItems as aK, bulkUnhideStandardPublications as aL, castRoadmapVote as aM, checkAppAccount as aN, createEndorsement as aO, createExternalAccount as aP, createProfileLocation as aQ, createReaction as aR, createSkill as aS, deleteAccount as aT, deleteAvatarOverride as aU, deleteExternalAccount as aV, deleteProfileLocation as aW, deleteReaction as aX, deleteSkill as aY, fetchActivityFeed as aZ, fetchActivityTeaser as a_, type QuotedPostImage as aa, type QuotedPostResult as ab, type QuotedPostView as ac, type ReactionError as ad, type ReactionResult as ae, type ReactionStatus as af, type RefreshOrcidPublicationsResult as ag, type RefreshPdsResult as ah, type ResetProfileResult as ai, type ResolveQuotedPostsOptions as aj, type RoadmapVoteError as ak, type RoadmapVoteResult as al, type RoadmapVoter as am, type RoadmapVotesResponse as an, type SearchFilters as ao, type SearchResponse as ap, type SifaQueryKey as aq, type SimilarProfile as ar, type SkillSearchResult as as, type StatsResponse as at, type SubCategoryBulkResult as au, type SuggestionProfile as av, type SuggestionsResponse as aw, type UpdateProfileOverrideInput as ax, type UpdateProfileSelfInput as ay, type UploadAvatarResult as az, type ActivityFeedResponse as b, fetchExternalAccounts as b0, fetchFeaturedProfile as b1, fetchFollowing as b2, fetchHeatmapData as b3, fetchHiddenApps as b4, fetchMyGithubPullRequests as b5, fetchMyRoadmapVotes as b6, fetchReactionStatus as b7, fetchRoadmapVotes as b8, fetchSearchFilters as b9, searchSkills as bA, setExternalAccountPrimary as bB, submitOrgClaim as bC, unfollowUser as bD, unhideOrcidPublication as bE, unhideProfileItem as bF, unhideSifaPublication as bG, unhideStandardPublication as bH, unsetExternalAccountPrimary as bI, updateExternalAccount as bJ, updateOrgProfile as bK, updateProfileLocation as bL, updateProfileOverride as bM, updateProfileSelf as bN, updateSkill as bO, updateSkillSubCategories as bP, uploadAvatar as bQ, verifyExternalAccount as bR, verifyOrgDomain as bS, fetchSearchProfiles as ba, fetchSimilarProfiles as bb, fetchSkillSuggestions as bc, fetchStats as bd, fetchSuggestionCount as be, fetchSuggestions as bf, fetchWipePreview as bg, followUser as bh, getBlueskySuggestions as bi, getFollowers as bj, getFollowing as bk, getFollowingFeed as bl, getMutuals as bm, hideOrcidPublication as bn, hideProfileItem as bo, hideSifaPublication as bp, hideStandardPublication as bq, listFeatureAllowlist as br, refreshOrcidPublications as bs, refreshPds as bt, removeFeatureAllowlist as bu, removeOrgNotificationEmail as bv, requestOrgDomainChallenge as bw, resetProfile as bx, resolveQuotedPosts as by, retractRoadmapVote as bz, type ActivityItem as c, type ActivityItemLinkHealth as d, type ActivityTeaserResponse as e, ApiError as f, type AppRegistryEntry as g, type CheckAppAccountOptions as h, type CreateExternalAccountResult as i, type CreateResult as j, type ExternalAccountInput as k, type FeaturedProfile as l, type FetchActivityFeedOptions as m, type FetchActivityTeaserOptions as n, type FetchFollowListOptions as o, type FetchFollowProfilePageOptions as p, type FetchFollowingFeedOptions as q, type FetchHiddenAppsOptions as r, sifaQueryKeys as s, type FetchMyGithubPullRequestsOptions as t, type FetchMyRoadmapVotesOptions as u, type FetchReactionStatusOptions as v, type FetchSuggestionsOptions as w, type FilterOptions as x, type FollowListPage as y, type FollowProfile as z };
@@ -1113,6 +1113,12 @@ function retractRoadmapVote(config, key, options = {}) {
1113
1113
  }
1114
1114
 
1115
1115
  // src/query/fetchers/destructive.ts
1116
+ function fetchWipePreview(config, options = {}) {
1117
+ return apiFetch(config, "/api/profile/wipe-preview", {
1118
+ credentials: "include",
1119
+ ...options
1120
+ });
1121
+ }
1116
1122
  function resetProfile(config, deletePdsData, options = {}) {
1117
1123
  return apiWrite(config, "/api/profile/reset", "DELETE", {
1118
1124
  body: { deletePdsData },
@@ -1405,6 +1411,10 @@ var sifaQueryKeys = {
1405
1411
  bskyPreferences: {
1406
1412
  all: () => ["sifa", "bsky-preferences"],
1407
1413
  contentLabels: () => ["sifa", "bsky-preferences", "content-labels"]
1414
+ },
1415
+ destructive: {
1416
+ all: () => ["sifa", "destructive"],
1417
+ wipePreview: () => ["sifa", "destructive", "wipe-preview"]
1408
1418
  }
1409
1419
  };
1410
1420
 
@@ -1469,6 +1479,7 @@ exports.fetchSkillSuggestions = fetchSkillSuggestions;
1469
1479
  exports.fetchStats = fetchStats;
1470
1480
  exports.fetchSuggestionCount = fetchSuggestionCount;
1471
1481
  exports.fetchSuggestions = fetchSuggestions;
1482
+ exports.fetchWipePreview = fetchWipePreview;
1472
1483
  exports.followUser = followUser;
1473
1484
  exports.getBlueskySuggestions = getBlueskySuggestions;
1474
1485
  exports.getFollowers = getFollowers;