@fhevm/sdk 1.1.0-alpha.5 → 1.1.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/actions/base/index.js +1 -17
  3. package/_cjs/core/actions/base/index.js.map +1 -1
  4. package/_cjs/core/actions/base/signDecryptionPermit.js +0 -3
  5. package/_cjs/core/actions/base/signDecryptionPermit.js.map +1 -1
  6. package/_cjs/core/actions/chain/index.js +1 -13
  7. package/_cjs/core/actions/chain/index.js.map +1 -1
  8. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  9. package/_cjs/core/actions/chain/serializeSignedDecryptionPermit.js.map +1 -1
  10. package/_cjs/core/actions/decrypt/canDecryptValue.js.map +1 -1
  11. package/_cjs/core/actions/decrypt/canDecryptValues.js.map +1 -1
  12. package/_cjs/core/actions/decrypt/canDecryptValuesFromPairs.js.map +1 -1
  13. package/_cjs/core/actions/decrypt/decryptValue.js +1 -0
  14. package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
  15. package/_cjs/core/actions/decrypt/decryptValues.js +2 -0
  16. package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
  17. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +2 -0
  18. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  19. package/_cjs/core/actions/decrypt/index.js +1 -3
  20. package/_cjs/core/actions/decrypt/index.js.map +1 -1
  21. package/_cjs/core/actions/host/index.js +1 -9
  22. package/_cjs/core/actions/host/index.js.map +1 -1
  23. package/_cjs/core/base/bytes.js +2 -1
  24. package/_cjs/core/base/bytes.js.map +1 -1
  25. package/_cjs/core/base/cachedFetch.js +2 -1
  26. package/_cjs/core/base/cachedFetch.js.map +1 -1
  27. package/_cjs/core/base/environment.js +122 -0
  28. package/_cjs/core/base/environment.js.map +1 -0
  29. package/_cjs/core/base/errors/Sha256VerificationError.js +15 -0
  30. package/_cjs/core/base/errors/Sha256VerificationError.js.map +1 -0
  31. package/_cjs/core/base/inflate.js +282 -0
  32. package/_cjs/core/base/inflate.js.map +1 -0
  33. package/_cjs/core/base/isomorphicFs.js +24 -0
  34. package/_cjs/core/base/isomorphicFs.js.map +1 -0
  35. package/_cjs/core/base/isomorphicWorker.js +42 -111
  36. package/_cjs/core/base/isomorphicWorker.js.map +1 -1
  37. package/_cjs/core/base/uint.js +7 -0
  38. package/_cjs/core/base/uint.js.map +1 -1
  39. package/_cjs/core/base/wasm.js +15 -55
  40. package/_cjs/core/base/wasm.js.map +1 -1
  41. package/_cjs/core/clients/decorators/base.js +1 -1
  42. package/_cjs/core/clients/decorators/base.js.map +1 -1
  43. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +4 -1
  44. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  45. package/_cjs/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js +1 -1
  46. package/_cjs/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js.map +1 -1
  47. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +1 -1
  48. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -1
  49. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js +1 -1
  50. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  51. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js +1 -1
  52. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  53. package/_cjs/core/kms/PublicDecryptionProof-p.js +4 -4
  54. package/_cjs/core/kms/SignedDecryptionPermit-p.js +33 -199
  55. package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  56. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js +217 -0
  57. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js.map +1 -0
  58. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js +184 -0
  59. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js.map +1 -0
  60. package/_cjs/core/kms/TransportKeyPair-p.js +0 -4
  61. package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
  62. package/_cjs/core/kms/{createKmsDelegatedUserDecryptEip712.js → createKmsDelegatedUserDecryptEip712V1.js} +9 -9
  63. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  64. package/_cjs/core/kms/{createKmsUserDecryptEip712.js → createKmsUserDecryptEip712V1.js} +18 -14
  65. package/_cjs/core/kms/createKmsUserDecryptEip712V1.js.map +1 -0
  66. package/_cjs/core/kms/decryptValuesFromPairs.js +18 -2
  67. package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
  68. package/_cjs/core/kms/{fetchKmsSigncryptedShares-p.js → fetchKmsSigncryptedSharesV1-p.js} +18 -8
  69. package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -0
  70. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js +95 -0
  71. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -0
  72. package/_cjs/core/kms/{kmsDelegatedUserDecryptEip712Types.js → kmsDelegatedUserDecryptEip712V1Types.js} +8 -8
  73. package/_cjs/core/kms/kmsDelegatedUserDecryptEip712V1Types.js.map +1 -0
  74. package/_cjs/core/kms/{kmsUserDecryptEip712Types.js → kmsUserDecryptEip712V1Types.js} +8 -8
  75. package/_cjs/core/kms/kmsUserDecryptEip712V1Types.js.map +1 -0
  76. package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -1
  77. package/_cjs/core/kms/publicDecrypt.js +2 -2
  78. package/_cjs/core/kms/utils.js +0 -19
  79. package/_cjs/core/kms/utils.js.map +1 -1
  80. package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js +1 -1
  81. package/_cjs/core/modules/decrypt/module/api-p.js +5 -5
  82. package/_cjs/core/modules/decrypt/module/init-p.js +124 -40
  83. package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
  84. package/_cjs/core/modules/encrypt/module/init-p.js +153 -49
  85. package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
  86. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +3 -3
  87. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  88. package/_cjs/core/modules/relayer/module/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +1 -1
  89. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecryptV1.js.map +1 -0
  90. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  91. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +11 -45
  92. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  93. package/_cjs/core/modules/relayer/module/fetchUserDecryptV1.js +52 -0
  94. package/_cjs/core/modules/relayer/module/fetchUserDecryptV1.js.map +1 -0
  95. package/_cjs/core/modules/relayer/module/fetchUserDecryptV2.js +54 -0
  96. package/_cjs/core/modules/relayer/module/fetchUserDecryptV2.js.map +1 -0
  97. package/_cjs/core/modules/relayer/module/guards/RelayerResponseFailed.js +10 -2
  98. package/_cjs/core/modules/relayer/module/guards/RelayerResponseFailed.js.map +1 -1
  99. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js +5 -2
  100. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js.map +1 -1
  101. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js +2 -0
  102. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js.map +1 -1
  103. package/_cjs/core/modules/relayer/module/index.js +2 -2
  104. package/_cjs/core/modules/relayer/module/index.js.map +1 -1
  105. package/_cjs/core/runtime/HyperWasmSolver-p.js +5 -10
  106. package/_cjs/core/runtime/HyperWasmSolver-p.js.map +1 -1
  107. package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  108. package/_cjs/core/runtime/initFhevmRuntime-p.js +1 -1
  109. package/_cjs/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.js → verifyKmsDelegatedUserDecryptEip712V1.js} +5 -5
  110. package/_cjs/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  111. package/_cjs/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.js → verifyKmsUserDecryptEip712V1.js} +5 -5
  112. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.js.map +1 -0
  113. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js +30 -0
  114. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js.map +1 -0
  115. package/_cjs/wasm/tfhe/TfheApi.d.ts +12 -12
  116. package/_cjs/wasm/tfhe/loadTfheLib.js +11 -11
  117. package/_cjs/wasm/tfhe/loadTfheLib.js.map +2 -2
  118. package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js +26 -9
  119. package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js.map +2 -2
  120. package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  121. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +28 -11
  122. package/_cjs/wasm/tfhe/v1.6.2/startWorkers.js.map +7 -0
  123. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
  124. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +88 -85
  125. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  126. package/_cjs/wasm/tfhe/v1.6.2/tfhe.js.map +7 -0
  127. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  128. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +35 -0
  129. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js.map +7 -0
  130. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  131. package/_cjs/wasm/wasmBaseUrl.js +8 -19
  132. package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
  133. package/_esm/core/_version.js +1 -1
  134. package/_esm/core/actions/base/index.js +0 -8
  135. package/_esm/core/actions/base/index.js.map +1 -1
  136. package/_esm/core/actions/base/signDecryptionPermit.js +0 -6
  137. package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
  138. package/_esm/core/actions/chain/index.js +0 -6
  139. package/_esm/core/actions/chain/index.js.map +1 -1
  140. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  141. package/_esm/core/actions/chain/serializeSignedDecryptionPermit.js.map +1 -1
  142. package/_esm/core/actions/decrypt/canDecryptValue.js +40 -0
  143. package/_esm/core/actions/decrypt/canDecryptValue.js.map +1 -1
  144. package/_esm/core/actions/decrypt/canDecryptValues.js +1 -0
  145. package/_esm/core/actions/decrypt/canDecryptValues.js.map +1 -1
  146. package/_esm/core/actions/decrypt/canDecryptValuesFromPairs.js +1 -0
  147. package/_esm/core/actions/decrypt/canDecryptValuesFromPairs.js.map +1 -1
  148. package/_esm/core/actions/decrypt/decryptValue.js +1 -0
  149. package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
  150. package/_esm/core/actions/decrypt/decryptValues.js +2 -0
  151. package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
  152. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +2 -0
  153. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  154. package/_esm/core/actions/decrypt/index.js +0 -1
  155. package/_esm/core/actions/decrypt/index.js.map +1 -1
  156. package/_esm/core/actions/host/index.js +0 -4
  157. package/_esm/core/actions/host/index.js.map +1 -1
  158. package/_esm/core/base/bytes.js +2 -1
  159. package/_esm/core/base/bytes.js.map +1 -1
  160. package/_esm/core/base/cachedFetch.js +1 -0
  161. package/_esm/core/base/cachedFetch.js.map +1 -1
  162. package/_esm/core/base/environment.js +164 -0
  163. package/_esm/core/base/environment.js.map +1 -0
  164. package/_esm/core/base/errors/Sha256VerificationError.js +11 -0
  165. package/_esm/core/base/errors/Sha256VerificationError.js.map +1 -0
  166. package/_esm/core/base/inflate.js +337 -0
  167. package/_esm/core/base/inflate.js.map +1 -0
  168. package/_esm/core/base/isomorphicFs.js +21 -0
  169. package/_esm/core/base/isomorphicFs.js.map +1 -0
  170. package/_esm/core/base/isomorphicWorker.js +92 -85
  171. package/_esm/core/base/isomorphicWorker.js.map +1 -1
  172. package/_esm/core/base/uint.js +7 -0
  173. package/_esm/core/base/uint.js.map +1 -1
  174. package/_esm/core/base/wasm.js +25 -31
  175. package/_esm/core/base/wasm.js.map +1 -1
  176. package/_esm/core/clients/decorators/base.js +2 -4
  177. package/_esm/core/clients/decorators/base.js.map +1 -1
  178. package/_esm/core/coprocessor/coprocessorEip712Types.js +2 -2
  179. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +5 -2
  180. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  181. package/_esm/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js +2 -2
  182. package/_esm/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js.map +1 -1
  183. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +2 -2
  184. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -1
  185. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js +2 -2
  186. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  187. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js +2 -2
  188. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  189. package/_esm/core/kms/PublicDecryptionProof-p.js +4 -4
  190. package/_esm/core/kms/SignedDecryptionPermit-p.js +48 -245
  191. package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  192. package/_esm/core/kms/SignedDecryptionPermitV1-p.js +258 -0
  193. package/_esm/core/kms/SignedDecryptionPermitV1-p.js.map +1 -0
  194. package/_esm/core/kms/SignedDecryptionPermitV2-p.js +204 -0
  195. package/_esm/core/kms/SignedDecryptionPermitV2-p.js.map +1 -0
  196. package/_esm/core/kms/TransportKeyPair-p.js +0 -4
  197. package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
  198. package/_esm/core/kms/{createKmsDelegatedUserDecryptEip712.js → createKmsDelegatedUserDecryptEip712V1.js} +8 -8
  199. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  200. package/_esm/core/kms/createKmsPublicDecryptEip712.js +1 -1
  201. package/_esm/core/kms/{createKmsUserDecryptEip712.js → createKmsUserDecryptEip712V1.js} +18 -14
  202. package/_esm/core/kms/createKmsUserDecryptEip712V1.js.map +1 -0
  203. package/_esm/core/kms/decryptValuesFromPairs.js +18 -2
  204. package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
  205. package/_esm/core/kms/{fetchKmsSigncryptedShares-p.js → fetchKmsSigncryptedSharesV1-p.js} +23 -13
  206. package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -0
  207. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js +119 -0
  208. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -0
  209. package/_esm/core/kms/{kmsDelegatedUserDecryptEip712Types.js → kmsDelegatedUserDecryptEip712V1Types.js} +9 -8
  210. package/_esm/core/kms/kmsDelegatedUserDecryptEip712V1Types.js.map +1 -0
  211. package/_esm/core/kms/kmsPublicDecryptEip712Types.js +1 -1
  212. package/_esm/core/kms/{kmsUserDecryptEip712Types.js → kmsUserDecryptEip712V1Types.js} +9 -8
  213. package/_esm/core/kms/kmsUserDecryptEip712V1Types.js.map +1 -0
  214. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js +2 -1
  215. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -1
  216. package/_esm/core/kms/publicDecrypt.js +2 -2
  217. package/_esm/core/kms/utils.js +0 -18
  218. package/_esm/core/kms/utils.js.map +1 -1
  219. package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js +2 -2
  220. package/_esm/core/modules/decrypt/module/api-p.js +6 -6
  221. package/_esm/core/modules/decrypt/module/init-p.js +110 -55
  222. package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
  223. package/_esm/core/modules/encrypt/module/init-p.js +306 -57
  224. package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
  225. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +3 -3
  226. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  227. package/_esm/core/modules/relayer/module/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +1 -1
  228. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecryptV1.js.map +1 -0
  229. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  230. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +11 -46
  231. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  232. package/_esm/core/modules/relayer/module/fetchUserDecryptV1.js +53 -0
  233. package/_esm/core/modules/relayer/module/fetchUserDecryptV1.js.map +1 -0
  234. package/_esm/core/modules/relayer/module/fetchUserDecryptV2.js +56 -0
  235. package/_esm/core/modules/relayer/module/fetchUserDecryptV2.js.map +1 -0
  236. package/_esm/core/modules/relayer/module/guards/RelayerResponseFailed.js +10 -2
  237. package/_esm/core/modules/relayer/module/guards/RelayerResponseFailed.js.map +1 -1
  238. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js +6 -3
  239. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js.map +1 -1
  240. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js +2 -0
  241. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js.map +1 -1
  242. package/_esm/core/modules/relayer/module/index.js +1 -1
  243. package/_esm/core/modules/relayer/module/index.js.map +1 -1
  244. package/_esm/core/runtime/HyperWasmSolver-p.js +5 -10
  245. package/_esm/core/runtime/HyperWasmSolver-p.js.map +1 -1
  246. package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  247. package/_esm/core/runtime/initFhevmRuntime-p.js +1 -1
  248. package/_esm/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.js → verifyKmsDelegatedUserDecryptEip712V1.js} +5 -5
  249. package/_esm/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  250. package/_esm/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.js → verifyKmsUserDecryptEip712V1.js} +5 -5
  251. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.js.map +1 -0
  252. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js +27 -0
  253. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js.map +1 -0
  254. package/_esm/wasm/tfhe/TfheApi.d.ts +12 -12
  255. package/_esm/wasm/tfhe/loadTfheLib.js +11 -11
  256. package/_esm/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
  257. package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  258. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
  259. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
  260. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +88 -85
  261. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  262. package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  263. package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
  264. package/_esm/wasm/wasmBaseUrl.js +17 -54
  265. package/_types/core/actions/base/index.d.ts +0 -8
  266. package/_types/core/actions/base/index.d.ts.map +1 -1
  267. package/_types/core/actions/base/signDecryptionPermit.d.ts +4 -5
  268. package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
  269. package/_types/core/actions/chain/index.d.ts +1 -7
  270. package/_types/core/actions/chain/index.d.ts.map +1 -1
  271. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +1 -0
  272. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  273. package/_types/core/actions/chain/serializeSignedDecryptionPermit.d.ts +3 -2
  274. package/_types/core/actions/chain/serializeSignedDecryptionPermit.d.ts.map +1 -1
  275. package/_types/core/actions/decrypt/canDecryptValue.d.ts +3 -4
  276. package/_types/core/actions/decrypt/canDecryptValue.d.ts.map +1 -1
  277. package/_types/core/actions/decrypt/canDecryptValues.d.ts +3 -4
  278. package/_types/core/actions/decrypt/canDecryptValues.d.ts.map +1 -1
  279. package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts +3 -4
  280. package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts.map +1 -1
  281. package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
  282. package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
  283. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
  284. package/_types/core/actions/decrypt/index.d.ts +0 -1
  285. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  286. package/_types/core/actions/host/index.d.ts +0 -4
  287. package/_types/core/actions/host/index.d.ts.map +1 -1
  288. package/_types/core/base/bytes.d.ts.map +1 -1
  289. package/_types/core/base/cachedFetch.d.ts +1 -0
  290. package/_types/core/base/cachedFetch.d.ts.map +1 -1
  291. package/_types/core/base/environment.d.ts +92 -0
  292. package/_types/core/base/environment.d.ts.map +1 -0
  293. package/_types/core/base/errors/Sha256VerificationError.d.ts +14 -0
  294. package/_types/core/base/errors/Sha256VerificationError.d.ts.map +1 -0
  295. package/_types/core/base/inflate.d.ts +25 -0
  296. package/_types/core/base/inflate.d.ts.map +1 -0
  297. package/_types/core/base/isomorphicFs.d.ts +2 -0
  298. package/_types/core/base/isomorphicFs.d.ts.map +1 -0
  299. package/_types/core/base/isomorphicWorker.d.ts +27 -43
  300. package/_types/core/base/isomorphicWorker.d.ts.map +1 -1
  301. package/_types/core/base/uint.d.ts +2 -1
  302. package/_types/core/base/uint.d.ts.map +1 -1
  303. package/_types/core/base/wasm.d.ts +0 -8
  304. package/_types/core/base/wasm.d.ts.map +1 -1
  305. package/_types/core/clients/decorators/base.d.ts +12 -23
  306. package/_types/core/clients/decorators/base.d.ts.map +1 -1
  307. package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts +2 -2
  308. package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts.map +1 -1
  309. package/_types/core/kms/PublicDecryptionProof-p.d.ts +1 -1
  310. package/_types/core/kms/SignedDecryptionPermit-p.d.ts +15 -29
  311. package/_types/core/kms/SignedDecryptionPermit-p.d.ts.map +1 -1
  312. package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts +7 -0
  313. package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts.map +1 -0
  314. package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts +7 -0
  315. package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts.map +1 -0
  316. package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
  317. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts +15 -0
  318. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -0
  319. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts +26 -0
  320. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts.map +1 -0
  321. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +1 -1
  322. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -1
  323. package/_types/core/kms/decryptValuesFromPairs.d.ts +4 -11
  324. package/_types/core/kms/decryptValuesFromPairs.d.ts.map +1 -1
  325. package/_types/core/kms/{fetchKmsSigncryptedShares-p.d.ts → fetchKmsSigncryptedSharesV1-p.d.ts} +10 -12
  326. package/_types/core/kms/fetchKmsSigncryptedSharesV1-p.d.ts.map +1 -0
  327. package/_types/core/kms/fetchKmsSigncryptedSharesV2-p.d.ts +28 -0
  328. package/_types/core/kms/fetchKmsSigncryptedSharesV2-p.d.ts.map +1 -0
  329. package/_types/core/kms/kmsDelegatedUserDecryptEip712V1Types.d.ts +3 -0
  330. package/_types/core/kms/kmsDelegatedUserDecryptEip712V1Types.d.ts.map +1 -0
  331. package/_types/core/kms/kmsUserDecryptEip712V1Types.d.ts +3 -0
  332. package/_types/core/kms/kmsUserDecryptEip712V1Types.d.ts.map +1 -0
  333. package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts.map +1 -1
  334. package/_types/core/kms/utils.d.ts +0 -4
  335. package/_types/core/kms/utils.d.ts.map +1 -1
  336. package/_types/core/kms/verifyKmsPublicDecryptEip712-p.d.ts +1 -1
  337. package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
  338. package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
  339. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +2 -2
  340. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -1
  341. package/_types/core/modules/relayer/module/{fetchDelegatedUserDecrypt.d.ts → fetchDelegatedUserDecryptV1.d.ts} +1 -1
  342. package/_types/core/modules/relayer/module/fetchDelegatedUserDecryptV1.d.ts.map +1 -0
  343. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  344. package/_types/core/modules/relayer/module/fetchUserDecryptV1.d.ts +3 -0
  345. package/_types/core/modules/relayer/module/fetchUserDecryptV1.d.ts.map +1 -0
  346. package/_types/core/modules/relayer/module/fetchUserDecryptV2.d.ts +3 -0
  347. package/_types/core/modules/relayer/module/fetchUserDecryptV2.d.ts.map +1 -0
  348. package/_types/core/modules/relayer/module/guards/RelayerResponseFailed.d.ts.map +1 -1
  349. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.d.ts +1 -1
  350. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.d.ts.map +1 -1
  351. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError503.d.ts.map +1 -1
  352. package/_types/core/modules/relayer/types.d.ts +18 -5
  353. package/_types/core/modules/relayer/types.d.ts.map +1 -1
  354. package/_types/core/types/kms.d.ts +18 -19
  355. package/_types/core/types/kms.d.ts.map +1 -1
  356. package/_types/core/types/logger.d.ts +3 -3
  357. package/_types/core/types/logger.d.ts.map +1 -1
  358. package/_types/core/types/record-p.d.ts +2 -1
  359. package/_types/core/types/record-p.d.ts.map +1 -1
  360. package/_types/core/types/relayer-p.d.ts +27 -5
  361. package/_types/core/types/relayer-p.d.ts.map +1 -1
  362. package/_types/core/types/signedDecryptionPermit.d.ts +37 -26
  363. package/_types/core/types/signedDecryptionPermit.d.ts.map +1 -1
  364. package/_types/core/types/wasmAssets.d.ts.map +1 -1
  365. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.d.ts +14 -0
  366. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -0
  367. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.d.ts +14 -0
  368. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.d.ts.map +1 -0
  369. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.d.ts +14 -0
  370. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.d.ts.map +1 -0
  371. package/_types/core/utils-p/runtime/recoverSigners.d.ts +2 -2
  372. package/_types/wasm/tfhe/TfheApi.d.ts +12 -12
  373. package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  374. package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +88 -85
  375. package/core/_version.ts +1 -1
  376. package/core/actions/base/index.ts +0 -42
  377. package/core/actions/base/signDecryptionPermit.ts +3 -31
  378. package/core/actions/chain/index.ts +0 -28
  379. package/core/actions/chain/parseSignedDecryptionPermit.ts +1 -0
  380. package/core/actions/chain/serializeSignedDecryptionPermit.ts +3 -2
  381. package/core/actions/decrypt/canDecryptValue.ts +2 -16
  382. package/core/actions/decrypt/canDecryptValues.ts +2 -16
  383. package/core/actions/decrypt/canDecryptValuesFromPairs.ts +2 -16
  384. package/core/actions/decrypt/decryptValue.ts +2 -1
  385. package/core/actions/decrypt/decryptValues.ts +3 -1
  386. package/core/actions/decrypt/decryptValuesFromPairs.ts +3 -1
  387. package/core/actions/decrypt/index.ts +0 -6
  388. package/core/actions/host/index.ts +0 -20
  389. package/core/base/bytes.ts +2 -1
  390. package/core/base/cachedFetch.ts +1 -0
  391. package/core/base/environment.ts +210 -0
  392. package/core/base/errors/Sha256VerificationError.ts +22 -0
  393. package/core/base/inflate.ts +373 -0
  394. package/core/base/isomorphicFs.ts +23 -0
  395. package/core/base/isomorphicWorker.ts +96 -123
  396. package/core/base/uint.ts +18 -1
  397. package/core/base/wasm.ts +28 -35
  398. package/core/clients/decorators/base.ts +13 -37
  399. package/core/coprocessor/coprocessorEip712Types.ts +2 -2
  400. package/core/host-contracts/canDecryptValuesFromPairs.ts +7 -7
  401. package/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.ts +2 -2
  402. package/core/host-contracts/getCurrentKmsContextAndEpoch-p.ts +2 -2
  403. package/core/host-contracts/getCurrentKmsContextId-p.ts +2 -2
  404. package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +2 -2
  405. package/core/kms/PublicDecryptionProof-p.ts +5 -5
  406. package/core/kms/SignedDecryptionPermit-p.ts +67 -357
  407. package/core/kms/SignedDecryptionPermitV1-p.ts +350 -0
  408. package/core/kms/SignedDecryptionPermitV2-p.ts +292 -0
  409. package/core/kms/TransportKeyPair-p.ts +0 -5
  410. package/core/kms/{createKmsDelegatedUserDecryptEip712.ts → createKmsDelegatedUserDecryptEip712V1.ts} +16 -16
  411. package/core/kms/createKmsPublicDecryptEip712.ts +1 -1
  412. package/core/kms/{createKmsUserDecryptEip712.ts → createKmsUserDecryptEip712V1.ts} +31 -22
  413. package/core/kms/createKmsUserDecryptEip712V2.ts +1 -1
  414. package/core/kms/decryptValuesFromPairs.ts +34 -22
  415. package/core/kms/{fetchKmsSigncryptedShares-p.ts → fetchKmsSigncryptedSharesV1-p.ts} +35 -30
  416. package/core/kms/fetchKmsSigncryptedSharesV2-p.ts +176 -0
  417. package/core/kms/{kmsDelegatedUserDecryptEip712Types.ts → kmsDelegatedUserDecryptEip712V1Types.ts} +9 -8
  418. package/core/kms/kmsPublicDecryptEip712Types.ts +1 -1
  419. package/core/kms/{kmsUserDecryptEip712Types.ts → kmsUserDecryptEip712V1Types.ts} +9 -8
  420. package/core/kms/kmsUserDecryptEip712V2Types.ts +2 -1
  421. package/core/kms/publicDecrypt.ts +2 -2
  422. package/core/kms/utils.ts +0 -32
  423. package/core/kms/verifyKmsPublicDecryptEip712-p.ts +3 -3
  424. package/core/modules/decrypt/module/api-p.ts +8 -8
  425. package/core/modules/decrypt/module/init-p.ts +149 -60
  426. package/core/modules/encrypt/module/init-p.ts +377 -67
  427. package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +3 -3
  428. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +2 -2
  429. package/core/modules/relayer/module/fetchPublicDecrypt.ts +1 -1
  430. package/core/modules/relayer/module/fetchUserDecrypt.ts +20 -56
  431. package/core/modules/relayer/module/fetchUserDecryptV1.ts +69 -0
  432. package/core/modules/relayer/module/fetchUserDecryptV2.ts +71 -0
  433. package/core/modules/relayer/module/guards/RelayerResponseFailed.ts +10 -2
  434. package/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.ts +6 -3
  435. package/core/modules/relayer/module/guards/api-errors/RelayerApiError503.ts +2 -0
  436. package/core/modules/relayer/module/index.ts +1 -1
  437. package/core/modules/relayer/types.ts +24 -5
  438. package/core/runtime/HyperWasmSolver-p.ts +5 -9
  439. package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
  440. package/core/runtime/initFhevmRuntime-p.ts +1 -1
  441. package/core/types/kms.ts +40 -28
  442. package/core/types/logger.ts +3 -3
  443. package/core/types/record-p.ts +2 -1
  444. package/core/types/relayer-p.ts +48 -5
  445. package/core/types/signedDecryptionPermit.ts +47 -26
  446. package/core/types/wasmAssets.ts +58 -0
  447. package/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.ts → verifyKmsDelegatedUserDecryptEip712V1.ts} +9 -9
  448. package/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.ts → verifyKmsUserDecryptEip712V1.ts} +9 -9
  449. package/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.ts +43 -0
  450. package/core/utils-p/runtime/recoverSigners.ts +2 -2
  451. package/package.json +1 -1
  452. package/wasm/tfhe/TfheApi.d.ts +12 -12
  453. package/wasm/tfhe/loadTfheLib.js +11 -11
  454. package/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
  455. package/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  456. package/wasm/tfhe/v1.6.0-dev/startWorkers.js +41 -20
  457. package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +3 -0
  458. package/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
  459. package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
  460. package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +88 -85
  461. package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  462. package/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  463. package/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
  464. package/wasm/wasmBaseUrl.js +17 -54
  465. package/_cjs/core/actions/base/createVerifiedInputProofFromRawBytes.js +0 -10
  466. package/_cjs/core/actions/base/createVerifiedInputProofFromRawBytes.js.map +0 -1
  467. package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js +0 -19
  468. package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js.map +0 -1
  469. package/_cjs/core/actions/base/fetchVerifiedInputProof.js +0 -11
  470. package/_cjs/core/actions/base/fetchVerifiedInputProof.js.map +0 -1
  471. package/_cjs/core/actions/base/readKmsSignersContext.js +0 -11
  472. package/_cjs/core/actions/base/readKmsSignersContext.js.map +0 -1
  473. package/_cjs/core/actions/base/verifyHandlesCoprocessorSignatures.js +0 -31
  474. package/_cjs/core/actions/base/verifyHandlesCoprocessorSignatures.js.map +0 -1
  475. package/_cjs/core/actions/base/verifyInputProof.js +0 -24
  476. package/_cjs/core/actions/base/verifyInputProof.js.map +0 -1
  477. package/_cjs/core/actions/base/verifyZkProofCoprocessorSignatures.js +0 -17
  478. package/_cjs/core/actions/base/verifyZkProofCoprocessorSignatures.js.map +0 -1
  479. package/_cjs/core/actions/chain/createCoprocessorEip712Domain.js +0 -11
  480. package/_cjs/core/actions/chain/createCoprocessorEip712Domain.js.map +0 -1
  481. package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js +0 -17
  482. package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  483. package/_cjs/core/actions/chain/createKmsEip712Domain.js +0 -11
  484. package/_cjs/core/actions/chain/createKmsEip712Domain.js.map +0 -1
  485. package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js +0 -16
  486. package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js.map +0 -1
  487. package/_cjs/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js +0 -8
  488. package/_cjs/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  489. package/_cjs/core/actions/chain/verifyKmsUserDecryptEip712.js +0 -8
  490. package/_cjs/core/actions/chain/verifyKmsUserDecryptEip712.js.map +0 -1
  491. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js +0 -13
  492. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +0 -1
  493. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  494. package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +0 -1
  495. package/_cjs/core/kms/fetchKmsSigncryptedShares-p.js.map +0 -1
  496. package/_cjs/core/kms/kmsDelegatedUserDecryptEip712Types.js.map +0 -1
  497. package/_cjs/core/kms/kmsUserDecryptEip712Types.js.map +0 -1
  498. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +0 -1
  499. package/_cjs/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  500. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712.js.map +0 -1
  501. package/_cjs/wasm/tfhe/v1.6.1/startWorkers.js.map +0 -7
  502. package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +0 -7
  503. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  504. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -35
  505. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js.map +0 -7
  506. package/_esm/core/actions/base/createVerifiedInputProofFromRawBytes.js +0 -7
  507. package/_esm/core/actions/base/createVerifiedInputProofFromRawBytes.js.map +0 -1
  508. package/_esm/core/actions/base/fetchKmsSigncryptedShares.js +0 -17
  509. package/_esm/core/actions/base/fetchKmsSigncryptedShares.js.map +0 -1
  510. package/_esm/core/actions/base/fetchVerifiedInputProof.js +0 -8
  511. package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +0 -1
  512. package/_esm/core/actions/base/readKmsSignersContext.js +0 -10
  513. package/_esm/core/actions/base/readKmsSignersContext.js.map +0 -1
  514. package/_esm/core/actions/base/verifyHandlesCoprocessorSignatures.js +0 -35
  515. package/_esm/core/actions/base/verifyHandlesCoprocessorSignatures.js.map +0 -1
  516. package/_esm/core/actions/base/verifyInputProof.js +0 -22
  517. package/_esm/core/actions/base/verifyInputProof.js.map +0 -1
  518. package/_esm/core/actions/base/verifyZkProofCoprocessorSignatures.js +0 -14
  519. package/_esm/core/actions/base/verifyZkProofCoprocessorSignatures.js.map +0 -1
  520. package/_esm/core/actions/chain/createCoprocessorEip712Domain.js +0 -8
  521. package/_esm/core/actions/chain/createCoprocessorEip712Domain.js.map +0 -1
  522. package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js +0 -15
  523. package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  524. package/_esm/core/actions/chain/createKmsEip712Domain.js +0 -8
  525. package/_esm/core/actions/chain/createKmsEip712Domain.js.map +0 -1
  526. package/_esm/core/actions/chain/createKmsUserDecryptEip712.js +0 -14
  527. package/_esm/core/actions/chain/createKmsUserDecryptEip712.js.map +0 -1
  528. package/_esm/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js +0 -5
  529. package/_esm/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  530. package/_esm/core/actions/chain/verifyKmsUserDecryptEip712.js +0 -5
  531. package/_esm/core/actions/chain/verifyKmsUserDecryptEip712.js.map +0 -1
  532. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js +0 -11
  533. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +0 -1
  534. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  535. package/_esm/core/kms/createKmsUserDecryptEip712.js.map +0 -1
  536. package/_esm/core/kms/fetchKmsSigncryptedShares-p.js.map +0 -1
  537. package/_esm/core/kms/kmsDelegatedUserDecryptEip712Types.js.map +0 -1
  538. package/_esm/core/kms/kmsUserDecryptEip712Types.js.map +0 -1
  539. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +0 -1
  540. package/_esm/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  541. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712.js.map +0 -1
  542. package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  543. package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
  544. package/_types/core/actions/base/createVerifiedInputProofFromRawBytes.d.ts +0 -14
  545. package/_types/core/actions/base/createVerifiedInputProofFromRawBytes.d.ts.map +0 -1
  546. package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts +0 -41
  547. package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts.map +0 -1
  548. package/_types/core/actions/base/fetchVerifiedInputProof.d.ts +0 -14
  549. package/_types/core/actions/base/fetchVerifiedInputProof.d.ts.map +0 -1
  550. package/_types/core/actions/base/readKmsSignersContext.d.ts +0 -6
  551. package/_types/core/actions/base/readKmsSignersContext.d.ts.map +0 -1
  552. package/_types/core/actions/base/verifyHandlesCoprocessorSignatures.d.ts +0 -14
  553. package/_types/core/actions/base/verifyHandlesCoprocessorSignatures.d.ts.map +0 -1
  554. package/_types/core/actions/base/verifyInputProof.d.ts +0 -14
  555. package/_types/core/actions/base/verifyInputProof.d.ts.map +0 -1
  556. package/_types/core/actions/base/verifyZkProofCoprocessorSignatures.d.ts +0 -11
  557. package/_types/core/actions/base/verifyZkProofCoprocessorSignatures.d.ts.map +0 -1
  558. package/_types/core/actions/chain/createCoprocessorEip712Domain.d.ts +0 -7
  559. package/_types/core/actions/chain/createCoprocessorEip712Domain.d.ts.map +0 -1
  560. package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts +0 -15
  561. package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  562. package/_types/core/actions/chain/createKmsEip712Domain.d.ts +0 -7
  563. package/_types/core/actions/chain/createKmsEip712Domain.d.ts.map +0 -1
  564. package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts +0 -14
  565. package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts.map +0 -1
  566. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +0 -7
  567. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  568. package/_types/core/actions/chain/verifyKmsUserDecryptEip712.d.ts +0 -7
  569. package/_types/core/actions/chain/verifyKmsUserDecryptEip712.d.ts.map +0 -1
  570. package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts +0 -13
  571. package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts.map +0 -1
  572. package/_types/core/kms/createKmsDelegatedUserDecryptEip712.d.ts +0 -15
  573. package/_types/core/kms/createKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  574. package/_types/core/kms/createKmsUserDecryptEip712.d.ts +0 -26
  575. package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +0 -1
  576. package/_types/core/kms/fetchKmsSigncryptedShares-p.d.ts.map +0 -1
  577. package/_types/core/kms/kmsDelegatedUserDecryptEip712Types.d.ts +0 -3
  578. package/_types/core/kms/kmsDelegatedUserDecryptEip712Types.d.ts.map +0 -1
  579. package/_types/core/kms/kmsUserDecryptEip712Types.d.ts +0 -3
  580. package/_types/core/kms/kmsUserDecryptEip712Types.d.ts.map +0 -1
  581. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +0 -1
  582. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.d.ts +0 -14
  583. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  584. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712.d.ts +0 -14
  585. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712.d.ts.map +0 -1
  586. package/core/actions/base/createVerifiedInputProofFromRawBytes.ts +0 -24
  587. package/core/actions/base/fetchKmsSigncryptedShares.ts +0 -83
  588. package/core/actions/base/fetchVerifiedInputProof.ts +0 -25
  589. package/core/actions/base/readKmsSignersContext.ts +0 -20
  590. package/core/actions/base/verifyHandlesCoprocessorSignatures.ts +0 -60
  591. package/core/actions/base/verifyInputProof.ts +0 -45
  592. package/core/actions/base/verifyZkProofCoprocessorSignatures.ts +0 -32
  593. package/core/actions/chain/createCoprocessorEip712Domain.ts +0 -16
  594. package/core/actions/chain/createKmsDelegatedUserDecryptEip712.ts +0 -36
  595. package/core/actions/chain/createKmsEip712Domain.ts +0 -16
  596. package/core/actions/chain/createKmsUserDecryptEip712.ts +0 -34
  597. package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +0 -16
  598. package/core/actions/chain/verifyKmsUserDecryptEip712.ts +0 -16
  599. package/core/actions/decrypt/decryptKmsSigncryptedShares.ts +0 -34
  600. package/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  601. package/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
  602. /package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  603. /package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  604. /package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  605. /package/core/modules/relayer/module/{fetchDelegatedUserDecrypt.ts → fetchDelegatedUserDecryptV1.ts} +0 -0
  606. /package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
