@singi-labs/sifa-sdk 0.7.0 → 0.7.2

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.
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { P as Profile } from '../index-IDRpze8y.cjs';
3
+ import { f as Profile } from '../index-CpM21_Oy.cjs';
4
4
  import * as _tanstack_react_query from '@tanstack/react-query';
5
5
  import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
6
6
 
@@ -100,6 +100,12 @@ declare function useSifaConfig(): SifaApiConfig;
100
100
  * Server-callable (Next.js RSC) and client-callable (Expo, browser).
101
101
  */
102
102
  declare function fetchProfile(config: SifaApiConfig, handleOrDid: string, options?: ApiFetchOptions): Promise<Profile | null>;
103
+ /**
104
+ * Public AT Fund link for a profile, if one is configured. Returns `null`
105
+ * on any error or when the response payload's `url` field is missing or
106
+ * non-string.
107
+ */
108
+ declare function fetchAtFundLink(config: SifaApiConfig, did: string, options?: ApiFetchOptions): Promise<string | null>;
103
109
 
104
110
  /** Result returned by record-write mutations (create / update / delete). */
105
111
  interface WriteResult {
@@ -122,6 +128,59 @@ interface CreateResult extends WriteResult {
122
128
  */
123
129
  declare function createPosition(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
124
130
 
131
+ /** Public, aggregate stats shown on the homepage and similar surfaces. */
132
+ interface StatsResponse {
133
+ profileCount: number;
134
+ avatars: string[];
135
+ atproto: {
136
+ userCount: number;
137
+ growthPerSecond: number;
138
+ timestamp: number;
139
+ } | null;
140
+ }
141
+ /**
142
+ * Homepage stats (profile count, avatar samples, ATproto growth). Public
143
+ * endpoint -- safe to cache. Returns `null` on any error so callers can
144
+ * render a graceful empty state.
145
+ */
146
+ declare function fetchStats(config: SifaApiConfig, options?: ApiFetchOptions): Promise<StatsResponse | null>;
147
+
148
+ /** Catalog entry describing an ATproto app that Sifa surfaces activity for. */
149
+ interface AppRegistryEntry {
150
+ id: string;
151
+ name: string;
152
+ category: string;
153
+ collectionPrefixes: string[];
154
+ scanCollections: string[];
155
+ urlPattern?: string;
156
+ color: string;
157
+ }
158
+ /** Compact app representation returned by the hidden-apps endpoint. */
159
+ interface HiddenApp {
160
+ id: string;
161
+ name: string;
162
+ category: string;
163
+ }
164
+ interface FetchHiddenAppsOptions extends ApiFetchOptions {
165
+ /**
166
+ * Pass the caller's `Cookie` header on Next.js RSC server-side calls.
167
+ * `credentials: 'include'` does NOT propagate browser cookies in RSC,
168
+ * so authenticated server fetches must forward the header explicitly.
169
+ */
170
+ cookieHeader?: string;
171
+ }
172
+ /**
173
+ * Public app registry shown across discovery surfaces. Heavily cached.
174
+ * Returns `[]` on any error.
175
+ */
176
+ declare function fetchAppsRegistry(config: SifaApiConfig, options?: ApiFetchOptions): Promise<AppRegistryEntry[]>;
177
+ /**
178
+ * Apps the authenticated user has chosen to hide from their activity feed.
179
+ * Requires an authenticated session. Returns `[]` on any error (including
180
+ * the unauthenticated case).
181
+ */
182
+ declare function fetchHiddenApps(config: SifaApiConfig, options?: FetchHiddenAppsOptions): Promise<HiddenApp[]>;
183
+
125
184
  /** Profile entry returned by the search endpoint. */
126
185
  interface ProfileSearchResult {
127
186
  did?: string;
@@ -298,6 +357,229 @@ declare function fetchFollowing(config: SifaApiConfig, opts?: {
298
357
  limit?: number;
299
358
  } & ApiFetchOptions): Promise<FollowingResponse>;
300
359
 
360
+ interface QuotedPostAuthor {
361
+ did: string;
362
+ handle: string;
363
+ displayName?: string;
364
+ avatar?: string;
365
+ }
366
+ interface QuotedPostImage {
367
+ thumb: string;
368
+ fullsize: string;
369
+ alt?: string;
370
+ }
371
+ interface QuotedPostView {
372
+ uri: string;
373
+ cid: string;
374
+ author: QuotedPostAuthor;
375
+ text: string;
376
+ createdAt: string;
377
+ images?: QuotedPostImage[];
378
+ }
379
+ type QuotedPostResult = {
380
+ status: 'ok';
381
+ record: QuotedPostView;
382
+ } | {
383
+ status: 'deleted';
384
+ uri: string;
385
+ } | {
386
+ status: 'unavailable';
387
+ uri: string;
388
+ };
389
+ /** Max URIs per request to `POST /api/quoted-posts/resolve` (mirrors server cap). */
390
+ declare const QUOTED_POSTS_BATCH_MAX = 20;
391
+ interface ResolveQuotedPostsOptions extends ApiFetchOptions {
392
+ /** Cookie header for Next.js RSC server-side calls; ignored in browsers. */
393
+ cookieHeader?: string;
394
+ }
395
+ /**
396
+ * Resolve a batch of AT-URIs to their quoted-post snapshots via the Sifa AppView.
397
+ *
398
+ * Auto-deduplicates input URIs and splits requests into chunks of
399
+ * {@link QUOTED_POSTS_BATCH_MAX} so callers can pass an arbitrary-length array.
400
+ * Each chunk is fired in parallel. The server caches results in Valkey, so
401
+ * repeated calls for the same URI are cheap.
402
+ *
403
+ * Returns a map of `uri -> QuotedPostResult`. URIs that fail (network error,
404
+ * non-2xx, or the server omitting them) are absent from the map; the caller
405
+ * should render a skeleton or tombstone for those.
406
+ */
407
+ declare function resolveQuotedPosts(config: SifaApiConfig, uris: string[], options?: ResolveQuotedPostsOptions): Promise<Record<string, QuotedPostResult>>;
408
+
409
+ interface HeatmapDay {
410
+ date: string;
411
+ total: number;
412
+ apps: {
413
+ appId: string;
414
+ count: number;
415
+ }[];
416
+ }
417
+ interface HeatmapResponse {
418
+ days: HeatmapDay[];
419
+ appTotals: {
420
+ appId: string;
421
+ appName: string;
422
+ total: number;
423
+ }[];
424
+ thresholds: [number, number, number, number];
425
+ }
426
+ interface ActivityItem {
427
+ uri: string;
428
+ cid: string;
429
+ collection: string;
430
+ rkey: string;
431
+ record: Record<string, unknown>;
432
+ appId: string;
433
+ appName: string;
434
+ category: string;
435
+ indexedAt: string;
436
+ /**
437
+ * Set by the server when an `app.bsky.embed.record` quote was already
438
+ * resolved upstream (AppView path). Mutually exclusive with `quotedPostUri`.
439
+ */
440
+ quotedPost?: QuotedPostResult;
441
+ /**
442
+ * Set by the server when an `app.bsky.embed.record` quote needs client-side
443
+ * resolution (PDS path). Pass batches to {@link resolveQuotedPosts}.
444
+ * Mutually exclusive with `quotedPost`.
445
+ */
446
+ quotedPostUri?: string;
447
+ }
448
+ interface ActivityTeaserResponse {
449
+ items: ActivityItem[];
450
+ blueskyGated?: boolean;
451
+ backfillPending?: boolean;
452
+ failedApps?: string[];
453
+ }
454
+ interface ActivityFeedResponse {
455
+ items: ActivityItem[];
456
+ cursor: string | null;
457
+ hasMore: boolean;
458
+ availableCategories?: string[];
459
+ blueskyGated?: boolean;
460
+ failedApps?: string[];
461
+ }
462
+ /**
463
+ * Per-day activity counts for a profile across all ATproto apps. Returns
464
+ * `null` on any error so callers can render a graceful empty state.
465
+ */
466
+ declare function fetchHeatmapData(config: SifaApiConfig, handleOrDid: string, days: number, options?: ApiFetchOptions): Promise<HeatmapResponse | null>;
467
+ interface FetchActivityTeaserOptions extends ApiFetchOptions {
468
+ /**
469
+ * Pass the caller's `Cookie` header on Next.js RSC server-side calls.
470
+ * Required for authenticated server fetches because `credentials: 'include'`
471
+ * does not propagate browser cookies in RSC.
472
+ */
473
+ cookieHeader?: string;
474
+ }
475
+ /**
476
+ * Recent activity teaser for a profile (homepage-sized slice). Caps the
477
+ * upstream wait so the SSR path cannot hang. Returns `null` on any error.
478
+ */
479
+ declare function fetchActivityTeaser(config: SifaApiConfig, handleOrDid: string, options?: FetchActivityTeaserOptions): Promise<ActivityTeaserResponse | null>;
480
+ interface FetchActivityFeedOptions extends ApiFetchOptions {
481
+ category?: string;
482
+ limit?: number;
483
+ cursor?: string;
484
+ cookieHeader?: string;
485
+ }
486
+ /**
487
+ * Paginated activity feed for a profile. Always fresh (`cache: 'no-store'`).
488
+ * Returns `null` on any error.
489
+ */
490
+ declare function fetchActivityFeed(config: SifaApiConfig, handleOrDid: string, options?: FetchActivityFeedOptions): Promise<ActivityFeedResponse | null>;
491
+
492
+ /**
493
+ * Counts confirmed endorsements received by a DID. The backend's
494
+ * `GET /api/endorsement/:did` already returns only confirmed endorsements
495
+ * (via inner join with `endorsementConfirmations`), so this helper just
496
+ * returns the array length. Failures return 0 so callers can route safely.
497
+ *
498
+ * Public endpoint -- no credentials needed.
499
+ */
500
+ declare function fetchEndorsementCount(config: SifaApiConfig, did: string, options?: ApiFetchOptions): Promise<number>;
501
+
502
+ interface FetchNetworkStreamCountOptions extends ApiFetchOptions {
503
+ /**
504
+ * Pass the caller's `Cookie` header on Next.js RSC server-side calls.
505
+ * Required for authenticated server fetches because `credentials: 'include'`
506
+ * does not propagate browser cookies in RSC.
507
+ *
508
+ * When omitted, the request falls back to `credentials: 'include'` so
509
+ * client-side calls work without extra plumbing.
510
+ */
511
+ cookieHeader?: string;
512
+ }
513
+ /**
514
+ * Counts items in the authenticated user's network stream digest. The
515
+ * underlying `GET /api/stream/network` endpoint may 404 while the feature
516
+ * is in development; in that case (and on any other error) this returns
517
+ * 0 so callers can route safely to a fallback experience.
518
+ */
519
+ declare function fetchNetworkStreamCount(config: SifaApiConfig, did: string, options?: FetchNetworkStreamCountOptions): Promise<number>;
520
+
521
+ /** Per-URI reaction state for the authenticated viewer. */
522
+ interface ReactionStatus {
523
+ reacted: boolean;
524
+ rkey?: string;
525
+ collection?: string;
526
+ }
527
+ /** Result of checking whether the authenticated viewer has an account on a given app. */
528
+ interface AccountCheckResult {
529
+ hasAccount: boolean;
530
+ appName: string;
531
+ appUrl: string;
532
+ }
533
+ interface FetchReactionStatusOptions extends ApiFetchOptions {
534
+ /**
535
+ * Pass the caller's `Cookie` header on Next.js RSC server-side calls.
536
+ * Required for authenticated server fetches because `credentials: 'include'`
537
+ * does not propagate browser cookies in RSC.
538
+ */
539
+ cookieHeader?: string;
540
+ }
541
+ /**
542
+ * Batch-look up reaction status for multiple URIs. Returns `{}` for an
543
+ * empty input list (no network call) and `null` on any error.
544
+ */
545
+ declare function fetchReactionStatus(config: SifaApiConfig, uris: string[], options?: FetchReactionStatusOptions): Promise<Record<string, ReactionStatus> | null>;
546
+ interface CheckAppAccountOptions extends ApiFetchOptions {
547
+ cookieHeader?: string;
548
+ }
549
+ /**
550
+ * Check whether the authenticated viewer has an account on a given app.
551
+ * Returns `null` on any error.
552
+ */
553
+ declare function checkAppAccount(config: SifaApiConfig, appId: string, options?: CheckAppAccountOptions): Promise<AccountCheckResult | null>;
554
+
555
+ /** Voter on a roadmap item. */
556
+ interface RoadmapVoter {
557
+ did: string;
558
+ avatarUrl?: string;
559
+ }
560
+ /** Map of item key -> vote tally and voter list. */
561
+ type RoadmapVotesResponse = Record<string, {
562
+ count: number;
563
+ voters: RoadmapVoter[];
564
+ }>;
565
+ /**
566
+ * Public roadmap vote tallies, keyed by item. Returns `{}` on any error.
567
+ */
568
+ declare function fetchRoadmapVotes(config: SifaApiConfig, options?: ApiFetchOptions): Promise<RoadmapVotesResponse>;
569
+ interface FetchMyRoadmapVotesOptions extends ApiFetchOptions {
570
+ /**
571
+ * Pass the caller's `Cookie` header on Next.js RSC server-side calls.
572
+ * Required for authenticated server fetches because `credentials: 'include'`
573
+ * does not propagate browser cookies in RSC.
574
+ */
575
+ cookieHeader?: string;
576
+ }
577
+ /**
578
+ * Roadmap items the authenticated user has voted on. Returns `[]` on any
579
+ * error or when the response payload is shaped unexpectedly.
580
+ */
581
+ declare function fetchMyRoadmapVotes(config: SifaApiConfig, options?: FetchMyRoadmapVotesOptions): Promise<string[]>;
582
+
301
583
  /**
302
584
  * Query key factory for TanStack Query.
303
585
  *
@@ -314,6 +596,7 @@ declare const sifaQueryKeys: {
314
596
  readonly profile: {
315
597
  readonly all: () => readonly ["sifa", "profile"];
316
598
  readonly byHandle: (handleOrDid: string) => readonly ["sifa", "profile", string];
599
+ readonly atFundLink: (did: string) => readonly ["sifa", "profile", "at-fund-link", string];
317
600
  };
318
601
  readonly position: {
319
602
  readonly all: () => readonly ["sifa", "position"];
@@ -336,8 +619,41 @@ declare const sifaQueryKeys: {
336
619
  readonly all: () => readonly ["sifa", "follow"];
337
620
  readonly following: (opts: Record<string, unknown>) => readonly ["sifa", "follow", "following", Record<string, unknown>];
338
621
  };
622
+ readonly stats: {
623
+ readonly all: () => readonly ["sifa", "stats"];
624
+ readonly homepage: () => readonly ["sifa", "stats", "homepage"];
625
+ };
626
+ readonly apps: {
627
+ readonly all: () => readonly ["sifa", "apps"];
628
+ readonly registry: () => readonly ["sifa", "apps", "registry"];
629
+ readonly hidden: () => readonly ["sifa", "apps", "hidden"];
630
+ };
631
+ readonly activity: {
632
+ readonly all: () => readonly ["sifa", "activity"];
633
+ readonly heatmap: (handleOrDid: string, days: number) => readonly ["sifa", "activity", "heatmap", string, number];
634
+ readonly teaser: (handleOrDid: string) => readonly ["sifa", "activity", "teaser", string];
635
+ readonly feed: (handleOrDid: string, opts: Record<string, unknown>) => readonly ["sifa", "activity", "feed", string, Record<string, unknown>];
636
+ };
637
+ readonly endorsement: {
638
+ readonly all: () => readonly ["sifa", "endorsement"];
639
+ readonly count: (did: string) => readonly ["sifa", "endorsement", "count", string];
640
+ };
641
+ readonly stream: {
642
+ readonly all: () => readonly ["sifa", "stream"];
643
+ readonly networkCount: (did: string) => readonly ["sifa", "stream", "network-count", string];
644
+ };
645
+ readonly reactions: {
646
+ readonly all: () => readonly ["sifa", "reactions"];
647
+ readonly status: (uris: string[]) => readonly ["sifa", "reactions", "status", string[]];
648
+ readonly accountCheck: (appId: string) => readonly ["sifa", "reactions", "account-check", string];
649
+ };
650
+ readonly roadmap: {
651
+ readonly all: () => readonly ["sifa", "roadmap"];
652
+ readonly votes: () => readonly ["sifa", "roadmap", "votes"];
653
+ readonly myVotes: () => readonly ["sifa", "roadmap", "my-votes"];
654
+ };
339
655
  };
340
- type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | 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>;
656
+ type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sifaQueryKeys.profile.all> | ReturnType<typeof sifaQueryKeys.profile.byHandle> | ReturnType<typeof sifaQueryKeys.profile.atFundLink> | ReturnType<typeof sifaQueryKeys.position.all> | ReturnType<typeof sifaQueryKeys.position.byOwner> | ReturnType<typeof sifaQueryKeys.search.all> | ReturnType<typeof sifaQueryKeys.search.profiles> | ReturnType<typeof sifaQueryKeys.search.skills> | ReturnType<typeof sifaQueryKeys.search.filters> | 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.stats.all> | ReturnType<typeof sifaQueryKeys.stats.homepage> | ReturnType<typeof sifaQueryKeys.apps.all> | ReturnType<typeof sifaQueryKeys.apps.registry> | ReturnType<typeof sifaQueryKeys.apps.hidden> | ReturnType<typeof sifaQueryKeys.activity.all> | ReturnType<typeof sifaQueryKeys.activity.heatmap> | ReturnType<typeof sifaQueryKeys.activity.teaser> | ReturnType<typeof sifaQueryKeys.activity.feed> | ReturnType<typeof sifaQueryKeys.endorsement.all> | ReturnType<typeof sifaQueryKeys.endorsement.count> | ReturnType<typeof sifaQueryKeys.stream.all> | ReturnType<typeof sifaQueryKeys.stream.networkCount> | ReturnType<typeof sifaQueryKeys.reactions.all> | ReturnType<typeof sifaQueryKeys.reactions.status> | ReturnType<typeof sifaQueryKeys.reactions.accountCheck> | ReturnType<typeof sifaQueryKeys.roadmap.all> | ReturnType<typeof sifaQueryKeys.roadmap.votes> | ReturnType<typeof sifaQueryKeys.roadmap.myVotes>;
341
657
 
342
658
  /**
343
659
  * React hook that reads an aggregated profile by handle or DID via
@@ -347,6 +663,11 @@ type SifaQueryKey = ReturnType<typeof sifaQueryKeys.all> | ReturnType<typeof sif
347
663
  * fetch.
348
664
  */
349
665
  declare function useProfile(handleOrDid: string | undefined | null, options?: Omit<UseQueryOptions<Profile | null, Error, Profile | null, ReturnType<typeof sifaQueryKeys.profile.byHandle>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<Profile | null, Error>;
666
+ /**
667
+ * React hook for a profile's AT Fund link. Returns `null` data on error
668
+ * or when the profile has no link configured.
669
+ */
670
+ declare function useAtFundLink(did: string | undefined | null, options?: Omit<UseQueryOptions<string | null, Error, string | null, ReturnType<typeof sifaQueryKeys.profile.atFundLink>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<string | null, Error>;
350
671
 
351
672
  /**
352
673
  * React hook for creating a new position record. On success, invalidates
@@ -358,6 +679,19 @@ declare function useProfile(handleOrDid: string | undefined | null, options?: Om
358
679
  */
359
680
  declare function useCreatePosition(ownerDid: string, options?: Omit<UseMutationOptions<CreateResult, Error, Record<string, unknown>>, 'mutationFn'>): _tanstack_react_query.UseMutationResult<CreateResult, Error, Record<string, unknown>, unknown>;
360
681
 
682
+ /**
683
+ * React hook for the public homepage stats. Returns `null` data on error.
684
+ */
685
+ declare function useStats(options?: Omit<UseQueryOptions<StatsResponse | null, Error, StatsResponse | null, ReturnType<typeof sifaQueryKeys.stats.homepage>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<StatsResponse | null, Error>;
686
+
687
+ /** React hook for the public app registry. */
688
+ declare function useAppsRegistry(options?: Omit<UseQueryOptions<AppRegistryEntry[], Error, AppRegistryEntry[], ReturnType<typeof sifaQueryKeys.apps.registry>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<AppRegistryEntry[], Error>;
689
+ /**
690
+ * React hook for the authenticated user's hidden-apps list. Requires a
691
+ * client-side session (relies on `credentials: 'include'`).
692
+ */
693
+ declare function useHiddenApps(options?: Omit<UseQueryOptions<HiddenApp[], Error, HiddenApp[], ReturnType<typeof sifaQueryKeys.apps.hidden>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<HiddenApp[], Error>;
694
+
361
695
  declare function useSearchProfiles(filters: SearchFilters, options?: Omit<UseQueryOptions<SearchResponse, Error, SearchResponse, ReturnType<typeof sifaQueryKeys.search.profiles>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<SearchResponse, Error>;
362
696
  declare function useSkillSuggestions(query: string, options?: Omit<UseQueryOptions<SkillSearchResult[], Error, SkillSearchResult[], ReturnType<typeof sifaQueryKeys.search.skills>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<SkillSearchResult[], Error>;
363
697
  declare function useSearchFilters(options?: Omit<UseQueryOptions<FilterOptions, Error, FilterOptions, ReturnType<typeof sifaQueryKeys.search.filters>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<FilterOptions, Error>;
@@ -375,4 +709,30 @@ declare function useFollowing(opts?: {
375
709
  limit?: number;
376
710
  }, options?: Omit<UseQueryOptions<FollowingResponse, Error, FollowingResponse, ReturnType<typeof sifaQueryKeys.follow.following>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<FollowingResponse, Error>;
377
711
 
378
- export { ApiError, type ApiFetchOptions, type CreateResult, type FeaturedProfile, type FetchSuggestionsOptions, type FilterOptions, type FollowProfile, type FollowingResponse, type ProfileSearchResult, type SearchFilters, type SearchResponse, type SifaApiConfig, SifaProvider, type SifaProviderProps, type SifaQueryKey, type SimilarProfile, type SkillSearchResult, type SuggestionProfile, type SuggestionsResponse, type WriteResult, apiFetch, apiFetchOrNull, createPosition, fetchFeaturedProfile, fetchFollowing, fetchProfile, fetchSearchFilters, fetchSearchProfiles, fetchSimilarProfiles, fetchSkillSuggestions, fetchSuggestionCount, fetchSuggestions, sifaQueryKeys, useCreatePosition, useFeaturedProfile, useFollowing, useProfile, useSearchFilters, useSearchProfiles, useSifaConfig, useSimilarProfiles, useSkillSuggestions, useSuggestionCount, useSuggestions };
712
+ declare function useHeatmapData(handleOrDid: string | undefined | null, days: number, options?: Omit<UseQueryOptions<HeatmapResponse | null, Error, HeatmapResponse | null, ReturnType<typeof sifaQueryKeys.activity.heatmap>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<HeatmapResponse | null, Error>;
713
+ declare function useActivityTeaser(handleOrDid: string | undefined | null, options?: Omit<UseQueryOptions<ActivityTeaserResponse | null, Error, ActivityTeaserResponse | null, ReturnType<typeof sifaQueryKeys.activity.teaser>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ActivityTeaserResponse | null, Error>;
714
+ declare function useActivityFeed(handleOrDid: string | undefined | null, opts?: Pick<FetchActivityFeedOptions, 'category' | 'limit' | 'cursor'>, options?: Omit<UseQueryOptions<ActivityFeedResponse | null, Error, ActivityFeedResponse | null, ReturnType<typeof sifaQueryKeys.activity.feed>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<ActivityFeedResponse | null, Error>;
715
+
716
+ /** Count of confirmed endorsements for a DID. Returns 0 on error. */
717
+ declare function useEndorsementCount(did: string | undefined | null, options?: Omit<UseQueryOptions<number, Error, number, ReturnType<typeof sifaQueryKeys.endorsement.count>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<number, Error>;
718
+
719
+ /**
720
+ * Count of items in the authenticated user's network stream digest.
721
+ * Returns 0 on error (including when the endpoint isn't yet shipped).
722
+ */
723
+ declare function useNetworkStreamCount(did: string | undefined | null, options?: Omit<UseQueryOptions<number, Error, number, ReturnType<typeof sifaQueryKeys.stream.networkCount>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<number, Error>;
724
+
725
+ /**
726
+ * Batch-look up reaction status for multiple URIs. Skips the network call
727
+ * when `uris` is empty.
728
+ */
729
+ declare function useReactionStatus(uris: string[], options?: Omit<UseQueryOptions<Record<string, ReactionStatus> | null, Error, Record<string, ReactionStatus> | null, ReturnType<typeof sifaQueryKeys.reactions.status>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<Record<string, ReactionStatus> | null, Error>;
730
+ /** Check whether the authenticated viewer has an account on the given app. */
731
+ declare function useAppAccountCheck(appId: string | undefined | null, options?: Omit<UseQueryOptions<AccountCheckResult | null, Error, AccountCheckResult | null, ReturnType<typeof sifaQueryKeys.reactions.accountCheck>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<AccountCheckResult | null, Error>;
732
+
733
+ /** Public roadmap vote tallies. Returns `{}` data on error. */
734
+ declare function useRoadmapVotes(options?: Omit<UseQueryOptions<RoadmapVotesResponse, Error, RoadmapVotesResponse, ReturnType<typeof sifaQueryKeys.roadmap.votes>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<RoadmapVotesResponse, Error>;
735
+ /** Roadmap items the authenticated viewer has voted on. Returns `[]` data on error. */
736
+ declare function useMyRoadmapVotes(options?: Omit<UseQueryOptions<string[], Error, string[], ReturnType<typeof sifaQueryKeys.roadmap.myVotes>>, 'queryKey' | 'queryFn'>): _tanstack_react_query.UseQueryResult<string[], Error>;
737
+
738
+ export { type AccountCheckResult, type ActivityFeedResponse, type ActivityItem, type ActivityTeaserResponse, ApiError, type ApiFetchOptions, type AppRegistryEntry, type CheckAppAccountOptions, type CreateResult, type FeaturedProfile, type FetchActivityFeedOptions, type FetchActivityTeaserOptions, type FetchHiddenAppsOptions, type FetchMyRoadmapVotesOptions, type FetchNetworkStreamCountOptions, type FetchReactionStatusOptions, type FetchSuggestionsOptions, type FilterOptions, type FollowProfile, type FollowingResponse, type HeatmapDay, type HeatmapResponse, type HiddenApp, type ProfileSearchResult, QUOTED_POSTS_BATCH_MAX, type QuotedPostAuthor, type QuotedPostImage, type QuotedPostResult, type QuotedPostView, type ReactionStatus, type ResolveQuotedPostsOptions, type RoadmapVoter, type RoadmapVotesResponse, type SearchFilters, type SearchResponse, type SifaApiConfig, SifaProvider, type SifaProviderProps, type SifaQueryKey, type SimilarProfile, type SkillSearchResult, type StatsResponse, type SuggestionProfile, type SuggestionsResponse, type WriteResult, apiFetch, apiFetchOrNull, checkAppAccount, createPosition, fetchActivityFeed, fetchActivityTeaser, fetchAppsRegistry, fetchAtFundLink, fetchEndorsementCount, fetchFeaturedProfile, fetchFollowing, fetchHeatmapData, fetchHiddenApps, fetchMyRoadmapVotes, fetchNetworkStreamCount, fetchProfile, fetchReactionStatus, fetchRoadmapVotes, fetchSearchFilters, fetchSearchProfiles, fetchSimilarProfiles, fetchSkillSuggestions, fetchStats, fetchSuggestionCount, fetchSuggestions, resolveQuotedPosts, sifaQueryKeys, useActivityFeed, useActivityTeaser, useAppAccountCheck, useAppsRegistry, useAtFundLink, useCreatePosition, useEndorsementCount, useFeaturedProfile, useFollowing, useHeatmapData, useHiddenApps, useMyRoadmapVotes, useNetworkStreamCount, useProfile, useReactionStatus, useRoadmapVotes, useSearchFilters, useSearchProfiles, useSifaConfig, useSimilarProfiles, useSkillSuggestions, useStats, useSuggestionCount, useSuggestions };