1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sync-kQd3KSmO.js","assets/chunk-CilyBKbf.js"])))=>i.map(i=>d[i]);2import{t as e}from"./preload-helper-D4M6sveU.js";import{n as t,r as n}from"./storage-COHREhIV.js";import{M as r}from"./vault-DyfumTNT.js";import{n as i,t as a}from"./sync-wire-O_oTp2Oy.js";var o=`peach_last_sync_at`,s=3e4;async function c(e,i,a){let s=await t(o),c=s?Number.parseInt(s,10):0;return!Number.isFinite(a)||a<=c?`ignored`:(await r(`sync_received`),await n(`peach_vault_a`,e),await n(`peach_vault_b`,i),await n(o,String(a)),`applied`)}async function l(e,t,n){return await n.isPro()?n.isUnlocked()?new Promise(r=>{let o=!1,l=[],u=e=>{if(!o){o=!0,clearTimeout(d);for(let e of l)try{e()}catch{}try{t.close()}catch{}r(e)}},d=setTimeout(()=>u({status:`errored`,error:`timeout`}),s);l.push(t.onClose(()=>u({status:`closed`}))),l.push(t.onError(e=>u({status:`errored`,error:e||`transport_error`}))),l.push(t.onFrame(r=>{(async()=>{let o;try{o=a(r)}catch{await t.send(i({type:`SYNC_ERROR`,reason:`invalid_frame`})),u({status:`errored`,error:`invalid_frame`});return}if(o.type===`SYNC_VAULT_SEND`){try{await c(o.vault_a,o.vault_b,o.sent_at)}catch(e){let n=e instanceof Error?e.message:`apply_failed`;await t.send(i({type:`SYNC_ERROR`,reason:n})),u({status:`errored`,error:n});return}if(await t.send(i({type:`SYNC_VAULT_ACK`,received_at:Date.now()})),e===`responder`){let e=await n.getVaultBlobs();await t.send(i({type:`SYNC_VAULT_SEND`,vault_a:e.vault_a,vault_b:e.vault_b,sent_at:Date.now()}))}else u({status:`completed`})}else o.type===`SYNC_VAULT_ACK`?u({status:`completed`}):o.type===`SYNC_ERROR`&&u({status:`errored`,error:o.reason})})().catch(e=>{u({status:`errored`,error:e instanceof Error?e.message:String(e)})})})),e===`initiator`&&(async()=>{try{let e=await n.getVaultBlobs();await t.send(i({type:`SYNC_VAULT_SEND`,vault_a:e.vault_a,vault_b:e.vault_b,sent_at:Date.now()}))}catch(e){u({status:`errored`,error:e instanceof Error?e.message:String(e)})}})()}):(await t.send(i({type:`SYNC_ERROR`,reason:`vault_locked`})),t.close(),{status:`errored`,error:`vault_locked`}):(await t.send(i({type:`SYNC_ERROR`,reason:`pro_required`})),t.close(),{status:`errored`,error:`pro_required`})}async function u(){let t=await e(()=>import(`./sync-kQd3KSmO.js`).then(e=>e.m),__vite__mapDeps([0,1]));return{sendSyncData:t.sendSyncData,onSyncMessage:t.onSyncMessage,onError:t.onError,onDisconnected:t.onDisconnected,disconnectFromPeer:t.disconnectFromPeer}}async function d(e,t,n){let r=n??await u();return new Promise((n,i)=>{let o=!1,s=[],c=e=>{if(!o){o=!0;for(let e of s)try{e()}catch{}e()}},l=setTimeout(()=>c(()=>i(Error(`pairing_response_timeout`))),t);s.push(()=>clearTimeout(l)),s.push(r.onSyncMessage((t,r)=>{if(t===e)try{let e=a(r);c(()=>n(e))}catch(e){c(()=>i(e instanceof Error?e:Error(String(e))))}})),s.push(r.onDisconnected(t=>{(t===void 0||t===e)&&c(()=>i(Error(`pairing_connection_closed`)))})),s.push(r.onError((t,n)=>{(n===void 0||n===e)&&c(()=>i(Error(t||`pairing_transport_error`)))}))})}async function f(e,t){let n=t??await u();return{send:t=>n.sendSyncData(e,t),onFrame:t=>n.onSyncMessage((n,r)=>{n===e&&t(r)}),onError:t=>n.onError((n,r)=>{(r===void 0||r===e)&&t(n)}),onClose:t=>n.onDisconnected(n=>{(n===void 0||n===e)&&t()}),close:()=>n.disconnectFromPeer(e)}}export{f as createNativeSyncTransport,l as runBlobSyncSession,d as waitForPairingResponse};