@singi-labs/sifa-sdk 0.11.32 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BO4nea-m.cjs';
2
- export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.cjs';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile, e as ProfilePosition, f as ProfileCertification, g as ProfileEducation, h as ProfileHonor, i as ProfileLanguage, j as ProfileProject, k as ProfilePublication, l as ProfileInvolvement } from './adult-content-DDGP8W1e.cjs';
2
+ export { m as ADULT_CONTENT_LABELS, n as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, o as Endorsement, p as EndorsementData, E as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, s as PresentationLinkView, t as ProfileCourse, u as ProfileIndustry, v as ProfileInvolvementLink, w as ProfileLocation, x as ProfileOverrideSource, y as ProfilePresentation, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-DDGP8W1e.cjs';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.cjs';
4
4
  export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.cjs';
5
5
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.cjs';
@@ -507,6 +507,77 @@ declare const ARTIFACT_LINK_KIND_LABELS: Record<string, string>;
507
507
  /** Resolve a label for an artifact-link-kind value. Falls back to the raw value. */
508
508
  declare function getArtifactLinkKindLabel(value: string | undefined | null): string | undefined;
509
509
 
510
+ /**
511
+ * Verification providers -- the trust roots Sifa recognizes for AT Protocol
512
+ * `app.bsky.graph.verification` records.
513
+ *
514
+ * Framing (see decisions/2026-07-13-third-party-verification-providers.md, D4):
515
+ * a verification checkmark is ONE low-tier trust layer, not Sifa's headline.
516
+ * Most of what it certifies is "this account is who they claim to be" -- useful,
517
+ * and worth carrying because it's an already-recognized network signal, but low
518
+ * value on its own. It sits among Sifa's other trust signals and never becomes a
519
+ * score or a gate. This registry only decides which issuers Sifa displays and
520
+ * with what provenance.
521
+ *
522
+ * Data-only: badge colors and icons are consumer concerns (React DOM on web,
523
+ * React Native on mobile), same split as {@link PLATFORM_LABELS}. Consumers map
524
+ * a provider id to a token/color.
525
+ */
526
+ type VerificationProviderId = 'bluesky' | 'mu';
527
+ /** How Sifa learns about a provider's verifications. */
528
+ type VerificationSource = 'bluesky-api' | 'firehose';
529
+ interface VerificationProvider {
530
+ id: VerificationProviderId;
531
+ /** Human label for the badge popover, e.g. "Bluesky", "mu (Eurosky)". */
532
+ label: string;
533
+ /**
534
+ * Primary-display priority (D1): when an account holds verifications from
535
+ * multiple providers, the lowest number wins the single inline badge and the
536
+ * rest move into the popover. Must be unique across providers.
537
+ */
538
+ priority: number;
539
+ /**
540
+ * - `bluesky-api`: sourced from Bluesky's public-API `verifiedStatus`. Bluesky
541
+ * maintains its own trusted-verifier set, so Sifa keeps no local DID list.
542
+ * - `firehose`: sourced from the Jetstream, gated on {@link verifierDids}.
543
+ */
544
+ source: VerificationSource;
545
+ /**
546
+ * Trusted verifier DIDs for firehose-sourced providers. A verification record
547
+ * counts only if its ISSUER DID is in this list. Empty for `bluesky-api`
548
+ * providers (Bluesky's AppView owns that decision). DIDs, not handles: a handle
549
+ * takeover must never confer verifier status.
550
+ */
551
+ verifierDids: readonly string[];
552
+ }
553
+ /**
554
+ * A verification held by an account, as surfaced to the UI. `issuerDid` is
555
+ * present for firehose-sourced providers and absent for `bluesky-api`.
556
+ */
557
+ interface AccountVerification {
558
+ provider: VerificationProviderId;
559
+ verifiedAt?: string | null;
560
+ issuerDid?: string | null;
561
+ }
562
+ declare const VERIFICATION_PROVIDERS: Record<VerificationProviderId, VerificationProvider>;
563
+ declare function isKnownVerificationProvider(id: string): id is VerificationProviderId;
564
+ declare function getVerificationProvider(id: string): VerificationProvider | undefined;
565
+ /**
566
+ * The firehose issuer gate: given the DID that authored an
567
+ * `app.bsky.graph.verification` record, return the provider it verifies for, or
568
+ * `null` if the issuer is not a recognized firehose verifier. API-sourced
569
+ * providers (Bluesky) are never matched here -- their verifications do not enter
570
+ * through the firehose, so a self-issued record cannot resolve to them.
571
+ */
572
+ declare function resolveVerifierProvider(issuerDid: string): VerificationProviderId | null;
573
+ /**
574
+ * D1 primary-provider selection: from all verifications an account holds, pick
575
+ * the one whose provider has the highest priority (lowest `priority` number) for
576
+ * the single inline badge. The rest belong in the popover. Verifications from
577
+ * unknown providers are ignored. Returns `null` when nothing is displayable.
578
+ */
579
+ declare function primaryVerification(verifications: readonly AccountVerification[]): AccountVerification | null;
580
+
510
581
  /**
511
582
  * Best-effort title-case for a company display name.
512
583
  *
@@ -582,6 +653,17 @@ declare function formatRelativeTime(dateString: string): string;
582
653
  */
583
654
  declare function formatPresentationDuration(duration: PresentationDuration | undefined | null): string | undefined;
584
655
 
656
+ /**
657
+ * Server-safe timeline date formatters shared by every profile surface.
658
+ */
659
+ /** Format "2007-01" as "Jan 2007", pass through year-only strings. */
660
+ declare function formatTimelineDate(dateStr: string): string;
661
+ /**
662
+ * Format a date range for display. Handles missing dates, equal start/end,
663
+ * and ongoing entries (showPresent defaults to true).
664
+ */
665
+ declare function formatDateRange(start?: string, end?: string, showPresent?: boolean): string;
666
+
585
667
  /** A compact roll-up of a presentation's deliveries for the collapsed view. */
586
668
  interface PresentationDeliverySummary {
587
669
  /** Times the talk was actually delivered (cancelled occasions excluded). */
@@ -1187,6 +1269,205 @@ declare function classifyEntityRef(entityRef: string | null | undefined): Entity
1187
1269
  /** Whether a position carries a durable link of any anchor quality. */
1188
1270
  declare function isLinked(entityRef: string | null | undefined): boolean;
1189
1271
 
1272
+ /**
1273
+ * Shared, single-source-of-truth model for which profile sections render, in
1274
+ * what order, their nav grouping, and which items a given viewer may see.
1275
+ *
1276
+ * Every Sifa profile surface builds on this: the HTML profile page, the
1277
+ * Markdown / DOCX / print exports, and the standalone personal-site renderer.
1278
+ * Adding a section to {@link ALL_SECTIONS} makes it appear everywhere (the
1279
+ * exports drive presence + order from here, and {@link SECTION_LABELS} is an
1280
+ * exhaustive `Record<SectionId, string>`, so a new id is a compile error until
1281
+ * it has a label).
1282
+ *
1283
+ * The per-section sorts live in `./section-sorts.js`, built on the same SDK
1284
+ * date extractors the HTML section components use, so the surfaces cannot
1285
+ * diverge on ordering.
1286
+ */
1287
+
1288
+ /**
1289
+ * Side-nav groups, in display order. Each labels a contiguous run of sections
1290
+ * in {@link ALL_SECTIONS}. `labelKey` resolves against the consumer's `sections`
1291
+ * i18n namespace.
1292
+ */
1293
+ declare const SECTION_GROUPS: readonly [{
1294
+ readonly id: "overview";
1295
+ readonly labelKey: "groupOverview";
1296
+ }, {
1297
+ readonly id: "experience";
1298
+ readonly labelKey: "groupExperience";
1299
+ }, {
1300
+ readonly id: "qualifications";
1301
+ readonly labelKey: "groupQualifications";
1302
+ }, {
1303
+ readonly id: "more";
1304
+ readonly labelKey: "groupMore";
1305
+ }];
1306
+ type SectionGroupId = (typeof SECTION_GROUPS)[number]['id'];
1307
+ /**
1308
+ * Profile body sections in render + nav order (evidence-first): identity and
1309
+ * activity lead, then living work (career, skills, projects, talks,
1310
+ * publications), then the formal record (credentials, education, courses), then
1311
+ * the rest. `ns` selects the consumer's i18n namespace for `labelKey`; `group`
1312
+ * ties the section to a {@link SECTION_GROUPS} header.
1313
+ */
1314
+ declare const ALL_SECTIONS: readonly [{
1315
+ readonly id: "about";
1316
+ readonly labelKey: "about";
1317
+ readonly ns: "profile";
1318
+ readonly group: "overview";
1319
+ }, {
1320
+ readonly id: "career";
1321
+ readonly labelKey: "career";
1322
+ readonly ns: "sections";
1323
+ readonly group: "experience";
1324
+ }, {
1325
+ readonly id: "skills";
1326
+ readonly labelKey: "skills";
1327
+ readonly ns: "sections";
1328
+ readonly group: "experience";
1329
+ }, {
1330
+ readonly id: "projects";
1331
+ readonly labelKey: "projects";
1332
+ readonly ns: "sections";
1333
+ readonly group: "experience";
1334
+ }, {
1335
+ readonly id: "presentations";
1336
+ readonly labelKey: "talksAndSessions";
1337
+ readonly ns: "sections";
1338
+ readonly group: "experience";
1339
+ }, {
1340
+ readonly id: "publications";
1341
+ readonly labelKey: "publications";
1342
+ readonly ns: "sections";
1343
+ readonly group: "experience";
1344
+ }, {
1345
+ readonly id: "credentials";
1346
+ readonly labelKey: "credentials";
1347
+ readonly ns: "sections";
1348
+ readonly group: "qualifications";
1349
+ }, {
1350
+ readonly id: "education";
1351
+ readonly labelKey: "education";
1352
+ readonly ns: "sections";
1353
+ readonly group: "qualifications";
1354
+ }, {
1355
+ readonly id: "courses";
1356
+ readonly labelKey: "courses";
1357
+ readonly ns: "sections";
1358
+ readonly group: "qualifications";
1359
+ }, {
1360
+ readonly id: "awards";
1361
+ readonly labelKey: "awards";
1362
+ readonly ns: "sections";
1363
+ readonly group: "more";
1364
+ }, {
1365
+ readonly id: "involvement";
1366
+ readonly labelKey: "involvement";
1367
+ readonly ns: "sections";
1368
+ readonly group: "more";
1369
+ }, {
1370
+ readonly id: "languages";
1371
+ readonly labelKey: "languages";
1372
+ readonly ns: "sections";
1373
+ readonly group: "more";
1374
+ }, {
1375
+ readonly id: "other-profiles";
1376
+ readonly labelKey: "otherProfiles";
1377
+ readonly ns: "sections";
1378
+ readonly group: "more";
1379
+ }];
1380
+ /** Every profile section id, in canonical render order. */
1381
+ type SectionId = (typeof ALL_SECTIONS)[number]['id'];
1382
+ /** Whether a section has content for a given profile (used to hide empty nav entries for visitors). */
1383
+ declare function isSectionPopulated(profile: Profile, id: string): boolean;
1384
+ /**
1385
+ * The section ids a given viewer should see, in {@link ALL_SECTIONS} order.
1386
+ * Owners see every section; visitors only see populated ones.
1387
+ */
1388
+ declare function getVisibleSectionIds(profile: Profile, isOwnProfile: boolean): SectionId[];
1389
+ /** Drop items the owner has hidden from visitors. */
1390
+ declare function filterHidden<T extends {
1391
+ hidden?: boolean;
1392
+ }>(items: T[] | undefined): T[];
1393
+ /**
1394
+ * Items visible to a given viewer: owners see their own hidden items, visitors
1395
+ * do not. Shared by every export format (markdown, docx, print) and the public
1396
+ * `.md` route so the hidden rule lives in one place.
1397
+ */
1398
+ declare function visibleItems<T extends {
1399
+ hidden?: boolean;
1400
+ }>(items: T[] | undefined, isOwnProfile: boolean): T[];
1401
+ /**
1402
+ * English heading text for each section, keyed by {@link SectionId} (e.g.
1403
+ * `other-profiles` renders as "Links"). Exhaustive `Record<SectionId, string>`:
1404
+ * adding a section to {@link ALL_SECTIONS} without a label here is a compile
1405
+ * error, so a section can never silently render without (or with a stale)
1406
+ * heading. Consumers with i18n resolve their own localized labels via
1407
+ * `labelKey`; this is the canonical English fallback used by the exports.
1408
+ */
1409
+ declare const SECTION_LABELS: Record<SectionId, string>;
1410
+
1411
+ /**
1412
+ * Per-section item sorts, shared by every profile surface so ordering can't
1413
+ * diverge between the HTML page and the Markdown / DOCX / print exports and the
1414
+ * standalone personal-site renderer. Thin wrappers over the SDK date extractors
1415
+ * plus the range/language sorts in this directory.
1416
+ */
1417
+
1418
+ /**
1419
+ * Move a `primary && !endedAt` position to the top, matching the HTML career
1420
+ * section, so the current primary role always leads.
1421
+ */
1422
+ declare function hoistPrimary(positions: ProfilePosition[]): ProfilePosition[];
1423
+ declare const sortPositions: (items: ProfilePosition[]) => ProfilePosition[];
1424
+ declare const sortEducation: (items: ProfileEducation[]) => ProfileEducation[];
1425
+ declare const sortProjects: (items: ProfileProject[]) => ProfileProject[];
1426
+ declare const sortPublications: (items: ProfilePublication[]) => ProfilePublication[];
1427
+ declare const sortCertifications: (items: ProfileCertification[]) => ProfileCertification[];
1428
+ declare const sortHonors: (items: ProfileHonor[]) => ProfileHonor[];
1429
+ declare const sortLanguages: (items: ProfileLanguage[]) => ProfileLanguage[];
1430
+
1431
+ /**
1432
+ * Sort items by date range, floating ongoing entries (startDate present, endDate
1433
+ * absent) to the top. Items with no dates sink to the bottom.
1434
+ *
1435
+ * Used by sections whose lexicons have no explicit `current` flag -- ongoing is
1436
+ * implicit from a missing endDate. Without this wrapper, the shared
1437
+ * `dateRangeExtractor` reads `item.current` (always undefined for these items)
1438
+ * and sinks ongoing entries below completed ones.
1439
+ *
1440
+ * Sections using lexicon-aligned `startedAt`/`endedAt` fields (positions,
1441
+ * education) should use `lexiconDateExtractor` instead -- that extractor already
1442
+ * derives `current` correctly.
1443
+ */
1444
+ declare function sortByActiveDateRange<T extends {
1445
+ startDate?: string;
1446
+ endDate?: string;
1447
+ }>(items: T[]): T[];
1448
+
1449
+ /** Sort languages by proficiency (native first), then alphabetically within a rank. */
1450
+ declare function sortLanguagesByProficiency<T extends {
1451
+ language?: string;
1452
+ proficiency?: string;
1453
+ }>(items: T[]): T[];
1454
+
1455
+ /**
1456
+ * Fixed display order of involvement headings. A group renders only when it has
1457
+ * records. Charity + mapped legacy volunteering fall under "Volunteering".
1458
+ */
1459
+ declare const INVOLVEMENT_HEADING_ORDER: readonly ["Open Source", "Community", "Volunteering", "Civic", "Other"];
1460
+ interface InvolvementGroup {
1461
+ heading: string;
1462
+ items: ProfileInvolvement[];
1463
+ }
1464
+ /**
1465
+ * Group involvement records by their kind's display heading, in the fixed order
1466
+ * above, most-recent first within a group. Empty groups are omitted. An unknown
1467
+ * kind falls under "Other" (via the shared heading map).
1468
+ */
1469
+ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
1470
+
1190
1471
  /**
1191
1472
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
1192
1473
  *
@@ -1196,4 +1477,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1196
1477
  */
1197
1478
  declare const SIFA_SDK_VERSION: string;
1198
1479
 
1199
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1480
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SectionGroupId, type SectionId, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hoistPrimary, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes, visibleItems };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BO4nea-m.js';
2
- export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.js';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile, e as ProfilePosition, f as ProfileCertification, g as ProfileEducation, h as ProfileHonor, i as ProfileLanguage, j as ProfileProject, k as ProfilePublication, l as ProfileInvolvement } from './adult-content-DDGP8W1e.js';
2
+ export { m as ADULT_CONTENT_LABELS, n as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, o as Endorsement, p as EndorsementData, E as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, s as PresentationLinkView, t as ProfileCourse, u as ProfileIndustry, v as ProfileInvolvementLink, w as ProfileLocation, x as ProfileOverrideSource, y as ProfilePresentation, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-DDGP8W1e.js';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.js';
4
4
  export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.js';
5
5
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.js';
@@ -507,6 +507,77 @@ declare const ARTIFACT_LINK_KIND_LABELS: Record<string, string>;
507
507
  /** Resolve a label for an artifact-link-kind value. Falls back to the raw value. */
508
508
  declare function getArtifactLinkKindLabel(value: string | undefined | null): string | undefined;
509
509
 
510
+ /**
511
+ * Verification providers -- the trust roots Sifa recognizes for AT Protocol
512
+ * `app.bsky.graph.verification` records.
513
+ *
514
+ * Framing (see decisions/2026-07-13-third-party-verification-providers.md, D4):
515
+ * a verification checkmark is ONE low-tier trust layer, not Sifa's headline.
516
+ * Most of what it certifies is "this account is who they claim to be" -- useful,
517
+ * and worth carrying because it's an already-recognized network signal, but low
518
+ * value on its own. It sits among Sifa's other trust signals and never becomes a
519
+ * score or a gate. This registry only decides which issuers Sifa displays and
520
+ * with what provenance.
521
+ *
522
+ * Data-only: badge colors and icons are consumer concerns (React DOM on web,
523
+ * React Native on mobile), same split as {@link PLATFORM_LABELS}. Consumers map
524
+ * a provider id to a token/color.
525
+ */
526
+ type VerificationProviderId = 'bluesky' | 'mu';
527
+ /** How Sifa learns about a provider's verifications. */
528
+ type VerificationSource = 'bluesky-api' | 'firehose';
529
+ interface VerificationProvider {
530
+ id: VerificationProviderId;
531
+ /** Human label for the badge popover, e.g. "Bluesky", "mu (Eurosky)". */
532
+ label: string;
533
+ /**
534
+ * Primary-display priority (D1): when an account holds verifications from
535
+ * multiple providers, the lowest number wins the single inline badge and the
536
+ * rest move into the popover. Must be unique across providers.
537
+ */
538
+ priority: number;
539
+ /**
540
+ * - `bluesky-api`: sourced from Bluesky's public-API `verifiedStatus`. Bluesky
541
+ * maintains its own trusted-verifier set, so Sifa keeps no local DID list.
542
+ * - `firehose`: sourced from the Jetstream, gated on {@link verifierDids}.
543
+ */
544
+ source: VerificationSource;
545
+ /**
546
+ * Trusted verifier DIDs for firehose-sourced providers. A verification record
547
+ * counts only if its ISSUER DID is in this list. Empty for `bluesky-api`
548
+ * providers (Bluesky's AppView owns that decision). DIDs, not handles: a handle
549
+ * takeover must never confer verifier status.
550
+ */
551
+ verifierDids: readonly string[];
552
+ }
553
+ /**
554
+ * A verification held by an account, as surfaced to the UI. `issuerDid` is
555
+ * present for firehose-sourced providers and absent for `bluesky-api`.
556
+ */
557
+ interface AccountVerification {
558
+ provider: VerificationProviderId;
559
+ verifiedAt?: string | null;
560
+ issuerDid?: string | null;
561
+ }
562
+ declare const VERIFICATION_PROVIDERS: Record<VerificationProviderId, VerificationProvider>;
563
+ declare function isKnownVerificationProvider(id: string): id is VerificationProviderId;
564
+ declare function getVerificationProvider(id: string): VerificationProvider | undefined;
565
+ /**
566
+ * The firehose issuer gate: given the DID that authored an
567
+ * `app.bsky.graph.verification` record, return the provider it verifies for, or
568
+ * `null` if the issuer is not a recognized firehose verifier. API-sourced
569
+ * providers (Bluesky) are never matched here -- their verifications do not enter
570
+ * through the firehose, so a self-issued record cannot resolve to them.
571
+ */
572
+ declare function resolveVerifierProvider(issuerDid: string): VerificationProviderId | null;
573
+ /**
574
+ * D1 primary-provider selection: from all verifications an account holds, pick
575
+ * the one whose provider has the highest priority (lowest `priority` number) for
576
+ * the single inline badge. The rest belong in the popover. Verifications from
577
+ * unknown providers are ignored. Returns `null` when nothing is displayable.
578
+ */
579
+ declare function primaryVerification(verifications: readonly AccountVerification[]): AccountVerification | null;
580
+
510
581
  /**
511
582
  * Best-effort title-case for a company display name.
512
583
  *
@@ -582,6 +653,17 @@ declare function formatRelativeTime(dateString: string): string;
582
653
  */
583
654
  declare function formatPresentationDuration(duration: PresentationDuration | undefined | null): string | undefined;
584
655
 
656
+ /**
657
+ * Server-safe timeline date formatters shared by every profile surface.
658
+ */
659
+ /** Format "2007-01" as "Jan 2007", pass through year-only strings. */
660
+ declare function formatTimelineDate(dateStr: string): string;
661
+ /**
662
+ * Format a date range for display. Handles missing dates, equal start/end,
663
+ * and ongoing entries (showPresent defaults to true).
664
+ */
665
+ declare function formatDateRange(start?: string, end?: string, showPresent?: boolean): string;
666
+
585
667
  /** A compact roll-up of a presentation's deliveries for the collapsed view. */
586
668
  interface PresentationDeliverySummary {
587
669
  /** Times the talk was actually delivered (cancelled occasions excluded). */
@@ -1187,6 +1269,205 @@ declare function classifyEntityRef(entityRef: string | null | undefined): Entity
1187
1269
  /** Whether a position carries a durable link of any anchor quality. */
1188
1270
  declare function isLinked(entityRef: string | null | undefined): boolean;
1189
1271
 
1272
+ /**
1273
+ * Shared, single-source-of-truth model for which profile sections render, in
1274
+ * what order, their nav grouping, and which items a given viewer may see.
1275
+ *
1276
+ * Every Sifa profile surface builds on this: the HTML profile page, the
1277
+ * Markdown / DOCX / print exports, and the standalone personal-site renderer.
1278
+ * Adding a section to {@link ALL_SECTIONS} makes it appear everywhere (the
1279
+ * exports drive presence + order from here, and {@link SECTION_LABELS} is an
1280
+ * exhaustive `Record<SectionId, string>`, so a new id is a compile error until
1281
+ * it has a label).
1282
+ *
1283
+ * The per-section sorts live in `./section-sorts.js`, built on the same SDK
1284
+ * date extractors the HTML section components use, so the surfaces cannot
1285
+ * diverge on ordering.
1286
+ */
1287
+
1288
+ /**
1289
+ * Side-nav groups, in display order. Each labels a contiguous run of sections
1290
+ * in {@link ALL_SECTIONS}. `labelKey` resolves against the consumer's `sections`
1291
+ * i18n namespace.
1292
+ */
1293
+ declare const SECTION_GROUPS: readonly [{
1294
+ readonly id: "overview";
1295
+ readonly labelKey: "groupOverview";
1296
+ }, {
1297
+ readonly id: "experience";
1298
+ readonly labelKey: "groupExperience";
1299
+ }, {
1300
+ readonly id: "qualifications";
1301
+ readonly labelKey: "groupQualifications";
1302
+ }, {
1303
+ readonly id: "more";
1304
+ readonly labelKey: "groupMore";
1305
+ }];
1306
+ type SectionGroupId = (typeof SECTION_GROUPS)[number]['id'];
1307
+ /**
1308
+ * Profile body sections in render + nav order (evidence-first): identity and
1309
+ * activity lead, then living work (career, skills, projects, talks,
1310
+ * publications), then the formal record (credentials, education, courses), then
1311
+ * the rest. `ns` selects the consumer's i18n namespace for `labelKey`; `group`
1312
+ * ties the section to a {@link SECTION_GROUPS} header.
1313
+ */
1314
+ declare const ALL_SECTIONS: readonly [{
1315
+ readonly id: "about";
1316
+ readonly labelKey: "about";
1317
+ readonly ns: "profile";
1318
+ readonly group: "overview";
1319
+ }, {
1320
+ readonly id: "career";
1321
+ readonly labelKey: "career";
1322
+ readonly ns: "sections";
1323
+ readonly group: "experience";
1324
+ }, {
1325
+ readonly id: "skills";
1326
+ readonly labelKey: "skills";
1327
+ readonly ns: "sections";
1328
+ readonly group: "experience";
1329
+ }, {
1330
+ readonly id: "projects";
1331
+ readonly labelKey: "projects";
1332
+ readonly ns: "sections";
1333
+ readonly group: "experience";
1334
+ }, {
1335
+ readonly id: "presentations";
1336
+ readonly labelKey: "talksAndSessions";
1337
+ readonly ns: "sections";
1338
+ readonly group: "experience";
1339
+ }, {
1340
+ readonly id: "publications";
1341
+ readonly labelKey: "publications";
1342
+ readonly ns: "sections";
1343
+ readonly group: "experience";
1344
+ }, {
1345
+ readonly id: "credentials";
1346
+ readonly labelKey: "credentials";
1347
+ readonly ns: "sections";
1348
+ readonly group: "qualifications";
1349
+ }, {
1350
+ readonly id: "education";
1351
+ readonly labelKey: "education";
1352
+ readonly ns: "sections";
1353
+ readonly group: "qualifications";
1354
+ }, {
1355
+ readonly id: "courses";
1356
+ readonly labelKey: "courses";
1357
+ readonly ns: "sections";
1358
+ readonly group: "qualifications";
1359
+ }, {
1360
+ readonly id: "awards";
1361
+ readonly labelKey: "awards";
1362
+ readonly ns: "sections";
1363
+ readonly group: "more";
1364
+ }, {
1365
+ readonly id: "involvement";
1366
+ readonly labelKey: "involvement";
1367
+ readonly ns: "sections";
1368
+ readonly group: "more";
1369
+ }, {
1370
+ readonly id: "languages";
1371
+ readonly labelKey: "languages";
1372
+ readonly ns: "sections";
1373
+ readonly group: "more";
1374
+ }, {
1375
+ readonly id: "other-profiles";
1376
+ readonly labelKey: "otherProfiles";
1377
+ readonly ns: "sections";
1378
+ readonly group: "more";
1379
+ }];
1380
+ /** Every profile section id, in canonical render order. */
1381
+ type SectionId = (typeof ALL_SECTIONS)[number]['id'];
1382
+ /** Whether a section has content for a given profile (used to hide empty nav entries for visitors). */
1383
+ declare function isSectionPopulated(profile: Profile, id: string): boolean;
1384
+ /**
1385
+ * The section ids a given viewer should see, in {@link ALL_SECTIONS} order.
1386
+ * Owners see every section; visitors only see populated ones.
1387
+ */
1388
+ declare function getVisibleSectionIds(profile: Profile, isOwnProfile: boolean): SectionId[];
1389
+ /** Drop items the owner has hidden from visitors. */
1390
+ declare function filterHidden<T extends {
1391
+ hidden?: boolean;
1392
+ }>(items: T[] | undefined): T[];
1393
+ /**
1394
+ * Items visible to a given viewer: owners see their own hidden items, visitors
1395
+ * do not. Shared by every export format (markdown, docx, print) and the public
1396
+ * `.md` route so the hidden rule lives in one place.
1397
+ */
1398
+ declare function visibleItems<T extends {
1399
+ hidden?: boolean;
1400
+ }>(items: T[] | undefined, isOwnProfile: boolean): T[];
1401
+ /**
1402
+ * English heading text for each section, keyed by {@link SectionId} (e.g.
1403
+ * `other-profiles` renders as "Links"). Exhaustive `Record<SectionId, string>`:
1404
+ * adding a section to {@link ALL_SECTIONS} without a label here is a compile
1405
+ * error, so a section can never silently render without (or with a stale)
1406
+ * heading. Consumers with i18n resolve their own localized labels via
1407
+ * `labelKey`; this is the canonical English fallback used by the exports.
1408
+ */
1409
+ declare const SECTION_LABELS: Record<SectionId, string>;
1410
+
1411
+ /**
1412
+ * Per-section item sorts, shared by every profile surface so ordering can't
1413
+ * diverge between the HTML page and the Markdown / DOCX / print exports and the
1414
+ * standalone personal-site renderer. Thin wrappers over the SDK date extractors
1415
+ * plus the range/language sorts in this directory.
1416
+ */
1417
+
1418
+ /**
1419
+ * Move a `primary && !endedAt` position to the top, matching the HTML career
1420
+ * section, so the current primary role always leads.
1421
+ */
1422
+ declare function hoistPrimary(positions: ProfilePosition[]): ProfilePosition[];
1423
+ declare const sortPositions: (items: ProfilePosition[]) => ProfilePosition[];
1424
+ declare const sortEducation: (items: ProfileEducation[]) => ProfileEducation[];
1425
+ declare const sortProjects: (items: ProfileProject[]) => ProfileProject[];
1426
+ declare const sortPublications: (items: ProfilePublication[]) => ProfilePublication[];
1427
+ declare const sortCertifications: (items: ProfileCertification[]) => ProfileCertification[];
1428
+ declare const sortHonors: (items: ProfileHonor[]) => ProfileHonor[];
1429
+ declare const sortLanguages: (items: ProfileLanguage[]) => ProfileLanguage[];
1430
+
1431
+ /**
1432
+ * Sort items by date range, floating ongoing entries (startDate present, endDate
1433
+ * absent) to the top. Items with no dates sink to the bottom.
1434
+ *
1435
+ * Used by sections whose lexicons have no explicit `current` flag -- ongoing is
1436
+ * implicit from a missing endDate. Without this wrapper, the shared
1437
+ * `dateRangeExtractor` reads `item.current` (always undefined for these items)
1438
+ * and sinks ongoing entries below completed ones.
1439
+ *
1440
+ * Sections using lexicon-aligned `startedAt`/`endedAt` fields (positions,
1441
+ * education) should use `lexiconDateExtractor` instead -- that extractor already
1442
+ * derives `current` correctly.
1443
+ */
1444
+ declare function sortByActiveDateRange<T extends {
1445
+ startDate?: string;
1446
+ endDate?: string;
1447
+ }>(items: T[]): T[];
1448
+
1449
+ /** Sort languages by proficiency (native first), then alphabetically within a rank. */
1450
+ declare function sortLanguagesByProficiency<T extends {
1451
+ language?: string;
1452
+ proficiency?: string;
1453
+ }>(items: T[]): T[];
1454
+
1455
+ /**
1456
+ * Fixed display order of involvement headings. A group renders only when it has
1457
+ * records. Charity + mapped legacy volunteering fall under "Volunteering".
1458
+ */
1459
+ declare const INVOLVEMENT_HEADING_ORDER: readonly ["Open Source", "Community", "Volunteering", "Civic", "Other"];
1460
+ interface InvolvementGroup {
1461
+ heading: string;
1462
+ items: ProfileInvolvement[];
1463
+ }
1464
+ /**
1465
+ * Group involvement records by their kind's display heading, in the fixed order
1466
+ * above, most-recent first within a group. Empty groups are omitted. An unknown
1467
+ * kind falls under "Other" (via the shared heading map).
1468
+ */
1469
+ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
1470
+
1190
1471
  /**
1191
1472
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
1192
1473
  *
@@ -1196,4 +1477,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1196
1477
  */
1197
1478
  declare const SIFA_SDK_VERSION: string;
1198
1479
 
1199
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1480
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SectionGroupId, type SectionId, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hoistPrimary, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes, visibleItems };