export interface OptimisticUpdateOptions { /** Apply the change to local state immediately. Return a snapshot for rollback. */ apply: () => TSnapshot; /** Persist the change to the server. */ persist: () => Promise; /** Revert local state using the snapshot if persist fails. */ rollback: (snapshot: TSnapshot) => void; } export async function executeOptimistic(options: OptimisticUpdateOptions): Promise { const snapshot = options.apply(); try { await options.persist(); } catch { options.rollback(snapshot); } }