@@ -6,20 +6,112 @@ import type {
6
6
  TfheModuleInfo,
7
7
  } from '../types.js';
8
8
  import type { TfheLibApi } from '../../../../wasm/tfhe/TfheApi.js';
9
- import type { TfheAssetMetadata, TfheVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
9
+ import type { TfheAssetMetadata, TfheAssets, TfheVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
10
+ import type { WasmAssetLoadMode } from '../../../types/wasmAssets.js';
10
11
  import { isomorphicCompileVerifiedWasm, isomorphicCompileWasmFromBase64 } from '../../../base/wasm.js';
11
- import { isBlobWorkerSupported, isBrowserLike } from '../../../base/isomorphicWorker.js';
12
+ import { isBlobWorkerSupported } from '../../../base/isomorphicWorker.js';
13
+ import { isBrowserLike } from '../../../base/environment.js';
12
14
  import { threads } from 'wasm-feature-detect';
13
15
  import { assertIsFhevmRuntime } from '../../../runtime/CoreFhevmRuntime-p.js';
14
- // Pure JS file (not compiled by tsc) — provides cross-platform base URL
15
- // for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
16
- import { wasmBaseUrl } from '../../../../wasm/wasmBaseUrl.js';
17
16
  import { loadTfheLib, loadTfheWasmBase64, tfheAssetsWithVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
17
+ import { isomorphicFileUrlExists } from '../../../base/isomorphicFs.js';
18
+
19
+ ////////////////////////////////////////////////////////////////////////////////
20
+
21
+ /**
22
+ * TFHE asset loading rules
23
+ *
24
+ * 1. Asset URL resolution
25
+ * - If `locateFile` is provided:
26
+ * - `URL` return value: that asset has a URL.
27
+ * - `null` / `undefined`: that asset has no URL and must use embedded base64
28
+ * if the selected load path allows it.
29
+ * - Any other value: invalid `locateFile` result.
30
+ * - Each asset is resolved independently; advanced callers may intentionally
31
+ * mix URL and embedded-base64 asset loading.
32
+ * - User-provided URLs are not checked for on-disk existence, even when
33
+ * they use the `file:` protocol. They are explicit caller input and fail
34
+ * later during read/fetch/SHA verification if wrong.
35
+ * - If `locateFile` is not provided:
36
+ * - Node: derive default `file://` URLs as an all-or-none set. If any
37
+ * auto-derived file is missing, clear all TFHE URLs and fall back to
38
+ * embedded base64. This preserves predictable behavior for unexpected
39
+ * bundler/package relocation.
40
+ * - Browser: no asset URL; use embedded base64 paths.
41
+ *
42
+ * 2. WASM module loading
43
+ * - If the WASM asset has a URL: load, SHA-verify, and compile from that URL.
44
+ * - If the WASM asset has no URL: compile from embedded base64.
45
+ * - `wasmAssetLoadMode` does not control WASM module loading.
46
+ *
47
+ * 3. Worker script loading
48
+ * - If single-threaded: no worker is loaded.
49
+ * - If threaded: `wasmAssetLoadMode` controls how the worker script is loaded.
50
+ * - The worker URL only makes a URL-backed worker mode possible; it does not
51
+ * force the worker to use that URL.
52
+ *
53
+ * 4. Worker mode precedence
54
+ * - `embedded-base64`: ignore any worker URL and use embedded worker source.
55
+ * - `verified-blob`: require worker URL, SHA-verify fetched bytes, execute those bytes.
56
+ * - `precheck-direct-url`: require worker URL, SHA precheck, then execute URL directly.
57
+ * - `trusted-direct-url`: require worker URL, execute URL directly without SDK verification.
58
+ * - `auto`: if worker URL exists, try `verified-blob`; on non-SHA failure, fall back
59
+ * to embedded base64. If no worker URL exists, use embedded base64.
60
+ *
61
+ * 5. Failure
62
+ * - Explicit URL worker modes with no worker URL: throw.
63
+ * - SHA mismatch: always throw, never fall back.
64
+ * - Explicit worker-mode runtime failures are surfaced by `startWorkers.js`.
65
+ *
66
+ * 6. Degradation:
67
+ * - Auto-derived Node URLs are best effort only. If either the WASM or worker
68
+ * file is missing on disk, both URLs are cleared and the SDK falls back to the
69
+ * no-URL paths.
70
+ * - With no WASM URL, the WASM module compiles from embedded base64.
71
+ * - With no worker URL, `auto` and `embedded-base64` worker modes use embedded
72
+ * worker source; explicit URL worker modes throw.
73
+ * - If threads are unsupported, unavailable, or configured with zero threads,
74
+ * TFHE runs single-threaded.
75
+ * - If `auto` mode would need a blob/eval worker but blob/eval workers are
76
+ * unavailable, TFHE runs single-threaded.
77
+ * - Single-threaded TFHE never loads a worker; WASM still loads from its resolved
78
+ * URL or embedded base64.
79
+ *
80
+ * 7. Security model:
81
+ * - Mixed transports are allowed for user-resolved assets when chosen explicitly.
82
+ * - External WASM URLs are SHA-verified before compilation.
83
+ * - `verified-blob` verifies and executes the exact worker bytes.
84
+ * - `precheck-direct-url` and `trusted-direct-url` intentionally trust the runtime
85
+ * worker URL fetch semantics described in `startWorkers.js`.
86
+ *
87
+ * Turbopack / relocated package behavior:
88
+ * - In Node, without `locateFile`, the SDK derives default `file://` URLs from
89
+ * the package's wasm base URL.
90
+ * - Some bundlers can relocate/package the JS in a way that makes those derived
91
+ * `file://` URLs point to paths that do not exist on disk.
92
+ * - Passing such URLs to the WASM or worker loaders would fail at runtime instead
93
+ * of using the embedded assets.
94
+ * - To avoid that, auto-derived Node URLs are checked as an all-or-none set before
95
+ * loading: if either the WASM or worker file is missing, both URLs are cleared.
96
+ * - Once cleared, WASM loads from embedded base64 and worker loading follows
97
+ * `wasmAssetLoadMode` with no worker URL available.
98
+ * - User-provided `locateFile` URLs, including `file:` URLs, are not probed here;
99
+ * they are explicit caller input and fail loud later if wrong.
100
+ */
101
+
102
+ ////////////////////////////////////////////////////////////////////////////////
103
+
104
+ function _requiresAssetUrl(wasmAssetLoadMode: WasmAssetLoadMode | undefined): boolean {
105
+ return wasmAssetLoadMode !== undefined && wasmAssetLoadMode !== 'auto' && wasmAssetLoadMode !== 'embedded-base64';
106
+ }
18
107
 
19
108
  ////////////////////////////////////////////////////////////////////////////////
20
109
 
21
110
  // (Node only) Path relative to src/wasm/ where wasmBaseUrl is anchored
22
- const nodeDefaultLocateFile = (file: string): URL => {
111
+ const nodeDefaultLocateFile = async (file: string): Promise<URL> => {
112
+ // Pure JS file (not compiled by tsc) — provides cross-platform base URL
113
+ // for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
114
+ const { wasmBaseUrl } = await import('../../../../wasm/wasmBaseUrl.js');
23
115
  return new URL(`./tfhe/${file}`, wasmBaseUrl);
24
116
  };
25
117
 
@@ -34,20 +126,108 @@ type TfheLibInitAsyncParameters = {
34
126
  readonly num_threads?: number;
35
127
  };
36
128
 
129
+ type TfheAssetResolution = 'user' | 'node' | 'none';
37
130
  type ResolvedTfheAsset = TfheAssetMetadata & {
38
131
  readonly url: URL | undefined;
132
+ readonly resolution: TfheAssetResolution;
39
133
  };
40
134
 
41
- function _resolveTfheAsset(asset: TfheAssetMetadata, locateFile: FhevmRuntimeConfig['locateFile']): ResolvedTfheAsset {
135
+ type ResolvedTfheAssets = {
136
+ readonly wasm: ResolvedTfheAsset;
137
+ readonly worker: ResolvedTfheAsset;
138
+ };
139
+
140
+ async function _resolveSingleTfheAsset(
141
+ asset: TfheAssetMetadata,
142
+ locateFile: FhevmRuntimeConfig['locateFile'],
143
+ ): Promise<ResolvedTfheAsset> {
42
144
  let url: URL | undefined;
145
+ let resolution: TfheAssetResolution = 'none';
43
146
 
44
147
  if (locateFile !== undefined) {
45
- url = locateFile(asset.filename);
148
+ const located = locateFile(asset.filename) as unknown;
149
+ if (located === null || located === undefined) {
150
+ url = undefined;
151
+ } else if (located instanceof URL) {
152
+ url = located;
153
+ } else {
154
+ throw new TypeError(
155
+ `Invalid locateFile result for TFHE asset '${asset.filename}': expected URL, null, or undefined.`,
156
+ );
157
+ }
158
+ resolution = 'user';
46
159
  } else if (!isBrowserLike()) {
47
- url = nodeDefaultLocateFile(asset.localRelativePath);
160
+ url = await nodeDefaultLocateFile(asset.localRelativePath);
161
+ resolution = 'node';
48
162
  }
49
163
 
50
- return Object.freeze({ ...asset, url });
164
+ return Object.freeze({ ...asset, url, resolution });
165
+ }
166
+
167
+ /**
168
+ * Resolves TFHE asset URLs for wasm and worker scripts.
169
+ *
170
+ * With user `locateFile` resolution, each asset is independent: returning a URL
171
+ * opts that asset into URL loading, while returning null/undefined opts that asset
172
+ * into embedded base64 when its selected load path supports it.
173
+ *
174
+ * For `'node'` resolution (auto-derived `file://` URLs), every URL is validated
175
+ * on disk: if any one is missing — e.g. a bundler such as Turbopack relocated the
176
+ * package and the derived `file://ROOT/...` path no longer exists — then ALL URLs
177
+ * are cleared so the whole set falls back to embedded base64 consistently.
178
+ *
179
+ * `'none'` has no URL to validate.
180
+ */
181
+ async function _resolveTfheAssets(
182
+ assets: TfheAssets,
183
+ locateFile: FhevmRuntimeConfig['locateFile'],
184
+ ): Promise<{ readonly wasm: ResolvedTfheAsset; readonly worker: ResolvedTfheAsset }> {
185
+ let wasm = await _resolveSingleTfheAsset(assets.wasm, locateFile);
186
+ let worker = await _resolveSingleTfheAsset(assets.worker, locateFile);
187
+
188
+ // Only auto-derived ('node') file:// URLs need on-disk validation; the mode is
189
+ // shared across all assets, so checking one is enough to know the set's mode.
190
+ if (wasm.resolution === 'node') {
191
+ const allExist = (
192
+ await Promise.all([isomorphicFileUrlExists(wasm.url), isomorphicFileUrlExists(worker.url)])
193
+ ).every(Boolean);
194
+ if (!allExist) {
195
+ wasm = Object.freeze({ ...wasm, url: undefined });
196
+ worker = Object.freeze({ ...worker, url: undefined });
197
+ }
198
+ }
199
+
200
+ return { wasm, worker };
201
+ }
202
+
203
+ /**
204
+ * Emits debug traces describing how the TFHE assets were resolved (user-provided
205
+ * `locateFile`, auto-derived on-disk path, embedded base64, or bundler-relocated
206
+ * fallback). Pure logging — no control flow.
207
+ */
208
+ function _logResolvedTfheAssets(resolvedAssets: ResolvedTfheAssets, logger: FhevmRuntimeConfig['logger']): void {
209
+ const { wasm, worker } = resolvedAssets;
210
+ if (wasm.resolution === 'user') {
211
+ logger?.debug?.(`resolve tfhe wasm filename using 'locateFile' function: ${wasm.filename} -> url: ${wasm.url}`);
212
+ logger?.debug?.(
213
+ `resolve tfhe worker filename using 'locateFile' function: ${worker.filename} -> url: ${worker.url}`,
214
+ );
215
+ } else if (wasm.resolution === 'node') {
216
+ if (wasm.url === undefined) {
217
+ // Auto-derived assets were missing on disk (e.g. a bundler such as Turbopack
218
+ // relocated the package) and were cleared by _resolveTfheAssets -> base64.
219
+ logger?.debug?.(
220
+ `tfhe auto-derived assets not found on disk (bundler relocation?); using embedded base64 ` +
221
+ `(wasm: ${wasm.localRelativePath}, worker: ${worker.localRelativePath})`,
222
+ );
223
+ } else {
224
+ logger?.debug?.(`resolve tfhe wasm local path: ${wasm.localRelativePath} -> url: ${wasm.url}`);
225
+ logger?.debug?.(`resolve tfhe worker local path: ${worker.localRelativePath} -> url: ${worker.url}`);
226
+ }
227
+ } else {
228
+ // 'none': browser zero-config (no 'locateFile', not Node) -> embedded base64.
229
+ logger?.debug?.(`resolve tfhe assets using embedded base64 (browser, no 'locateFile')`);
230
+ }
51
231
  }
52
232
 
53
233
  ////////////////////////////////////////////////////////////////////////////////
@@ -56,9 +236,8 @@ function _resolveTfheAsset(asset: TfheAssetMetadata, locateFile: FhevmRuntimeCon
56
236
 
57
237
  type ResolvedTfheModuleConfig = {
58
238
  readonly version: TfheVersion;
59
- readonly worker: ResolvedTfheAsset;
239
+ readonly assets: ResolvedTfheAssets;
60
240
  readonly wasmAssetLoadMode: FhevmRuntimeConfig['wasmAssetLoadMode'];
61
- readonly wasm: ResolvedTfheAsset;
62
241
  /* if `true`, then `numberOfThreads` is 0, if `false` then `numberOfThreads` > 0 */
63
242
  readonly singleThread: boolean;
64
243
  readonly numberOfThreads: number;
@@ -102,54 +281,88 @@ async function _getOrResolveTfheModuleConfig(
102
281
  }
103
282
 
104
283
  /**
105
- * @internal
106
- * Resolves user-provided {@link FhevmRuntimeConfig} into a fully resolved config
107
- * (thread count, worker URL, WASM URL). Must be called before WASM initialization.
284
+ * Fails fast on impossible / contradictory TFHE configurations, before any
285
+ * wasm or worker work begins.
286
+ *
287
+ * Only genuinely unsatisfiable configs throw here. Recoverable situations —
288
+ * missing SAB/thread support, or `auto` mode without blob/eval worker support —
289
+ * degrade to single-threaded later. Single-threaded TFHE needs no worker, and
290
+ * wasm still loads from its resolved URL or embedded base64. Do not add
291
+ * degradable cases to this function.
108
292
  */
109
- async function _resolveTfheModuleConfig(
110
- parameters: FhevmRuntimeConfig,
111
- version: TfheVersion,
112
- ): Promise<ResolvedTfheModuleConfig> {
113
- const {
114
- locateFile,
115
- wasmAssetLoadMode,
116
- singleThread: singleThreadConfig,
117
- numberOfThreads: numberOfThreadsConfig,
118
- } = parameters;
293
+ function _assertSatisfiableTfheConfig(resolvedAssets: ResolvedTfheAssets, parameters: FhevmRuntimeConfig): void {
294
+ const { wasmAssetLoadMode, numberOfThreads } = parameters;
295
+ const { wasm, worker } = resolvedAssets;
119
296
 
120
- let singleThread = false;
121
- if (singleThreadConfig !== undefined) {
122
- singleThread = singleThreadConfig;
297
+ if (wasm.resolution !== worker.resolution) {
298
+ // internal error
299
+ throw new Error('Internal error');
123
300
  }
124
301
 
125
- const canUseBlob = await isBlobWorkerSupported();
302
+ // (1) Auto-derived Node URLs must remain all-or-none. User `locateFile`
303
+ // resolution may intentionally mix URL and embedded-base64 assets, but a
304
+ // partial Node file set means the package/bundler layout is inconsistent.
305
+ if (wasm.resolution === 'node') {
306
+ if ((wasm.url === undefined) !== (worker.url === undefined)) {
307
+ throw new Error(
308
+ `Inconsistent auto-derived TFHE asset URLs: Node resolution must resolve both the wasm and worker assets, or neither ` +
309
+ `(wasm: ${wasm.url ? 'url' : 'none'}, worker: ${worker.url ? 'url' : 'none'}).`,
310
+ );
311
+ }
312
+ }
126
313
 
127
- const assets = tfheAssetsWithVersion(version);
128
- const wasm = _resolveTfheAsset(assets.wasm, locateFile);
129
- const worker = _resolveTfheAsset(assets.worker, locateFile);
314
+ // (2) A URL-requiring worker mode (verified-blob / precheck-direct-url /
315
+ // trusted-direct-url) was selected, but no worker URL is available.
316
+ // We refuse to silently downgrade an explicit URL/verification choice to base64.
317
+ if (worker.url === undefined && _requiresAssetUrl(wasmAssetLoadMode)) {
318
+ throw new Error(
319
+ `wasmAssetLoadMode '${wasmAssetLoadMode}' requires a resolvable worker URL, but none is available. ` +
320
+ `Use 'auto' or 'embedded-base64', or provide a worker URL via 'locateFile'.`,
321
+ );
322
+ }
130
323
 
131
- if (locateFile !== undefined) {
132
- parameters.logger?.debug(`resolve tfhe wasm filename: ${wasm.filename} -> url: ${wasm.url}`);
133
- parameters.logger?.debug(`resolve tfhe worker filename: ${worker.filename} -> url: ${worker.url}`);
134
- } else {
135
- /*
136
- if run in Node only, use defaultLocateFile!
137
- */
138
- if (isBrowserLike()) {
139
- if (!canUseBlob) {
140
- throw new Error('Missing locate file function');
141
- }
142
- } else {
143
- parameters.logger?.debug(`resolve tfhe wasm local path: ${wasm.localRelativePath} -> url: ${wasm.url}`);
144
- parameters.logger?.debug(`resolve tfhe worker local path: ${worker.localRelativePath} -> url: ${worker.url}`);
145
- }
324
+ // (3) Invalid thread count: must be a non-negative integer when provided.
325
+ // (Negative / NaN would otherwise be silently coerced to single-threaded,
326
+ // hiding the caller's mistake.)
327
+ if (numberOfThreads !== undefined && (!Number.isInteger(numberOfThreads) || numberOfThreads < 0)) {
328
+ throw new Error(`numberOfThreads must be a non-negative integer, received: ${String(numberOfThreads)}`);
146
329
  }
330
+ }
331
+
332
+ ////////////////////////////////////////////////////////////////////////////////
147
333
 
148
- let numberOfThreads: number | undefined;
334
+ type ResolvedThreadConfig = {
335
+ readonly singleThread: boolean;
336
+ readonly numberOfThreads: number;
337
+ readonly supportsThreads: boolean | undefined;
338
+ };
339
+
340
+ /**
341
+ * Resolves the effective threading config. Degrades to single-threaded when
342
+ * multi-threading is requested but cannot run — no SharedArrayBuffer/COOP-COEP
343
+ * support, or no way to spawn a worker. Never throws: single-threaded always works
344
+ * (it needs no worker, and the wasm still loads via URL or embedded base64).
345
+ */
346
+ async function _resolveThreadConfig(args: {
347
+ readonly preferredSingleThread: boolean;
348
+ readonly numberOfThreadsConfig: number | undefined;
349
+ readonly wasmAssetLoadMode: WasmAssetLoadMode;
350
+ readonly canUseBlob: boolean;
351
+ readonly logger: FhevmRuntimeConfig['logger'];
352
+ }): Promise<ResolvedThreadConfig> {
353
+ const { preferredSingleThread, numberOfThreadsConfig, wasmAssetLoadMode, canUseBlob, logger } = args;
354
+
355
+ let singleThread = preferredSingleThread;
356
+ let numberOfThreads = 0;
149
357
  let supportsThreads: boolean | undefined;
150
358
 
151
359
  if (!singleThread) {
152
- numberOfThreads = numberOfThreadsConfig ?? navigator.hardwareConcurrency; // Node 21+
360
+ // `navigator` is absent in some edge runtimes (and Node <21); guard it so a
361
+ // missing global degrades to single-threaded (0) instead of a ReferenceError.
362
+ // This single-threaded fallback is also the only viable mode on edge anyway:
363
+ // Cloudflare Workers and Vercel Edge support neither Web Workers (`new Worker`)
364
+ // nor `node:worker_threads`, so the worker pool could not be spawned there.
365
+ numberOfThreads = numberOfThreadsConfig ?? (typeof navigator !== 'undefined' ? navigator.hardwareConcurrency : 0);
153
366
 
154
367
  if (numberOfThreads > 0) {
155
368
  // SharedArrayBuffer requires COOP/COEP headers in browsers.
@@ -163,34 +376,124 @@ async function _resolveTfheModuleConfig(
163
376
  );
164
377
  singleThread = true;
165
378
  numberOfThreads = 0;
379
+ } else if (!canUseBlob && wasmAssetLoadMode === 'auto') {
380
+ // Threads are supported, but the selected mode spawns its worker from code
381
+ // (embedded-base64 / verified-blob / auto — blob in browser, eval in Node),
382
+ // and blob/eval workers are unavailable here. The direct-url modes use
383
+ // `new Worker(url)` and don't need blob support, so they're exempt.
384
+ // Degrade to single-threaded (single-threaded TFHE needs no worker).
385
+ logger?.warn?.(
386
+ `Cannot spawn a '${wasmAssetLoadMode}' worker (blob/eval workers unavailable); running single-threaded.`,
387
+ );
388
+ singleThread = true;
389
+ numberOfThreads = 0;
166
390
  }
167
391
  } else {
168
392
  singleThread = true;
169
393
  numberOfThreads = 0;
170
394
  }
171
- } else {
172
- numberOfThreads = 0;
173
395
  }
174
396
 
397
+ return { singleThread, numberOfThreads, supportsThreads };
398
+ }
399
+
400
+ /**
401
+ * @internal
402
+ * Resolves user-provided {@link FhevmRuntimeConfig} into a fully resolved config
403
+ * (thread count, worker URL, WASM URL). Must be called before WASM initialization.
404
+ */
405
+ async function _resolveTfheModuleConfig(
406
+ parameters: FhevmRuntimeConfig,
407
+ version: TfheVersion,
408
+ ): Promise<ResolvedTfheModuleConfig> {
409
+ const {
410
+ locateFile,
411
+ wasmAssetLoadMode: requestedWasmAssetLoadMode,
412
+ singleThread: preferredSingleThread,
413
+ numberOfThreads: numberOfThreadsConfig,
414
+ } = parameters;
415
+
416
+ const wasmAssetLoadMode = requestedWasmAssetLoadMode ?? 'auto';
417
+ const canUseBlob = await isBlobWorkerSupported();
418
+
419
+ const assets = tfheAssetsWithVersion(version);
420
+
421
+ const resolvedAssets = await _resolveTfheAssets(assets, locateFile);
422
+
423
+ // ── TFHE asset resolution & degradation rules ───────────────────────────────
424
+ //
425
+ // POLICY: user-resolved assets may intentionally mix transports (e.g. URL
426
+ // wasm + embedded worker). Auto-derived Node assets remain all-or-none because
427
+ // missing local files are unexpected and usually mean bundler/package relocation.
428
+ //
429
+ // Asset URL resolution:
430
+ //
431
+ // locateFile runtime / on-disk resolution asset url policy
432
+ // ---------- --------------------- ---------- -------------- --------------------------
433
+ // provided any 'user' per asset caller controls each asset
434
+ // none Node, files present 'node' file://… all TFHE URLs kept
435
+ // none Node, files missing * 'node' undefined all TFHE URLs cleared
436
+ // none browser 'none' undefined embedded base64
437
+ // * e.g. a bundler (Turbopack) relocated the package; URLs cleared by _resolveTfheAssets.
438
+ //
439
+ // Worker load mode (wasmAssetLoadMode) requirements:
440
+ //
441
+ // mode needs URL? needs blob/eval worker (canUseBlob)?
442
+ // ------------------- ---------- ------------------------------------
443
+ // embedded-base64 no yes
444
+ // verified-blob yes yes
445
+ // auto no yes (verified-blob if URL, else embedded)
446
+ // precheck-direct-url yes no (new Worker(url))
447
+ // trusted-direct-url yes no (new Worker(url))
448
+ //
449
+ // Failure / degradation (in order):
450
+ // 1. explicit URL mode but no URL is available -> throw (unsatisfiable config)
451
+ // 2. threads requested but unsupported (no SAB) -> degrade to single-threaded
452
+ // 3. auto mode cannot spawn blob/eval workers -> degrade to single-threaded
453
+ //
454
+ // Explicit worker modes are not downgraded here:
455
+ // startWorkers.js owns their worker-loading behavior and surfaces their failures.
456
+ // Single-threaded never needs a worker; wasm still loads (URL or embedded base64).
457
+
458
+ // Early validation: throw on impossible/contradictory configs. Recoverable
459
+ // cases (no worker source, no thread support) degrade later — they are NOT here.
460
+ _assertSatisfiableTfheConfig(resolvedAssets, parameters);
461
+
462
+ _logResolvedTfheAssets(resolvedAssets, parameters.logger);
463
+
464
+ const { singleThread, numberOfThreads, supportsThreads } = await _resolveThreadConfig({
465
+ preferredSingleThread: preferredSingleThread ?? false,
466
+ numberOfThreadsConfig,
467
+ wasmAssetLoadMode,
468
+ canUseBlob,
469
+ logger: parameters.logger,
470
+ });
471
+
175
472
  const tfheLib = await loadTfheLib(version);
473
+
176
474
  tfheLib.setWorkerUrlConfig({
177
- workerUrl: worker.url,
475
+ workerUrl: resolvedAssets.worker.url,
178
476
  wasmAssetLoadMode,
179
- logger: parameters.logger,
477
+ // Single source of truth for browser-vs-Node, resolved on the main thread
478
+ // (robust to bundler `process` shims) — the worker bootstrap no longer detects it.
479
+ isBrowserLike: isBrowserLike(),
480
+ logger:
481
+ parameters.logger?.debug !== undefined && parameters.logger.error !== undefined
482
+ ? { debug: parameters.logger.debug, error: parameters.logger.error }
483
+ : undefined,
180
484
  });
181
485
 
182
486
  const cfg = {
183
487
  version,
184
488
  numberOfThreads,
185
- worker,
489
+ assets: resolvedAssets,
186
490
  wasmAssetLoadMode,
187
- wasm,
188
491
  singleThread,
189
492
  logger: parameters.logger,
190
493
  supportsThreads,
191
494
  };
192
495
 
193
- parameters.logger?.debug(JSON.stringify(cfg, null, 2));
496
+ //parameters.logger?.debug?.(JSON.stringify(cfg, null, 2));
194
497
 
195
498
  return cfg;
196
499
  }
@@ -270,20 +573,27 @@ export async function initTfheModule(runtime: FhevmRuntime, parameters: InitTfhe
270
573
  return cachedTfheModulePromise;
271
574
  }
272
575
 
273
- async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibApi> {
274
- const tfheLib = await loadTfheLib(cfg.version);
275
-
276
- // Compile WASM module (see matrix in types.ts)
576
+ async function _compileWasmModule(cfg: ResolvedTfheModuleConfig): Promise<WebAssembly.Module> {
277
577
  let wasmModule;
278
- if (cfg.wasm.url !== undefined) {
279
- cfg.logger?.debug(`compile verified wasm at: ${cfg.wasm.url}`);
280
- wasmModule = await isomorphicCompileVerifiedWasm(cfg.wasm.url, cfg.wasm.sha256);
578
+
579
+ if (cfg.assets.wasm.url !== undefined) {
580
+ cfg.logger?.debug?.(`compile verified wasm at: ${cfg.assets.wasm.url}`);
581
+ wasmModule = await isomorphicCompileVerifiedWasm(cfg.assets.wasm.url, cfg.assets.wasm.sha256);
281
582
  } else {
282
583
  const { tfheWasmBase64, tfheWasmBase64CompressionFormat } = await loadTfheWasmBase64(cfg.version);
283
- cfg.logger?.debug(`compile wasm from embedded base64 (compression:${tfheWasmBase64CompressionFormat ?? 'none'})`);
584
+ cfg.logger?.debug?.(`compile wasm from embedded base64 (compression:${tfheWasmBase64CompressionFormat ?? 'none'})`);
284
585
  wasmModule = await isomorphicCompileWasmFromBase64(tfheWasmBase64, tfheWasmBase64CompressionFormat);
285
586
  }
286
587
 
588
+ return wasmModule;
589
+ }
590
+
591
+ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibApi> {
592
+ const tfheLib = await loadTfheLib(cfg.version);
593
+
594
+ // 1. Compile WASM module
595
+ const wasmModule = await _compileWasmModule(cfg);
596
+
287
597
  const input: TfheLibInitAsyncParameters = { module_or_path: wasmModule };
288
598
 
289
599
  // 2. Load and instantiate the TFHE WASM binary
@@ -294,7 +604,7 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
294
604
 
295
605
  // 4. Spawn Web Workers for parallel FHE operations (skipped when single-threaded)
296
606
  if (!cfg.singleThread) {
297
- cfg.logger?.debug(`initThreadPool(${cfg.numberOfThreads})`);
607
+ cfg.logger?.debug?.(`initThreadPool(${cfg.numberOfThreads})`);
298
608
  await tfheLib.initThreadPool(cfg.numberOfThreads);
299
609
  }
300
610
 
@@ -308,10 +618,10 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
308
618
  moduleInfoByVersion.set(
309
619
  cfg.version,
310
620
  Object.freeze({
311
- wasmUrl: cfg.wasm.url ? new URL(cfg.wasm.url) : undefined,
621
+ wasmUrl: cfg.assets.wasm.url ? new URL(cfg.assets.wasm.url) : undefined,
312
622
  version: wasmInfo.version,
313
623
  name: wasmInfo.name,
314
- workerUrl: cfg.worker.url ? new URL(cfg.worker.url) : undefined,
624
+ workerUrl: cfg.assets.worker.url ? new URL(cfg.assets.worker.url) : undefined,
315
625
  numberOfThreads: cfg.singleThread ? 0 : cfg.numberOfThreads,
316
626
  threadsAvailable: cfg.supportsThreads,
317
627
  memory,
@@ -46,7 +46,7 @@ export async function fetchPublicDecrypt(
46
46
  const signersAddress = res[2] as readonly ChecksummedAddress[];
47
47
  const signers = getKmsSignersPrivateKeyMap(relayerClient);
48
48
 
49
- const kmsPublicDecryptEIP712Signatures: Bytes65Hex[] = [];
49
+ const kmsPublicDecryptEip712Signatures: Bytes65Hex[] = [];
50
50
 
51
51
  for (let i = 0; i < signersAddress.length; ++i) {
52
52
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -56,12 +56,12 @@ export async function fetchPublicDecrypt(
56
56
  }
57
57
 
58
58
  const signature = await cleartextEthereumModule.sign({ hash: digest, privateKey });
59
- kmsPublicDecryptEIP712Signatures.push(signature);
59
+ kmsPublicDecryptEip712Signatures.push(signature);
60
60
  }
61
61
 
62
62
  return {
63
63
  orderedAbiEncodedClearValues: res[0] as BytesHex,
64
- kmsPublicDecryptEIP712Signatures,
64
+ kmsPublicDecryptEip712Signatures,
65
65
  extraData: res[4] as BytesHex,
66
66
  };
67
67
  }
@@ -1,7 +1,7 @@
1
1
  import type { BytesHex, ChecksummedAddress } from '../../../types/primitives.js';
2
2
  import type { FetchUserDecryptResultItem } from '../../../types/relayer.js';
3
3
  import type { CleartextEthereumModule } from '../../ethereum/types-ct.js';
4
- import type { FetchUserDecryptParameters, FetchUserDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
4
+ import type { FetchUserDecryptParametersV1, FetchUserDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
5
5
  import { remove0x } from '../../../base/string.js';
6
6
  import { asUint32BigInt, tryParseUintBigIntString, randomUniqueUints } from '../../../base/uint.js';
7
7
  import { getTrustedClient } from '../../../runtime/CoreFhevm-p.js';
@@ -61,7 +61,7 @@ const userDecryptAbi = [
61
61
 
62
62
  export async function fetchUserDecrypt(
63
63
  relayerClient: RelayerClientWithRuntime,
64
- parameters: FetchUserDecryptParameters,
64
+ parameters: FetchUserDecryptParametersV1,
65
65
  ): Promise<FetchUserDecryptReturnType> {
66
66
  const cleartextEthereumModule = relayerClient.runtime.ethereum as CleartextEthereumModule;
67
67
  const { payload } = parameters;
@@ -39,7 +39,7 @@ export async function fetchPublicDecrypt(
39
39
 
40
40
  return {
41
41
  orderedAbiEncodedClearValues: ensure0x(result.decryptedValue),
42
- kmsPublicDecryptEIP712Signatures: result.signatures.map(ensure0x) as Bytes65Hex[],
42
+ kmsPublicDecryptEip712Signatures: result.signatures.map(ensure0x) as Bytes65Hex[],
43
43
  extraData: result.extraData,
44
44
  };
45
45
  }