/** * On-disk friend metadata — local-only UI state that the Carrier friend store * doesn't hold (PRD-DESKTOP-UI §2.2): a local alias, a read cursor for unread * badges, pin/order, and when we added them. * * File: /friends-meta.json -> { userid: FriendMeta } * Keyed by userid. Identity/accept-state still lives in the Carrier friend * store; this only augments it for display. */ export interface FriendMeta { userid: string; /** Local display name; falls back to the userid in the UI when absent. */ alias?: string; pinned?: boolean; /** ts of the newest message the user has seen — drives unread counts. */ lastReadTs?: number; addedAt: number; } export declare class FriendMetaStore { private path; private byUserid; private logger; private saveTimer?; private dirty; constructor(path: string); private load; get(userid: string): FriendMeta; /** Ensure an entry exists (first time we see a friend). */ ensure(userid: string): FriendMeta; setAlias(userid: string, alias: string | undefined): void; markRead(userid: string, ts?: number): void; setPinned(userid: string, pinned: boolean): void; remove(userid: string): void; private scheduleSave; flush(): void; }