import type { ArkmeUploadCompletion } from './services/media-service.js'; import type { DatabaseSync } from 'node:sqlite'; import type { ArkmeSelfRoleSnapshot } from './types.js'; export interface CloudSelfRoleSnapshot { role_id: string; name: string; avatar_file_asset_uid?: string; } export interface CloudSelfRole extends CloudSelfRoleSnapshot { name_at: number; avatar_at: number; deleted_at: number; version: number; deleted: boolean; update_at: number; } export interface SelfRoleWrite extends ArkmeSelfRoleSnapshot { nameAt: number; avatarAt: number; deletedAt: number; } /** Attribute timestamps make retries idempotent; no persisted request or conflict state. */ export declare class SelfRoleSyncStore { private readonly db; private readonly transaction; constructor(db: DatabaseSync, transaction: (action: () => void) => void); dirtyRoleIds(userId: number): string[]; isKnownRemotely(userId: number, roleId: string): boolean; next(userId: number, roleId?: string): SelfRoleWrite | undefined; acknowledge(userId: number, role: CloudSelfRole): void; merge(userId: number, role: CloudSelfRole): void; asset(userId: number, ref: string): string | undefined; pendingAvatarCompletion(userId: number, ref: string): ArkmeUploadCompletion | undefined; saveAvatarCompletion(userId: number, ref: string, completion: ArkmeUploadCompletion): void; saveAsset(userId: number, ref: string, uid: string): void; pendingBindings(userId: number, after?: string): Array<{ recordUid: string; snapshot: ArkmeSelfRoleSnapshot; }>; cacheSnapshot(userId: number, recordUid: string, snapshot: ArkmeSelfRoleSnapshot): void; acknowledgeBinding(userId: number, recordUid: string): void; } export declare function selfRoleSnapshotFromCloud(value: unknown): ArkmeSelfRoleSnapshot | undefined; //# sourceMappingURL=self-role-sync-store.d.ts.map