export declare const WORKER_SOURCE = "\"use strict\";(()=>{var U=new Uint8Array([0,97,115,109,1,0,0,0,1,8,1,96,3,127,127,127,1,127,3,2,1,0,5,4,1,1,1,1,7,20,2,7,99,111,109,112,97,114,101,0,0,6,109,101,109,111,114,121,2,0,10,133,1,1,130,1,3,2,127,1,126,1,123,3,64,32,3,65,16,106,34,4,32,2,76,4,64,32,6,32,0,32,3,106,253,0,4,0,32,1,32,3,106,253,0,4,0,253,81,253,80,33,6,32,4,33,3,12,1,11,11,3,64,32,2,32,3,74,4,64,32,5,32,0,32,3,106,49,0,0,32,1,32,3,106,49,0,0,133,132,33,5,32,3,65,1,106,33,3,12,1,11,11,66,0,32,5,32,6,253,29,0,32,6,253,29,1,132,132,34,5,125,32,5,132,66,63,135,66,127,133,167,65,1,113,11]);var k=null,v=null,M=null,T=!1,A=null,w=32768;function S(){if(T){if(A)throw A;return}if(T=!0,!x())throw A=new Error(\"leviathan-crypto: constantTimeEqual requires WebAssembly SIMD, this runtime does not support it\"),A;try{let t=U.buffer.slice(U.byteOffset,U.byteOffset+U.byteLength),r=new WebAssembly.Module(t),e=new WebAssembly.Instance(r).exports;v=e.memory,M=new Uint8Array(v.buffer),k=e.compare}catch(t){throw A=new Error(`leviathan-crypto: cte WASM module failed to instantiate: ${t.message}`),A}}var B=(t,r)=>{if(t.length!==r.length)return!1;if(t.length>w)throw new RangeError(`constantTimeEqual: max ${w} bytes (got ${t.length})`);S();let n=M,e=k;if(!n||!e)throw new Error(\"leviathan-crypto: cte init invariant violated\");n.set(t,0),n.set(r,t.length);try{return e(0,t.length,t.length)===1}finally{n.fill(0,0,w*2)}};var m=null;function x(){if(m!==null)return m;if(typeof WebAssembly>\"u\"||typeof WebAssembly.validate!=\"function\")return m=!1,m;try{m=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}catch{m=!1}return m}var d=class t extends Error{constructor(r){super(`${r}: authentication failed`),this.name=\"AuthenticationError\",Object.setPrototypeOf(this,t.prototype)}};function l(t,r){if(r.length===0)return;let n=new Uint8Array(t.memory.buffer),e=t.getPolyMsgOffset(),s=0;for(;s>>0,!0),e.setUint32(4,Math.floor(t/4294967296)>>>0,!0),e.setUint32(8,r>>>0,!0),e.setUint32(12,Math.floor(r/4294967296)>>>0,!0),n}function P(t,r,n,e,s){let o=t.getChunkSize();if(e.length>o)throw new RangeError(`plaintext exceeds ${o} bytes, split into smaller chunks`);let u=new Uint8Array(t.memory.buffer);u.set(r,t.getKeyOffset()),u.set(n,t.getChachaNonceOffset()),t.chachaLoadKey(),t.chachaGenPolyKey(),t.polyInit(),l(t,s);let y=(16-s.length%16)%16;y>0&&l(t,new Uint8Array(y)),t.chachaSetCounter(1),u.set(e,t.getChunkPtOffset()),t.chachaEncryptChunk_simd(e.length);let i=t.getChunkCtOffset(),a=new Uint8Array(t.memory.buffer).slice(i,i+e.length);l(t,a);let p=(16-e.length%16)%16;p>0&&l(t,new Uint8Array(p)),l(t,K(s.length,e.length)),t.polyFinal();let c=t.getPolyTagOffset(),g=new Uint8Array(t.memory.buffer).slice(c,c+16);return{ciphertext:a,tag:g}}function W(t,r,n,e,s,o,u=\"chacha20-poly1305\"){let y=t.getChunkSize();if(e.length>y)throw new RangeError(`ciphertext exceeds ${y} bytes, split into smaller chunks`);let i=new Uint8Array(t.memory.buffer);i.set(r,t.getKeyOffset()),i.set(n,t.getChachaNonceOffset()),t.chachaLoadKey(),t.chachaGenPolyKey(),t.polyInit(),l(t,o);let a=(16-o.length%16)%16;a>0&&l(t,new Uint8Array(a)),l(t,e);let p=(16-e.length%16)%16;p>0&&l(t,new Uint8Array(p)),l(t,K(o.length,e.length)),t.polyFinal();let c=t.getPolyTagOffset(),g=new Uint8Array(t.memory.buffer).slice(c,c+16);if(!B(g,s)){let C=t.getChunkCtOffset();i.fill(0,C,C+y);let E=t.getChachaBlockOffset();i.fill(0,E,E+64);let O=t.getPolyKeyOffset();throw i.fill(0,O,O+32),new d(u)}t.chachaSetCounter(1),t.chachaLoadKey(),new Uint8Array(t.memory.buffer).set(e,t.getChunkPtOffset()),t.chachaEncryptChunk_simd(e.length);let b=t.getChunkCtOffset();return new Uint8Array(t.memory.buffer).slice(b,b+e.length)}var f,h;self.onmessage=async t=>{let r=t.data;if(r.type===\"init\"){try{let n=new WebAssembly.Memory({initial:3,maximum:3}),e=r.modules.chacha20;if(f=(await WebAssembly.instantiate(e,{env:{memory:n}})).exports,h=new Uint8Array(r.derivedKeyBytes),h.length!==32)throw new Error(`expected 32 derived key bytes (got ${h.length})`);r.derivedKeyBytes.fill(0),self.postMessage({type:\"ready\"})}catch(n){r.derivedKeyBytes&&r.derivedKeyBytes.fill(0),self.postMessage({type:\"error\",id:-1,message:n.message,isAuthError:!1})}return}if(r.type===\"wipe\"){h&&h.fill(0),h=void 0,f&&f.wipeBuffers(),f=void 0,self.postMessage({type:\"wiped\"});return}if(!f||!h){self.postMessage({type:\"error\",id:r.id,message:\"worker not initialized\",isAuthError:!1});return}try{let{id:n,op:e,counterNonce:s,data:o,aad:u}=r,y=u??new Uint8Array(0),i=r.derivedKeyBytes??h,a;if(e===\"seal\"){let{ciphertext:c,tag:g}=P(f,i,s,o,y);a=new Uint8Array(c.length+16),a.set(c),a.set(g,c.length)}else{let c=o.subarray(0,o.length-16),g=o.subarray(o.length-16);a=W(f,i,s,c,g,y,\"xchacha20-poly1305\")}let p=a.buffer instanceof ArrayBuffer?[a.buffer]:[];self.postMessage({type:\"result\",id:n,data:a},{transfer:p})}catch(n){let e=n instanceof d;self.postMessage({type:\"error\",id:r.id,message:n.message,cipher:e?\"xchacha20-poly1305\":void 0,isAuthError:e})}finally{r.derivedKeyBytes&&r.derivedKeyBytes.fill(0),f&&f.wipeBuffers()}};})();\n";