import type { ArkmeSessionCredentials } from '../keychain-store.js'; import type { ArkmeGroupAvatarFallback, ArkmeIdAvailabilitySnapshot, ArkmeIdMutationResult, ArkmeUserCardSnapshot, ArkmeUserProfileSnapshot, ArkmeProfileUpdate, ArkmeInvitationRewards } from '../types.js'; import { ServiceRuntime } from './service.js'; export interface ArkmePublicProfile { userId: number; displayName: string; nickname: string; accountName?: string; avatarUrl?: string; avatarFallback?: ArkmeGroupAvatarFallback; arkmeId?: string; } export interface ArkmePublicAvatarPresentation { avatarRef?: string; avatarFallback?: ArkmeGroupAvatarFallback; } export interface ArkmeProfileImageRefPayload { version: 1; viewerUserId: number; targetUserId: number; } export declare class ProfileService { private readonly runtime; private readonly profileCache; private readonly profileInFlight; private readonly publicProfileCache; private readonly publicProfileAvatarCache; private readonly avatarRevisions; private readonly mutations; constructor(runtime: ServiceRuntime); invalidate(userId?: number): void; cachedPublicProfileAvatar(viewerUserId: number, targetUserId: number): string | undefined; invalidatePublicProfile(viewerUserId: number, targetUserId: number): void; cachedProfile(): Promise; refreshProfile(): Promise; checkArkmeIdAvailability(name: string): Promise; setArkmeIdOnce(name: string): Promise; userCard(userId: number, signal?: AbortSignal): Promise; profileForSession(session: ArkmeSessionCredentials): Promise; /** Capture the author's presentation at creation time; never persist a mutable signed profile ref. */ recordSenderSnapshot(session: ArkmeSessionCredentials): Promise<{ avatar?: string; nickname?: string; } | undefined>; refreshProfileForSession(session: ArkmeSessionCredentials): Promise; updateProfile(input: ArkmeProfileUpdate, signal?: AbortSignal): Promise; invitationRewards(scope: string, signal?: AbortSignal): Promise; private profileNeedsAvatarRefresh; publicProfileSummariesByUserIds(userIds: readonly number[], session: ArkmeSessionCredentials, signal?: AbortSignal, maxAgeMillis?: number, lane?: 'interactive-read' | 'background-read'): Promise>; publicProfilesByUserIds(userIds: readonly number[], session: ArkmeSessionCredentials, signal?: AbortSignal): Promise>; publicAvatarPresentationsByArkmeIds(arkmeIds: readonly string[], signal?: AbortSignal): Promise>; interwovenProfilesByUserIds(userIds: readonly number[], session: ArkmeSessionCredentials, signal?: AbortSignal): Promise>; sealProfileImageRef(viewerUserId: number, targetUserId: number): Promise; openProfileImageRef(imageRef: string, expectedViewerUserId: number): Promise; remoteArkmeIdAvailability(name: string, initialSession?: ArkmeSessionCredentials): Promise; tryRefreshProfile(): Promise; arkmeIdMutationResult(snapshot: ArkmeUserProfileSnapshot, previousArkmeId: string): ArkmeIdMutationResult; } export declare function phoneBindingRequirement(value: unknown): boolean | undefined; //# sourceMappingURL=profile-service.d.ts.map