import { IProfileData } from './NcProfileHoverCard.vue';
/** Default TTL for cached profile payloads (30 minutes). */
export declare const PROFILE_CACHE_TTL_MS: number;
/**
 * Return a non-expired cached profile for the user, or null.
 *
 * @param userId - User id
 */
export declare function getCachedProfile(userId: string): IProfileData | null;
/**
 * Store profile data in the shared TTL cache.
 *
 * @param userId - User id
 * @param data - Profile payload
 * @param ttlMs - Time to live in milliseconds
 */
export declare function setCachedProfile(userId: string, data: IProfileData, ttlMs?: number): void;
/**
 * Clear all cached profiles and in-flight fetches. Used by tests.
 *
 * @internal
 */
export declare function clearProfileCache(): void;
/**
 * Fetch a profile with shared TTL cache and in-flight request deduplication.
 *
 * @param userId - User id
 * @param fetcher - Network loader invoked on cache miss
 * @param ttlMs - Time to live for a successful result
 */
export declare function fetchProfileCached(userId: string, fetcher: () => Promise<IProfileData | null>, ttlMs?: number): Promise<IProfileData | null>;
