import initWasm, { encrypt_serialize_u64_radix_flat_wasm } from './concrete-ml-extensions-wasm/concrete_ml_extensions_wasm.js'; let clientKey; let wasmInitialized = false; self.onmessage = async function(e) { if (e.data.type === 'init') { try { await initWasm(); wasmInitialized = true; clientKey = e.data.clientKey; console.log(`[Encrypt] Client key loaded: ${clientKey.length} bytes`); self.postMessage({ type: 'ready' }); } catch (error) { console.error('[Encrypt] WASM initialization failed:', error.message); self.postMessage({ type: 'error', error: `WASM initialization failed: ${error.message}` }); } } else if (e.data.type === 'encrypt') { if (!wasmInitialized) { console.error('[Encrypt] Attempted encryption before WASM initialization'); self.postMessage({ type: 'error', error: 'WASM not initialized' }); return; } try { const tokenIds = e.data.tokenIds; console.log(`[Encrypt] Starting encryption for ${tokenIds.length} token IDs`); // Convert token IDs to BigUint64Array for FHE encryption const bigArr = new BigUint64Array(tokenIds.map(id => BigInt(id))); console.log(`[Encrypt] Token array size: ${bigArr.length} tokens`); console.log('[Encrypt] Performing encryption...'); const result = encrypt_serialize_u64_radix_flat_wasm(bigArr, clientKey); console.log(`[Encrypt] Encryption completed: ${result.length} bytes`); self.postMessage({ type: 'success', result }); } catch (error) { console.error('[Encrypt] Encryption failed:', error.message); self.postMessage({ type: 'error', error: error.message }); } } };