@singi-labs/sifa-sdk 0.19.75 → 0.19.76

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 (52) hide show
  1. package/dist/format/index.js +2 -0
  2. package/dist/format/index.js.map +1 -1
  3. package/dist/format/openalex.js +10 -0
  4. package/dist/format/openalex.js.map +1 -0
  5. package/dist/{index-BFdNI6jA.d.ts → index-DAiJZvPg.d.ts} +8 -0
  6. package/dist/{index-BzkaABDb.d.cts → index-k6tBrbEU.d.cts} +8 -0
  7. package/dist/index.cjs +9 -1
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +14 -6
  10. package/dist/index.d.ts +14 -6
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/jsonld/index.d.cts +1 -1
  14. package/dist/jsonld/index.d.ts +1 -1
  15. package/dist/{network-map-DPt0o-vA.d.cts → network-map-DInAc_DB.d.cts} +3 -3
  16. package/dist/{network-map-73EK_ow8.d.ts → network-map-DvALufF9.d.ts} +3 -3
  17. package/dist/{profile-summary-CaPVQo_x.d.cts → profile-summary-BcbJrph1.d.cts} +1 -1
  18. package/dist/{profile-summary-8TYJWh1y.d.ts → profile-summary-PRDqxAQT.d.ts} +1 -1
  19. package/dist/query/fetchers/index.cjs +45 -0
  20. package/dist/query/fetchers/index.cjs.map +1 -1
  21. package/dist/query/fetchers/index.d.cts +6 -6
  22. package/dist/query/fetchers/index.d.ts +6 -6
  23. package/dist/query/fetchers/index.js +8 -0
  24. package/dist/query/fetchers/index.js.map +1 -1
  25. package/dist/query/fetchers/user-settings.js +48 -0
  26. package/dist/query/fetchers/user-settings.js.map +1 -0
  27. package/dist/query/hooks/index.cjs +65 -0
  28. package/dist/query/hooks/index.cjs.map +1 -1
  29. package/dist/query/hooks/index.d.cts +4 -4
  30. package/dist/query/hooks/index.d.ts +4 -4
  31. package/dist/query/hooks/index.js +3 -0
  32. package/dist/query/hooks/index.js.map +1 -1
  33. package/dist/query/hooks/use-user-settings.js +34 -0
  34. package/dist/query/hooks/use-user-settings.js.map +1 -0
  35. package/dist/query/index.cjs +66 -0
  36. package/dist/query/index.cjs.map +1 -1
  37. package/dist/query/index.d.cts +9 -9
  38. package/dist/query/index.d.ts +9 -9
  39. package/dist/query/index.js +11 -0
  40. package/dist/query/index.js.map +1 -1
  41. package/dist/query/keys.js +3 -0
  42. package/dist/query/keys.js.map +1 -1
  43. package/dist/resume/index.d.cts +1 -1
  44. package/dist/resume/index.d.ts +1 -1
  45. package/dist/types/index.js.map +1 -1
  46. package/dist/{types-Dl-uk0Ds.d.ts → types-CI24asgo.d.ts} +5 -1
  47. package/dist/{types-BY3qFPDf.d.cts → types-qw55KvoV.d.cts} +5 -1
  48. package/dist/{use-org-notification-emails-ObFoUWP3.d.ts → use-user-settings-B1rJmjQR.d.ts} +24 -4
  49. package/dist/{use-org-notification-emails-u0AQu9Ez.d.cts → use-user-settings-CYDXJNmI.d.cts} +24 -4
  50. package/dist/{org-aUopODEW.d.ts → user-settings-Qwi6wSnK.d.ts} +29 -4
  51. package/dist/{org-Bb1cRhJu.d.cts → user-settings-lenJHz19.d.cts} +29 -4
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { AgentRef } from '../schemas/shared.js';\nimport type { AccountVerification } from '../taxonomy/verification-providers.js';\n\nexport interface LocationValue {\n city?: string;\n /** community.lexicon.location.address field -- preferred over `city`. */\n locality?: string;\n region?: string;\n country: string;\n countryCode?: string;\n postalCode?: string;\n geonameId?: number;\n}\n\nexport interface SkillRef {\n uri: string;\n}\n\nexport interface ProfilePosition {\n rkey: string;\n /**\n * Optional: omitted for self-employed / freelance / independent positions.\n * The lexicon and the record schema already make company optional.\n */\n company?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * picks an organization from the resolver typeahead. Absent for free-text or\n * independent positions (#159).\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked company (#240),\n * computed by the AppView at read time. Render this over `company` for a\n * linked position, so a name correction reaches every linked profile without\n * a PDS write. Absent for free-text or unresolved positions (fall back to\n * `company`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n /**\n * Company-page slug for a durably-linked position, resolved by the AppView at\n * read time alongside `entityName` (#159). Lets a consumer link the company\n * name to its `/c/{domain}` page without re-resolving `entityRef`. `domain` is\n * the readable form, `publicId` the durable fallback; build the link as\n * `/c/${companyDomain ?? companyPublicId}`. Both absent for free-text /\n * unlinked positions.\n */\n companyDomain?: string;\n companyPublicId?: string;\n title: string;\n description?: string;\n startedAt: string;\n endedAt?: string;\n location?: LocationValue | null;\n employmentType?: string;\n /**\n * Party this role is held on behalf of, when the person represents someone else --\n * most often a fund whose board seat this is. A disclosure rather than a role type,\n * so it is a separate field from `employmentType`. Absent for independent roles.\n */\n onBehalfOf?: string;\n /** DID of the represented party, when known. May be an organization or a person. */\n onBehalfOfDid?: string;\n /** Portable entity identifier for the represented party (Wikidata/ROR/LEI URI). */\n onBehalfOfEntityRef?: string;\n workplaceType?: string;\n skills?: SkillRef[];\n linkedSkills?: ProfileSkill[];\n primary?: boolean;\n hidden?: boolean;\n /**\n * Colleagues who confirmed this position (`id.sifa.defs#colleague`), as\n * resolved by the AppView. Descriptive only: who said so, never a score.\n * Absent when nobody has confirmed it.\n */\n confirmations?: PositionConfirmations;\n /**\n * What the signed-in viewer can do with this position. `available` means\n * they have a reason to know it (an overlapping position at the same\n * organization, or they are the organization's account) and have not\n * confirmed it yet; `confirmed` means they already did and can withdraw.\n * Absent for anonymous viewers, the owner, and anyone without a reason to know.\n */\n viewerConfirmation?: PositionViewerConfirmation;\n /**\n * The organization's own attestation of this position (sifa-workspace#622),\n * as indexed by the AppView. The strongest tier: only the org's account can\n * produce it. Absent when no attestation covers the position; absence is\n * not a negative signal.\n */\n orgVerification?: PositionOrgVerification;\n}\n\n/** An organization attestation covering one position, as returned by the AppView. */\nexport interface PositionOrgVerification {\n /** DID of the attesting organization's account. */\n orgDid: string;\n status: 'current' | 'past';\n /** How the attestation was written: by hand or by directory sync. */\n source: 'manual' | 'directory';\n /** When the organization attested it (the record's createdAt, ISO). */\n verifiedAt: string;\n /** The attested period, when the record carries one (YYYY-MM or YYYY-MM-DD). */\n startedAt: string | null;\n endedAt: string | null;\n /** The record's title or start-month snapshot no longer matches the live position. */\n stale: boolean;\n /** AT-URI of the attestation record in the organization's repository. */\n attestationUri: string;\n}\n\n/** Confirmations of one position, as returned by the AppView. */\nexport interface PositionConfirmations {\n /** Number of visible confirmers. Equal to `confirmers.length`. */\n count: number;\n /** The confirmers, oldest first. Blocked and suppressed accounts are left out. */\n confirmers: ActorCard[];\n}\n\n/** See {@link ProfilePosition.viewerConfirmation}. */\nexport type PositionViewerConfirmation = 'available' | 'confirmed';\n\nexport interface ProfileEducation {\n rkey: string;\n institution: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * links the institution to a resolved organization (#159/#241). Absent for\n * free-text entries. Mirrors `ProfilePosition.entityRef`; the AppView sends it\n * for display (the \"Linked\" badge).\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked institution (#252),\n * computed by the AppView at read time. Render this over `institution` for a\n * linked entry, so a name correction reaches every linked profile without a\n * PDS write. Absent for free-text or unresolved entries (fall back to\n * `institution`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n degree?: string;\n fieldOfStudy?: string;\n /** European Qualifications Framework level, 1 to 8 (8 = doctoral). */\n eqfLevel?: number;\n description?: string;\n activities?: string;\n startedAt?: string;\n endedAt?: string;\n hidden?: boolean;\n /** User-flagged primary education entry, surfaced in the Highlights block. */\n primary?: boolean;\n}\n\nexport interface ProfileSkill {\n rkey: string;\n name: string;\n /**\n * CID of the skill record, needed as a strongRef when endorsing it. Often\n * absent: only the firehose carries a CID, so a skill added moments ago has\n * none indexed yet. Pass it to `createEndorsement` when present and omit it\n * otherwise -- the AppView resolves it from the owner's PDS.\n */\n cid?: string;\n category?: string;\n /**\n * Freeform user-defined grouping label nested under `category` (e.g.\n * \"Frontend\", \"Backend\"). No known values; renderers decide the display\n * label. See `groupSkillsBySubCategory`.\n */\n subCategory?: string;\n endorsementCount?: number;\n endorsed?: boolean;\n /**\n * Names this skill was endorsed under, where they differ from what it is\n * called now. Absent when nothing has drifted.\n *\n * A rename keeps the same record, so endorsements follow it and stay\n * counted. Showing the original name is what keeps that honest: a reader can\n * see that a skill now called one thing was vouched for as another, instead\n * of the rename quietly laundering the endorsement.\n */\n endorsedAs?: string[];\n activityBacked?: boolean;\n}\n\nexport interface SkillSuggestion {\n canonicalName: string;\n slug: string;\n category: string;\n}\n\nexport interface Endorsement {\n endorserDid: string;\n endorserHandle: string;\n endorserDisplayName?: string;\n endorserAvatar?: string;\n comment?: string;\n relationshipContext?: string;\n createdAt: string;\n}\n\nexport interface EndorsementData {\n skillRkey: string;\n comment?: string;\n relationshipContext?: string;\n}\n\nexport interface ProfileLocation {\n rkey: string;\n type: string;\n label?: string | null;\n isPrimary: boolean;\n locationCountry?: string | null;\n locationRegion?: string | null;\n /** Legacy alias for `locationLocality`; emitted by sifa-api during the additive response window. */\n locationCity?: string | null;\n /** community.lexicon.location.address field name -- prefer over `locationCity`. */\n locationLocality?: string | null;\n countryCode?: string | null;\n location?: string | null;\n}\n\nexport interface ProfileCertification {\n rkey: string;\n name: string;\n /**\n * Issuing organization. The write contract names this field `authority`\n * everywhere (record schema, DB column, PDS record); the AppView read view\n * emits `authority` as the canonical field (#249). Optional during the\n * deprecation window while consumers migrate off the legacy `issuingOrg`\n * alias below.\n */\n authority?: string;\n /**\n * @deprecated Legacy read-view alias for {@link authority} (#249). Carries the\n * same value; will be dropped once web + SDK consumers read `authority`.\n */\n issuingOrg?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the issuing\n * organization to a resolved entity (#159/#241). Absent for free-text entries.\n * Mirrors `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked issuing organization\n * (#252), computed by the AppView at read time. Render this over `authority`\n * for a linked entry. Absent for free-text or unresolved entries (fall back to\n * `authority`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n issueDate?: string;\n expiryDate?: string;\n credentialUrl?: string;\n hidden?: boolean;\n}\n\n/**\n * A calendar event a project organized or hosted, with display fields the\n * AppView resolved from the referenced community.lexicon.calendar.event.\n */\nexport interface ProjectEventView {\n /** AT-URI of the community.lexicon.calendar.event. */\n uri: string;\n /** The user's role at this occurrence, when it differs from the project's role. */\n role?: string;\n name?: string;\n /** ISO datetime. Use the date part for display; the time is not meaningful for past events. */\n startsAt?: string;\n /** community.lexicon.calendar.event mode token. */\n mode?: string;\n locality?: string;\n /** ISO 3166-1 alpha-2. */\n country?: string;\n url?: string;\n}\n\nexport interface ProfileProject {\n rkey: string;\n name: string;\n /** The user's own role on the project (#596), e.g. Maintainer. */\n role?: string;\n description?: string;\n url?: string;\n startDate?: string;\n endDate?: string;\n /** Other people named on this project, hydrated from the stored DIDs. */\n members?: ProjectMemberCard[];\n /**\n * AT-URI of the same project as recorded elsewhere, when this entry\n * duplicates another person's. Set so consumers can tell the two describe one\n * project; both still render from their own owner's record.\n */\n /** AT-URI of the same record on another person's profile, when they keep one. */\n sameAs?: string;\n /** Calendar events this project organized or hosted, newest first. */\n events?: ProjectEventView[];\n hidden?: boolean;\n /** User-flagged primary project, surfaced in the Highlights block. Ongoing only. */\n primary?: boolean;\n}\n\nexport interface PublicationContributor {\n name: string;\n orcidId?: string;\n did?: string;\n handle?: string;\n}\n\n/**\n * A co-author an importer produced that the profile owner can offer to link to\n * a Sifa account.\n *\n * Matched on verified ORCID iD only, never on name: \"A. Example\", \"Alice\n * Example\", and \"Example, A.\" are one person, and \"J. Smith\" is four hundred.\n *\n * A suggestion, never a claim. Nothing reaches any repository until the owner\n * acts, which is what makes ORCID re-syncing safe: matching writes nothing, so\n * a re-sync cannot generate a confirmation request.\n */\nexport interface AuthorSuggestion {\n /** ORCID iD the match was made on. The join key back to a contributor. */\n orcidId: string;\n did: string;\n handle: string;\n /** Display name on the matched account, for showing what is being proposed. */\n displayName?: string;\n}\n\n/**\n * A typed link from a work to another version or form of it\n * (`id.sifa.defs#relatedIdentifier`). `relationType` uses the DataCite\n * vocabulary, e.g. `IsPreprintOf` on a preprint pointing at its published\n * version. `identifierType` is `DOI` (the default when absent), `AT-URI` or `URL`.\n */\nexport interface RelatedIdentifier {\n identifier: string;\n identifierType?: string;\n relationType: string;\n}\n\nexport interface ProfilePublication {\n rkey: string;\n title: string;\n subtitle?: string;\n publisher?: string;\n date?: string;\n url?: string;\n description?: string;\n source?: 'sifa' | 'standard' | 'orcid';\n doi?: string;\n type?: string;\n typeLabel?: string;\n contributors?: PublicationContributor[];\n verified?: boolean;\n verifiedVia?: string;\n orcidPutCode?: number;\n hidden?: boolean;\n /** User-flagged primary publication, surfaced in the Highlights block. */\n primary?: boolean;\n orcidCorroborated?: boolean;\n pendingVerification?: boolean;\n appId?: string;\n /**\n * AT-URI of the parent `site.standard.publication` for Standard.site\n * articles — the subscribable unit. Used to group articles by publication\n * on the profile. Undefined for Sifa/ORCID publications.\n */\n publicationUri?: string | null;\n /** Canonical publication origin — the subscribe / link-out target. */\n publicationUrl?: string | null;\n /** Publication display name for the group header (falls back to host). */\n publicationName?: string | null;\n /**\n * Cover image URL for Standard.site articles — the document's `coverImage`\n * blob (CDN-served), falling back to the article page's og:image. Undefined\n * for Sifa/ORCID publications, null when none could be resolved.\n */\n image?: string | null;\n /**\n * Other versions or forms of this work: relations declared on the record\n * plus, for a DOI, those registered with DataCite or Crossref (#590). Feed\n * to `groupPublicationVersions` to fold a preprint under its published version.\n */\n relatedIdentifiers?: RelatedIdentifier[];\n}\n\nexport interface ProfileVolunteering {\n rkey: string;\n organization: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the\n * organization to a resolved entity (#159/#241). Absent for free-text entries.\n * Mirrors `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked organization (#252),\n * computed by the AppView at read time. Render this over `organization` for a\n * linked entry. Absent for free-text or unresolved entries (fall back to\n * `organization`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n role?: string;\n cause?: string;\n startDate?: string;\n endDate?: string;\n description?: string;\n hidden?: boolean;\n}\n\nexport interface ProfileHonor {\n rkey: string;\n title: string;\n issuer?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the issuer to a\n * resolved entity (#159/#241). Absent for free-text entries. Mirrors\n * `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked issuer (#252),\n * computed by the AppView at read time. Render this over `issuer` for a linked\n * entry. Absent for free-text or unresolved entries (fall back to `issuer`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n date?: string;\n description?: string;\n hidden?: boolean;\n}\n\n/**\n * One proof link on an involvement record, as served by the AppView. Mirrors\n * `id.sifa.defs#artifactLink`, plus the computed rung-2 verification signal.\n */\nexport interface ProfileInvolvementLink {\n url: string;\n kind?: string;\n label?: string;\n /**\n * Rung-2 cross-ref: true when the link host matches one of the owner's\n * *verified* `externalAccount` records (GitHub, GitLab, ORCID, ...).\n * Computed by the AppView; deterministic host match, no new primitive.\n */\n verified?: boolean;\n /**\n * Platform token of the matched verified external account (e.g.\n * `id.sifa.defs#platformGithub`), for the badge label. Absent when\n * `verified` is not true.\n */\n verifiedPlatform?: string;\n}\n\n/**\n * An involvement entry as served by the AppView: an `id.sifa.profile.involvement`\n * record, or a mapped legacy `id.sifa.profile.volunteering` record (`legacy`),\n * grouped in the UI by `kind` via the SDK's involvement-kind taxonomy.\n */\n/** One artifact link on an investment (round announcement, portfolio page, filing). */\nexport interface ProfileInvestmentLink {\n url: string;\n kind?: string;\n label?: string;\n}\n\n/** A capital position: money the person put in. Roles with duties are positions. */\nexport interface ProfileInvestment {\n rkey: string;\n /** For a limited-partner entry this names the fund, not a portfolio company. */\n company: string;\n companyDid?: string;\n entityRef?: string;\n /** Resolved canonical name of the linked company. Render over `company` when present. */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n /** How the capital went in. Angel, syndicate member or LP -- never GP. */\n role?: string;\n /** The company's funding stage at the time of the investment, not its stage today. */\n stage?: string;\n /** active / exited / written off / undisclosed. */\n status?: string;\n /** The vehicle the capital went through. Absent for a cheque in the person's own name. */\n via?: string;\n viaDid?: string;\n viaEntityRef?: string;\n /** Whole major currency units plus an ISO 4217 code. Absent unless the person opted in. */\n amount?: { value: number; currency: string };\n startedAt?: string;\n endedAt?: string;\n description?: string;\n links?: ProfileInvestmentLink[];\n hidden?: boolean;\n}\n\nexport interface ProfileInvolvement {\n rkey: string;\n /** Involvement-kind token; drives the display heading. Legacy rows map to charity. */\n kind: string;\n upstream?: string;\n upstreamDid?: string;\n upstreamUrl?: string;\n role?: string;\n description?: string;\n startedAt?: string;\n endedAt?: string;\n links?: ProfileInvolvementLink[];\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * picks the upstream from the resolver typeahead. Absent for free-text or\n * one-off involvement.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked upstream, computed by\n * the AppView at read time. Render over `upstream` when present. Absent for\n * free-text or unresolved entries.\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n location?: LocationValue | null;\n skills?: SkillRef[];\n /** Skill records resolved from `skills`, for display. */\n linkedSkills?: ProfileSkill[];\n /**\n * True when this row is a mapped legacy `id.sifa.profile.volunteering` record\n * (no `kind`), rendered under \"Volunteering\". Editing it backfills to an\n * `involvement` record and deletes the legacy one.\n */\n legacy?: boolean;\n hidden?: boolean;\n /** User-flagged primary involvement, surfaced in the Highlights block. Ongoing only. */\n primary?: boolean;\n /** Other people named on this involvement, hydrated from the stored DIDs. */\n collaborators?: ProjectMemberCard[];\n /** AT-URI of the same involvement as recorded on another person's profile. */\n sameAs?: string;\n}\n\nexport type LanguageProficiency =\n 'elementary' | 'limited_working' | 'professional_working' | 'full_professional' | 'native';\n\nexport interface ProfileLanguage {\n rkey: string;\n language: string;\n proficiency?: LanguageProficiency;\n hidden?: boolean;\n}\n\nexport interface ProfileCourse {\n rkey: string;\n name: string;\n institution?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the institution\n * to a resolved entity (#159/#241). Absent for free-text entries. Mirrors\n * `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked institution (#252),\n * computed by the AppView at read time. Render this over `institution` for a\n * linked entry. Absent for free-text or unresolved entries (fall back to\n * `institution`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n number?: string;\n /** rkey of the associated certification, resolved from the course's\n * `credential` at-uri. Used to join the course to a certification in the\n * same profile payload (for the linked-credential date and link). */\n credentialRkey?: string;\n /** Date the course was completed, as an RFC 3339 datetime. Optional; the\n * editor collects month granularity (YYYY-MM). */\n completedAt?: string;\n /** `id.sifa.defs#courseRole` token. Absent means the user took the course. */\n role?: string;\n /** Teaching period of a taught or assisted course (YYYY, YYYY-MM or YYYY-MM-DD). */\n startedAt?: string;\n endedAt?: string;\n /** rkey of the position the course was part of (taught under it, or taken\n * as part of the job). The AppView resolves it from the record's `position`\n * at-uri when building the profile view. */\n positionRkey?: string;\n /** rkey of the education record the course was part of, resolved by the\n * AppView from the record's `education` at-uri. */\n educationRkey?: string;\n hidden?: boolean;\n}\n\n/** A related link on a presentation or delivery, as returned by the AppView. */\nexport interface PresentationLinkView {\n uri: string;\n label?: string;\n type?: string;\n}\n\n/**\n * Another person named on someone's record, as rendered by the AppView.\n *\n * `displayName` and `avatar` are present when the person's identity may be\n * shown -- i.e. when {@link actorShowsIdentity} holds (`confirmed` or\n * `claimed`). Otherwise the card is a bare handle with no identity attached and\n * no link to a profile: naming someone is a claim, and until they affirm it (or\n * hold a claimed Sifa account that can be notified of the claim) the claim must\n * not borrow their face.\n */\nexport interface ActorCard {\n did: string;\n handle: string;\n displayName?: string;\n avatar?: string;\n /**\n * True when Sifa has indexed this account at all -- including an unclaimed\n * atproto account seen via the firehose, which still renders at /p/<handle>.\n * Broader than {@link claimed}; not on its own a reason to show identity.\n */\n hasSifaProfile?: boolean;\n /**\n * True when the named person has a claimed Sifa account (has authenticated\n * via OAuth). A claimed account can be notified of a pending claim, so its\n * identity is shown even before confirmation -- see {@link actorShowsIdentity}.\n */\n claimed?: boolean;\n /** True once the named person has published a matching `id.sifa.confirmation`. */\n confirmed?: boolean;\n /**\n * True when the record was materially changed after being confirmed -- a\n * rename, or a changed role. The confirmation stands until withdrawn, but the\n * UI should say the claim has moved since it was affirmed.\n */\n confirmedStale?: boolean;\n}\n\n/** @deprecated Use {@link ActorCard}. Kept so existing co-speaker call sites keep compiling. */\nexport type CoSpeaker = ActorCard;\n\n/**\n * Roles shipped today. The lexicon declares these as `knownValues`, so the\n * field itself stays a plain string: a consumer meeting a role it does not\n * recognise should show it rather than discard it.\n *\n * Display only. A record living in someone else's repository cannot grant\n * write access to anything, and the UI must not imply that it does.\n */\nexport const PROJECT_ROLES = [\n 'id.sifa.defs#projectOwner',\n 'id.sifa.defs#projectCore',\n 'id.sifa.defs#projectContributor',\n] as const;\n\nexport type ProjectRole = (typeof PROJECT_ROLES)[number];\n\n/** A person named as a member of a project, with their role alongside the actor card. */\nexport interface ProjectMemberCard extends ActorCard {\n role?: string;\n title?: string;\n}\n\n/** An occasion on which a presentation was delivered (the AppView view-model). */\nexport interface ProfilePresentationDelivery {\n rkey: string;\n /** rkey of the parent presentation when this delivery references one. */\n presentationRkey?: string | null;\n /** Co-speakers at this occasion, hydrated from the stored DIDs. */\n coSpeakers?: CoSpeaker[];\n /** AT-URI of the same session as recorded on another person's profile. */\n sameAs?: string;\n title?: string | null;\n role?: string | null;\n eventName?: string | null;\n /** YYYY-MM-DD, or YYYY-MM / YYYY when the exact day is unknown. */\n date?: string | null;\n location?: string | null;\n locationCountry?: string | null;\n locationRegion?: string | null;\n locationLocality?: string | null;\n countryCode?: string | null;\n /** Full community.lexicon.calendar.event mode token. */\n mode?: string | null;\n /** Full community.lexicon.calendar.event status token. */\n status?: string | null;\n links?: PresentationLinkView[];\n /** at-uri of the linked calendar event, when present. */\n eventUri?: string | null;\n hidden?: boolean;\n}\n\n/** A reusable presentation with its deliveries grouped underneath (AppView view-model). */\nexport interface ProfilePresentation {\n rkey: string;\n title: string;\n description?: string | null;\n /** Duration in minutes: a fixed value (min only) or a range. */\n duration?: { minMinutes: number; maxMinutes?: number } | null;\n intendedAudiences?: string[];\n links?: PresentationLinkView[];\n /** at-uri of a long-form write-up (Leaflet / site.standard document). */\n writeupUri?: string | null;\n /** Resolved URL of the uploaded cover image, when present. */\n coverImageUrl?: string | null;\n hidden?: boolean;\n /** User-flagged primary talk, surfaced in the Highlights block. Talks only, not sessions. */\n primary?: boolean;\n deliveries?: ProfilePresentationDelivery[];\n}\n\nexport interface TrustStat {\n key: string;\n label: string;\n value: number;\n}\n\nexport interface ActiveApp {\n id: string;\n name: string;\n category: string;\n recentCount: number;\n latestRecordAt?: string | null;\n}\n\nexport interface VerifiedAccount {\n platform: string;\n identifier: string;\n url?: string;\n}\n\nexport interface ExternalAccountKeytraceClaim {\n rkey: string;\n claimedAt: string;\n}\n\nexport interface ExternalAccount {\n rkey: string;\n platform: string;\n url: string;\n label?: string;\n feedUrl?: string;\n primary?: boolean;\n verifiable: boolean;\n verified: boolean;\n verifiedVia?: string | null;\n source?: 'sifa' | 'keytrace' | 'keyoxide' | 'marque';\n hidden?: boolean;\n keytraceVerified?: boolean;\n keytraceClaim?: ExternalAccountKeytraceClaim;\n}\n\nexport interface FeedItem {\n title: string;\n excerpt: string;\n url: string;\n timestamp: string;\n source: string;\n}\n\nexport interface PdsProviderInfo {\n name: string;\n host: string;\n}\n\nexport interface ProfileIndustry {\n industry: string;\n domain?: string;\n}\n\nexport interface ProfileOverrideSource {\n headline?: string;\n about?: string;\n displayName?: string;\n avatarUrl?: string;\n}\n\n/**\n * A structured physical address on the org view. Mirrors\n * `community.lexicon.location.address`; every field is optional.\n */\nexport interface OrgAddressView {\n country: string | null;\n postalCode: string | null;\n region: string | null;\n locality: string | null;\n street: string | null;\n name: string | null;\n}\n\n/** A featured link on the org view. Both `name` and `url` are present. */\nexport interface OrgLinkView {\n name: string;\n url: string;\n}\n\n/**\n * A self-declared industry/domain pair on the org view. Mirrors the person\n * profile's industry/domain shape; `industry` is always present, `domain` is an\n * optional refinement (`null` when absent).\n */\nexport interface OrgIndustryView {\n industry: string;\n domain: string | null;\n}\n\n/**\n * The org-profile fields exposed on the profile resolve when the org rendering\n * floor is met. Narrow on purpose: `contact` is never included (not rendered\n * publicly); record URI/CID are internal. Mirrors sifa-api's `OrgProfileView`.\n */\nexport interface OrgProfileView {\n name: string;\n description: string | null;\n website: string | null;\n /** Blob CID (or resolved URL) of the org logo, when present. */\n logoBlob: string | null;\n entityRefs: string[] | null;\n addresses: OrgAddressView[] | null;\n /** Self-selected headcount range (declared bucket, never calculated). */\n companySize: string | null;\n companyType: string | null;\n links: OrgLinkView[] | null;\n /** Self-declared industry/domain pairs. */\n industries: OrgIndustryView[] | null;\n /** Self-declared founding date (year / YYYY-MM / YYYY-MM-DD). */\n founded: string | null;\n /** Self-declared \"also known as\" names / acronyms. */\n aliases: string[] | null;\n}\n\n/**\n * A company entity recognized purely from the handle's registrable domain\n * (#160 auto-recognize), independent of any org record. Present on the verdict\n * when `recognized` is true. `domain` is the handle's registrable domain and\n * round-trips through `/c/<domain>`; `publicId` is nullable because entities\n * minted before the public_id backfill have none.\n */\nexport interface RecognizedEntity {\n publicId: string | null;\n domain: string;\n name: string;\n}\n\n/**\n * Server-computed org rendering-floor verdict (#160), carried on the profile\n * resolve so clients need no extra round-trip. Read it via the `useOrgProfile`\n * hook.\n *\n * `isOrg` is the CLAIMED floor: true when the account has an\n * `id.sifa.org.profile` record AND its handle is a custom registrable domain\n * (the authoritative, PSL-backed check lives server-side).\n *\n * `recognized` is INDEPENDENT of `isOrg`: true when the handle's registrable\n * domain resolves to a known, non-suppressed, non-natural-person company entity\n * in Sifa's DB, even with no org record yet (auto-recognize known-company\n * domains). A known company that has not yet claimed is\n * `recognized: true, isOrg: false`; a claimed recognized company is both true.\n * Use it to treat a recognized-but-unclaimed company account as a company\n * (company onboarding, `/c/` routing) before it claims.\n */\nexport interface OrgFloorVerdict {\n isOrg: boolean;\n orgProfile?: OrgProfileView;\n recognized: boolean;\n /**\n * Whether the account's handle is a custom registrable apex domain, i.e.\n * eligible to CLAIM an org page (#306). Mirrors the `isBindableHandleDomain`\n * floor the api enforces at write time, surfaced so the `/claim` wizard can\n * gate on eligibility BEFORE the authority consent rather than failing the\n * final PDS write. Independent of `isOrg`/`recognized` -- purely the handle's\n * shape, so a `*.bsky.social` account reads false and a not-yet-claimed\n * custom domain reads true.\n *\n * Optional here (a tolerant reader): the api always emits it, but a profile\n * payload cached before this field shipped may omit it. Gate on the explicit\n * `customDomain === false` for the up-front block; treat absent as unknown and\n * let the api 403 stay the authoritative backstop -- never enforce on this\n * field alone.\n */\n customDomain?: boolean;\n /**\n * Whether the account also keeps a visible personal profile, from\n * `id.sifa.org.profile.personalProfileVisible`. True only for a claimed org\n * (`isOrg`) that opted in -- the sole-trader case, where one DID carries both\n * a person facet at `/p/` and a company facet at `/c/` and neither route\n * redirects to the other. Absent or false is the exclusive default: the\n * account presents solely as an organization and `/p/` redirects to `/c/`.\n */\n personalProfileVisible?: boolean;\n /**\n * Invariant (not encoded in the type, matching the flat wire shape the api\n * sends): present whenever `recognized` is true, absent when false. Callers\n * that read it after narrowing on `recognized === true` should still\n * defensively check, since the type does not enforce the pairing.\n */\n recognizedEntity?: RecognizedEntity;\n}\n\n/**\n * The account owner's answer to \"are you a person, a company, or both?\".\n *\n * `'person'` and `'company'` are Sifa-local overrides stored in\n * `account_render_overrides` (set via `POST /api/account/render-preference`).\n * `'both'` is NOT stored here -- it is the portable\n * `id.sifa.org.profile.personalProfileVisible` declaration in the account's own\n * PDS, so any AppView can evaluate it without asking Sifa. Resolve the combined\n * answer with `resolveAccountFacetMode`.\n */\nexport type AccountFacetMode = 'person' | 'company' | 'both';\n\nexport interface Profile {\n did: string;\n handle: string;\n /**\n * Sifa-local render override, absent when the account has never set one\n * (auto: today's recognition behaviour). `'person'` is the escape hatch for a\n * personal domain that Sifa catalogued as a company.\n */\n renderPreference?: 'person' | 'company' | null;\n /**\n * Org rendering-floor verdict (#160). Present on the profile resolve; absent\n * on payloads that predate the field. When `org.isOrg` is true the account\n * renders as an organization (`/c/`).\n */\n org?: OrgFloorVerdict;\n displayName?: string;\n /**\n * Given (first) name from `id.sifa.profile.self.givenName`. Schema.org\n * `Person.givenName`. Optional; absent for users who haven't filled in\n * structured name fields. Consumers wanting a rendered name should use\n * `formatStructuredName(givenName, familyName) ?? displayName ?? handle`.\n */\n givenName?: string;\n /**\n * Family (last) name from `id.sifa.profile.self.familyName`. Schema.org\n * `Person.familyName`. See `givenName` for fallback guidance.\n */\n familyName?: string;\n /**\n * Free-form phonetic respelling of the user's name from\n * `id.sifa.profile.self.namePronunciation` (e.g. `Foo-kuh`). Optional; a\n * native field with no `app.bsky.actor.profile` equivalent. Text only.\n */\n namePronunciation?: string;\n /**\n * Resolved URL of the name-pronunciation audio clip from\n * `id.sifa.profile.self.namePronunciationAudio`, served from the user's PDS\n * (`com.atproto.sync.getBlob`). Optional; absent when no clip is set.\n */\n namePronunciationAudioUrl?: string;\n avatar?: string;\n pronouns?: string;\n headline?: string;\n about?: string;\n hasHeadlineOverride?: boolean;\n hasAboutOverride?: boolean;\n hasDisplayNameOverride?: boolean;\n hasAvatarUrlOverride?: boolean;\n source?: ProfileOverrideSource;\n industries?: ProfileIndustry[];\n location?: LocationValue | null;\n locations?: ProfileLocation[];\n /**\n * @deprecated Flat location field emitted at the response root during the\n * additive response window for `community.lexicon.location.address`.\n * Prefer the structured `locations[]` array (use the entry where\n * `isPrimary` is true).\n */\n locationCountry?: string | null;\n /**\n * @deprecated See `locationCountry`. Prefer `locations[].locationRegion`.\n */\n locationRegion?: string | null;\n /**\n * @deprecated Legacy alias for `locationLocality`; emitted alongside it\n * during the additive response window. Prefer `locations[].locationLocality`.\n */\n locationCity?: string | null;\n /**\n * @deprecated community.lexicon.location.address field name. Prefer\n * `locations[].locationLocality`.\n */\n locationLocality?: string | null;\n /**\n * @deprecated See `locationCountry`. Prefer `locations[].countryCode`.\n */\n countryCode?: string | null;\n website?: string;\n openTo?: string[];\n preferredWorkplace?: string[];\n availableFromUtc?: number;\n availableToUtc?: number;\n pdsProvider?: PdsProviderInfo | null;\n claimed: boolean;\n /**\n * User-set opt-out flag from `id.sifa.profile.self.discoverable`. When\n * `false`, the rendering app emits `noindex` and excludes the page from\n * sitemaps. Absent means default-true (current behavior for existing\n * records that predate this field).\n */\n discoverable?: boolean;\n isOwnProfile?: boolean;\n createdAt?: string;\n trustStats?: TrustStat[];\n verifiedAccounts?: VerifiedAccount[];\n activeApps?: ActiveApp[];\n blueskyVerified?: boolean;\n blueskyVerifiedAt?: string | null;\n /**\n * Every verification the account holds, across all recognized providers\n * (Bluesky and firehose-sourced ones like mu). Supersedes the Bluesky-only\n * `blueskyVerified` pair for badge rendering. Absent on older API responses.\n */\n verificationBadges?: AccountVerification[];\n followersCount: number;\n followingCount: number;\n connectionsCount: number;\n atprotoFollowersCount?: number;\n positions: ProfilePosition[];\n education: ProfileEducation[];\n skills: ProfileSkill[];\n certifications?: ProfileCertification[];\n projects?: ProfileProject[];\n publications?: ProfilePublication[];\n /**\n * Co-authors on imported publications that resolve to a Sifa account.\n *\n * Owner-only, and absent rather than empty for every other viewer, so a\n * consumer cannot tell \"no suggestions\" from \"not yours\". Join to a\n * publication contributor by `orcidId`.\n */\n authorSuggestions?: AuthorSuggestion[];\n volunteering?: ProfileVolunteering[];\n involvement?: ProfileInvolvement[];\n investments?: ProfileInvestment[];\n honors?: ProfileHonor[];\n languages?: ProfileLanguage[];\n courses?: ProfileCourse[];\n presentations?: ProfilePresentation[];\n presentationDeliveries?: ProfilePresentationDelivery[];\n externalAccounts?: ExternalAccount[];\n}\n"],"mappings":";AAkrBO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { AgentRef } from '../schemas/shared.js';\nimport type { AccountVerification } from '../taxonomy/verification-providers.js';\n\nexport interface LocationValue {\n city?: string;\n /** community.lexicon.location.address field -- preferred over `city`. */\n locality?: string;\n region?: string;\n country: string;\n countryCode?: string;\n postalCode?: string;\n geonameId?: number;\n}\n\nexport interface SkillRef {\n uri: string;\n}\n\nexport interface ProfilePosition {\n rkey: string;\n /**\n * Optional: omitted for self-employed / freelance / independent positions.\n * The lexicon and the record schema already make company optional.\n */\n company?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * picks an organization from the resolver typeahead. Absent for free-text or\n * independent positions (#159).\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked company (#240),\n * computed by the AppView at read time. Render this over `company` for a\n * linked position, so a name correction reaches every linked profile without\n * a PDS write. Absent for free-text or unresolved positions (fall back to\n * `company`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n /**\n * Company-page slug for a durably-linked position, resolved by the AppView at\n * read time alongside `entityName` (#159). Lets a consumer link the company\n * name to its `/c/{domain}` page without re-resolving `entityRef`. `domain` is\n * the readable form, `publicId` the durable fallback; build the link as\n * `/c/${companyDomain ?? companyPublicId}`. Both absent for free-text /\n * unlinked positions.\n */\n companyDomain?: string;\n companyPublicId?: string;\n title: string;\n description?: string;\n startedAt: string;\n endedAt?: string;\n location?: LocationValue | null;\n employmentType?: string;\n /**\n * Party this role is held on behalf of, when the person represents someone else --\n * most often a fund whose board seat this is. A disclosure rather than a role type,\n * so it is a separate field from `employmentType`. Absent for independent roles.\n */\n onBehalfOf?: string;\n /** DID of the represented party, when known. May be an organization or a person. */\n onBehalfOfDid?: string;\n /** Portable entity identifier for the represented party (Wikidata/ROR/LEI URI). */\n onBehalfOfEntityRef?: string;\n workplaceType?: string;\n skills?: SkillRef[];\n linkedSkills?: ProfileSkill[];\n primary?: boolean;\n hidden?: boolean;\n /**\n * Colleagues who confirmed this position (`id.sifa.defs#colleague`), as\n * resolved by the AppView. Descriptive only: who said so, never a score.\n * Absent when nobody has confirmed it.\n */\n confirmations?: PositionConfirmations;\n /**\n * What the signed-in viewer can do with this position. `available` means\n * they have a reason to know it (an overlapping position at the same\n * organization, or they are the organization's account) and have not\n * confirmed it yet; `confirmed` means they already did and can withdraw.\n * Absent for anonymous viewers, the owner, and anyone without a reason to know.\n */\n viewerConfirmation?: PositionViewerConfirmation;\n /**\n * The organization's own attestation of this position (sifa-workspace#622),\n * as indexed by the AppView. The strongest tier: only the org's account can\n * produce it. Absent when no attestation covers the position; absence is\n * not a negative signal.\n */\n orgVerification?: PositionOrgVerification;\n}\n\n/** An organization attestation covering one position, as returned by the AppView. */\nexport interface PositionOrgVerification {\n /** DID of the attesting organization's account. */\n orgDid: string;\n status: 'current' | 'past';\n /** How the attestation was written: by hand or by directory sync. */\n source: 'manual' | 'directory';\n /** When the organization attested it (the record's createdAt, ISO). */\n verifiedAt: string;\n /** The attested period, when the record carries one (YYYY-MM or YYYY-MM-DD). */\n startedAt: string | null;\n endedAt: string | null;\n /** The record's title or start-month snapshot no longer matches the live position. */\n stale: boolean;\n /** AT-URI of the attestation record in the organization's repository. */\n attestationUri: string;\n}\n\n/** Confirmations of one position, as returned by the AppView. */\nexport interface PositionConfirmations {\n /** Number of visible confirmers. Equal to `confirmers.length`. */\n count: number;\n /** The confirmers, oldest first. Blocked and suppressed accounts are left out. */\n confirmers: ActorCard[];\n}\n\n/** See {@link ProfilePosition.viewerConfirmation}. */\nexport type PositionViewerConfirmation = 'available' | 'confirmed';\n\nexport interface ProfileEducation {\n rkey: string;\n institution: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * links the institution to a resolved organization (#159/#241). Absent for\n * free-text entries. Mirrors `ProfilePosition.entityRef`; the AppView sends it\n * for display (the \"Linked\" badge).\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked institution (#252),\n * computed by the AppView at read time. Render this over `institution` for a\n * linked entry, so a name correction reaches every linked profile without a\n * PDS write. Absent for free-text or unresolved entries (fall back to\n * `institution`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n degree?: string;\n fieldOfStudy?: string;\n /** European Qualifications Framework level, 1 to 8 (8 = doctoral). */\n eqfLevel?: number;\n description?: string;\n activities?: string;\n startedAt?: string;\n endedAt?: string;\n hidden?: boolean;\n /** User-flagged primary education entry, surfaced in the Highlights block. */\n primary?: boolean;\n}\n\nexport interface ProfileSkill {\n rkey: string;\n name: string;\n /**\n * CID of the skill record, needed as a strongRef when endorsing it. Often\n * absent: only the firehose carries a CID, so a skill added moments ago has\n * none indexed yet. Pass it to `createEndorsement` when present and omit it\n * otherwise -- the AppView resolves it from the owner's PDS.\n */\n cid?: string;\n category?: string;\n /**\n * Freeform user-defined grouping label nested under `category` (e.g.\n * \"Frontend\", \"Backend\"). No known values; renderers decide the display\n * label. See `groupSkillsBySubCategory`.\n */\n subCategory?: string;\n endorsementCount?: number;\n endorsed?: boolean;\n /**\n * Names this skill was endorsed under, where they differ from what it is\n * called now. Absent when nothing has drifted.\n *\n * A rename keeps the same record, so endorsements follow it and stay\n * counted. Showing the original name is what keeps that honest: a reader can\n * see that a skill now called one thing was vouched for as another, instead\n * of the rename quietly laundering the endorsement.\n */\n endorsedAs?: string[];\n activityBacked?: boolean;\n}\n\nexport interface SkillSuggestion {\n canonicalName: string;\n slug: string;\n category: string;\n}\n\nexport interface Endorsement {\n endorserDid: string;\n endorserHandle: string;\n endorserDisplayName?: string;\n endorserAvatar?: string;\n comment?: string;\n relationshipContext?: string;\n createdAt: string;\n}\n\nexport interface EndorsementData {\n skillRkey: string;\n comment?: string;\n relationshipContext?: string;\n}\n\nexport interface ProfileLocation {\n rkey: string;\n type: string;\n label?: string | null;\n isPrimary: boolean;\n locationCountry?: string | null;\n locationRegion?: string | null;\n /** Legacy alias for `locationLocality`; emitted by sifa-api during the additive response window. */\n locationCity?: string | null;\n /** community.lexicon.location.address field name -- prefer over `locationCity`. */\n locationLocality?: string | null;\n countryCode?: string | null;\n location?: string | null;\n}\n\nexport interface ProfileCertification {\n rkey: string;\n name: string;\n /**\n * Issuing organization. The write contract names this field `authority`\n * everywhere (record schema, DB column, PDS record); the AppView read view\n * emits `authority` as the canonical field (#249). Optional during the\n * deprecation window while consumers migrate off the legacy `issuingOrg`\n * alias below.\n */\n authority?: string;\n /**\n * @deprecated Legacy read-view alias for {@link authority} (#249). Carries the\n * same value; will be dropped once web + SDK consumers read `authority`.\n */\n issuingOrg?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the issuing\n * organization to a resolved entity (#159/#241). Absent for free-text entries.\n * Mirrors `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked issuing organization\n * (#252), computed by the AppView at read time. Render this over `authority`\n * for a linked entry. Absent for free-text or unresolved entries (fall back to\n * `authority`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n issueDate?: string;\n expiryDate?: string;\n credentialUrl?: string;\n hidden?: boolean;\n}\n\n/**\n * A calendar event a project organized or hosted, with display fields the\n * AppView resolved from the referenced community.lexicon.calendar.event.\n */\nexport interface ProjectEventView {\n /** AT-URI of the community.lexicon.calendar.event. */\n uri: string;\n /** The user's role at this occurrence, when it differs from the project's role. */\n role?: string;\n name?: string;\n /** ISO datetime. Use the date part for display; the time is not meaningful for past events. */\n startsAt?: string;\n /** community.lexicon.calendar.event mode token. */\n mode?: string;\n locality?: string;\n /** ISO 3166-1 alpha-2. */\n country?: string;\n url?: string;\n}\n\nexport interface ProfileProject {\n rkey: string;\n name: string;\n /** The user's own role on the project (#596), e.g. Maintainer. */\n role?: string;\n description?: string;\n url?: string;\n startDate?: string;\n endDate?: string;\n /** Other people named on this project, hydrated from the stored DIDs. */\n members?: ProjectMemberCard[];\n /**\n * AT-URI of the same project as recorded elsewhere, when this entry\n * duplicates another person's. Set so consumers can tell the two describe one\n * project; both still render from their own owner's record.\n */\n /** AT-URI of the same record on another person's profile, when they keep one. */\n sameAs?: string;\n /** Calendar events this project organized or hosted, newest first. */\n events?: ProjectEventView[];\n hidden?: boolean;\n /** User-flagged primary project, surfaced in the Highlights block. Ongoing only. */\n primary?: boolean;\n}\n\nexport interface PublicationContributor {\n name: string;\n orcidId?: string;\n did?: string;\n handle?: string;\n}\n\n/**\n * A co-author an importer produced that the profile owner can offer to link to\n * a Sifa account.\n *\n * Matched on verified ORCID iD only, never on name: \"A. Example\", \"Alice\n * Example\", and \"Example, A.\" are one person, and \"J. Smith\" is four hundred.\n *\n * A suggestion, never a claim. Nothing reaches any repository until the owner\n * acts, which is what makes ORCID re-syncing safe: matching writes nothing, so\n * a re-sync cannot generate a confirmation request.\n */\nexport interface AuthorSuggestion {\n /** ORCID iD the match was made on. The join key back to a contributor. */\n orcidId: string;\n did: string;\n handle: string;\n /** Display name on the matched account, for showing what is being proposed. */\n displayName?: string;\n}\n\n/**\n * A typed link from a work to another version or form of it\n * (`id.sifa.defs#relatedIdentifier`). `relationType` uses the DataCite\n * vocabulary, e.g. `IsPreprintOf` on a preprint pointing at its published\n * version. `identifierType` is `DOI` (the default when absent), `AT-URI` or `URL`.\n */\nexport interface RelatedIdentifier {\n identifier: string;\n identifierType?: string;\n relationType: string;\n}\n\nexport interface ProfilePublication {\n rkey: string;\n title: string;\n subtitle?: string;\n publisher?: string;\n date?: string;\n url?: string;\n description?: string;\n source?: 'sifa' | 'standard' | 'orcid';\n doi?: string;\n type?: string;\n typeLabel?: string;\n contributors?: PublicationContributor[];\n verified?: boolean;\n verifiedVia?: string;\n orcidPutCode?: number;\n hidden?: boolean;\n /** User-flagged primary publication, surfaced in the Highlights block. */\n primary?: boolean;\n orcidCorroborated?: boolean;\n pendingVerification?: boolean;\n appId?: string;\n /**\n * AT-URI of the parent `site.standard.publication` for Standard.site\n * articles — the subscribable unit. Used to group articles by publication\n * on the profile. Undefined for Sifa/ORCID publications.\n */\n publicationUri?: string | null;\n /** Canonical publication origin — the subscribe / link-out target. */\n publicationUrl?: string | null;\n /** Publication display name for the group header (falls back to host). */\n publicationName?: string | null;\n /**\n * Cover image URL for Standard.site articles — the document's `coverImage`\n * blob (CDN-served), falling back to the article page's og:image. Undefined\n * for Sifa/ORCID publications, null when none could be resolved.\n */\n image?: string | null;\n /**\n * Other versions or forms of this work: relations declared on the record\n * plus, for a DOI, those registered with DataCite or Crossref (#590). Feed\n * to `groupPublicationVersions` to fold a preprint under its published version.\n */\n relatedIdentifiers?: RelatedIdentifier[];\n /**\n * Times this work has been cited, as counted by OpenAlex for its DOI. Only\n * sent when the profile owner turned citation counts on and OpenAlex knows\n * the DOI. A display value, never a ranking signal.\n */\n citationCount?: number;\n /** OpenAlex work id (`W…`) the count belongs to; see `openAlexWorkUrl`. */\n openAlexId?: string;\n}\n\nexport interface ProfileVolunteering {\n rkey: string;\n organization: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the\n * organization to a resolved entity (#159/#241). Absent for free-text entries.\n * Mirrors `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked organization (#252),\n * computed by the AppView at read time. Render this over `organization` for a\n * linked entry. Absent for free-text or unresolved entries (fall back to\n * `organization`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n role?: string;\n cause?: string;\n startDate?: string;\n endDate?: string;\n description?: string;\n hidden?: boolean;\n}\n\nexport interface ProfileHonor {\n rkey: string;\n title: string;\n issuer?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the issuer to a\n * resolved entity (#159/#241). Absent for free-text entries. Mirrors\n * `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked issuer (#252),\n * computed by the AppView at read time. Render this over `issuer` for a linked\n * entry. Absent for free-text or unresolved entries (fall back to `issuer`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n date?: string;\n description?: string;\n hidden?: boolean;\n}\n\n/**\n * One proof link on an involvement record, as served by the AppView. Mirrors\n * `id.sifa.defs#artifactLink`, plus the computed rung-2 verification signal.\n */\nexport interface ProfileInvolvementLink {\n url: string;\n kind?: string;\n label?: string;\n /**\n * Rung-2 cross-ref: true when the link host matches one of the owner's\n * *verified* `externalAccount` records (GitHub, GitLab, ORCID, ...).\n * Computed by the AppView; deterministic host match, no new primitive.\n */\n verified?: boolean;\n /**\n * Platform token of the matched verified external account (e.g.\n * `id.sifa.defs#platformGithub`), for the badge label. Absent when\n * `verified` is not true.\n */\n verifiedPlatform?: string;\n}\n\n/**\n * An involvement entry as served by the AppView: an `id.sifa.profile.involvement`\n * record, or a mapped legacy `id.sifa.profile.volunteering` record (`legacy`),\n * grouped in the UI by `kind` via the SDK's involvement-kind taxonomy.\n */\n/** One artifact link on an investment (round announcement, portfolio page, filing). */\nexport interface ProfileInvestmentLink {\n url: string;\n kind?: string;\n label?: string;\n}\n\n/** A capital position: money the person put in. Roles with duties are positions. */\nexport interface ProfileInvestment {\n rkey: string;\n /** For a limited-partner entry this names the fund, not a portfolio company. */\n company: string;\n companyDid?: string;\n entityRef?: string;\n /** Resolved canonical name of the linked company. Render over `company` when present. */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n /** How the capital went in. Angel, syndicate member or LP -- never GP. */\n role?: string;\n /** The company's funding stage at the time of the investment, not its stage today. */\n stage?: string;\n /** active / exited / written off / undisclosed. */\n status?: string;\n /** The vehicle the capital went through. Absent for a cheque in the person's own name. */\n via?: string;\n viaDid?: string;\n viaEntityRef?: string;\n /** Whole major currency units plus an ISO 4217 code. Absent unless the person opted in. */\n amount?: { value: number; currency: string };\n startedAt?: string;\n endedAt?: string;\n description?: string;\n links?: ProfileInvestmentLink[];\n hidden?: boolean;\n}\n\nexport interface ProfileInvolvement {\n rkey: string;\n /** Involvement-kind token; drives the display heading. Legacy rows map to charity. */\n kind: string;\n upstream?: string;\n upstreamDid?: string;\n upstreamUrl?: string;\n role?: string;\n description?: string;\n startedAt?: string;\n endedAt?: string;\n links?: ProfileInvolvementLink[];\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) written when the user\n * picks the upstream from the resolver typeahead. Absent for free-text or\n * one-off involvement.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked upstream, computed by\n * the AppView at read time. Render over `upstream` when present. Absent for\n * free-text or unresolved entries.\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n location?: LocationValue | null;\n skills?: SkillRef[];\n /** Skill records resolved from `skills`, for display. */\n linkedSkills?: ProfileSkill[];\n /**\n * True when this row is a mapped legacy `id.sifa.profile.volunteering` record\n * (no `kind`), rendered under \"Volunteering\". Editing it backfills to an\n * `involvement` record and deletes the legacy one.\n */\n legacy?: boolean;\n hidden?: boolean;\n /** User-flagged primary involvement, surfaced in the Highlights block. Ongoing only. */\n primary?: boolean;\n /** Other people named on this involvement, hydrated from the stored DIDs. */\n collaborators?: ProjectMemberCard[];\n /** AT-URI of the same involvement as recorded on another person's profile. */\n sameAs?: string;\n}\n\nexport type LanguageProficiency =\n 'elementary' | 'limited_working' | 'professional_working' | 'full_professional' | 'native';\n\nexport interface ProfileLanguage {\n rkey: string;\n language: string;\n proficiency?: LanguageProficiency;\n hidden?: boolean;\n}\n\nexport interface ProfileCourse {\n rkey: string;\n name: string;\n institution?: string;\n /**\n * Portable org entity identifier (Wikidata/ROR/LEI URI) linking the institution\n * to a resolved entity (#159/#241). Absent for free-text entries. Mirrors\n * `ProfilePosition.entityRef`; the AppView sends it for display.\n */\n entityRef?: string;\n /**\n * Resolved current canonical name of the durably-linked institution (#252),\n * computed by the AppView at read time. Render this over `institution` for a\n * linked entry. Absent for free-text or unresolved entries (fall back to\n * `institution`).\n */\n entityName?: string;\n /**\n * Canonical org reference (#511): a nested mirror of the flat\n * name / did / entityRef fields. Prefer it when present; the nested\n * shape wins over the flat fields (resolveAgentRef precedence).\n */\n agentRef?: AgentRef;\n number?: string;\n /** rkey of the associated certification, resolved from the course's\n * `credential` at-uri. Used to join the course to a certification in the\n * same profile payload (for the linked-credential date and link). */\n credentialRkey?: string;\n /** Date the course was completed, as an RFC 3339 datetime. Optional; the\n * editor collects month granularity (YYYY-MM). */\n completedAt?: string;\n /** `id.sifa.defs#courseRole` token. Absent means the user took the course. */\n role?: string;\n /** Teaching period of a taught or assisted course (YYYY, YYYY-MM or YYYY-MM-DD). */\n startedAt?: string;\n endedAt?: string;\n /** rkey of the position the course was part of (taught under it, or taken\n * as part of the job). The AppView resolves it from the record's `position`\n * at-uri when building the profile view. */\n positionRkey?: string;\n /** rkey of the education record the course was part of, resolved by the\n * AppView from the record's `education` at-uri. */\n educationRkey?: string;\n hidden?: boolean;\n}\n\n/** A related link on a presentation or delivery, as returned by the AppView. */\nexport interface PresentationLinkView {\n uri: string;\n label?: string;\n type?: string;\n}\n\n/**\n * Another person named on someone's record, as rendered by the AppView.\n *\n * `displayName` and `avatar` are present when the person's identity may be\n * shown -- i.e. when {@link actorShowsIdentity} holds (`confirmed` or\n * `claimed`). Otherwise the card is a bare handle with no identity attached and\n * no link to a profile: naming someone is a claim, and until they affirm it (or\n * hold a claimed Sifa account that can be notified of the claim) the claim must\n * not borrow their face.\n */\nexport interface ActorCard {\n did: string;\n handle: string;\n displayName?: string;\n avatar?: string;\n /**\n * True when Sifa has indexed this account at all -- including an unclaimed\n * atproto account seen via the firehose, which still renders at /p/<handle>.\n * Broader than {@link claimed}; not on its own a reason to show identity.\n */\n hasSifaProfile?: boolean;\n /**\n * True when the named person has a claimed Sifa account (has authenticated\n * via OAuth). A claimed account can be notified of a pending claim, so its\n * identity is shown even before confirmation -- see {@link actorShowsIdentity}.\n */\n claimed?: boolean;\n /** True once the named person has published a matching `id.sifa.confirmation`. */\n confirmed?: boolean;\n /**\n * True when the record was materially changed after being confirmed -- a\n * rename, or a changed role. The confirmation stands until withdrawn, but the\n * UI should say the claim has moved since it was affirmed.\n */\n confirmedStale?: boolean;\n}\n\n/** @deprecated Use {@link ActorCard}. Kept so existing co-speaker call sites keep compiling. */\nexport type CoSpeaker = ActorCard;\n\n/**\n * Roles shipped today. The lexicon declares these as `knownValues`, so the\n * field itself stays a plain string: a consumer meeting a role it does not\n * recognise should show it rather than discard it.\n *\n * Display only. A record living in someone else's repository cannot grant\n * write access to anything, and the UI must not imply that it does.\n */\nexport const PROJECT_ROLES = [\n 'id.sifa.defs#projectOwner',\n 'id.sifa.defs#projectCore',\n 'id.sifa.defs#projectContributor',\n] as const;\n\nexport type ProjectRole = (typeof PROJECT_ROLES)[number];\n\n/** A person named as a member of a project, with their role alongside the actor card. */\nexport interface ProjectMemberCard extends ActorCard {\n role?: string;\n title?: string;\n}\n\n/** An occasion on which a presentation was delivered (the AppView view-model). */\nexport interface ProfilePresentationDelivery {\n rkey: string;\n /** rkey of the parent presentation when this delivery references one. */\n presentationRkey?: string | null;\n /** Co-speakers at this occasion, hydrated from the stored DIDs. */\n coSpeakers?: CoSpeaker[];\n /** AT-URI of the same session as recorded on another person's profile. */\n sameAs?: string;\n title?: string | null;\n role?: string | null;\n eventName?: string | null;\n /** YYYY-MM-DD, or YYYY-MM / YYYY when the exact day is unknown. */\n date?: string | null;\n location?: string | null;\n locationCountry?: string | null;\n locationRegion?: string | null;\n locationLocality?: string | null;\n countryCode?: string | null;\n /** Full community.lexicon.calendar.event mode token. */\n mode?: string | null;\n /** Full community.lexicon.calendar.event status token. */\n status?: string | null;\n links?: PresentationLinkView[];\n /** at-uri of the linked calendar event, when present. */\n eventUri?: string | null;\n hidden?: boolean;\n}\n\n/** A reusable presentation with its deliveries grouped underneath (AppView view-model). */\nexport interface ProfilePresentation {\n rkey: string;\n title: string;\n description?: string | null;\n /** Duration in minutes: a fixed value (min only) or a range. */\n duration?: { minMinutes: number; maxMinutes?: number } | null;\n intendedAudiences?: string[];\n links?: PresentationLinkView[];\n /** at-uri of a long-form write-up (Leaflet / site.standard document). */\n writeupUri?: string | null;\n /** Resolved URL of the uploaded cover image, when present. */\n coverImageUrl?: string | null;\n hidden?: boolean;\n /** User-flagged primary talk, surfaced in the Highlights block. Talks only, not sessions. */\n primary?: boolean;\n deliveries?: ProfilePresentationDelivery[];\n}\n\nexport interface TrustStat {\n key: string;\n label: string;\n value: number;\n}\n\nexport interface ActiveApp {\n id: string;\n name: string;\n category: string;\n recentCount: number;\n latestRecordAt?: string | null;\n}\n\nexport interface VerifiedAccount {\n platform: string;\n identifier: string;\n url?: string;\n}\n\nexport interface ExternalAccountKeytraceClaim {\n rkey: string;\n claimedAt: string;\n}\n\nexport interface ExternalAccount {\n rkey: string;\n platform: string;\n url: string;\n label?: string;\n feedUrl?: string;\n primary?: boolean;\n verifiable: boolean;\n verified: boolean;\n verifiedVia?: string | null;\n source?: 'sifa' | 'keytrace' | 'keyoxide' | 'marque';\n hidden?: boolean;\n keytraceVerified?: boolean;\n keytraceClaim?: ExternalAccountKeytraceClaim;\n}\n\nexport interface FeedItem {\n title: string;\n excerpt: string;\n url: string;\n timestamp: string;\n source: string;\n}\n\nexport interface PdsProviderInfo {\n name: string;\n host: string;\n}\n\nexport interface ProfileIndustry {\n industry: string;\n domain?: string;\n}\n\nexport interface ProfileOverrideSource {\n headline?: string;\n about?: string;\n displayName?: string;\n avatarUrl?: string;\n}\n\n/**\n * A structured physical address on the org view. Mirrors\n * `community.lexicon.location.address`; every field is optional.\n */\nexport interface OrgAddressView {\n country: string | null;\n postalCode: string | null;\n region: string | null;\n locality: string | null;\n street: string | null;\n name: string | null;\n}\n\n/** A featured link on the org view. Both `name` and `url` are present. */\nexport interface OrgLinkView {\n name: string;\n url: string;\n}\n\n/**\n * A self-declared industry/domain pair on the org view. Mirrors the person\n * profile's industry/domain shape; `industry` is always present, `domain` is an\n * optional refinement (`null` when absent).\n */\nexport interface OrgIndustryView {\n industry: string;\n domain: string | null;\n}\n\n/**\n * The org-profile fields exposed on the profile resolve when the org rendering\n * floor is met. Narrow on purpose: `contact` is never included (not rendered\n * publicly); record URI/CID are internal. Mirrors sifa-api's `OrgProfileView`.\n */\nexport interface OrgProfileView {\n name: string;\n description: string | null;\n website: string | null;\n /** Blob CID (or resolved URL) of the org logo, when present. */\n logoBlob: string | null;\n entityRefs: string[] | null;\n addresses: OrgAddressView[] | null;\n /** Self-selected headcount range (declared bucket, never calculated). */\n companySize: string | null;\n companyType: string | null;\n links: OrgLinkView[] | null;\n /** Self-declared industry/domain pairs. */\n industries: OrgIndustryView[] | null;\n /** Self-declared founding date (year / YYYY-MM / YYYY-MM-DD). */\n founded: string | null;\n /** Self-declared \"also known as\" names / acronyms. */\n aliases: string[] | null;\n}\n\n/**\n * A company entity recognized purely from the handle's registrable domain\n * (#160 auto-recognize), independent of any org record. Present on the verdict\n * when `recognized` is true. `domain` is the handle's registrable domain and\n * round-trips through `/c/<domain>`; `publicId` is nullable because entities\n * minted before the public_id backfill have none.\n */\nexport interface RecognizedEntity {\n publicId: string | null;\n domain: string;\n name: string;\n}\n\n/**\n * Server-computed org rendering-floor verdict (#160), carried on the profile\n * resolve so clients need no extra round-trip. Read it via the `useOrgProfile`\n * hook.\n *\n * `isOrg` is the CLAIMED floor: true when the account has an\n * `id.sifa.org.profile` record AND its handle is a custom registrable domain\n * (the authoritative, PSL-backed check lives server-side).\n *\n * `recognized` is INDEPENDENT of `isOrg`: true when the handle's registrable\n * domain resolves to a known, non-suppressed, non-natural-person company entity\n * in Sifa's DB, even with no org record yet (auto-recognize known-company\n * domains). A known company that has not yet claimed is\n * `recognized: true, isOrg: false`; a claimed recognized company is both true.\n * Use it to treat a recognized-but-unclaimed company account as a company\n * (company onboarding, `/c/` routing) before it claims.\n */\nexport interface OrgFloorVerdict {\n isOrg: boolean;\n orgProfile?: OrgProfileView;\n recognized: boolean;\n /**\n * Whether the account's handle is a custom registrable apex domain, i.e.\n * eligible to CLAIM an org page (#306). Mirrors the `isBindableHandleDomain`\n * floor the api enforces at write time, surfaced so the `/claim` wizard can\n * gate on eligibility BEFORE the authority consent rather than failing the\n * final PDS write. Independent of `isOrg`/`recognized` -- purely the handle's\n * shape, so a `*.bsky.social` account reads false and a not-yet-claimed\n * custom domain reads true.\n *\n * Optional here (a tolerant reader): the api always emits it, but a profile\n * payload cached before this field shipped may omit it. Gate on the explicit\n * `customDomain === false` for the up-front block; treat absent as unknown and\n * let the api 403 stay the authoritative backstop -- never enforce on this\n * field alone.\n */\n customDomain?: boolean;\n /**\n * Whether the account also keeps a visible personal profile, from\n * `id.sifa.org.profile.personalProfileVisible`. True only for a claimed org\n * (`isOrg`) that opted in -- the sole-trader case, where one DID carries both\n * a person facet at `/p/` and a company facet at `/c/` and neither route\n * redirects to the other. Absent or false is the exclusive default: the\n * account presents solely as an organization and `/p/` redirects to `/c/`.\n */\n personalProfileVisible?: boolean;\n /**\n * Invariant (not encoded in the type, matching the flat wire shape the api\n * sends): present whenever `recognized` is true, absent when false. Callers\n * that read it after narrowing on `recognized === true` should still\n * defensively check, since the type does not enforce the pairing.\n */\n recognizedEntity?: RecognizedEntity;\n}\n\n/**\n * The account owner's answer to \"are you a person, a company, or both?\".\n *\n * `'person'` and `'company'` are Sifa-local overrides stored in\n * `account_render_overrides` (set via `POST /api/account/render-preference`).\n * `'both'` is NOT stored here -- it is the portable\n * `id.sifa.org.profile.personalProfileVisible` declaration in the account's own\n * PDS, so any AppView can evaluate it without asking Sifa. Resolve the combined\n * answer with `resolveAccountFacetMode`.\n */\nexport type AccountFacetMode = 'person' | 'company' | 'both';\n\nexport interface Profile {\n did: string;\n handle: string;\n /**\n * Sifa-local render override, absent when the account has never set one\n * (auto: today's recognition behaviour). `'person'` is the escape hatch for a\n * personal domain that Sifa catalogued as a company.\n */\n renderPreference?: 'person' | 'company' | null;\n /**\n * Org rendering-floor verdict (#160). Present on the profile resolve; absent\n * on payloads that predate the field. When `org.isOrg` is true the account\n * renders as an organization (`/c/`).\n */\n org?: OrgFloorVerdict;\n displayName?: string;\n /**\n * Given (first) name from `id.sifa.profile.self.givenName`. Schema.org\n * `Person.givenName`. Optional; absent for users who haven't filled in\n * structured name fields. Consumers wanting a rendered name should use\n * `formatStructuredName(givenName, familyName) ?? displayName ?? handle`.\n */\n givenName?: string;\n /**\n * Family (last) name from `id.sifa.profile.self.familyName`. Schema.org\n * `Person.familyName`. See `givenName` for fallback guidance.\n */\n familyName?: string;\n /**\n * Free-form phonetic respelling of the user's name from\n * `id.sifa.profile.self.namePronunciation` (e.g. `Foo-kuh`). Optional; a\n * native field with no `app.bsky.actor.profile` equivalent. Text only.\n */\n namePronunciation?: string;\n /**\n * Resolved URL of the name-pronunciation audio clip from\n * `id.sifa.profile.self.namePronunciationAudio`, served from the user's PDS\n * (`com.atproto.sync.getBlob`). Optional; absent when no clip is set.\n */\n namePronunciationAudioUrl?: string;\n avatar?: string;\n pronouns?: string;\n headline?: string;\n about?: string;\n hasHeadlineOverride?: boolean;\n hasAboutOverride?: boolean;\n hasDisplayNameOverride?: boolean;\n hasAvatarUrlOverride?: boolean;\n source?: ProfileOverrideSource;\n industries?: ProfileIndustry[];\n location?: LocationValue | null;\n locations?: ProfileLocation[];\n /**\n * @deprecated Flat location field emitted at the response root during the\n * additive response window for `community.lexicon.location.address`.\n * Prefer the structured `locations[]` array (use the entry where\n * `isPrimary` is true).\n */\n locationCountry?: string | null;\n /**\n * @deprecated See `locationCountry`. Prefer `locations[].locationRegion`.\n */\n locationRegion?: string | null;\n /**\n * @deprecated Legacy alias for `locationLocality`; emitted alongside it\n * during the additive response window. Prefer `locations[].locationLocality`.\n */\n locationCity?: string | null;\n /**\n * @deprecated community.lexicon.location.address field name. Prefer\n * `locations[].locationLocality`.\n */\n locationLocality?: string | null;\n /**\n * @deprecated See `locationCountry`. Prefer `locations[].countryCode`.\n */\n countryCode?: string | null;\n website?: string;\n openTo?: string[];\n preferredWorkplace?: string[];\n availableFromUtc?: number;\n availableToUtc?: number;\n pdsProvider?: PdsProviderInfo | null;\n claimed: boolean;\n /**\n * User-set opt-out flag from `id.sifa.profile.self.discoverable`. When\n * `false`, the rendering app emits `noindex` and excludes the page from\n * sitemaps. Absent means default-true (current behavior for existing\n * records that predate this field).\n */\n discoverable?: boolean;\n isOwnProfile?: boolean;\n createdAt?: string;\n trustStats?: TrustStat[];\n verifiedAccounts?: VerifiedAccount[];\n activeApps?: ActiveApp[];\n blueskyVerified?: boolean;\n blueskyVerifiedAt?: string | null;\n /**\n * Every verification the account holds, across all recognized providers\n * (Bluesky and firehose-sourced ones like mu). Supersedes the Bluesky-only\n * `blueskyVerified` pair for badge rendering. Absent on older API responses.\n */\n verificationBadges?: AccountVerification[];\n followersCount: number;\n followingCount: number;\n connectionsCount: number;\n atprotoFollowersCount?: number;\n positions: ProfilePosition[];\n education: ProfileEducation[];\n skills: ProfileSkill[];\n certifications?: ProfileCertification[];\n projects?: ProfileProject[];\n publications?: ProfilePublication[];\n /**\n * Co-authors on imported publications that resolve to a Sifa account.\n *\n * Owner-only, and absent rather than empty for every other viewer, so a\n * consumer cannot tell \"no suggestions\" from \"not yours\". Join to a\n * publication contributor by `orcidId`.\n */\n authorSuggestions?: AuthorSuggestion[];\n volunteering?: ProfileVolunteering[];\n involvement?: ProfileInvolvement[];\n investments?: ProfileInvestment[];\n honors?: ProfileHonor[];\n languages?: ProfileLanguage[];\n courses?: ProfileCourse[];\n presentations?: ProfilePresentation[];\n presentationDeliveries?: ProfilePresentationDelivery[];\n externalAccounts?: ExternalAccount[];\n}\n"],"mappings":";AA0rBO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- import { z as PresentationLinkView, b as PdsProviderInfo, X as SkillSuggestion } from './index-BFdNI6jA.js';
1
+ import { z as PresentationLinkView, b as PdsProviderInfo, X as SkillSuggestion } from './index-DAiJZvPg.js';
2
2
  import { a as AccountVerification } from './verification-providers-7il3kPQS.js';
3
3
  import { z } from 'zod';
4
4
 
@@ -187,6 +187,10 @@ interface PublicationView {
187
187
  identifierType?: string;
188
188
  relationType: string;
189
189
  }[];
190
+ /** OpenAlex citation count, present only when the owner opted in. */
191
+ citationCount?: number;
192
+ /** OpenAlex work id (`W…`) the count belongs to. */
193
+ openAlexId?: string;
190
194
  }
191
195
  interface CourseView {
192
196
  rkey: string;
@@ -1,4 +1,4 @@
1
- import { z as PresentationLinkView, b as PdsProviderInfo, X as SkillSuggestion } from './index-BzkaABDb.cjs';
1
+ import { z as PresentationLinkView, b as PdsProviderInfo, X as SkillSuggestion } from './index-k6tBrbEU.cjs';
2
2
  import { a as AccountVerification } from './verification-providers-7il3kPQS.cjs';
3
3
  import { z } from 'zod';
4
4
 
@@ -187,6 +187,10 @@ interface PublicationView {
187
187
  identifierType?: string;
188
188
  relationType: string;
189
189
  }[];
190
+ /** OpenAlex citation count, present only when the owner opted in. */
191
+ citationCount?: number;
192
+ /** OpenAlex work id (`W…`) the count belongs to. */
193
+ openAlexId?: string;
190
194
  }
191
195
  interface CourseView {
192
196
  rkey: string;
@@ -1,10 +1,10 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { a0 as SifaApiConfig, a1 as ApiFetchOptions, a3 as WriteResult, o as ProfileView, a2 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-Dl-uk0Ds.js';
3
+ import { a0 as SifaApiConfig, a1 as ApiFetchOptions, a3 as WriteResult, o as ProfileView, a2 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-CI24asgo.js';
4
4
  import * as _tanstack_react_query from '@tanstack/react-query';
5
5
  import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
6
- import { c as Profile, d as ProfilePosition, W as SkillRef, p as ExternalAccount, X as SkillSuggestion, s as OrgFloorVerdict } from './index-BFdNI6jA.js';
7
- import { s as sifaQueryKeys, aF as RefreshPdsResult, aY as UpdateProfileOverrideInput, aZ as UpdateProfileSelfInput, a_ as UploadAvatarResult, a$ as UploadPronunciationAudioResult, ap as PrimarySection, aR as SubCategoryBulkResult, au as ProfileLocationInput, p as ExternalAccountInput, n as CreateExternalAccountResult, b0 as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, $ as GivenConfirmation, ao as PendingConfirmationsPage, aa as InboxCounts, o as DismissUnlinkedPositionInput, aW as UnlinkedPositionsResult, aq as ProfileCompleteness, aE as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, a9 as HideProfileItemInput, a4 as HiddenActivityItem, a8 as HideActivityItemInput, aU as UnhideActivityItemInput, f as ActivityPreferences, aP as SiteActivityPresetResponse, aX as UpdateActivityPreferencesInput, aQ as StatsResponse, i as AppRegistryEntry, a5 as HiddenApp, b as AccountSummary, q as FeaturedProfile, aO as SimilarProfile, N as FetchSuggestionsOptions, aT as SuggestionsResponse, S as FollowUserResult, x as FetchFollowListOptions, P as FollowListPage, Y as FollowingResponse, z as FetchFollowingFeedOptions, W as FollowingFeedResponse, X as FollowingFeedVersion, y as FetchFollowProfilePageOptions, R as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, t as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a3 as HeatmapResponse, ac as MyGithubPullRequestsResponse, A as AccountCheckResult, aD as ReactionStatus, aC as ReactionResult, aB as ReactionError, aM as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aH as ResetProfileResult, b1 as WipePreview, aG as RepoDeleteInput, ae as OrgClaimResult, ak as OrgProfileUpdateResult, af as OrgDomainChallengeResult, ag as OrgDomainVerifyResult, ah as OrgNotificationEmailAddResult, ai as OrgNotificationEmailRemoveResult } from './org-aUopODEW.js';
6
+ import { c as Profile, d as ProfilePosition, W as SkillRef, p as ExternalAccount, X as SkillSuggestion, s as OrgFloorVerdict } from './index-DAiJZvPg.js';
7
+ import { s as sifaQueryKeys, aG as RefreshPdsResult, aZ as UpdateProfileOverrideInput, a_ as UpdateProfileSelfInput, a$ as UploadAvatarResult, b0 as UploadPronunciationAudioResult, aq as PrimarySection, aS as SubCategoryBulkResult, av as ProfileLocationInput, p as ExternalAccountInput, n as CreateExternalAccountResult, b4 as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a0 as GivenConfirmation, ap as PendingConfirmationsPage, ab as InboxCounts, o as DismissUnlinkedPositionInput, aX as UnlinkedPositionsResult, ar as ProfileCompleteness, aF as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, aa as HideProfileItemInput, a5 as HiddenActivityItem, a9 as HideActivityItemInput, aV as UnhideActivityItemInput, f as ActivityPreferences, aQ as SiteActivityPresetResponse, aY as UpdateActivityPreferencesInput, aR as StatsResponse, i as AppRegistryEntry, a6 as HiddenApp, b as AccountSummary, q as FeaturedProfile, aP as SimilarProfile, N as FetchSuggestionsOptions, aU as SuggestionsResponse, T as FollowUserResult, x as FetchFollowListOptions, Q as FollowListPage, Z as FollowingResponse, z as FetchFollowingFeedOptions, X as FollowingFeedResponse, Y as FollowingFeedVersion, y as FetchFollowProfilePageOptions, S as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, t as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a4 as HeatmapResponse, ad as MyGithubPullRequestsResponse, A as AccountCheckResult, aE as ReactionStatus, aD as ReactionResult, aC as ReactionError, aN as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aI as ResetProfileResult, b5 as WipePreview, aH as RepoDeleteInput, af as OrgClaimResult, al as OrgProfileUpdateResult, ag as OrgDomainChallengeResult, ah as OrgDomainVerifyResult, ai as OrgNotificationEmailAddResult, aj as OrgNotificationEmailRemoveResult, b1 as UserSettings } from './user-settings-Qwi6wSnK.js';
8
8
  import { z } from 'zod';
9
9
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, n as EntitySelectResponse, l as EntitySelectRequest, r as FeatureFlag } from './follow-profile-ceqefXAw.js';
10
10
  import { O as OrgClaimRequestInput, h as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, d as OrgDomainVerifyRequestInput, f as OrgNotificationEmailRequestInput } from './org-settings-BShvhyFp.js';
@@ -1107,4 +1107,24 @@ declare function useRemoveOrgNotificationEmail(options?: Omit<UseMutationOptions
1107
1107
  email: string;
1108
1108
  }, unknown>;
1109
1109
 
1110
- export { useAppsRegistry as $, type AddFeatureAllowlistVariables as A, VerificationLogSchema as B, type CreateOrgAttestationInput as C, type DeleteReactionVariables as D, createOrgAttestation as E, type FetchOrgAttestationOptions as F, fetchAttestationRequests as G, fetchOrgAttestations as H, fetchVerificationLog as I, offboardOrgAttestation as J, rejectAttestationRequest as K, requestEmploymentConfirmation as L, revokeOrgAttestation as M, useAccounts as N, type OrgAttestation as O, type PositionSkillLinkVariables as P, useActivityFeed as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useActivityPreferences as T, type UnfollowVariables as U, VERIFICATION_EVENT_KINDS as V, useActivityTeaser as W, useAddFeatureAllowlist as X, useAddOrgNotificationEmail as Y, useAdminReviewQueues as Z, useAppAccountCheck as _, type AttestationRequest as a, useOffboardOrgAttestation as a$, useAtFundLink as a0, useAttestationRequests as a1, useBlueskySuggestions as a2, useBulkHideProfileItems as a3, useBulkHideStandardPublications as a4, useBulkUnhideProfileItems as a5, useBulkUnhideStandardPublications as a6, useCanonicalSkillSearch as a7, useCastRoadmapVote as a8, useCreateConfirmation as a9, useFeatureAllowlist as aA, useFeaturedProfile as aB, useFollow as aC, useFollowers as aD, useFollowing as aE, useFollowingFeed as aF, useFollowingFeedVersion as aG, useFollowingList as aH, useGetProfileView as aI, useGivenConfirmations as aJ, useHeatmapData as aK, useHiddenActivityItems as aL, useHiddenApps as aM, useHideActivityItem as aN, useHideKeytraceClaim as aO, useHideOrcidPublication as aP, useHideProfileItem as aQ, useHideSifaPublication as aR, useHideStandardPublication as aS, useImportSearchEntities as aT, useInboxCounts as aU, useLinkSkillToPosition as aV, useMintEntityDomain as aW, useMutuals as aX, useMyGithubPullRequests as aY, useMyRoadmapVotes as aZ, useNetworkStreamCount as a_, useCreateEducation as aa, useCreateEndorsement as ab, useCreateExternalAccount as ac, useCreateOrgAttestation as ad, useCreatePosition as ae, useCreateProfileLocation as af, useCreateReaction as ag, useCreateRecord as ah, useCreateSkill as ai, useDebouncedValue as aj, useDeleteAccount as ak, useDeleteAvatarOverride as al, useDeleteEducation as am, useDeleteExternalAccount as an, useDeleteNamePronunciationAudio as ao, useDeletePosition as ap, useDeleteProfileLocation as aq, useDeleteReaction as ar, useDeleteRecord as as, useDeleteRepoRecords as at, useDeleteSkill as au, useDismissConfirmation as av, useDismissUnlinkedPosition as aw, useEndorsementCount as ax, useEntitySearch as ay, useExternalAccounts as az, AttestationRequestSchema as b, useVerifyExternalAccount as b$, useOrgAttestations as b0, useOrgClaim as b1, useOrgDomainChallenge as b2, useOrgDomainVerify as b3, useOrgProfile as b4, usePendingConfirmations as b5, useProfile as b6, useProfileCompleteness as b7, useReactionStatus as b8, useRefreshOrcidPublications as b9, useUnfollow as bA, useUnhideActivityItem as bB, useUnhideKeytraceClaim as bC, useUnhideOrcidPublication as bD, useUnhideProfileItem as bE, useUnhideSifaPublication as bF, useUnhideStandardPublication as bG, useUnlinkSkillFromPosition as bH, useUnlinkedPositions as bI, useUnrevealMarqueDomain as bJ, useUnsetExternalAccountPrimary as bK, useUnsetPositionPrimary as bL, useUnsetSectionPrimary as bM, useUpdateActivityPreferences as bN, useUpdateEducation as bO, useUpdateExternalAccount as bP, useUpdateOrgProfile as bQ, useUpdatePosition as bR, useUpdateProfileLocation as bS, useUpdateProfileOverride as bT, useUpdateProfileSelf as bU, useUpdateRecord as bV, useUpdateSkill as bW, useUpdateSkillSubCategories as bX, useUploadAvatar as bY, useUploadNamePronunciationAudio as bZ, useVerificationLog as b_, useRefreshPds as ba, useRejectAttestationRequest as bb, useRemoveFeatureAllowlist as bc, useRemoveOrgNotificationEmail as bd, useRepoInventory as be, useRequestEmploymentConfirmation as bf, useResetProfile as bg, useResolveEntityDomain as bh, useRetractRoadmapVote as bi, useRevealMarqueDomain as bj, useRevokeConfirmation as bk, useRevokeOrgAttestation as bl, useRoadmapVotes as bm, useSearchFilters as bn, useSearchProfiles as bo, useSelectEntity as bp, useSetExternalAccountPrimary as bq, useSetPositionPrimary as br, useSetSectionPrimary as bs, useSifaConfig as bt, useSimilarProfiles as bu, useSiteActivityPreset as bv, useSkillSuggestions as bw, useStats as bx, useSuggestionCount as by, useSuggestions as bz, type AttestationStatus as c, useWipePreview as c0, useSearchCompanies as c1, type CreateOrgAttestationResult as d, type CreateReactionVariables as e, type CreateRecordVariables as f, type DeleteRecordVariables as g, type FetchVerificationLogOptions as h, type FollowVariables as i, OrgAttestationSchema as j, type RequestEmploymentConfirmationInput as k, type RequestEmploymentConfirmationResult as l, type SifaProviderProps as m, type UpdateEducationVariables as n, type UpdateExternalAccountVariables as o, type UpdatePositionVariables as p, type UpdateProfileLocationVariables as q, type UpdateRecordVariables as r, type UpdateSkillSubCategoriesVariables as s, type UpdateSkillVariables as t, type UseEntitySearchOptions as u, type UseMyGithubPullRequestsParams as v, type VerificationEventKind as w, type VerificationLog as x, type VerificationLogEntry as y, VerificationLogEntrySchema as z };
1110
+ /** The signed-in user's account preferences; `null` when signed out. */
1111
+ declare function useUserSettings(options?: Omit<UseQueryOptions<UserSettings | null, Error, UserSettings | null, ReturnType<typeof sifaQueryKeys.userSettings.all>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<{
1112
+ respectBskyBlocks: boolean;
1113
+ autoLinkCompanies: boolean;
1114
+ showCitationCounts: boolean;
1115
+ } | null, Error>;
1116
+ /**
1117
+ * Save one or more preferences, then write the stored result into the
1118
+ * settings cache. A failed save resolves to `null` and leaves the cache as is.
1119
+ */
1120
+ declare function useUpdateUserSettings(): _tanstack_react_query.UseMutationResult<{
1121
+ respectBskyBlocks: boolean;
1122
+ autoLinkCompanies: boolean;
1123
+ showCitationCounts: boolean;
1124
+ } | null, Error, Partial<{
1125
+ respectBskyBlocks: boolean;
1126
+ autoLinkCompanies: boolean;
1127
+ showCitationCounts: boolean;
1128
+ }>, unknown>;
1129
+
1130
+ export { useAppsRegistry as $, type AddFeatureAllowlistVariables as A, VerificationLogSchema as B, type CreateOrgAttestationInput as C, type DeleteReactionVariables as D, createOrgAttestation as E, type FetchOrgAttestationOptions as F, fetchAttestationRequests as G, fetchOrgAttestations as H, fetchVerificationLog as I, offboardOrgAttestation as J, rejectAttestationRequest as K, requestEmploymentConfirmation as L, revokeOrgAttestation as M, useAccounts as N, type OrgAttestation as O, type PositionSkillLinkVariables as P, useActivityFeed as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useActivityPreferences as T, type UnfollowVariables as U, VERIFICATION_EVENT_KINDS as V, useActivityTeaser as W, useAddFeatureAllowlist as X, useAddOrgNotificationEmail as Y, useAdminReviewQueues as Z, useAppAccountCheck as _, type AttestationRequest as a, useOffboardOrgAttestation as a$, useAtFundLink as a0, useAttestationRequests as a1, useBlueskySuggestions as a2, useBulkHideProfileItems as a3, useBulkHideStandardPublications as a4, useBulkUnhideProfileItems as a5, useBulkUnhideStandardPublications as a6, useCanonicalSkillSearch as a7, useCastRoadmapVote as a8, useCreateConfirmation as a9, useFeatureAllowlist as aA, useFeaturedProfile as aB, useFollow as aC, useFollowers as aD, useFollowing as aE, useFollowingFeed as aF, useFollowingFeedVersion as aG, useFollowingList as aH, useGetProfileView as aI, useGivenConfirmations as aJ, useHeatmapData as aK, useHiddenActivityItems as aL, useHiddenApps as aM, useHideActivityItem as aN, useHideKeytraceClaim as aO, useHideOrcidPublication as aP, useHideProfileItem as aQ, useHideSifaPublication as aR, useHideStandardPublication as aS, useImportSearchEntities as aT, useInboxCounts as aU, useLinkSkillToPosition as aV, useMintEntityDomain as aW, useMutuals as aX, useMyGithubPullRequests as aY, useMyRoadmapVotes as aZ, useNetworkStreamCount as a_, useCreateEducation as aa, useCreateEndorsement as ab, useCreateExternalAccount as ac, useCreateOrgAttestation as ad, useCreatePosition as ae, useCreateProfileLocation as af, useCreateReaction as ag, useCreateRecord as ah, useCreateSkill as ai, useDebouncedValue as aj, useDeleteAccount as ak, useDeleteAvatarOverride as al, useDeleteEducation as am, useDeleteExternalAccount as an, useDeleteNamePronunciationAudio as ao, useDeletePosition as ap, useDeleteProfileLocation as aq, useDeleteReaction as ar, useDeleteRecord as as, useDeleteRepoRecords as at, useDeleteSkill as au, useDismissConfirmation as av, useDismissUnlinkedPosition as aw, useEndorsementCount as ax, useEntitySearch as ay, useExternalAccounts as az, AttestationRequestSchema as b, useUserSettings as b$, useOrgAttestations as b0, useOrgClaim as b1, useOrgDomainChallenge as b2, useOrgDomainVerify as b3, useOrgProfile as b4, usePendingConfirmations as b5, useProfile as b6, useProfileCompleteness as b7, useReactionStatus as b8, useRefreshOrcidPublications as b9, useUnfollow as bA, useUnhideActivityItem as bB, useUnhideKeytraceClaim as bC, useUnhideOrcidPublication as bD, useUnhideProfileItem as bE, useUnhideSifaPublication as bF, useUnhideStandardPublication as bG, useUnlinkSkillFromPosition as bH, useUnlinkedPositions as bI, useUnrevealMarqueDomain as bJ, useUnsetExternalAccountPrimary as bK, useUnsetPositionPrimary as bL, useUnsetSectionPrimary as bM, useUpdateActivityPreferences as bN, useUpdateEducation as bO, useUpdateExternalAccount as bP, useUpdateOrgProfile as bQ, useUpdatePosition as bR, useUpdateProfileLocation as bS, useUpdateProfileOverride as bT, useUpdateProfileSelf as bU, useUpdateRecord as bV, useUpdateSkill as bW, useUpdateSkillSubCategories as bX, useUpdateUserSettings as bY, useUploadAvatar as bZ, useUploadNamePronunciationAudio as b_, useRefreshPds as ba, useRejectAttestationRequest as bb, useRemoveFeatureAllowlist as bc, useRemoveOrgNotificationEmail as bd, useRepoInventory as be, useRequestEmploymentConfirmation as bf, useResetProfile as bg, useResolveEntityDomain as bh, useRetractRoadmapVote as bi, useRevealMarqueDomain as bj, useRevokeConfirmation as bk, useRevokeOrgAttestation as bl, useRoadmapVotes as bm, useSearchFilters as bn, useSearchProfiles as bo, useSelectEntity as bp, useSetExternalAccountPrimary as bq, useSetPositionPrimary as br, useSetSectionPrimary as bs, useSifaConfig as bt, useSimilarProfiles as bu, useSiteActivityPreset as bv, useSkillSuggestions as bw, useStats as bx, useSuggestionCount as by, useSuggestions as bz, type AttestationStatus as c, useVerificationLog as c0, useVerifyExternalAccount as c1, useWipePreview as c2, useSearchCompanies as c3, type CreateOrgAttestationResult as d, type CreateReactionVariables as e, type CreateRecordVariables as f, type DeleteRecordVariables as g, type FetchVerificationLogOptions as h, type FollowVariables as i, OrgAttestationSchema as j, type RequestEmploymentConfirmationInput as k, type RequestEmploymentConfirmationResult as l, type SifaProviderProps as m, type UpdateEducationVariables as n, type UpdateExternalAccountVariables as o, type UpdatePositionVariables as p, type UpdateProfileLocationVariables as q, type UpdateRecordVariables as r, type UpdateSkillSubCategoriesVariables as s, type UpdateSkillVariables as t, type UseEntitySearchOptions as u, type UseMyGithubPullRequestsParams as v, type VerificationEventKind as w, type VerificationLog as x, type VerificationLogEntry as y, VerificationLogEntrySchema as z };
@@ -1,10 +1,10 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { a0 as SifaApiConfig, a1 as ApiFetchOptions, a3 as WriteResult, o as ProfileView, a2 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-BY3qFPDf.cjs';
3
+ import { a0 as SifaApiConfig, a1 as ApiFetchOptions, a3 as WriteResult, o as ProfileView, a2 as CreateResult, a5 as FilterOptions, S as SearchFilters, a8 as SearchResponse, a9 as SkillSearchResult, ai as CompanySearchFilters, aj as CompanySearchResponse, u as RepoDeleteResult, x as RepoInventory } from './types-qw55KvoV.cjs';
4
4
  import * as _tanstack_react_query from '@tanstack/react-query';
5
5
  import { UseQueryOptions, UseMutationOptions, UseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
6
- import { c as Profile, d as ProfilePosition, W as SkillRef, p as ExternalAccount, X as SkillSuggestion, s as OrgFloorVerdict } from './index-BzkaABDb.cjs';
7
- import { s as sifaQueryKeys, aF as RefreshPdsResult, aY as UpdateProfileOverrideInput, aZ as UpdateProfileSelfInput, a_ as UploadAvatarResult, a$ as UploadPronunciationAudioResult, ap as PrimarySection, aR as SubCategoryBulkResult, au as ProfileLocationInput, p as ExternalAccountInput, n as CreateExternalAccountResult, b0 as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, $ as GivenConfirmation, ao as PendingConfirmationsPage, aa as InboxCounts, o as DismissUnlinkedPositionInput, aW as UnlinkedPositionsResult, aq as ProfileCompleteness, aE as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, a9 as HideProfileItemInput, a4 as HiddenActivityItem, a8 as HideActivityItemInput, aU as UnhideActivityItemInput, f as ActivityPreferences, aP as SiteActivityPresetResponse, aX as UpdateActivityPreferencesInput, aQ as StatsResponse, i as AppRegistryEntry, a5 as HiddenApp, b as AccountSummary, q as FeaturedProfile, aO as SimilarProfile, N as FetchSuggestionsOptions, aT as SuggestionsResponse, S as FollowUserResult, x as FetchFollowListOptions, P as FollowListPage, Y as FollowingResponse, z as FetchFollowingFeedOptions, W as FollowingFeedResponse, X as FollowingFeedVersion, y as FetchFollowProfilePageOptions, R as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, t as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a3 as HeatmapResponse, ac as MyGithubPullRequestsResponse, A as AccountCheckResult, aD as ReactionStatus, aC as ReactionResult, aB as ReactionError, aM as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aH as ResetProfileResult, b1 as WipePreview, aG as RepoDeleteInput, ae as OrgClaimResult, ak as OrgProfileUpdateResult, af as OrgDomainChallengeResult, ag as OrgDomainVerifyResult, ah as OrgNotificationEmailAddResult, ai as OrgNotificationEmailRemoveResult } from './org-Bb1cRhJu.cjs';
6
+ import { c as Profile, d as ProfilePosition, W as SkillRef, p as ExternalAccount, X as SkillSuggestion, s as OrgFloorVerdict } from './index-k6tBrbEU.cjs';
7
+ import { s as sifaQueryKeys, aG as RefreshPdsResult, aZ as UpdateProfileOverrideInput, a_ as UpdateProfileSelfInput, a$ as UploadAvatarResult, b0 as UploadPronunciationAudioResult, aq as PrimarySection, aS as SubCategoryBulkResult, av as ProfileLocationInput, p as ExternalAccountInput, n as CreateExternalAccountResult, b4 as VerifyExternalAccountResult, E as EndorsementInput, l as ConfirmationInput, m as ConfirmationSubjectInput, a0 as GivenConfirmation, ap as PendingConfirmationsPage, ab as InboxCounts, o as DismissUnlinkedPositionInput, aX as UnlinkedPositionsResult, ar as ProfileCompleteness, aF as RefreshOrcidPublicationsResult, B as BulkHideProfileItemInput, aa as HideProfileItemInput, a5 as HiddenActivityItem, a9 as HideActivityItemInput, aV as UnhideActivityItemInput, f as ActivityPreferences, aQ as SiteActivityPresetResponse, aY as UpdateActivityPreferencesInput, aR as StatsResponse, i as AppRegistryEntry, a6 as HiddenApp, b as AccountSummary, q as FeaturedProfile, aP as SimilarProfile, N as FetchSuggestionsOptions, aU as SuggestionsResponse, T as FollowUserResult, x as FetchFollowListOptions, Q as FollowListPage, Z as FollowingResponse, z as FetchFollowingFeedOptions, X as FollowingFeedResponse, Y as FollowingFeedVersion, y as FetchFollowProfilePageOptions, S as FollowProfilePageResponse, F as FeatureAllowlistResponse, h as AdminReviewQueues, t as FetchActivityFeedOptions, c as ActivityFeedResponse, g as ActivityTeaserResponse, a4 as HeatmapResponse, ad as MyGithubPullRequestsResponse, A as AccountCheckResult, aE as ReactionStatus, aD as ReactionResult, aC as ReactionError, aN as RoadmapVotesResponse, j as CastRoadmapVoteResult, D as DeleteAccountResult, aI as ResetProfileResult, b5 as WipePreview, aH as RepoDeleteInput, af as OrgClaimResult, al as OrgProfileUpdateResult, ag as OrgDomainChallengeResult, ah as OrgDomainVerifyResult, ai as OrgNotificationEmailAddResult, aj as OrgNotificationEmailRemoveResult, b1 as UserSettings } from './user-settings-lenJHz19.cjs';
8
8
  import { z } from 'zod';
9
9
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, n as EntitySelectResponse, l as EntitySelectRequest, r as FeatureFlag } from './follow-profile-CQ3DTTak.cjs';
10
10
  import { O as OrgClaimRequestInput, a as OrgProfileUpdateRequestInput, b as OrgDomainChallengeRequestInput, c as OrgDomainVerifyRequestInput, d as OrgNotificationEmailRequestInput } from './org-settings-C73Sin5E.cjs';
@@ -1107,4 +1107,24 @@ declare function useRemoveOrgNotificationEmail(options?: Omit<UseMutationOptions
1107
1107
  email: string;
1108
1108
  }, unknown>;
1109
1109
 
1110
- export { useAppsRegistry as $, type AddFeatureAllowlistVariables as A, VerificationLogSchema as B, type CreateOrgAttestationInput as C, type DeleteReactionVariables as D, createOrgAttestation as E, type FetchOrgAttestationOptions as F, fetchAttestationRequests as G, fetchOrgAttestations as H, fetchVerificationLog as I, offboardOrgAttestation as J, rejectAttestationRequest as K, requestEmploymentConfirmation as L, revokeOrgAttestation as M, useAccounts as N, type OrgAttestation as O, type PositionSkillLinkVariables as P, useActivityFeed as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useActivityPreferences as T, type UnfollowVariables as U, VERIFICATION_EVENT_KINDS as V, useActivityTeaser as W, useAddFeatureAllowlist as X, useAddOrgNotificationEmail as Y, useAdminReviewQueues as Z, useAppAccountCheck as _, type AttestationRequest as a, useOffboardOrgAttestation as a$, useAtFundLink as a0, useAttestationRequests as a1, useBlueskySuggestions as a2, useBulkHideProfileItems as a3, useBulkHideStandardPublications as a4, useBulkUnhideProfileItems as a5, useBulkUnhideStandardPublications as a6, useCanonicalSkillSearch as a7, useCastRoadmapVote as a8, useCreateConfirmation as a9, useFeatureAllowlist as aA, useFeaturedProfile as aB, useFollow as aC, useFollowers as aD, useFollowing as aE, useFollowingFeed as aF, useFollowingFeedVersion as aG, useFollowingList as aH, useGetProfileView as aI, useGivenConfirmations as aJ, useHeatmapData as aK, useHiddenActivityItems as aL, useHiddenApps as aM, useHideActivityItem as aN, useHideKeytraceClaim as aO, useHideOrcidPublication as aP, useHideProfileItem as aQ, useHideSifaPublication as aR, useHideStandardPublication as aS, useImportSearchEntities as aT, useInboxCounts as aU, useLinkSkillToPosition as aV, useMintEntityDomain as aW, useMutuals as aX, useMyGithubPullRequests as aY, useMyRoadmapVotes as aZ, useNetworkStreamCount as a_, useCreateEducation as aa, useCreateEndorsement as ab, useCreateExternalAccount as ac, useCreateOrgAttestation as ad, useCreatePosition as ae, useCreateProfileLocation as af, useCreateReaction as ag, useCreateRecord as ah, useCreateSkill as ai, useDebouncedValue as aj, useDeleteAccount as ak, useDeleteAvatarOverride as al, useDeleteEducation as am, useDeleteExternalAccount as an, useDeleteNamePronunciationAudio as ao, useDeletePosition as ap, useDeleteProfileLocation as aq, useDeleteReaction as ar, useDeleteRecord as as, useDeleteRepoRecords as at, useDeleteSkill as au, useDismissConfirmation as av, useDismissUnlinkedPosition as aw, useEndorsementCount as ax, useEntitySearch as ay, useExternalAccounts as az, AttestationRequestSchema as b, useVerifyExternalAccount as b$, useOrgAttestations as b0, useOrgClaim as b1, useOrgDomainChallenge as b2, useOrgDomainVerify as b3, useOrgProfile as b4, usePendingConfirmations as b5, useProfile as b6, useProfileCompleteness as b7, useReactionStatus as b8, useRefreshOrcidPublications as b9, useUnfollow as bA, useUnhideActivityItem as bB, useUnhideKeytraceClaim as bC, useUnhideOrcidPublication as bD, useUnhideProfileItem as bE, useUnhideSifaPublication as bF, useUnhideStandardPublication as bG, useUnlinkSkillFromPosition as bH, useUnlinkedPositions as bI, useUnrevealMarqueDomain as bJ, useUnsetExternalAccountPrimary as bK, useUnsetPositionPrimary as bL, useUnsetSectionPrimary as bM, useUpdateActivityPreferences as bN, useUpdateEducation as bO, useUpdateExternalAccount as bP, useUpdateOrgProfile as bQ, useUpdatePosition as bR, useUpdateProfileLocation as bS, useUpdateProfileOverride as bT, useUpdateProfileSelf as bU, useUpdateRecord as bV, useUpdateSkill as bW, useUpdateSkillSubCategories as bX, useUploadAvatar as bY, useUploadNamePronunciationAudio as bZ, useVerificationLog as b_, useRefreshPds as ba, useRejectAttestationRequest as bb, useRemoveFeatureAllowlist as bc, useRemoveOrgNotificationEmail as bd, useRepoInventory as be, useRequestEmploymentConfirmation as bf, useResetProfile as bg, useResolveEntityDomain as bh, useRetractRoadmapVote as bi, useRevealMarqueDomain as bj, useRevokeConfirmation as bk, useRevokeOrgAttestation as bl, useRoadmapVotes as bm, useSearchFilters as bn, useSearchProfiles as bo, useSelectEntity as bp, useSetExternalAccountPrimary as bq, useSetPositionPrimary as br, useSetSectionPrimary as bs, useSifaConfig as bt, useSimilarProfiles as bu, useSiteActivityPreset as bv, useSkillSuggestions as bw, useStats as bx, useSuggestionCount as by, useSuggestions as bz, type AttestationStatus as c, useWipePreview as c0, useSearchCompanies as c1, type CreateOrgAttestationResult as d, type CreateReactionVariables as e, type CreateRecordVariables as f, type DeleteRecordVariables as g, type FetchVerificationLogOptions as h, type FollowVariables as i, OrgAttestationSchema as j, type RequestEmploymentConfirmationInput as k, type RequestEmploymentConfirmationResult as l, type SifaProviderProps as m, type UpdateEducationVariables as n, type UpdateExternalAccountVariables as o, type UpdatePositionVariables as p, type UpdateProfileLocationVariables as q, type UpdateRecordVariables as r, type UpdateSkillSubCategoriesVariables as s, type UpdateSkillVariables as t, type UseEntitySearchOptions as u, type UseMyGithubPullRequestsParams as v, type VerificationEventKind as w, type VerificationLog as x, type VerificationLogEntry as y, VerificationLogEntrySchema as z };
1110
+ /** The signed-in user's account preferences; `null` when signed out. */
1111
+ declare function useUserSettings(options?: Omit<UseQueryOptions<UserSettings | null, Error, UserSettings | null, ReturnType<typeof sifaQueryKeys.userSettings.all>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<{
1112
+ respectBskyBlocks: boolean;
1113
+ autoLinkCompanies: boolean;
1114
+ showCitationCounts: boolean;
1115
+ } | null, Error>;
1116
+ /**
1117
+ * Save one or more preferences, then write the stored result into the
1118
+ * settings cache. A failed save resolves to `null` and leaves the cache as is.
1119
+ */
1120
+ declare function useUpdateUserSettings(): _tanstack_react_query.UseMutationResult<{
1121
+ respectBskyBlocks: boolean;
1122
+ autoLinkCompanies: boolean;
1123
+ showCitationCounts: boolean;
1124
+ } | null, Error, Partial<{
1125
+ respectBskyBlocks: boolean;
1126
+ autoLinkCompanies: boolean;
1127
+ showCitationCounts: boolean;
1128
+ }>, unknown>;
1129
+
1130
+ export { useAppsRegistry as $, type AddFeatureAllowlistVariables as A, VerificationLogSchema as B, type CreateOrgAttestationInput as C, type DeleteReactionVariables as D, createOrgAttestation as E, type FetchOrgAttestationOptions as F, fetchAttestationRequests as G, fetchOrgAttestations as H, fetchVerificationLog as I, offboardOrgAttestation as J, rejectAttestationRequest as K, requestEmploymentConfirmation as L, revokeOrgAttestation as M, useAccounts as N, type OrgAttestation as O, type PositionSkillLinkVariables as P, useActivityFeed as Q, type RemoveFeatureAllowlistVariables as R, SifaProvider as S, useActivityPreferences as T, type UnfollowVariables as U, VERIFICATION_EVENT_KINDS as V, useActivityTeaser as W, useAddFeatureAllowlist as X, useAddOrgNotificationEmail as Y, useAdminReviewQueues as Z, useAppAccountCheck as _, type AttestationRequest as a, useOffboardOrgAttestation as a$, useAtFundLink as a0, useAttestationRequests as a1, useBlueskySuggestions as a2, useBulkHideProfileItems as a3, useBulkHideStandardPublications as a4, useBulkUnhideProfileItems as a5, useBulkUnhideStandardPublications as a6, useCanonicalSkillSearch as a7, useCastRoadmapVote as a8, useCreateConfirmation as a9, useFeatureAllowlist as aA, useFeaturedProfile as aB, useFollow as aC, useFollowers as aD, useFollowing as aE, useFollowingFeed as aF, useFollowingFeedVersion as aG, useFollowingList as aH, useGetProfileView as aI, useGivenConfirmations as aJ, useHeatmapData as aK, useHiddenActivityItems as aL, useHiddenApps as aM, useHideActivityItem as aN, useHideKeytraceClaim as aO, useHideOrcidPublication as aP, useHideProfileItem as aQ, useHideSifaPublication as aR, useHideStandardPublication as aS, useImportSearchEntities as aT, useInboxCounts as aU, useLinkSkillToPosition as aV, useMintEntityDomain as aW, useMutuals as aX, useMyGithubPullRequests as aY, useMyRoadmapVotes as aZ, useNetworkStreamCount as a_, useCreateEducation as aa, useCreateEndorsement as ab, useCreateExternalAccount as ac, useCreateOrgAttestation as ad, useCreatePosition as ae, useCreateProfileLocation as af, useCreateReaction as ag, useCreateRecord as ah, useCreateSkill as ai, useDebouncedValue as aj, useDeleteAccount as ak, useDeleteAvatarOverride as al, useDeleteEducation as am, useDeleteExternalAccount as an, useDeleteNamePronunciationAudio as ao, useDeletePosition as ap, useDeleteProfileLocation as aq, useDeleteReaction as ar, useDeleteRecord as as, useDeleteRepoRecords as at, useDeleteSkill as au, useDismissConfirmation as av, useDismissUnlinkedPosition as aw, useEndorsementCount as ax, useEntitySearch as ay, useExternalAccounts as az, AttestationRequestSchema as b, useUserSettings as b$, useOrgAttestations as b0, useOrgClaim as b1, useOrgDomainChallenge as b2, useOrgDomainVerify as b3, useOrgProfile as b4, usePendingConfirmations as b5, useProfile as b6, useProfileCompleteness as b7, useReactionStatus as b8, useRefreshOrcidPublications as b9, useUnfollow as bA, useUnhideActivityItem as bB, useUnhideKeytraceClaim as bC, useUnhideOrcidPublication as bD, useUnhideProfileItem as bE, useUnhideSifaPublication as bF, useUnhideStandardPublication as bG, useUnlinkSkillFromPosition as bH, useUnlinkedPositions as bI, useUnrevealMarqueDomain as bJ, useUnsetExternalAccountPrimary as bK, useUnsetPositionPrimary as bL, useUnsetSectionPrimary as bM, useUpdateActivityPreferences as bN, useUpdateEducation as bO, useUpdateExternalAccount as bP, useUpdateOrgProfile as bQ, useUpdatePosition as bR, useUpdateProfileLocation as bS, useUpdateProfileOverride as bT, useUpdateProfileSelf as bU, useUpdateRecord as bV, useUpdateSkill as bW, useUpdateSkillSubCategories as bX, useUpdateUserSettings as bY, useUploadAvatar as bZ, useUploadNamePronunciationAudio as b_, useRefreshPds as ba, useRejectAttestationRequest as bb, useRemoveFeatureAllowlist as bc, useRemoveOrgNotificationEmail as bd, useRepoInventory as be, useRequestEmploymentConfirmation as bf, useResetProfile as bg, useResolveEntityDomain as bh, useRetractRoadmapVote as bi, useRevealMarqueDomain as bj, useRevokeConfirmation as bk, useRevokeOrgAttestation as bl, useRoadmapVotes as bm, useSearchFilters as bn, useSearchProfiles as bo, useSelectEntity as bp, useSetExternalAccountPrimary as bq, useSetPositionPrimary as br, useSetSectionPrimary as bs, useSifaConfig as bt, useSimilarProfiles as bu, useSiteActivityPreset as bv, useSkillSuggestions as bw, useStats as bx, useSuggestionCount as by, useSuggestions as bz, type AttestationStatus as c, useVerificationLog as c0, useVerifyExternalAccount as c1, useWipePreview as c2, useSearchCompanies as c3, type CreateOrgAttestationResult as d, type CreateReactionVariables as e, type CreateRecordVariables as f, type DeleteRecordVariables as g, type FetchVerificationLogOptions as h, type FollowVariables as i, OrgAttestationSchema as j, type RequestEmploymentConfirmationInput as k, type RequestEmploymentConfirmationResult as l, type SifaProviderProps as m, type UpdateEducationVariables as n, type UpdateExternalAccountVariables as o, type UpdatePositionVariables as p, type UpdateProfileLocationVariables as q, type UpdateRecordVariables as r, type UpdateSkillSubCategoriesVariables as s, type UpdateSkillVariables as t, type UseEntitySearchOptions as u, type UseMyGithubPullRequestsParams as v, type VerificationEventKind as w, type VerificationLog as x, type VerificationLogEntry as y, VerificationLogEntrySchema as z };
@@ -1,5 +1,5 @@
1
- import { a3 as WriteResult, a0 as SifaApiConfig, a1 as ApiFetchOptions, a2 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-Dl-uk0Ds.js';
2
- import { p as ExternalAccount, y as PositionViewerConfirmation } from './index-BFdNI6jA.js';
1
+ import { a3 as WriteResult, a0 as SifaApiConfig, a1 as ApiFetchOptions, a2 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-CI24asgo.js';
2
+ import { p as ExternalAccount, y as PositionViewerConfirmation } from './index-DAiJZvPg.js';
3
3
  import { a as AccountVerification } from './verification-providers-7il3kPQS.js';
4
4
  import { s as FollowProfileItem, p as FeatureAllowlistEntry, r as FeatureFlag } from './follow-profile-ceqefXAw.js';
5
5
  import { z } from 'zod';
@@ -1757,6 +1757,9 @@ declare const sifaQueryKeys: {
1757
1757
  readonly all: () => readonly ["sifa", "bsky-preferences"];
1758
1758
  readonly contentLabels: () => readonly ["sifa", "bsky-preferences", "content-labels"];
1759
1759
  };
1760
+ readonly userSettings: {
1761
+ readonly all: () => readonly ["sifa", "user-settings"];
1762
+ };
1760
1763
  readonly repoInventory: {
1761
1764
  readonly all: () => readonly ["sifa", "repo-inventory"];
1762
1765
  readonly list: () => readonly ["sifa", "repo-inventory", "list"];
@@ -1766,7 +1769,7 @@ declare const sifaQueryKeys: {
1766
1769
  readonly wipePreview: () => readonly ["sifa", "destructive", "wipe-preview"];
1767
1770
  };
1768
1771
  };
1769
- 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.profile.completeness> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.position.unlinked> | ReturnType<typeof sifaQueryKeys.inbox.all> | ReturnType<typeof sifaQueryKeys.inbox.counts> | 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.admin.reviewQueues> | 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.activity.hiddenItems> | ReturnType<typeof sifaQueryKeys.activity.preferences> | ReturnType<typeof sifaQueryKeys.activity.sitePreset> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.endorsement.pending> | ReturnType<typeof sifaQueryKeys.endorsement.reciprocity> | ReturnType<typeof sifaQueryKeys.endorsement.received> | ReturnType<typeof sifaQueryKeys.confirmation.all> | ReturnType<typeof sifaQueryKeys.confirmation.pending> | ReturnType<typeof sifaQueryKeys.confirmation.given> | 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> | ReturnType<typeof sifaQueryKeys.repoInventory.all> | ReturnType<typeof sifaQueryKeys.repoInventory.list>;
1772
+ 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.profile.completeness> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.position.unlinked> | ReturnType<typeof sifaQueryKeys.inbox.all> | ReturnType<typeof sifaQueryKeys.inbox.counts> | 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.admin.reviewQueues> | 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.activity.hiddenItems> | ReturnType<typeof sifaQueryKeys.activity.preferences> | ReturnType<typeof sifaQueryKeys.activity.sitePreset> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.endorsement.pending> | ReturnType<typeof sifaQueryKeys.endorsement.reciprocity> | ReturnType<typeof sifaQueryKeys.endorsement.received> | ReturnType<typeof sifaQueryKeys.confirmation.all> | ReturnType<typeof sifaQueryKeys.confirmation.pending> | ReturnType<typeof sifaQueryKeys.confirmation.given> | 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.userSettings.all> | ReturnType<typeof sifaQueryKeys.destructive.all> | ReturnType<typeof sifaQueryKeys.destructive.wipePreview> | ReturnType<typeof sifaQueryKeys.repoInventory.all> | ReturnType<typeof sifaQueryKeys.repoInventory.list>;
1770
1773
 
1771
1774
  /** How a single entity binding was resolved during a claim. */
1772
1775
  interface OrgClaimBinding {
@@ -1858,4 +1861,26 @@ declare function addOrgNotificationEmail(config: SifaApiConfig, body: OrgNotific
1858
1861
  */
1859
1862
  declare function removeOrgNotificationEmail(config: SifaApiConfig, body: OrgNotificationEmailRequestInput, options?: Omit<ApiFetchOptions, 'method' | 'body'>): Promise<WriteResult<Partial<OrgNotificationEmailRemoveResult>>>;
1860
1863
 
1861
- export { type GivenConfirmation as $, type AccountCheckResult as A, type BulkHideProfileItemInput as B, type ConfirmEndorsementInput as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FetchHiddenActivityItemsOptions as G, type FetchHiddenAppsOptions as H, type FetchInboxCountsOptions as I, type FetchMyGithubPullRequestsOptions as J, type FetchMyRoadmapVotesOptions as K, type FetchProfileCompletenessOptions as L, type FetchReactionStatusOptions as M, type FetchSuggestionsOptions as N, type FetchUnlinkedPositionsOptions as O, type FollowListPage as P, type FollowProfile as Q, type FollowProfilePageResponse as R, type FollowUserResult as S, type FollowingFeedApp as T, type FollowingFeedBuild as U, type FollowingFeedEmptyReason as V, type FollowingFeedResponse as W, type FollowingFeedVersion as X, type FollowingResponse as Y, type GetAdminReviewQueuesOptions as Z, type GithubPullRequest as _, type ConfirmEndorsementResult as a, type UploadPronunciationAudioResult as a$, HIDDEN_ITEM_SOURCES as a0, HIDDEN_ITEM_TYPES as a1, type HeatmapDay as a2, type HeatmapResponse as a3, type HiddenActivityItem as a4, type HiddenApp as a5, type HiddenItemSource as a6, type HiddenItemType as a7, type HideActivityItemInput as a8, type HideProfileItemInput as a9, type QuotedPostView as aA, type ReactionError as aB, type ReactionResult as aC, type ReactionStatus as aD, type RefreshOrcidPublicationsResult as aE, type RefreshPdsResult as aF, type RepoDeleteInput as aG, type ResetProfileResult as aH, type ResolveQuotedPostsOptions as aI, type RoadmapVoteError as aJ, type RoadmapVoteResult as aK, type RoadmapVoter as aL, type RoadmapVotesResponse as aM, type SifaQueryKey as aN, type SimilarProfile as aO, type SiteActivityPresetResponse as aP, type StatsResponse as aQ, type SubCategoryBulkResult as aR, type SuggestionProfile as aS, type SuggestionsResponse as aT, type UnhideActivityItemInput as aU, type UnlinkedPosition as aV, type UnlinkedPositionsResult as aW, type UpdateActivityPreferencesInput as aX, type UpdateProfileOverrideInput as aY, type UpdateProfileSelfInput as aZ, type UploadAvatarResult as a_, type InboxCounts as aa, type ListFeatureAllowlistOptions as ab, type MyGithubPullRequestsResponse as ac, type OrgClaimBinding as ad, type OrgClaimResult as ae, type OrgDomainChallengeResult as af, type OrgDomainVerifyResult as ag, type OrgNotificationEmailAddResult as ah, type OrgNotificationEmailRemoveResult as ai, type OrgProfileEcho as aj, type OrgProfileUpdateResult as ak, PROFILE_COMPLETENESS_SIGNALS as al, type PdsWipeOutcome as am, type PendingConfirmation as an, type PendingConfirmationsPage as ao, type PrimarySection as ap, type ProfileCompleteness as aq, type ProfileCompletenessSignal as ar, type ProfileIndustryInput as as, type ProfileLocationAddress as at, type ProfileLocationInput as au, type ProfileSelfLocation as av, QUOTED_POSTS_BATCH_MAX as aw, type QuotedPostAuthor as ax, type QuotedPostImage as ay, type QuotedPostResult as az, type AccountSummary as b, hideActivityItem as b$, type VerifyExternalAccountResult as b0, type WipePreview as b1, addFeatureAllowlist as b2, addOrgNotificationEmail as b3, bulkHideProfileItems as b4, bulkHideStandardPublications as b5, bulkUnhideProfileItems as b6, bulkUnhideStandardPublications as b7, castRoadmapVote as b8, checkAppAccount as b9, fetchFollowingFeedVersion as bA, fetchGivenConfirmations as bB, fetchHeatmapData as bC, fetchHiddenActivityItems as bD, fetchHiddenApps as bE, fetchInboxCounts as bF, fetchMyGithubPullRequests as bG, fetchMyRoadmapVotes as bH, fetchPendingConfirmations as bI, fetchProfileCompleteness as bJ, fetchReactionStatus as bK, fetchRepoInventory as bL, fetchRoadmapVotes as bM, fetchSimilarProfiles as bN, fetchSiteActivityPreset as bO, fetchStats as bP, fetchSuggestionCount as bQ, fetchSuggestions as bR, fetchUnlinkedPositions as bS, fetchViewerPositionConfirmations as bT, fetchWipePreview as bU, followUser as bV, getAdminReviewQueues as bW, getBlueskySuggestions as bX, getFollowers as bY, getFollowing as bZ, getMutuals as b_, confirmEndorsement as ba, createConfirmation as bb, createEndorsement as bc, createExternalAccount as bd, createProfileLocation as be, createReaction as bf, createSkill as bg, deleteAccount as bh, deleteAvatarOverride as bi, deleteExternalAccount as bj, deleteNamePronunciationAudio as bk, deleteProfileLocation as bl, deleteReaction as bm, deleteRepoRecords as bn, deleteSkill as bo, dismissConfirmation as bp, dismissUnlinkedPosition as bq, fetchAccounts as br, fetchActivityFeed as bs, fetchActivityPreferences as bt, fetchActivityTeaser as bu, fetchAppsRegistry as bv, fetchExternalAccounts as bw, fetchFeaturedProfile as bx, fetchFollowing as by, fetchFollowingFeed as bz, type ActivityFeedResponse as c, hideOrcidPublication as c0, hideProfileItem as c1, hideSifaPublication as c2, hideStandardPublication as c3, isNewerFollowingFeed as c4, listFeatureAllowlist as c5, refreshOrcidPublications as c6, refreshPds as c7, removeFeatureAllowlist as c8, removeOrgNotificationEmail as c9, uploadAvatar as cA, uploadNamePronunciationAudio as cB, verifyExternalAccount as cC, verifyOrgDomain as cD, repoExportUrl as ca, requestOrgDomainChallenge as cb, resetProfile as cc, resolveQuotedPosts as cd, retractRoadmapVote as ce, revokeConfirmation as cf, setExternalAccountPrimary as cg, setSectionPrimary as ch, submitOrgClaim as ci, switchAccount as cj, unfollowUser as ck, unhideActivityItem as cl, unhideOrcidPublication as cm, unhideProfileItem as cn, unhideSifaPublication as co, unhideStandardPublication as cp, unsetExternalAccountPrimary as cq, unsetSectionPrimary as cr, updateActivityPreferences as cs, updateExternalAccount as ct, updateOrgProfile as cu, updateProfileLocation as cv, updateProfileOverride as cw, updateProfileSelf as cx, updateSkill as cy, updateSkillSubCategories as cz, type ActivityItem as d, type ActivityItemLinkHealth as e, type ActivityPreferences as f, type ActivityTeaserResponse as g, type AdminReviewQueues as h, type AppRegistryEntry as i, type CastRoadmapVoteResult as j, type CheckAppAccountOptions as k, type ConfirmationInput as l, type ConfirmationSubjectInput as m, type CreateExternalAccountResult as n, type DismissUnlinkedPositionInput as o, type ExternalAccountInput as p, type FeaturedProfile as q, type FetchAccountsOptions as r, sifaQueryKeys as s, type FetchActivityFeedOptions as t, type FetchActivityPreferencesOptions as u, type FetchActivityTeaserOptions as v, type FetchConfirmationsOptions as w, type FetchFollowListOptions as x, type FetchFollowProfilePageOptions as y, type FetchFollowingFeedOptions as z };
1864
+ /**
1865
+ * The signed-in user's account preferences (`/api/settings`). Kept on the
1866
+ * AppView, not in a PDS record: they change how Sifa treats the account, not
1867
+ * what the account says about itself.
1868
+ */
1869
+ declare const UserSettingsSchema: z.ZodObject<{
1870
+ respectBskyBlocks: z.ZodBoolean;
1871
+ autoLinkCompanies: z.ZodBoolean;
1872
+ showCitationCounts: z.ZodDefault<z.ZodBoolean>;
1873
+ }, z.core.$strip>;
1874
+ type UserSettings = z.infer<typeof UserSettingsSchema>;
1875
+ /** Body accepted by {@link updateUserSettings}: only the preferences to change. */
1876
+ type UserSettingsPatch = Partial<UserSettings>;
1877
+ interface FetchUserSettingsOptions extends ApiFetchOptions {
1878
+ /** Session cookie to forward when reading from a server context. */
1879
+ cookieHeader?: string;
1880
+ }
1881
+ /** The caller's settings, or `null` when signed out or the read fails. */
1882
+ declare function fetchUserSettings(config: SifaApiConfig, options?: FetchUserSettingsOptions): Promise<UserSettings | null>;
1883
+ /** Save the given preferences. Returns the stored settings, or `null` on failure. */
1884
+ declare function updateUserSettings(config: SifaApiConfig, patch: UserSettingsPatch): Promise<UserSettings | null>;
1885
+
1886
+ export { type GithubPullRequest as $, type AccountCheckResult as A, type BulkHideProfileItemInput as B, type ConfirmEndorsementInput as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FetchHiddenActivityItemsOptions as G, type FetchHiddenAppsOptions as H, type FetchInboxCountsOptions as I, type FetchMyGithubPullRequestsOptions as J, type FetchMyRoadmapVotesOptions as K, type FetchProfileCompletenessOptions as L, type FetchReactionStatusOptions as M, type FetchSuggestionsOptions as N, type FetchUnlinkedPositionsOptions as O, type FetchUserSettingsOptions as P, type FollowListPage as Q, type FollowProfile as R, type FollowProfilePageResponse as S, type FollowUserResult as T, type FollowingFeedApp as U, type FollowingFeedBuild as V, type FollowingFeedEmptyReason as W, type FollowingFeedResponse as X, type FollowingFeedVersion as Y, type FollowingResponse as Z, type GetAdminReviewQueuesOptions as _, type ConfirmEndorsementResult as a, type UploadAvatarResult as a$, type GivenConfirmation as a0, HIDDEN_ITEM_SOURCES as a1, HIDDEN_ITEM_TYPES as a2, type HeatmapDay as a3, type HeatmapResponse as a4, type HiddenActivityItem as a5, type HiddenApp as a6, type HiddenItemSource as a7, type HiddenItemType as a8, type HideActivityItemInput as a9, type QuotedPostResult as aA, type QuotedPostView as aB, type ReactionError as aC, type ReactionResult as aD, type ReactionStatus as aE, type RefreshOrcidPublicationsResult as aF, type RefreshPdsResult as aG, type RepoDeleteInput 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 SifaQueryKey as aO, type SimilarProfile as aP, type SiteActivityPresetResponse as aQ, type StatsResponse as aR, type SubCategoryBulkResult as aS, type SuggestionProfile as aT, type SuggestionsResponse as aU, type UnhideActivityItemInput as aV, type UnlinkedPosition as aW, type UnlinkedPositionsResult as aX, type UpdateActivityPreferencesInput as aY, type UpdateProfileOverrideInput as aZ, type UpdateProfileSelfInput as a_, type HideProfileItemInput as aa, type InboxCounts as ab, type ListFeatureAllowlistOptions as ac, type MyGithubPullRequestsResponse as ad, type OrgClaimBinding as ae, type OrgClaimResult as af, type OrgDomainChallengeResult as ag, type OrgDomainVerifyResult as ah, type OrgNotificationEmailAddResult as ai, type OrgNotificationEmailRemoveResult as aj, type OrgProfileEcho as ak, type OrgProfileUpdateResult as al, PROFILE_COMPLETENESS_SIGNALS as am, type PdsWipeOutcome as an, type PendingConfirmation as ao, type PendingConfirmationsPage as ap, type PrimarySection as aq, type ProfileCompleteness as ar, type ProfileCompletenessSignal as as, type ProfileIndustryInput as at, type ProfileLocationAddress as au, type ProfileLocationInput as av, type ProfileSelfLocation as aw, QUOTED_POSTS_BATCH_MAX as ax, type QuotedPostAuthor as ay, type QuotedPostImage as az, type AccountSummary as b, getAdminReviewQueues as b$, type UploadPronunciationAudioResult as b0, type UserSettings as b1, type UserSettingsPatch as b2, UserSettingsSchema as b3, type VerifyExternalAccountResult as b4, type WipePreview as b5, addFeatureAllowlist as b6, addOrgNotificationEmail as b7, bulkHideProfileItems as b8, bulkHideStandardPublications as b9, fetchExternalAccounts as bA, fetchFeaturedProfile as bB, fetchFollowing as bC, fetchFollowingFeed as bD, fetchFollowingFeedVersion as bE, fetchGivenConfirmations as bF, fetchHeatmapData as bG, fetchHiddenActivityItems as bH, fetchHiddenApps as bI, fetchInboxCounts as bJ, fetchMyGithubPullRequests as bK, fetchMyRoadmapVotes as bL, fetchPendingConfirmations as bM, fetchProfileCompleteness as bN, fetchReactionStatus as bO, fetchRepoInventory as bP, fetchRoadmapVotes as bQ, fetchSimilarProfiles as bR, fetchSiteActivityPreset as bS, fetchStats as bT, fetchSuggestionCount as bU, fetchSuggestions as bV, fetchUnlinkedPositions as bW, fetchUserSettings as bX, fetchViewerPositionConfirmations as bY, fetchWipePreview as bZ, followUser as b_, bulkUnhideProfileItems as ba, bulkUnhideStandardPublications as bb, castRoadmapVote as bc, checkAppAccount as bd, confirmEndorsement as be, createConfirmation as bf, createEndorsement as bg, createExternalAccount as bh, createProfileLocation as bi, createReaction as bj, createSkill as bk, deleteAccount as bl, deleteAvatarOverride as bm, deleteExternalAccount as bn, deleteNamePronunciationAudio as bo, deleteProfileLocation as bp, deleteReaction as bq, deleteRepoRecords as br, deleteSkill as bs, dismissConfirmation as bt, dismissUnlinkedPosition as bu, fetchAccounts as bv, fetchActivityFeed as bw, fetchActivityPreferences as bx, fetchActivityTeaser as by, fetchAppsRegistry as bz, type ActivityFeedResponse as c, getBlueskySuggestions as c0, getFollowers as c1, getFollowing as c2, getMutuals as c3, hideActivityItem as c4, hideOrcidPublication as c5, hideProfileItem as c6, hideSifaPublication as c7, hideStandardPublication as c8, isNewerFollowingFeed as c9, updateProfileLocation as cA, updateProfileOverride as cB, updateProfileSelf as cC, updateSkill as cD, updateSkillSubCategories as cE, updateUserSettings as cF, uploadAvatar as cG, uploadNamePronunciationAudio as cH, verifyExternalAccount as cI, verifyOrgDomain as cJ, listFeatureAllowlist as ca, refreshOrcidPublications as cb, refreshPds as cc, removeFeatureAllowlist as cd, removeOrgNotificationEmail as ce, repoExportUrl as cf, requestOrgDomainChallenge as cg, resetProfile as ch, resolveQuotedPosts as ci, retractRoadmapVote as cj, revokeConfirmation as ck, setExternalAccountPrimary as cl, setSectionPrimary as cm, submitOrgClaim as cn, switchAccount as co, unfollowUser as cp, unhideActivityItem as cq, unhideOrcidPublication as cr, unhideProfileItem as cs, unhideSifaPublication as ct, unhideStandardPublication as cu, unsetExternalAccountPrimary as cv, unsetSectionPrimary as cw, updateActivityPreferences as cx, updateExternalAccount as cy, updateOrgProfile as cz, type ActivityItem as d, type ActivityItemLinkHealth as e, type ActivityPreferences as f, type ActivityTeaserResponse as g, type AdminReviewQueues as h, type AppRegistryEntry as i, type CastRoadmapVoteResult as j, type CheckAppAccountOptions as k, type ConfirmationInput as l, type ConfirmationSubjectInput as m, type CreateExternalAccountResult as n, type DismissUnlinkedPositionInput as o, type ExternalAccountInput as p, type FeaturedProfile as q, type FetchAccountsOptions as r, sifaQueryKeys as s, type FetchActivityFeedOptions as t, type FetchActivityPreferencesOptions as u, type FetchActivityTeaserOptions as v, type FetchConfirmationsOptions as w, type FetchFollowListOptions as x, type FetchFollowProfilePageOptions as y, type FetchFollowingFeedOptions as z };
@@ -1,5 +1,5 @@
1
- import { a3 as WriteResult, a0 as SifaApiConfig, a1 as ApiFetchOptions, a2 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-BY3qFPDf.cjs';
2
- import { p as ExternalAccount, y as PositionViewerConfirmation } from './index-BzkaABDb.cjs';
1
+ import { a3 as WriteResult, a0 as SifaApiConfig, a1 as ApiFetchOptions, a2 as CreateResult, K as SiteActivityPreset, b as ActivityLabel, u as RepoDeleteResult, x as RepoInventory } from './types-qw55KvoV.cjs';
2
+ import { p as ExternalAccount, y as PositionViewerConfirmation } from './index-k6tBrbEU.cjs';
3
3
  import { a as AccountVerification } from './verification-providers-7il3kPQS.cjs';
4
4
  import { s as FollowProfileItem, p as FeatureAllowlistEntry, r as FeatureFlag } from './follow-profile-CQ3DTTak.cjs';
5
5
  import { z } from 'zod';
@@ -1757,6 +1757,9 @@ declare const sifaQueryKeys: {
1757
1757
  readonly all: () => readonly ["sifa", "bsky-preferences"];
1758
1758
  readonly contentLabels: () => readonly ["sifa", "bsky-preferences", "content-labels"];
1759
1759
  };
1760
+ readonly userSettings: {
1761
+ readonly all: () => readonly ["sifa", "user-settings"];
1762
+ };
1760
1763
  readonly repoInventory: {
1761
1764
  readonly all: () => readonly ["sifa", "repo-inventory"];
1762
1765
  readonly list: () => readonly ["sifa", "repo-inventory", "list"];
@@ -1766,7 +1769,7 @@ declare const sifaQueryKeys: {
1766
1769
  readonly wipePreview: () => readonly ["sifa", "destructive", "wipe-preview"];
1767
1770
  };
1768
1771
  };
1769
- 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.profile.completeness> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.position.unlinked> | ReturnType<typeof sifaQueryKeys.inbox.all> | ReturnType<typeof sifaQueryKeys.inbox.counts> | 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.admin.reviewQueues> | 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.activity.hiddenItems> | ReturnType<typeof sifaQueryKeys.activity.preferences> | ReturnType<typeof sifaQueryKeys.activity.sitePreset> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.endorsement.pending> | ReturnType<typeof sifaQueryKeys.endorsement.reciprocity> | ReturnType<typeof sifaQueryKeys.endorsement.received> | ReturnType<typeof sifaQueryKeys.confirmation.all> | ReturnType<typeof sifaQueryKeys.confirmation.pending> | ReturnType<typeof sifaQueryKeys.confirmation.given> | 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> | ReturnType<typeof sifaQueryKeys.repoInventory.all> | ReturnType<typeof sifaQueryKeys.repoInventory.list>;
1772
+ 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.profile.completeness> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.position.unlinked> | ReturnType<typeof sifaQueryKeys.inbox.all> | ReturnType<typeof sifaQueryKeys.inbox.counts> | 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.admin.reviewQueues> | 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.activity.hiddenItems> | ReturnType<typeof sifaQueryKeys.activity.preferences> | ReturnType<typeof sifaQueryKeys.activity.sitePreset> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.endorsement.pending> | ReturnType<typeof sifaQueryKeys.endorsement.reciprocity> | ReturnType<typeof sifaQueryKeys.endorsement.received> | ReturnType<typeof sifaQueryKeys.confirmation.all> | ReturnType<typeof sifaQueryKeys.confirmation.pending> | ReturnType<typeof sifaQueryKeys.confirmation.given> | 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.userSettings.all> | ReturnType<typeof sifaQueryKeys.destructive.all> | ReturnType<typeof sifaQueryKeys.destructive.wipePreview> | ReturnType<typeof sifaQueryKeys.repoInventory.all> | ReturnType<typeof sifaQueryKeys.repoInventory.list>;
1770
1773
 
1771
1774
  /** How a single entity binding was resolved during a claim. */
1772
1775
  interface OrgClaimBinding {
@@ -1858,4 +1861,26 @@ declare function addOrgNotificationEmail(config: SifaApiConfig, body: OrgNotific
1858
1861
  */
1859
1862
  declare function removeOrgNotificationEmail(config: SifaApiConfig, body: OrgNotificationEmailRequestInput, options?: Omit<ApiFetchOptions, 'method' | 'body'>): Promise<WriteResult<Partial<OrgNotificationEmailRemoveResult>>>;
1860
1863
 
1861
- export { type GivenConfirmation as $, type AccountCheckResult as A, type BulkHideProfileItemInput as B, type ConfirmEndorsementInput as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FetchHiddenActivityItemsOptions as G, type FetchHiddenAppsOptions as H, type FetchInboxCountsOptions as I, type FetchMyGithubPullRequestsOptions as J, type FetchMyRoadmapVotesOptions as K, type FetchProfileCompletenessOptions as L, type FetchReactionStatusOptions as M, type FetchSuggestionsOptions as N, type FetchUnlinkedPositionsOptions as O, type FollowListPage as P, type FollowProfile as Q, type FollowProfilePageResponse as R, type FollowUserResult as S, type FollowingFeedApp as T, type FollowingFeedBuild as U, type FollowingFeedEmptyReason as V, type FollowingFeedResponse as W, type FollowingFeedVersion as X, type FollowingResponse as Y, type GetAdminReviewQueuesOptions as Z, type GithubPullRequest as _, type ConfirmEndorsementResult as a, type UploadPronunciationAudioResult as a$, HIDDEN_ITEM_SOURCES as a0, HIDDEN_ITEM_TYPES as a1, type HeatmapDay as a2, type HeatmapResponse as a3, type HiddenActivityItem as a4, type HiddenApp as a5, type HiddenItemSource as a6, type HiddenItemType as a7, type HideActivityItemInput as a8, type HideProfileItemInput as a9, type QuotedPostView as aA, type ReactionError as aB, type ReactionResult as aC, type ReactionStatus as aD, type RefreshOrcidPublicationsResult as aE, type RefreshPdsResult as aF, type RepoDeleteInput as aG, type ResetProfileResult as aH, type ResolveQuotedPostsOptions as aI, type RoadmapVoteError as aJ, type RoadmapVoteResult as aK, type RoadmapVoter as aL, type RoadmapVotesResponse as aM, type SifaQueryKey as aN, type SimilarProfile as aO, type SiteActivityPresetResponse as aP, type StatsResponse as aQ, type SubCategoryBulkResult as aR, type SuggestionProfile as aS, type SuggestionsResponse as aT, type UnhideActivityItemInput as aU, type UnlinkedPosition as aV, type UnlinkedPositionsResult as aW, type UpdateActivityPreferencesInput as aX, type UpdateProfileOverrideInput as aY, type UpdateProfileSelfInput as aZ, type UploadAvatarResult as a_, type InboxCounts as aa, type ListFeatureAllowlistOptions as ab, type MyGithubPullRequestsResponse as ac, type OrgClaimBinding as ad, type OrgClaimResult as ae, type OrgDomainChallengeResult as af, type OrgDomainVerifyResult as ag, type OrgNotificationEmailAddResult as ah, type OrgNotificationEmailRemoveResult as ai, type OrgProfileEcho as aj, type OrgProfileUpdateResult as ak, PROFILE_COMPLETENESS_SIGNALS as al, type PdsWipeOutcome as am, type PendingConfirmation as an, type PendingConfirmationsPage as ao, type PrimarySection as ap, type ProfileCompleteness as aq, type ProfileCompletenessSignal as ar, type ProfileIndustryInput as as, type ProfileLocationAddress as at, type ProfileLocationInput as au, type ProfileSelfLocation as av, QUOTED_POSTS_BATCH_MAX as aw, type QuotedPostAuthor as ax, type QuotedPostImage as ay, type QuotedPostResult as az, type AccountSummary as b, hideActivityItem as b$, type VerifyExternalAccountResult as b0, type WipePreview as b1, addFeatureAllowlist as b2, addOrgNotificationEmail as b3, bulkHideProfileItems as b4, bulkHideStandardPublications as b5, bulkUnhideProfileItems as b6, bulkUnhideStandardPublications as b7, castRoadmapVote as b8, checkAppAccount as b9, fetchFollowingFeedVersion as bA, fetchGivenConfirmations as bB, fetchHeatmapData as bC, fetchHiddenActivityItems as bD, fetchHiddenApps as bE, fetchInboxCounts as bF, fetchMyGithubPullRequests as bG, fetchMyRoadmapVotes as bH, fetchPendingConfirmations as bI, fetchProfileCompleteness as bJ, fetchReactionStatus as bK, fetchRepoInventory as bL, fetchRoadmapVotes as bM, fetchSimilarProfiles as bN, fetchSiteActivityPreset as bO, fetchStats as bP, fetchSuggestionCount as bQ, fetchSuggestions as bR, fetchUnlinkedPositions as bS, fetchViewerPositionConfirmations as bT, fetchWipePreview as bU, followUser as bV, getAdminReviewQueues as bW, getBlueskySuggestions as bX, getFollowers as bY, getFollowing as bZ, getMutuals as b_, confirmEndorsement as ba, createConfirmation as bb, createEndorsement as bc, createExternalAccount as bd, createProfileLocation as be, createReaction as bf, createSkill as bg, deleteAccount as bh, deleteAvatarOverride as bi, deleteExternalAccount as bj, deleteNamePronunciationAudio as bk, deleteProfileLocation as bl, deleteReaction as bm, deleteRepoRecords as bn, deleteSkill as bo, dismissConfirmation as bp, dismissUnlinkedPosition as bq, fetchAccounts as br, fetchActivityFeed as bs, fetchActivityPreferences as bt, fetchActivityTeaser as bu, fetchAppsRegistry as bv, fetchExternalAccounts as bw, fetchFeaturedProfile as bx, fetchFollowing as by, fetchFollowingFeed as bz, type ActivityFeedResponse as c, hideOrcidPublication as c0, hideProfileItem as c1, hideSifaPublication as c2, hideStandardPublication as c3, isNewerFollowingFeed as c4, listFeatureAllowlist as c5, refreshOrcidPublications as c6, refreshPds as c7, removeFeatureAllowlist as c8, removeOrgNotificationEmail as c9, uploadAvatar as cA, uploadNamePronunciationAudio as cB, verifyExternalAccount as cC, verifyOrgDomain as cD, repoExportUrl as ca, requestOrgDomainChallenge as cb, resetProfile as cc, resolveQuotedPosts as cd, retractRoadmapVote as ce, revokeConfirmation as cf, setExternalAccountPrimary as cg, setSectionPrimary as ch, submitOrgClaim as ci, switchAccount as cj, unfollowUser as ck, unhideActivityItem as cl, unhideOrcidPublication as cm, unhideProfileItem as cn, unhideSifaPublication as co, unhideStandardPublication as cp, unsetExternalAccountPrimary as cq, unsetSectionPrimary as cr, updateActivityPreferences as cs, updateExternalAccount as ct, updateOrgProfile as cu, updateProfileLocation as cv, updateProfileOverride as cw, updateProfileSelf as cx, updateSkill as cy, updateSkillSubCategories as cz, type ActivityItem as d, type ActivityItemLinkHealth as e, type ActivityPreferences as f, type ActivityTeaserResponse as g, type AdminReviewQueues as h, type AppRegistryEntry as i, type CastRoadmapVoteResult as j, type CheckAppAccountOptions as k, type ConfirmationInput as l, type ConfirmationSubjectInput as m, type CreateExternalAccountResult as n, type DismissUnlinkedPositionInput as o, type ExternalAccountInput as p, type FeaturedProfile as q, type FetchAccountsOptions as r, sifaQueryKeys as s, type FetchActivityFeedOptions as t, type FetchActivityPreferencesOptions as u, type FetchActivityTeaserOptions as v, type FetchConfirmationsOptions as w, type FetchFollowListOptions as x, type FetchFollowProfilePageOptions as y, type FetchFollowingFeedOptions as z };
1864
+ /**
1865
+ * The signed-in user's account preferences (`/api/settings`). Kept on the
1866
+ * AppView, not in a PDS record: they change how Sifa treats the account, not
1867
+ * what the account says about itself.
1868
+ */
1869
+ declare const UserSettingsSchema: z.ZodObject<{
1870
+ respectBskyBlocks: z.ZodBoolean;
1871
+ autoLinkCompanies: z.ZodBoolean;
1872
+ showCitationCounts: z.ZodDefault<z.ZodBoolean>;
1873
+ }, z.core.$strip>;
1874
+ type UserSettings = z.infer<typeof UserSettingsSchema>;
1875
+ /** Body accepted by {@link updateUserSettings}: only the preferences to change. */
1876
+ type UserSettingsPatch = Partial<UserSettings>;
1877
+ interface FetchUserSettingsOptions extends ApiFetchOptions {
1878
+ /** Session cookie to forward when reading from a server context. */
1879
+ cookieHeader?: string;
1880
+ }
1881
+ /** The caller's settings, or `null` when signed out or the read fails. */
1882
+ declare function fetchUserSettings(config: SifaApiConfig, options?: FetchUserSettingsOptions): Promise<UserSettings | null>;
1883
+ /** Save the given preferences. Returns the stored settings, or `null` on failure. */
1884
+ declare function updateUserSettings(config: SifaApiConfig, patch: UserSettingsPatch): Promise<UserSettings | null>;
1885
+
1886
+ export { type GithubPullRequest as $, type AccountCheckResult as A, type BulkHideProfileItemInput as B, type ConfirmEndorsementInput as C, type DeleteAccountResult as D, type EndorsementInput as E, type FeatureAllowlistResponse as F, type FetchHiddenActivityItemsOptions as G, type FetchHiddenAppsOptions as H, type FetchInboxCountsOptions as I, type FetchMyGithubPullRequestsOptions as J, type FetchMyRoadmapVotesOptions as K, type FetchProfileCompletenessOptions as L, type FetchReactionStatusOptions as M, type FetchSuggestionsOptions as N, type FetchUnlinkedPositionsOptions as O, type FetchUserSettingsOptions as P, type FollowListPage as Q, type FollowProfile as R, type FollowProfilePageResponse as S, type FollowUserResult as T, type FollowingFeedApp as U, type FollowingFeedBuild as V, type FollowingFeedEmptyReason as W, type FollowingFeedResponse as X, type FollowingFeedVersion as Y, type FollowingResponse as Z, type GetAdminReviewQueuesOptions as _, type ConfirmEndorsementResult as a, type UploadAvatarResult as a$, type GivenConfirmation as a0, HIDDEN_ITEM_SOURCES as a1, HIDDEN_ITEM_TYPES as a2, type HeatmapDay as a3, type HeatmapResponse as a4, type HiddenActivityItem as a5, type HiddenApp as a6, type HiddenItemSource as a7, type HiddenItemType as a8, type HideActivityItemInput as a9, type QuotedPostResult as aA, type QuotedPostView as aB, type ReactionError as aC, type ReactionResult as aD, type ReactionStatus as aE, type RefreshOrcidPublicationsResult as aF, type RefreshPdsResult as aG, type RepoDeleteInput 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 SifaQueryKey as aO, type SimilarProfile as aP, type SiteActivityPresetResponse as aQ, type StatsResponse as aR, type SubCategoryBulkResult as aS, type SuggestionProfile as aT, type SuggestionsResponse as aU, type UnhideActivityItemInput as aV, type UnlinkedPosition as aW, type UnlinkedPositionsResult as aX, type UpdateActivityPreferencesInput as aY, type UpdateProfileOverrideInput as aZ, type UpdateProfileSelfInput as a_, type HideProfileItemInput as aa, type InboxCounts as ab, type ListFeatureAllowlistOptions as ac, type MyGithubPullRequestsResponse as ad, type OrgClaimBinding as ae, type OrgClaimResult as af, type OrgDomainChallengeResult as ag, type OrgDomainVerifyResult as ah, type OrgNotificationEmailAddResult as ai, type OrgNotificationEmailRemoveResult as aj, type OrgProfileEcho as ak, type OrgProfileUpdateResult as al, PROFILE_COMPLETENESS_SIGNALS as am, type PdsWipeOutcome as an, type PendingConfirmation as ao, type PendingConfirmationsPage as ap, type PrimarySection as aq, type ProfileCompleteness as ar, type ProfileCompletenessSignal as as, type ProfileIndustryInput as at, type ProfileLocationAddress as au, type ProfileLocationInput as av, type ProfileSelfLocation as aw, QUOTED_POSTS_BATCH_MAX as ax, type QuotedPostAuthor as ay, type QuotedPostImage as az, type AccountSummary as b, getAdminReviewQueues as b$, type UploadPronunciationAudioResult as b0, type UserSettings as b1, type UserSettingsPatch as b2, UserSettingsSchema as b3, type VerifyExternalAccountResult as b4, type WipePreview as b5, addFeatureAllowlist as b6, addOrgNotificationEmail as b7, bulkHideProfileItems as b8, bulkHideStandardPublications as b9, fetchExternalAccounts as bA, fetchFeaturedProfile as bB, fetchFollowing as bC, fetchFollowingFeed as bD, fetchFollowingFeedVersion as bE, fetchGivenConfirmations as bF, fetchHeatmapData as bG, fetchHiddenActivityItems as bH, fetchHiddenApps as bI, fetchInboxCounts as bJ, fetchMyGithubPullRequests as bK, fetchMyRoadmapVotes as bL, fetchPendingConfirmations as bM, fetchProfileCompleteness as bN, fetchReactionStatus as bO, fetchRepoInventory as bP, fetchRoadmapVotes as bQ, fetchSimilarProfiles as bR, fetchSiteActivityPreset as bS, fetchStats as bT, fetchSuggestionCount as bU, fetchSuggestions as bV, fetchUnlinkedPositions as bW, fetchUserSettings as bX, fetchViewerPositionConfirmations as bY, fetchWipePreview as bZ, followUser as b_, bulkUnhideProfileItems as ba, bulkUnhideStandardPublications as bb, castRoadmapVote as bc, checkAppAccount as bd, confirmEndorsement as be, createConfirmation as bf, createEndorsement as bg, createExternalAccount as bh, createProfileLocation as bi, createReaction as bj, createSkill as bk, deleteAccount as bl, deleteAvatarOverride as bm, deleteExternalAccount as bn, deleteNamePronunciationAudio as bo, deleteProfileLocation as bp, deleteReaction as bq, deleteRepoRecords as br, deleteSkill as bs, dismissConfirmation as bt, dismissUnlinkedPosition as bu, fetchAccounts as bv, fetchActivityFeed as bw, fetchActivityPreferences as bx, fetchActivityTeaser as by, fetchAppsRegistry as bz, type ActivityFeedResponse as c, getBlueskySuggestions as c0, getFollowers as c1, getFollowing as c2, getMutuals as c3, hideActivityItem as c4, hideOrcidPublication as c5, hideProfileItem as c6, hideSifaPublication as c7, hideStandardPublication as c8, isNewerFollowingFeed as c9, updateProfileLocation as cA, updateProfileOverride as cB, updateProfileSelf as cC, updateSkill as cD, updateSkillSubCategories as cE, updateUserSettings as cF, uploadAvatar as cG, uploadNamePronunciationAudio as cH, verifyExternalAccount as cI, verifyOrgDomain as cJ, listFeatureAllowlist as ca, refreshOrcidPublications as cb, refreshPds as cc, removeFeatureAllowlist as cd, removeOrgNotificationEmail as ce, repoExportUrl as cf, requestOrgDomainChallenge as cg, resetProfile as ch, resolveQuotedPosts as ci, retractRoadmapVote as cj, revokeConfirmation as ck, setExternalAccountPrimary as cl, setSectionPrimary as cm, submitOrgClaim as cn, switchAccount as co, unfollowUser as cp, unhideActivityItem as cq, unhideOrcidPublication as cr, unhideProfileItem as cs, unhideSifaPublication as ct, unhideStandardPublication as cu, unsetExternalAccountPrimary as cv, unsetSectionPrimary as cw, updateActivityPreferences as cx, updateExternalAccount as cy, updateOrgProfile as cz, type ActivityItem as d, type ActivityItemLinkHealth as e, type ActivityPreferences as f, type ActivityTeaserResponse as g, type AdminReviewQueues as h, type AppRegistryEntry as i, type CastRoadmapVoteResult as j, type CheckAppAccountOptions as k, type ConfirmationInput as l, type ConfirmationSubjectInput as m, type CreateExternalAccountResult as n, type DismissUnlinkedPositionInput as o, type ExternalAccountInput as p, type FeaturedProfile as q, type FetchAccountsOptions as r, sifaQueryKeys as s, type FetchActivityFeedOptions as t, type FetchActivityPreferencesOptions as u, type FetchActivityTeaserOptions as v, type FetchConfirmationsOptions as w, type FetchFollowListOptions as x, type FetchFollowProfilePageOptions as y, type FetchFollowingFeedOptions as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@singi-labs/sifa-sdk",
3
- "version": "0.19.75",
3
+ "version": "0.19.76",
4
4
  "description": "Sifa SDK — public client library for the Sifa AppView on AT Protocol. Shared by sifa-web and sifa-app.",
5
5
  "license": "MIT",
6
6
  "type": "module",