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

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 (794) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/actions/base/canDecryptPublicValue.js +1 -1
  3. package/_cjs/core/actions/base/canDecryptPublicValue.js.map +1 -1
  4. package/_cjs/core/actions/base/canDecryptPublicValues.js +1 -1
  5. package/_cjs/core/actions/base/canDecryptPublicValues.js.map +1 -1
  6. package/_cjs/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +5 -5
  7. package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
  8. package/_cjs/core/actions/base/index.js +3 -3
  9. package/_cjs/core/actions/base/index.js.map +1 -1
  10. package/_cjs/core/actions/base/readKmsSignersContext.js +2 -1
  11. package/_cjs/core/actions/base/readKmsSignersContext.js.map +1 -1
  12. package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -1
  13. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js +13 -0
  14. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
  15. package/_cjs/core/actions/decrypt/decryptValue.js +3 -1
  16. package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
  17. package/_cjs/core/actions/decrypt/decryptValues.js +3 -1
  18. package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
  19. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
  20. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  21. package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +3 -1
  22. package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
  23. package/_cjs/core/actions/decrypt/index.js +3 -3
  24. package/_cjs/core/actions/decrypt/index.js.map +1 -1
  25. package/_cjs/core/actions/encrypt/encryptValue.js +3 -1
  26. package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
  27. package/_cjs/core/actions/encrypt/encryptValues.js +3 -1
  28. package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
  29. package/_cjs/core/actions/encrypt/generateZkProof.js +5 -1
  30. package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
  31. package/_cjs/core/actions/host/readFhevmExecutorContractData.js +7 -7
  32. package/_cjs/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
  33. package/_cjs/core/actions/host/readInputVerifierContractData.js +1 -1
  34. package/_cjs/core/actions/host/readInputVerifierContractData.js.map +1 -1
  35. package/_cjs/core/actions/host/readKmsVerifierContractData.js +6 -5
  36. package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  37. package/_cjs/core/actions/host/resolveFhevmConfig.js +7 -1
  38. package/_cjs/core/actions/host/resolveFhevmConfig.js.map +1 -1
  39. package/_cjs/core/base/object.js +23 -0
  40. package/_cjs/core/base/object.js.map +1 -1
  41. package/_cjs/core/base/semver.js +166 -0
  42. package/_cjs/core/base/semver.js.map +1 -0
  43. package/_cjs/core/base/uint.js +20 -3
  44. package/_cjs/core/base/uint.js.map +1 -1
  45. package/_cjs/core/chains/definitions/localTestnet.js +3 -0
  46. package/_cjs/core/chains/definitions/localTestnet.js.map +1 -1
  47. package/_cjs/core/chains/definitions/mainnet.js +1 -0
  48. package/_cjs/core/chains/definitions/mainnet.js.map +1 -1
  49. package/_cjs/core/chains/definitions/sepolia.js +1 -0
  50. package/_cjs/core/chains/definitions/sepolia.js.map +1 -1
  51. package/_cjs/core/clients/decorators/base.js +5 -0
  52. package/_cjs/core/clients/decorators/base.js.map +1 -1
  53. package/_cjs/core/clients/decorators/decrypt-p.js +13 -0
  54. package/_cjs/core/clients/decorators/decrypt-p.js.map +1 -0
  55. package/_cjs/core/clients/decorators/decrypt.js +4 -7
  56. package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
  57. package/_cjs/core/clients/decorators/encrypt-p.js +5 -1
  58. package/_cjs/core/clients/decorators/encrypt-p.js.map +1 -1
  59. package/_cjs/core/clients/decorators/encrypt.js.map +1 -1
  60. package/_cjs/core/coprocessor/ZkProof-p.js +4 -2
  61. package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
  62. package/_cjs/core/coprocessor/ZkProofBuilder-p.js +2 -1
  63. package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  64. package/_cjs/core/coprocessor/encrypt.js +1 -1
  65. package/_cjs/core/coprocessor/encrypt.js.map +1 -1
  66. package/_cjs/core/errors/RelayerResponseStatusError.js +3 -2
  67. package/_cjs/core/errors/RelayerResponseStatusError.js.map +1 -1
  68. package/_cjs/core/host-contracts/HostContractVersion-p.js +26 -4
  69. package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
  70. package/_cjs/core/host-contracts/KmsSignersContext-p.js +23 -5
  71. package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  72. package/_cjs/core/host-contracts/abi-fragments/fragments.js +21 -1
  73. package/_cjs/core/host-contracts/abi-fragments/fragments.js.map +1 -1
  74. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
  75. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  76. package/_cjs/core/host-contracts/checkAllowedForDecryption.js +2 -2
  77. package/_cjs/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
  78. package/_cjs/core/host-contracts/checkDelegation.js +8 -8
  79. package/_cjs/core/host-contracts/checkDelegation.js.map +1 -1
  80. package/_cjs/core/host-contracts/checkPersistAllowed.js +9 -9
  81. package/_cjs/core/host-contracts/checkPersistAllowed.js.map +1 -1
  82. package/_cjs/core/host-contracts/getAclAddress-p.js +1 -2
  83. package/_cjs/core/host-contracts/getAclAddress-p.js.map +1 -1
  84. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +51 -0
  85. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
  86. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js +4 -5
  87. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  88. package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
  89. package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
  90. package/_cjs/core/host-contracts/getHandleVersion-p.js +1 -2
  91. package/_cjs/core/host-contracts/getHandleVersion-p.js.map +1 -1
  92. package/_cjs/core/host-contracts/getHcuLimitAddress-p.js +1 -2
  93. package/_cjs/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
  94. package/_cjs/core/host-contracts/getInputVerifierAddress-p.js +1 -2
  95. package/_cjs/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
  96. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js +5 -7
  97. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  98. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +4 -5
  99. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  100. package/_cjs/core/host-contracts/getSignersForKmsContext-p.js +3 -5
  101. package/_cjs/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
  102. package/_cjs/core/host-contracts/isAllowedForDecryption.js +4 -4
  103. package/_cjs/core/host-contracts/isAllowedForDecryption.js.map +1 -1
  104. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
  105. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
  106. package/_cjs/core/host-contracts/isUserDecryptable.js +2 -2
  107. package/_cjs/core/host-contracts/isUserDecryptable.js.map +1 -1
  108. package/_cjs/core/host-contracts/persistAllowed.js +4 -4
  109. package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
  110. package/_cjs/core/host-contracts/readKmsSignersContext-p.js +74 -25
  111. package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  112. package/_cjs/core/key/FheEncryptionKeyWasm-p.js +12 -4
  113. package/_cjs/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
  114. package/_cjs/core/key/deserializeFheEncryptionKey.js +3 -0
  115. package/_cjs/core/key/deserializeFheEncryptionKey.js.map +1 -1
  116. package/_cjs/core/key/fetchFheEncryptionKey.js +1 -1
  117. package/_cjs/core/key/fetchFheEncryptionKey.js.map +1 -1
  118. package/_cjs/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
  119. package/_cjs/core/key/serializeFheEncryptionKey.js +4 -1
  120. package/_cjs/core/key/serializeFheEncryptionKey.js.map +1 -1
  121. package/_cjs/core/kms/KmsSigncryptedShares-p.js +9 -1
  122. package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  123. package/_cjs/core/kms/SignedDecryptionPermit-p.js +5 -1
  124. package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  125. package/_cjs/core/kms/TransportKeyPair-p.js +31 -7
  126. package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
  127. package/_cjs/core/kms/createKmsUserDecryptEip712.js +4 -0
  128. package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
  129. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +97 -0
  130. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
  131. package/_cjs/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +10 -3
  132. package/_cjs/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
  133. package/_cjs/core/kms/decryptValuesFromPairs.js +4 -4
  134. package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
  135. package/_cjs/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +10 -6
  136. package/_cjs/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
  137. package/_cjs/core/kms/kmsExtraData.js +53 -10
  138. package/_cjs/core/kms/kmsExtraData.js.map +1 -1
  139. package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js +25 -0
  140. package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
  141. package/_cjs/core/kms/publicDecrypt.js +5 -3
  142. package/_cjs/core/kms/publicDecrypt.js.map +1 -1
  143. package/_cjs/core/modules/decrypt/mock.js +1 -23
  144. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  145. package/_cjs/core/modules/decrypt/module/api-p.js +51 -23
  146. package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
  147. package/_cjs/core/modules/decrypt/module/index.js +5 -27
  148. package/_cjs/core/modules/decrypt/module/index.js.map +1 -1
  149. package/_cjs/core/modules/decrypt/module/init-p.js +40 -19
  150. package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
  151. package/_cjs/core/modules/encrypt/mock.js +26 -8
  152. package/_cjs/core/modules/encrypt/mock.js.map +1 -1
  153. package/_cjs/core/modules/encrypt/module/api-p.js +50 -21
  154. package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
  155. package/_cjs/core/modules/encrypt/module/index.js +3 -3
  156. package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
  157. package/_cjs/core/modules/encrypt/module/init-p.js +63 -24
  158. package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
  159. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +1 -1
  160. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
  161. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +1 -1
  162. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  163. package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js +28 -4
  164. package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
  165. package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js +5 -1
  166. package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
  167. package/_cjs/core/modules/relayer/module/readErrorMessage.js +29 -0
  168. package/_cjs/core/modules/relayer/module/readErrorMessage.js.map +1 -0
  169. package/_cjs/core/runtime/CoreFhevm-p.js +171 -5
  170. package/_cjs/core/runtime/CoreFhevm-p.js.map +1 -1
  171. package/_cjs/core/runtime/HyperWasmSolver-p.js +187 -0
  172. package/_cjs/core/runtime/HyperWasmSolver-p.js.map +1 -0
  173. package/_cjs/core/runtime/ProtocolVersionResolver-p.js +270 -0
  174. package/_cjs/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
  175. package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
  176. package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
  177. package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  178. package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
  179. package/_cjs/core/runtime/initFhevmRuntime-p.js +4 -1
  180. package/_cjs/core/runtime/initFhevmRuntime-p.js.map +1 -1
  181. package/_cjs/core/runtime/resolveFhevmVersions-p.js +48 -0
  182. package/_cjs/core/runtime/resolveFhevmVersions-p.js.map +1 -0
  183. package/_cjs/core/runtimeConfig-p.js +10 -0
  184. package/_cjs/core/runtimeConfig-p.js.map +1 -1
  185. package/_cjs/core/types/{zkProofBuilder.js → moduleVersions.js} +1 -1
  186. package/_cjs/core/types/moduleVersions.js.map +1 -0
  187. package/_cjs/core/types/{fhevmUser.js → wasmAssets.js} +1 -1
  188. package/_cjs/core/types/wasmAssets.js.map +1 -0
  189. package/_cjs/core/types/{fhevmDecryptionKey.js → zkProofBuilder-p.js} +1 -1
  190. package/_cjs/core/types/zkProofBuilder-p.js.map +1 -0
  191. package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
  192. package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
  193. package/_cjs/ethers/internal/config.js +1 -18
  194. package/_cjs/ethers/internal/config.js.map +1 -1
  195. package/_cjs/viem/internal/config.js +1 -18
  196. package/_cjs/viem/internal/config.js.map +1 -1
  197. package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
  198. package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
  199. package/_cjs/wasm/tfhe/v1.5.3/tfhe.js +6 -1
  200. package/_cjs/wasm/tfhe/v1.5.3/tfhe.js.map +2 -2
  201. package/_cjs/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
  202. package/_cjs/wasm/tfhe/v1.6.1/tfhe.js +6 -1
  203. package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +2 -2
  204. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  205. package/_cjs/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
  206. package/_cjs/wasm/tkms/v0.13.10/kms_lib.js +6 -1
  207. package/_cjs/wasm/tkms/v0.13.10/kms_lib.js.map +2 -2
  208. package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
  209. package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js +6 -1
  210. package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js.map +2 -2
  211. package/_cjs/wasm/wasmBaseUrl.js +23 -7
  212. package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
  213. package/_esm/core/_version.js +1 -1
  214. package/_esm/core/actions/base/canDecryptPublicValue.js +1 -1
  215. package/_esm/core/actions/base/canDecryptPublicValue.js.map +1 -1
  216. package/_esm/core/actions/base/canDecryptPublicValues.js +1 -1
  217. package/_esm/core/actions/base/canDecryptPublicValues.js.map +1 -1
  218. package/_esm/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +4 -4
  219. package/_esm/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
  220. package/_esm/core/actions/base/index.js +1 -1
  221. package/_esm/core/actions/base/index.js.map +1 -1
  222. package/_esm/core/actions/base/readKmsSignersContext.js +2 -1
  223. package/_esm/core/actions/base/readKmsSignersContext.js.map +1 -1
  224. package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -1
  225. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js +11 -0
  226. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
  227. package/_esm/core/actions/decrypt/decryptValue.js +3 -1
  228. package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
  229. package/_esm/core/actions/decrypt/decryptValues.js +3 -1
  230. package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
  231. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
  232. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  233. package/_esm/core/actions/decrypt/generateTransportKeyPair.js +3 -1
  234. package/_esm/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
  235. package/_esm/core/actions/decrypt/index.js +1 -1
  236. package/_esm/core/actions/decrypt/index.js.map +1 -1
  237. package/_esm/core/actions/encrypt/encryptValue.js +3 -1
  238. package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
  239. package/_esm/core/actions/encrypt/encryptValues.js +3 -1
  240. package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
  241. package/_esm/core/actions/encrypt/generateZkProof.js +5 -1
  242. package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
  243. package/_esm/core/actions/host/readFhevmExecutorContractData.js +8 -8
  244. package/_esm/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
  245. package/_esm/core/actions/host/readInputVerifierContractData.js +2 -2
  246. package/_esm/core/actions/host/readInputVerifierContractData.js.map +1 -1
  247. package/_esm/core/actions/host/readKmsVerifierContractData.js +7 -6
  248. package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  249. package/_esm/core/actions/host/resolveFhevmConfig.js +7 -1
  250. package/_esm/core/actions/host/resolveFhevmConfig.js.map +1 -1
  251. package/_esm/core/base/object.js +28 -0
  252. package/_esm/core/base/object.js.map +1 -1
  253. package/_esm/core/base/semver.js +164 -0
  254. package/_esm/core/base/semver.js.map +1 -0
  255. package/_esm/core/base/uint.js +23 -2
  256. package/_esm/core/base/uint.js.map +1 -1
  257. package/_esm/core/chains/definitions/localTestnet.js +3 -0
  258. package/_esm/core/chains/definitions/localTestnet.js.map +1 -1
  259. package/_esm/core/chains/definitions/mainnet.js +1 -0
  260. package/_esm/core/chains/definitions/mainnet.js.map +1 -1
  261. package/_esm/core/chains/definitions/sepolia.js +1 -0
  262. package/_esm/core/chains/definitions/sepolia.js.map +1 -1
  263. package/_esm/core/clients/decorators/base.js +6 -1
  264. package/_esm/core/clients/decorators/base.js.map +1 -1
  265. package/_esm/core/clients/decorators/decrypt-p.js +11 -0
  266. package/_esm/core/clients/decorators/decrypt-p.js.map +1 -0
  267. package/_esm/core/clients/decorators/decrypt.js +3 -7
  268. package/_esm/core/clients/decorators/decrypt.js.map +1 -1
  269. package/_esm/core/clients/decorators/encrypt-p.js +6 -2
  270. package/_esm/core/clients/decorators/encrypt-p.js.map +1 -1
  271. package/_esm/core/clients/decorators/encrypt.js.map +1 -1
  272. package/_esm/core/coprocessor/ZkProof-p.js +4 -2
  273. package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
  274. package/_esm/core/coprocessor/ZkProofBuilder-p.js +2 -1
  275. package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  276. package/_esm/core/coprocessor/encrypt.js +1 -1
  277. package/_esm/core/coprocessor/encrypt.js.map +1 -1
  278. package/_esm/core/errors/RelayerResponseStatusError.js +7 -2
  279. package/_esm/core/errors/RelayerResponseStatusError.js.map +1 -1
  280. package/_esm/core/host-contracts/HostContractVersion-p.js +34 -3
  281. package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
  282. package/_esm/core/host-contracts/KmsSignersContext-p.js +24 -6
  283. package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  284. package/_esm/core/host-contracts/abi-fragments/fragments.js +24 -0
  285. package/_esm/core/host-contracts/abi-fragments/fragments.js.map +1 -1
  286. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
  287. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  288. package/_esm/core/host-contracts/checkAllowedForDecryption.js +2 -2
  289. package/_esm/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
  290. package/_esm/core/host-contracts/checkDelegation.js +8 -8
  291. package/_esm/core/host-contracts/checkDelegation.js.map +1 -1
  292. package/_esm/core/host-contracts/checkPersistAllowed.js +9 -9
  293. package/_esm/core/host-contracts/checkPersistAllowed.js.map +1 -1
  294. package/_esm/core/host-contracts/getAclAddress-p.js +1 -2
  295. package/_esm/core/host-contracts/getAclAddress-p.js.map +1 -1
  296. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +63 -0
  297. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
  298. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js +6 -7
  299. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  300. package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
  301. package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
  302. package/_esm/core/host-contracts/getHandleVersion-p.js +1 -2
  303. package/_esm/core/host-contracts/getHandleVersion-p.js.map +1 -1
  304. package/_esm/core/host-contracts/getHcuLimitAddress-p.js +1 -2
  305. package/_esm/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
  306. package/_esm/core/host-contracts/getInputVerifierAddress-p.js +1 -2
  307. package/_esm/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
  308. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js +6 -8
  309. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  310. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +5 -6
  311. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  312. package/_esm/core/host-contracts/getSignersForKmsContext-p.js +5 -7
  313. package/_esm/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
  314. package/_esm/core/host-contracts/isAllowedForDecryption.js +4 -4
  315. package/_esm/core/host-contracts/isAllowedForDecryption.js.map +1 -1
  316. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
  317. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
  318. package/_esm/core/host-contracts/isUserDecryptable.js +2 -2
  319. package/_esm/core/host-contracts/isUserDecryptable.js.map +1 -1
  320. package/_esm/core/host-contracts/persistAllowed.js +4 -4
  321. package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
  322. package/_esm/core/host-contracts/readKmsSignersContext-p.js +89 -29
  323. package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  324. package/_esm/core/key/FheEncryptionKeyWasm-p.js +12 -4
  325. package/_esm/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
  326. package/_esm/core/key/deserializeFheEncryptionKey.js +3 -0
  327. package/_esm/core/key/deserializeFheEncryptionKey.js.map +1 -1
  328. package/_esm/core/key/fetchFheEncryptionKey.js +1 -1
  329. package/_esm/core/key/fetchFheEncryptionKey.js.map +1 -1
  330. package/_esm/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
  331. package/_esm/core/key/serializeFheEncryptionKey.js +4 -1
  332. package/_esm/core/key/serializeFheEncryptionKey.js.map +1 -1
  333. package/_esm/core/kms/KmsSigncryptedShares-p.js +9 -1
  334. package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  335. package/_esm/core/kms/SignedDecryptionPermit-p.js +5 -1
  336. package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  337. package/_esm/core/kms/TransportKeyPair-p.js +32 -7
  338. package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
  339. package/_esm/core/kms/createKmsUserDecryptEip712.js +4 -0
  340. package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
  341. package/_esm/core/kms/createKmsUserDecryptEip712V2.js +98 -0
  342. package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
  343. package/_esm/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +9 -2
  344. package/_esm/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
  345. package/_esm/core/kms/decryptValuesFromPairs.js +4 -4
  346. package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
  347. package/_esm/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +12 -6
  348. package/_esm/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
  349. package/_esm/core/kms/kmsExtraData.js +70 -12
  350. package/_esm/core/kms/kmsExtraData.js.map +1 -1
  351. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js +28 -0
  352. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
  353. package/_esm/core/kms/publicDecrypt.js +5 -3
  354. package/_esm/core/kms/publicDecrypt.js.map +1 -1
  355. package/_esm/core/modules/decrypt/mock.js +0 -24
  356. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  357. package/_esm/core/modules/decrypt/module/api-p.js +51 -23
  358. package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
  359. package/_esm/core/modules/decrypt/module/index.js +31 -25
  360. package/_esm/core/modules/decrypt/module/index.js.map +1 -1
  361. package/_esm/core/modules/decrypt/module/init-p.js +41 -19
  362. package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
  363. package/_esm/core/modules/encrypt/mock.js +26 -9
  364. package/_esm/core/modules/encrypt/mock.js.map +1 -1
  365. package/_esm/core/modules/encrypt/module/api-p.js +50 -21
  366. package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
  367. package/_esm/core/modules/encrypt/module/index.js +3 -3
  368. package/_esm/core/modules/encrypt/module/index.js.map +1 -1
  369. package/_esm/core/modules/encrypt/module/init-p.js +69 -29
  370. package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
  371. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +2 -2
  372. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
  373. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +2 -2
  374. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  375. package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js +57 -4
  376. package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
  377. package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js +8 -1
  378. package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
  379. package/_esm/core/modules/relayer/module/readErrorMessage.js +52 -0
  380. package/_esm/core/modules/relayer/module/readErrorMessage.js.map +1 -0
  381. package/_esm/core/runtime/CoreFhevm-p.js +167 -5
  382. package/_esm/core/runtime/CoreFhevm-p.js.map +1 -1
  383. package/_esm/core/runtime/HyperWasmSolver-p.js +268 -0
  384. package/_esm/core/runtime/HyperWasmSolver-p.js.map +1 -0
  385. package/_esm/core/runtime/ProtocolVersionResolver-p.js +326 -0
  386. package/_esm/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
  387. package/_esm/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
  388. package/_esm/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
  389. package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  390. package/_esm/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
  391. package/_esm/core/runtime/initFhevmRuntime-p.js +4 -1
  392. package/_esm/core/runtime/initFhevmRuntime-p.js.map +1 -1
  393. package/_esm/core/runtime/resolveFhevmVersions-p.js +62 -0
  394. package/_esm/core/runtime/resolveFhevmVersions-p.js.map +1 -0
  395. package/_esm/core/runtimeConfig-p.js +9 -0
  396. package/_esm/core/runtimeConfig-p.js.map +1 -1
  397. package/_esm/core/types/moduleVersions.js +2 -0
  398. package/_esm/core/types/moduleVersions.js.map +1 -0
  399. package/_esm/core/types/wasmAssets.js +2 -0
  400. package/_esm/core/types/wasmAssets.js.map +1 -0
  401. package/_esm/core/types/zkProofBuilder-p.js +2 -0
  402. package/_esm/core/types/zkProofBuilder-p.js.map +1 -0
  403. package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
  404. package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
  405. package/_esm/ethers/internal/config.js +1 -18
  406. package/_esm/ethers/internal/config.js.map +1 -1
  407. package/_esm/viem/internal/config.js +1 -18
  408. package/_esm/viem/internal/config.js.map +1 -1
  409. package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
  410. package/_esm/wasm/tfhe/v1.5.3/tfhe.js +8 -0
  411. package/_esm/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
  412. package/_esm/wasm/tfhe/v1.6.1/tfhe.js +8 -0
  413. package/_esm/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
  414. package/_esm/wasm/tkms/v0.13.10/kms_lib.js +8 -0
  415. package/_esm/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
  416. package/_esm/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
  417. package/_esm/wasm/wasmBaseUrl.js +69 -4
  418. package/_types/core/actions/base/{fetchKmsSignedcryptedShares.d.ts → fetchKmsSigncryptedShares.d.ts} +7 -7
  419. package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts.map +1 -0
  420. package/_types/core/actions/base/index.d.ts +1 -1
  421. package/_types/core/actions/base/index.d.ts.map +1 -1
  422. package/_types/core/actions/base/readKmsSignersContext.d.ts.map +1 -1
  423. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +2 -2
  424. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  425. package/_types/core/actions/chain/parseTransportKeyPair.d.ts +1 -1
  426. package/_types/core/actions/chain/parseTransportKeyPair.d.ts.map +1 -1
  427. package/_types/core/actions/decrypt/{decryptKmsSignedcryptedShares.d.ts → decryptKmsSigncryptedShares.d.ts} +4 -4
  428. package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts.map +1 -0
  429. package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
  430. package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
  431. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
  432. package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts +2 -2
  433. package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts.map +1 -1
  434. package/_types/core/actions/decrypt/index.d.ts +1 -1
  435. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  436. package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
  437. package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
  438. package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
  439. package/_types/core/actions/host/readKmsVerifierContractData.d.ts +1 -0
  440. package/_types/core/actions/host/readKmsVerifierContractData.d.ts.map +1 -1
  441. package/_types/core/actions/host/resolveFhevmConfig.d.ts +2 -0
  442. package/_types/core/actions/host/resolveFhevmConfig.d.ts.map +1 -1
  443. package/_types/core/base/object.d.ts +7 -0
  444. package/_types/core/base/object.d.ts.map +1 -1
  445. package/_types/core/base/semver.d.ts +39 -0
  446. package/_types/core/base/semver.d.ts.map +1 -0
  447. package/_types/core/base/uint.d.ts +13 -2
  448. package/_types/core/base/uint.d.ts.map +1 -1
  449. package/_types/core/chains/definitions/localTestnet.d.ts +3 -0
  450. package/_types/core/chains/definitions/localTestnet.d.ts.map +1 -1
  451. package/_types/core/chains/definitions/mainnet.d.ts +1 -0
  452. package/_types/core/chains/definitions/mainnet.d.ts.map +1 -1
  453. package/_types/core/chains/definitions/sepolia.d.ts.map +1 -1
  454. package/_types/core/clients/decorators/base.d.ts.map +1 -1
  455. package/_types/core/clients/decorators/decrypt-p.d.ts +4 -0
  456. package/_types/core/clients/decorators/decrypt-p.d.ts.map +1 -0
  457. package/_types/core/clients/decorators/decrypt.d.ts +4 -2
  458. package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
  459. package/_types/core/clients/decorators/encrypt-p.d.ts +2 -3
  460. package/_types/core/clients/decorators/encrypt-p.d.ts.map +1 -1
  461. package/_types/core/clients/decorators/encrypt.d.ts +4 -2
  462. package/_types/core/clients/decorators/encrypt.d.ts.map +1 -1
  463. package/_types/core/coprocessor/ZkProof-p.d.ts +9 -2
  464. package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
  465. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +3 -1
  466. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
  467. package/_types/core/coprocessor/encrypt.d.ts +2 -0
  468. package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
  469. package/_types/core/errors/RelayerResponseStatusError.d.ts +7 -1
  470. package/_types/core/errors/RelayerResponseStatusError.d.ts.map +1 -1
  471. package/_types/core/host-contracts/HostContractVersion-p.d.ts +18 -1
  472. package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
  473. package/_types/core/host-contracts/KmsSignersContext-p.d.ts +2 -1
  474. package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
  475. package/_types/core/host-contracts/abi-fragments/fragments.d.ts +5 -0
  476. package/_types/core/host-contracts/abi-fragments/fragments.d.ts.map +1 -1
  477. package/_types/core/host-contracts/checkAllowedForDecryption.d.ts +1 -1
  478. package/_types/core/host-contracts/checkAllowedForDecryption.d.ts.map +1 -1
  479. package/_types/core/host-contracts/checkDelegation.d.ts +1 -1
  480. package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -1
  481. package/_types/core/host-contracts/checkPersistAllowed.d.ts +1 -1
  482. package/_types/core/host-contracts/checkPersistAllowed.d.ts.map +1 -1
  483. package/_types/core/host-contracts/getAclAddress-p.d.ts +1 -1
  484. package/_types/core/host-contracts/getAclAddress-p.d.ts.map +1 -1
  485. package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts +30 -0
  486. package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts.map +1 -0
  487. package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts +1 -1
  488. package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts.map +1 -1
  489. package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts +1 -1
  490. package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts.map +1 -1
  491. package/_types/core/host-contracts/getHandleVersion-p.d.ts +1 -1
  492. package/_types/core/host-contracts/getHandleVersion-p.d.ts.map +1 -1
  493. package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts +1 -1
  494. package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts.map +1 -1
  495. package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts +1 -1
  496. package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts.map +1 -1
  497. package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts +1 -1
  498. package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts.map +1 -1
  499. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +1 -1
  500. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
  501. package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts +2 -2
  502. package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts.map +1 -1
  503. package/_types/core/host-contracts/isAllowedForDecryption.d.ts +1 -1
  504. package/_types/core/host-contracts/isAllowedForDecryption.d.ts.map +1 -1
  505. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +1 -1
  506. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -1
  507. package/_types/core/host-contracts/isUserDecryptable.d.ts +1 -1
  508. package/_types/core/host-contracts/isUserDecryptable.d.ts.map +1 -1
  509. package/_types/core/host-contracts/persistAllowed.d.ts +1 -1
  510. package/_types/core/host-contracts/persistAllowed.d.ts.map +1 -1
  511. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +25 -7
  512. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
  513. package/_types/core/key/FheEncryptionKeyWasm-p.d.ts +3 -1
  514. package/_types/core/key/FheEncryptionKeyWasm-p.d.ts.map +1 -1
  515. package/_types/core/key/deserializeFheEncryptionKey.d.ts +2 -0
  516. package/_types/core/key/deserializeFheEncryptionKey.d.ts.map +1 -1
  517. package/_types/core/key/fetchFheEncryptionKey.d.ts +3 -1
  518. package/_types/core/key/fetchFheEncryptionKey.d.ts.map +1 -1
  519. package/_types/core/key/fetchFheEncryptionKeyBytes.d.ts.map +1 -1
  520. package/_types/core/key/serializeFheEncryptionKey.d.ts.map +1 -1
  521. package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
  522. package/_types/core/kms/SignedDecryptionPermit-p.d.ts.map +1 -1
  523. package/_types/core/kms/TransportKeyPair-p.d.ts +9 -0
  524. package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
  525. package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
  526. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +15 -0
  527. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -0
  528. package/_types/core/kms/{decryptKmsSignedcryptedShares-p.d.ts → decryptKmsSigncryptedShares-p.d.ts} +4 -2
  529. package/_types/core/kms/decryptKmsSigncryptedShares-p.d.ts.map +1 -0
  530. package/_types/core/kms/decryptValuesFromPairs.d.ts +2 -0
  531. package/_types/core/kms/decryptValuesFromPairs.d.ts.map +1 -1
  532. package/_types/core/kms/{fetchKmsSignedcryptedShares-p.d.ts → fetchKmsSigncryptedShares-p.d.ts} +2 -2
  533. package/_types/core/kms/fetchKmsSigncryptedShares-p.d.ts.map +1 -0
  534. package/_types/core/kms/kmsExtraData.d.ts +9 -2
  535. package/_types/core/kms/kmsExtraData.d.ts.map +1 -1
  536. package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts +3 -0
  537. package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts.map +1 -0
  538. package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
  539. package/_types/core/modules/decrypt/mock.d.ts +1 -2
  540. package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
  541. package/_types/core/modules/decrypt/module/api-p.d.ts +2 -2
  542. package/_types/core/modules/decrypt/module/api-p.d.ts.map +1 -1
  543. package/_types/core/modules/decrypt/module/index.d.ts +1 -2
  544. package/_types/core/modules/decrypt/module/index.d.ts.map +1 -1
  545. package/_types/core/modules/decrypt/module/init-p.d.ts +3 -3
  546. package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
  547. package/_types/core/modules/decrypt/types.d.ts +33 -34
  548. package/_types/core/modules/decrypt/types.d.ts.map +1 -1
  549. package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
  550. package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
  551. package/_types/core/modules/encrypt/module/index.d.ts.map +1 -1
  552. package/_types/core/modules/encrypt/module/init-p.d.ts +11 -4
  553. package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
  554. package/_types/core/modules/encrypt/types.d.ts +31 -2
  555. package/_types/core/modules/encrypt/types.d.ts.map +1 -1
  556. package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts +18 -0
  557. package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts.map +1 -1
  558. package/_types/core/modules/relayer/module/fetchFheEncryptionKeySource.d.ts.map +1 -1
  559. package/_types/core/modules/relayer/module/readErrorMessage.d.ts +26 -0
  560. package/_types/core/modules/relayer/module/readErrorMessage.d.ts.map +1 -0
  561. package/_types/core/runtime/CoreFhevm-p.d.ts +15 -4
  562. package/_types/core/runtime/CoreFhevm-p.d.ts.map +1 -1
  563. package/_types/core/runtime/HyperWasmSolver-p.d.ts +71 -0
  564. package/_types/core/runtime/HyperWasmSolver-p.d.ts.map +1 -0
  565. package/_types/core/runtime/ProtocolVersionResolver-p.d.ts +29 -0
  566. package/_types/core/runtime/ProtocolVersionResolver-p.d.ts.map +1 -0
  567. package/_types/core/runtime/initFhevmRuntime-p.d.ts.map +1 -1
  568. package/_types/core/runtime/resolveFhevmVersions-p.d.ts +21 -0
  569. package/_types/core/runtime/resolveFhevmVersions-p.d.ts.map +1 -0
  570. package/_types/core/runtimeConfig-p.d.ts +3 -2
  571. package/_types/core/runtimeConfig-p.d.ts.map +1 -1
  572. package/_types/core/types/auth.d.ts +12 -1
  573. package/_types/core/types/auth.d.ts.map +1 -1
  574. package/_types/core/types/coreFhevmClient.d.ts +72 -2
  575. package/_types/core/types/coreFhevmClient.d.ts.map +1 -1
  576. package/_types/core/types/coreFhevmRuntime.d.ts +3 -9
  577. package/_types/core/types/coreFhevmRuntime.d.ts.map +1 -1
  578. package/_types/core/types/fheEncryptionKey.d.ts +2 -0
  579. package/_types/core/types/fheEncryptionKey.d.ts.map +1 -1
  580. package/_types/core/types/fhevmChain.d.ts +3 -0
  581. package/_types/core/types/fhevmChain.d.ts.map +1 -1
  582. package/_types/core/types/hostContract.d.ts +1 -0
  583. package/_types/core/types/hostContract.d.ts.map +1 -1
  584. package/_types/core/types/index.d.ts +1 -1
  585. package/_types/core/types/index.d.ts.map +1 -1
  586. package/_types/core/types/kms-p.d.ts +2 -0
  587. package/_types/core/types/kms-p.d.ts.map +1 -1
  588. package/_types/core/types/kms.d.ts +71 -21
  589. package/_types/core/types/kms.d.ts.map +1 -1
  590. package/_types/core/types/kmsSignersContext.d.ts +8 -0
  591. package/_types/core/types/kmsSignersContext.d.ts.map +1 -1
  592. package/_types/core/types/logger.d.ts +1 -0
  593. package/_types/core/types/logger.d.ts.map +1 -1
  594. package/_types/core/types/moduleVersions.d.ts +25 -0
  595. package/_types/core/types/moduleVersions.d.ts.map +1 -0
  596. package/_types/core/types/tkms-p.d.ts +2 -0
  597. package/_types/core/types/tkms-p.d.ts.map +1 -1
  598. package/_types/core/types/wasmAssets.d.ts +2 -0
  599. package/_types/core/types/wasmAssets.d.ts.map +1 -0
  600. package/_types/core/types/{zkProofBuilder.d.ts → zkProofBuilder-p.d.ts} +8 -3
  601. package/_types/core/types/zkProofBuilder-p.d.ts.map +1 -0
  602. package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts +2 -0
  603. package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts.map +1 -1
  604. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
  605. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
  606. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
  607. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
  608. package/_types/ethers/clients/createFhevmDecryptClient.d.ts +2 -2
  609. package/_types/ethers/clients/createFhevmDecryptClient.d.ts.map +1 -1
  610. package/_types/ethers/clients/createFhevmEncryptClient.d.ts +2 -2
  611. package/_types/ethers/clients/createFhevmEncryptClient.d.ts.map +1 -1
  612. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
  613. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
  614. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
  615. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
  616. package/_types/viem/clients/createFhevmDecryptClient.d.ts +2 -2
  617. package/_types/viem/clients/createFhevmDecryptClient.d.ts.map +1 -1
  618. package/_types/viem/clients/createFhevmEncryptClient.d.ts +2 -2
  619. package/_types/viem/clients/createFhevmEncryptClient.d.ts.map +1 -1
  620. package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
  621. package/_types/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
  622. package/_types/wasm/tfheModuleVersion-p.d.ts +1 -1
  623. package/_types/wasm/tfheModuleVersion-p.d.ts.map +1 -1
  624. package/_types/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
  625. package/_types/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
  626. package/_types/wasm/tkmsModuleVersion-p.d.ts +1 -1
  627. package/_types/wasm/tkmsModuleVersion-p.d.ts.map +1 -1
  628. package/core/_version.ts +1 -1
  629. package/core/actions/base/canDecryptPublicValue.ts +1 -1
  630. package/core/actions/base/canDecryptPublicValues.ts +1 -1
  631. package/core/actions/base/{fetchKmsSignedcryptedShares.ts → fetchKmsSigncryptedShares.ts} +16 -16
  632. package/core/actions/base/index.ts +5 -5
  633. package/core/actions/base/readKmsSignersContext.ts +2 -1
  634. package/core/actions/chain/parseSignedDecryptionPermit.ts +2 -2
  635. package/core/actions/chain/parseTransportKeyPair.ts +2 -1
  636. package/core/actions/decrypt/{decryptKmsSignedcryptedShares.ts → decryptKmsSigncryptedShares.ts} +12 -9
  637. package/core/actions/decrypt/decryptValue.ts +4 -1
  638. package/core/actions/decrypt/decryptValues.ts +4 -1
  639. package/core/actions/decrypt/decryptValuesFromPairs.ts +4 -1
  640. package/core/actions/decrypt/generateTransportKeyPair.ts +5 -3
  641. package/core/actions/decrypt/index.ts +4 -4
  642. package/core/actions/encrypt/encryptValue.ts +4 -1
  643. package/core/actions/encrypt/encryptValues.ts +4 -1
  644. package/core/actions/encrypt/generateZkProof.ts +9 -1
  645. package/core/actions/host/readFhevmExecutorContractData.ts +8 -8
  646. package/core/actions/host/readInputVerifierContractData.ts +2 -2
  647. package/core/actions/host/readKmsVerifierContractData.ts +8 -6
  648. package/core/actions/host/resolveFhevmConfig.ts +10 -1
  649. package/core/base/object.ts +38 -0
  650. package/core/base/semver.ts +231 -0
  651. package/core/base/uint.ts +33 -4
  652. package/core/chains/definitions/localTestnet.ts +3 -0
  653. package/core/chains/definitions/mainnet.ts +1 -0
  654. package/core/chains/definitions/sepolia.ts +6 -6
  655. package/core/clients/decorators/base.ts +8 -1
  656. package/core/clients/decorators/decrypt-p.ts +18 -0
  657. package/core/clients/decorators/decrypt.ts +10 -15
  658. package/core/clients/decorators/encrypt-p.ts +12 -7
  659. package/core/clients/decorators/encrypt.ts +6 -4
  660. package/core/coprocessor/ZkProof-p.ts +17 -5
  661. package/core/coprocessor/ZkProofBuilder-p.ts +5 -2
  662. package/core/coprocessor/encrypt.ts +6 -1
  663. package/core/errors/RelayerResponseStatusError.ts +14 -2
  664. package/core/host-contracts/HostContractVersion-p.ts +60 -3
  665. package/core/host-contracts/KmsSignersContext-p.ts +36 -5
  666. package/core/host-contracts/abi-fragments/fragments.ts +28 -0
  667. package/core/host-contracts/canDecryptValuesFromPairs.ts +1 -1
  668. package/core/host-contracts/checkAllowedForDecryption.ts +3 -3
  669. package/core/host-contracts/checkDelegation.ts +9 -9
  670. package/core/host-contracts/checkPersistAllowed.ts +10 -10
  671. package/core/host-contracts/getAclAddress-p.ts +2 -3
  672. package/core/host-contracts/getCurrentKmsContextAndEpoch-p.ts +92 -0
  673. package/core/host-contracts/getCurrentKmsContextId-p.ts +8 -8
  674. package/core/host-contracts/getFhevmExecutorAddress-p.ts +2 -2
  675. package/core/host-contracts/getHandleVersion-p.ts +2 -3
  676. package/core/host-contracts/getHcuLimitAddress-p.ts +2 -3
  677. package/core/host-contracts/getInputVerifierAddress-p.ts +2 -3
  678. package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +7 -9
  679. package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +6 -7
  680. package/core/host-contracts/getSignersForKmsContext-p.ts +6 -8
  681. package/core/host-contracts/isAllowedForDecryption.ts +6 -6
  682. package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +7 -7
  683. package/core/host-contracts/isUserDecryptable.ts +3 -3
  684. package/core/host-contracts/persistAllowed.ts +6 -6
  685. package/core/host-contracts/readKmsSignersContext-p.ts +131 -41
  686. package/core/key/FheEncryptionKeyWasm-p.ts +24 -3
  687. package/core/key/deserializeFheEncryptionKey.ts +8 -1
  688. package/core/key/fetchFheEncryptionKey.ts +8 -4
  689. package/core/key/fetchFheEncryptionKeyBytes.ts +4 -2
  690. package/core/key/serializeFheEncryptionKey.ts +8 -2
  691. package/core/kms/KmsSigncryptedShares-p.ts +11 -1
  692. package/core/kms/SignedDecryptionPermit-p.ts +6 -1
  693. package/core/kms/TransportKeyPair-p.ts +56 -10
  694. package/core/kms/createKmsUserDecryptEip712.ts +4 -0
  695. package/core/kms/createKmsUserDecryptEip712V2.ts +159 -0
  696. package/core/kms/{decryptKmsSignedcryptedShares-p.ts → decryptKmsSigncryptedShares-p.ts} +12 -2
  697. package/core/kms/decryptValuesFromPairs.ts +6 -4
  698. package/core/kms/{fetchKmsSignedcryptedShares-p.ts → fetchKmsSigncryptedShares-p.ts} +12 -5
  699. package/core/kms/kmsExtraData.ts +82 -13
  700. package/core/kms/kmsUserDecryptEip712V2Types.ts +31 -0
  701. package/core/kms/publicDecrypt.ts +5 -3
  702. package/core/modules/decrypt/mock.ts +0 -35
  703. package/core/modules/decrypt/module/api-p.ts +88 -17
  704. package/core/modules/decrypt/module/index.ts +37 -34
  705. package/core/modules/decrypt/module/init-p.ts +60 -28
  706. package/core/modules/decrypt/types.ts +37 -65
  707. package/core/modules/encrypt/mock.ts +34 -4
  708. package/core/modules/encrypt/module/api-p.ts +66 -15
  709. package/core/modules/encrypt/module/index.ts +5 -3
  710. package/core/modules/encrypt/module/init-p.ts +99 -40
  711. package/core/modules/encrypt/types.ts +34 -2
  712. package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +2 -2
  713. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +2 -2
  714. package/core/modules/relayer/module/RelayerAsyncRequest.ts +60 -4
  715. package/core/modules/relayer/module/fetchFheEncryptionKeySource.ts +9 -1
  716. package/core/modules/relayer/module/readErrorMessage.ts +56 -0
  717. package/core/runtime/CoreFhevm-p.ts +247 -22
  718. package/core/runtime/HyperWasmSolver-p.ts +417 -0
  719. package/core/runtime/ProtocolVersionResolver-p.ts +463 -0
  720. package/core/runtime/initFhevmDecryptRuntime-p.ts +1 -1
  721. package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
  722. package/core/runtime/initFhevmRuntime-p.ts +4 -1
  723. package/core/runtime/resolveFhevmVersions-p.ts +85 -0
  724. package/core/runtimeConfig-p.ts +17 -2
  725. package/core/types/auth.ts +12 -1
  726. package/core/types/coreFhevmClient.ts +89 -4
  727. package/core/types/coreFhevmRuntime.ts +3 -18
  728. package/core/types/fheEncryptionKey.ts +2 -0
  729. package/core/types/fhevmChain.ts +3 -0
  730. package/core/types/hostContract.ts +1 -0
  731. package/core/types/index.ts +1 -1
  732. package/core/types/kms-p.ts +2 -0
  733. package/core/types/kms.ts +48 -18
  734. package/core/types/kmsSignersContext.ts +8 -0
  735. package/core/types/logger.ts +1 -0
  736. package/core/types/moduleVersions.ts +35 -0
  737. package/core/types/tkms-p.ts +3 -0
  738. package/core/types/wasmAssets.ts +6 -0
  739. package/core/types/{zkProofBuilder.ts → zkProofBuilder-p.ts} +3 -2
  740. package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +3 -1
  741. package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
  742. package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
  743. package/ethers/clients/createFhevmDecryptClient.ts +2 -2
  744. package/ethers/clients/createFhevmEncryptClient.ts +2 -2
  745. package/ethers/internal/config.ts +2 -30
  746. package/package.json +1 -1
  747. package/viem/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
  748. package/viem/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
  749. package/viem/clients/createFhevmDecryptClient.ts +2 -2
  750. package/viem/clients/createFhevmEncryptClient.ts +2 -2
  751. package/viem/internal/config.ts +2 -30
  752. package/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
  753. package/wasm/tfhe/v1.5.3/tfhe.js +8 -0
  754. package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +4 -0
  755. package/wasm/tfhe/v1.6.0-dev/tfhe.js +8 -0
  756. package/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
  757. package/wasm/tfhe/v1.6.1/tfhe.js +8 -0
  758. package/wasm/tfheModuleVersion-p.ts +1 -1
  759. package/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
  760. package/wasm/tkms/v0.13.10/kms_lib.js +8 -0
  761. package/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
  762. package/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
  763. package/wasm/tkmsModuleVersion-p.ts +1 -1
  764. package/wasm/wasmBaseUrl.js +69 -4
  765. package/_cjs/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
  766. package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -11
  767. package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
  768. package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
  769. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
  770. package/_cjs/core/types/fhevmDecryptionKey.js.map +0 -1
  771. package/_cjs/core/types/fhevmUser.js.map +0 -1
  772. package/_cjs/core/types/zkProofBuilder.js.map +0 -1
  773. package/_esm/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
  774. package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -9
  775. package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
  776. package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
  777. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
  778. package/_esm/core/types/fhevmDecryptionKey.js +0 -2
  779. package/_esm/core/types/fhevmDecryptionKey.js.map +0 -1
  780. package/_esm/core/types/fhevmUser.js +0 -2
  781. package/_esm/core/types/fhevmUser.js.map +0 -1
  782. package/_esm/core/types/zkProofBuilder.js +0 -2
  783. package/_esm/core/types/zkProofBuilder.js.map +0 -1
  784. package/_types/core/actions/base/fetchKmsSignedcryptedShares.d.ts.map +0 -1
  785. package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts.map +0 -1
  786. package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts.map +0 -1
  787. package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +0 -1
  788. package/_types/core/types/fhevmDecryptionKey.d.ts +0 -4
  789. package/_types/core/types/fhevmDecryptionKey.d.ts.map +0 -1
  790. package/_types/core/types/fhevmUser.d.ts +0 -7
  791. package/_types/core/types/fhevmUser.d.ts.map +0 -1
  792. package/_types/core/types/zkProofBuilder.d.ts.map +0 -1
  793. package/core/types/fhevmDecryptionKey.ts +0 -8
  794. package/core/types/fhevmUser.ts +0 -7
@@ -0,0 +1,31 @@
1
+ import type { KmsUserDecryptEip712V2Types } from '../types/kms.js';
2
+
3
+ ////////////////////////////////////////////////////////////////////////////////
4
+ // KmsUserDecryptEIP712V2Types (RFC-016)
5
+ ////////////////////////////////////////////////////////////////////////////////
6
+
7
+ export const kmsUserDecryptEip712V2Types: KmsUserDecryptEip712V2Types = {
8
+ EIP712Domain: [
9
+ { name: 'name', type: 'string' },
10
+ { name: 'version', type: 'string' },
11
+ { name: 'chainId', type: 'uint256' },
12
+ { name: 'verifyingContract', type: 'address' },
13
+ ] as const,
14
+ // CRITICAL: Field order is authoritative — it determines the EIP-712 type hash.
15
+ // Changing the order will produce a different signature and break on-chain verification.
16
+ // Must match the Solidity struct definition exactly.
17
+ UserDecryptRequestVerification: [
18
+ { name: 'userAddress', type: 'address' },
19
+ { name: 'publicKey', type: 'bytes' },
20
+ { name: 'allowedContracts', type: 'address[]' },
21
+ { name: 'startTimestamp', type: 'uint256' },
22
+ { name: 'durationSeconds', type: 'uint256' },
23
+ { name: 'extraData', type: 'bytes' },
24
+ ] as const,
25
+ } as const;
26
+
27
+ Object.freeze(kmsUserDecryptEip712V2Types);
28
+ Object.freeze(kmsUserDecryptEip712V2Types.EIP712Domain);
29
+ Object.freeze(kmsUserDecryptEip712V2Types.UserDecryptRequestVerification);
30
+ kmsUserDecryptEip712V2Types.EIP712Domain.forEach(Object.freeze);
31
+ kmsUserDecryptEip712V2Types.UserDecryptRequestVerification.forEach(Object.freeze);
@@ -39,7 +39,8 @@ export async function publicDecrypt(context: Context, parameters: Parameters): P
39
39
  // EIP-712 signature from the user, so the SDK can safely fetch the current
40
40
  // context ID and build the extraData transparently to the user.
41
41
  const requestedKmsSignersContext = await readKmsSignersContext(context, {
42
- address: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
42
+ kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
43
+ protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address as ChecksummedAddress | undefined,
43
44
  });
44
45
 
45
46
  const requestedExtraData: BytesHex = kmsSignersContextToExtraData(requestedKmsSignersContext);
@@ -65,7 +66,7 @@ export async function publicDecrypt(context: Context, parameters: Parameters): P
65
66
 
66
67
  // 4. Check: ACL permissions
67
68
  await checkAllowedForDecryption(context, {
68
- address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
69
+ aclAddress: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
69
70
  handles: orderedHandles,
70
71
  });
71
72
 
@@ -84,7 +85,8 @@ export async function publicDecrypt(context: Context, parameters: Parameters): P
84
85
 
85
86
  // 6. Reconcile KMS signer context using 'loose' mode
86
87
  const reconciledKmsSignersContext: KmsSignersContext = await reconcileKmsSignersContext(context, {
87
- address: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
88
+ kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
89
+ protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address as ChecksummedAddress | undefined,
88
90
  relayerExtraData,
89
91
  requestedKmsSignersContext: requestedKmsSignersContext,
90
92
  mode: 'loose',
@@ -2,7 +2,6 @@ import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
2
2
  import type {
3
3
  DecryptAndReconstructParameters,
4
4
  DecryptAndReconstructReturnType,
5
- DecryptAndReconstructUserParameters,
6
5
  DeserializeTkmsPrivateKeyParameters,
7
6
  DeserializeTkmsPrivateKeyReturnType,
8
7
  GenerateTkmsPrivateKeyReturnType,
@@ -11,9 +10,7 @@ import type {
11
10
  SerializeTkmsPrivateKeyParameters,
12
11
  SerializeTkmsPrivateKeyReturnType,
13
12
  VerifyTkmsPrivateKeyParameters,
14
- UserDecryptModuleParameters,
15
13
  DecryptModuleFactory,
16
- UserDecryptModuleFactory,
17
14
  } from './types.js';
18
15
  import type { CleartextEthereumModule } from '../ethereum/types-ct.js';
19
16
  import type { TkmsPrivateKey } from '../../types/tkms-p.js';
@@ -213,35 +210,3 @@ export const decryptModule: DecryptModuleFactory = (runtime: FhevmRuntime) => {
213
210
  }),
214
211
  });
215
212
  };
216
-
217
- //////////////////////////////////////////////////////////////////////////////
218
- // userDecryptActions
219
- //////////////////////////////////////////////////////////////////////////////
220
-
221
- export const userDecryptModule: UserDecryptModuleFactory = (
222
- runtime: FhevmRuntime,
223
- parameters: UserDecryptModuleParameters,
224
- ) => {
225
- const { privateKey } = parameters;
226
- return Object.freeze({
227
- userDecrypt: Object.freeze({
228
- initTkmsModule: () => Promise.resolve(),
229
- getTkmsModuleInfo: () => {
230
- throw new Error('Not yet implemented');
231
- },
232
- decryptAndReconstruct: (args: DecryptAndReconstructUserParameters) =>
233
- decryptAndReconstruct(runtime, {
234
- ...args,
235
- tkmsPrivateKey: privateKey,
236
- }),
237
- getTkmsPublicKeyHex: () =>
238
- getTkmsPublicKeyHex(runtime, {
239
- tkmsPrivateKey: privateKey,
240
- }),
241
- serializeTkmsPrivateKey: () =>
242
- serializeTkmsPrivateKey(runtime, {
243
- tkmsPrivateKey: privateKey,
244
- }),
245
- }),
246
- });
247
- };
@@ -5,6 +5,7 @@ import type {
5
5
  Client,
6
6
  TypedPlaintext,
7
7
  KmsLibApi,
8
+ TkmsVersion,
8
9
  } from '../../../../wasm/tkms/KmsLibApi.js';
9
10
  import type { FhevmRuntime } from '../../../types/coreFhevmRuntime.js';
10
11
  import type { ClearValue } from '../../../types/encryptedTypes-p.js';
@@ -15,6 +16,7 @@ import type {
15
16
  DecryptAndReconstructReturnType,
16
17
  DeserializeTkmsPrivateKeyParameters,
17
18
  DeserializeTkmsPrivateKeyReturnType,
19
+ GenerateTkmsPrivateKeyParameters,
18
20
  GenerateTkmsPrivateKeyReturnType,
19
21
  GetTkmsPublicKeyHexParameters,
20
22
  GetTkmsPublicKeyHexReturnType,
@@ -95,29 +97,49 @@ function verifyToken(token: symbol): void {
95
97
  class TkmsPublicEncKeyMlKem512Impl {
96
98
  readonly #publicEncKeyMlKem512Wasm: PublicEncKeyMlKem512WasmType;
97
99
  #bytesHex: BytesHex | undefined;
100
+ readonly #tkmsVersion: TkmsVersion;
98
101
 
99
- constructor(token: symbol, publicEncKeyMlKem512Wasm: PublicEncKeyMlKem512WasmType) {
102
+ constructor(token: symbol, tkmsVersion: TkmsVersion, publicEncKeyMlKem512Wasm: PublicEncKeyMlKem512WasmType) {
100
103
  verifyToken(token);
101
104
  this.#publicEncKeyMlKem512Wasm = publicEncKeyMlKem512Wasm;
105
+ this.#tkmsVersion = tkmsVersion;
102
106
  }
103
107
 
104
- public static [GET_NATIVE_FUNC](key: unknown, token: symbol): PublicEncKeyMlKem512WasmType {
108
+ public get tkmsVersion(): TkmsVersion {
109
+ return this.#tkmsVersion;
110
+ }
111
+
112
+ public static [GET_NATIVE_FUNC](key: unknown, token: symbol, tkmsVersion: TkmsVersion): PublicEncKeyMlKem512WasmType {
105
113
  verifyToken(token);
106
114
  if (!(key instanceof TkmsPublicEncKeyMlKem512Impl)) {
107
115
  throw new Error('Unauthorized');
108
116
  }
117
+ if (key.#tkmsVersion !== tkmsVersion) {
118
+ throw new Error(`TkmsVersion mismatch`);
119
+ }
109
120
  return key.#publicEncKeyMlKem512Wasm;
110
121
  }
111
122
 
112
- public static [GET_BYTES_HEX_FUNC](key: unknown, token: symbol, kmsLibApi: KmsLibApi): BytesHex {
123
+ public static [GET_BYTES_HEX_FUNC](
124
+ key: unknown,
125
+ token: symbol,
126
+ tkmsVersion: TkmsVersion,
127
+ kmsLibApi: KmsLibApi,
128
+ ): BytesHex {
113
129
  verifyToken(token);
114
130
  if (!(key instanceof TkmsPublicEncKeyMlKem512Impl)) {
115
131
  throw new Error('Unauthorized');
116
132
  }
133
+
134
+ if (key.#tkmsVersion !== tkmsVersion || kmsLibApi.getWasmInfo().version !== tkmsVersion) {
135
+ throw new Error(`TkmsVersion mismatch`);
136
+ }
137
+
117
138
  if (key.#bytesHex === undefined) {
118
139
  const bytes: Bytes = kmsLibApi.ml_kem_pke_pk_to_u8vec(key.#publicEncKeyMlKem512Wasm);
119
140
  key.#bytesHex = bytesToHexLarge(bytes, false /* no 0x */);
120
141
  }
142
+
121
143
  return key.#bytesHex;
122
144
  }
123
145
  }
@@ -131,31 +153,55 @@ class TkmsPrivateEncKeyMlKem512Impl implements TkmsPrivateKey {
131
153
 
132
154
  readonly #privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType;
133
155
  #publicKey: TkmsPublicEncKeyMlKem512Impl | undefined;
156
+ readonly #tkmsVersion: TkmsVersion;
134
157
 
135
- constructor(token: symbol, privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType) {
158
+ constructor(token: symbol, tkmsVersion: TkmsVersion, privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType) {
136
159
  verifyToken(token);
137
160
  this.#privateEncKeyMlKem512Wasm = privateEncKeyMlKem512Wasm;
161
+ this.#tkmsVersion = tkmsVersion;
138
162
  }
139
163
 
140
- public static [GET_NATIVE_FUNC](key: unknown, token: symbol): PrivateEncKeyMlKem512WasmType {
164
+ public get tkmsVersion(): TkmsVersion {
165
+ return this.#tkmsVersion;
166
+ }
167
+
168
+ public static [GET_NATIVE_FUNC](
169
+ key: unknown,
170
+ token: symbol,
171
+ tkmsVersion: TkmsVersion,
172
+ ): PrivateEncKeyMlKem512WasmType {
141
173
  verifyToken(token);
142
174
  if (!(key instanceof TkmsPrivateEncKeyMlKem512Impl)) {
143
175
  throw new Error('Unauthorized');
144
176
  }
177
+ if (key.#tkmsVersion !== tkmsVersion) {
178
+ throw new Error(`TkmsVersion mismatch`);
179
+ }
145
180
  return key.#privateEncKeyMlKem512Wasm;
146
181
  }
147
182
 
148
- public static [GET_PUBLIC_KEY_FUNC](key: unknown, token: symbol, kmsLibApi: KmsLibApi): TkmsPublicEncKeyMlKem512Impl {
183
+ public static [GET_PUBLIC_KEY_FUNC](
184
+ key: unknown,
185
+ token: symbol,
186
+ tkmsVersion: TkmsVersion,
187
+ kmsLibApi: KmsLibApi,
188
+ ): TkmsPublicEncKeyMlKem512Impl {
149
189
  verifyToken(token);
150
190
  if (!(key instanceof TkmsPrivateEncKeyMlKem512Impl)) {
151
191
  throw new Error('Unauthorized');
152
192
  }
193
+
194
+ if (key.#tkmsVersion !== tkmsVersion || kmsLibApi.getWasmInfo().version !== tkmsVersion) {
195
+ throw new Error(`TkmsVersion mismatch`);
196
+ }
197
+
153
198
  if (key.#publicKey === undefined) {
154
199
  const publicEncKeyMlKem512Wasm = kmsLibApi.ml_kem_pke_get_pk(
155
200
  key.#privateEncKeyMlKem512Wasm,
156
201
  ) as PublicEncKeyMlKem512WasmType;
157
- key.#publicKey = new TkmsPublicEncKeyMlKem512Impl(token, publicEncKeyMlKem512Wasm);
202
+ key.#publicKey = new TkmsPublicEncKeyMlKem512Impl(token, key.#tkmsVersion, publicEncKeyMlKem512Wasm);
158
203
  }
204
+
159
205
  return key.#publicKey;
160
206
  }
161
207
  }
@@ -164,13 +210,16 @@ class TkmsPrivateEncKeyMlKem512Impl implements TkmsPrivateKey {
164
210
  // generateTkmsPrivateKey
165
211
  //////////////////////////////////////////////////////////////////////////////
166
212
 
167
- export async function generateTkmsPrivateKey(runtime: FhevmRuntime): Promise<GenerateTkmsPrivateKeyReturnType> {
168
- const kmsLib = await initTkmsModule(runtime);
213
+ export async function generateTkmsPrivateKey(
214
+ runtime: FhevmRuntime,
215
+ parameters: GenerateTkmsPrivateKeyParameters,
216
+ ): Promise<GenerateTkmsPrivateKeyReturnType> {
217
+ const kmsLib = await initTkmsModule(runtime, { tkmsVersion: parameters.tkmsVersion });
169
218
 
170
219
  const privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType =
171
220
  kmsLib.ml_kem_pke_keygen() as PrivateEncKeyMlKem512WasmType;
172
221
 
173
- return new TkmsPrivateEncKeyMlKem512Impl(PRIVATE_TKMS_LIB_TOKEN, privateEncKeyMlKem512Wasm);
222
+ return new TkmsPrivateEncKeyMlKem512Impl(PRIVATE_TKMS_LIB_TOKEN, parameters.tkmsVersion, privateEncKeyMlKem512Wasm);
174
223
  }
175
224
 
176
225
  ////////////////////////////////////////////////////////////////////////////////
@@ -181,7 +230,7 @@ export async function decryptAndReconstruct(
181
230
  runtime: FhevmRuntime,
182
231
  parameters: DecryptAndReconstructParameters,
183
232
  ): Promise<DecryptAndReconstructReturnType> {
184
- const kmsLib = await initTkmsModule(runtime);
233
+ const kmsLib = await initTkmsModule(runtime, { tkmsVersion: parameters.tkmsVersion });
185
234
 
186
235
  const { tkmsPrivateKey, shares } = parameters;
187
236
  if (!(tkmsPrivateKey instanceof TkmsPrivateEncKeyMlKem512Impl)) {
@@ -191,10 +240,15 @@ export async function decryptAndReconstruct(
191
240
  const tkmsPublicKey: TkmsPublicEncKeyMlKem512Impl = TkmsPrivateEncKeyMlKem512Impl[GET_PUBLIC_KEY_FUNC](
192
241
  tkmsPrivateKey,
193
242
  PRIVATE_TKMS_LIB_TOKEN,
243
+ parameters.tkmsVersion,
194
244
  kmsLib,
195
245
  );
196
246
 
197
247
  const metadata: KmsSigncryptedSharesMetadata = getMetadata(shares);
248
+ if (metadata.tkmsVersion !== parameters.tkmsVersion) {
249
+ throw new Error('TkmsVersion mismatch');
250
+ }
251
+
198
252
  const sharesArray: readonly KmsSigncryptedShare[] = getShares(shares);
199
253
 
200
254
  const firstShare = sharesArray[0];
@@ -227,16 +281,19 @@ export async function decryptAndReconstruct(
227
281
  const privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType = TkmsPrivateEncKeyMlKem512Impl[GET_NATIVE_FUNC](
228
282
  tkmsPrivateKey,
229
283
  PRIVATE_TKMS_LIB_TOKEN,
284
+ parameters.tkmsVersion,
230
285
  );
231
286
 
232
287
  const publicEncKeyMlKem512Wasm: PublicEncKeyMlKem512WasmType = TkmsPublicEncKeyMlKem512Impl[GET_NATIVE_FUNC](
233
288
  tkmsPublicKey,
234
289
  PRIVATE_TKMS_LIB_TOKEN,
290
+ parameters.tkmsVersion,
235
291
  );
236
292
 
237
293
  const publicEncKeyMlKem512WasmBytesHex: BytesHex = TkmsPublicEncKeyMlKem512Impl[GET_BYTES_HEX_FUNC](
238
294
  tkmsPublicKey,
239
295
  PRIVATE_TKMS_LIB_TOKEN,
296
+ parameters.tkmsVersion,
240
297
  kmsLib,
241
298
  );
242
299
 
@@ -339,7 +396,7 @@ export async function getTkmsPublicKeyHex(
339
396
  runtime: FhevmRuntime,
340
397
  parameters: GetTkmsPublicKeyHexParameters,
341
398
  ): Promise<GetTkmsPublicKeyHexReturnType> {
342
- const kmsLib = await initTkmsModule(runtime);
399
+ const kmsLib = await initTkmsModule(runtime, { tkmsVersion: parameters.tkmsVersion });
343
400
 
344
401
  const { tkmsPrivateKey } = parameters;
345
402
 
@@ -347,9 +404,19 @@ export async function getTkmsPublicKeyHex(
347
404
  throw new Error('Invalid tkmsPrivateKey');
348
405
  }
349
406
 
350
- const publicKey = TkmsPrivateEncKeyMlKem512Impl[GET_PUBLIC_KEY_FUNC](tkmsPrivateKey, PRIVATE_TKMS_LIB_TOKEN, kmsLib);
407
+ const publicKey = TkmsPrivateEncKeyMlKem512Impl[GET_PUBLIC_KEY_FUNC](
408
+ tkmsPrivateKey,
409
+ PRIVATE_TKMS_LIB_TOKEN,
410
+ parameters.tkmsVersion,
411
+ kmsLib,
412
+ );
351
413
 
352
- return TkmsPublicEncKeyMlKem512Impl[GET_BYTES_HEX_FUNC](publicKey, PRIVATE_TKMS_LIB_TOKEN, kmsLib);
414
+ return TkmsPublicEncKeyMlKem512Impl[GET_BYTES_HEX_FUNC](
415
+ publicKey,
416
+ PRIVATE_TKMS_LIB_TOKEN,
417
+ parameters.tkmsVersion,
418
+ kmsLib,
419
+ );
353
420
  }
354
421
 
355
422
  //////////////////////////////////////////////////////////////////////////////
@@ -360,7 +427,7 @@ export async function serializeTkmsPrivateKey(
360
427
  runtime: FhevmRuntime,
361
428
  parameters: SerializeTkmsPrivateKeyParameters,
362
429
  ): Promise<SerializeTkmsPrivateKeyReturnType> {
363
- const kmsLib = await initTkmsModule(runtime);
430
+ const kmsLib = await initTkmsModule(runtime, { tkmsVersion: parameters.tkmsVersion });
364
431
 
365
432
  const { tkmsPrivateKey } = parameters;
366
433
 
@@ -371,6 +438,7 @@ export async function serializeTkmsPrivateKey(
371
438
  const privateEncKeyMlKem512Wasm: PrivateEncKeyMlKem512WasmType = TkmsPrivateEncKeyMlKem512Impl[GET_NATIVE_FUNC](
372
439
  tkmsPrivateKey,
373
440
  PRIVATE_TKMS_LIB_TOKEN,
441
+ parameters.tkmsVersion,
374
442
  );
375
443
 
376
444
  return kmsLib.ml_kem_pke_sk_to_u8vec(privateEncKeyMlKem512Wasm);
@@ -384,7 +452,7 @@ export async function deserializeTkmsPrivateKey(
384
452
  runtime: FhevmRuntime,
385
453
  parameters: DeserializeTkmsPrivateKeyParameters,
386
454
  ): Promise<DeserializeTkmsPrivateKeyReturnType> {
387
- const kmsLib = await initTkmsModule(runtime);
455
+ const kmsLib = await initTkmsModule(runtime, { tkmsVersion: parameters.tkmsVersion });
388
456
 
389
457
  const { tkmsPrivateKeyBytes } = parameters;
390
458
 
@@ -392,7 +460,7 @@ export async function deserializeTkmsPrivateKey(
392
460
  tkmsPrivateKeyBytes,
393
461
  ) as PrivateEncKeyMlKem512WasmType;
394
462
 
395
- return new TkmsPrivateEncKeyMlKem512Impl(PRIVATE_TKMS_LIB_TOKEN, privateEncKeyMlKem512Wasm);
463
+ return new TkmsPrivateEncKeyMlKem512Impl(PRIVATE_TKMS_LIB_TOKEN, parameters.tkmsVersion, privateEncKeyMlKem512Wasm);
396
464
  }
397
465
 
398
466
  //////////////////////////////////////////////////////////////////////////////
@@ -403,4 +471,7 @@ export function verifyTkmsPrivateKey(_runtime: FhevmRuntime, parameters: VerifyT
403
471
  if (!(parameters.tkmsPrivateKey instanceof TkmsPrivateEncKeyMlKem512Impl)) {
404
472
  throw new Error('Invalid TkmsPrivateKey');
405
473
  }
474
+ if (parameters.tkmsVersion !== parameters.tkmsPrivateKey.tkmsVersion) {
475
+ throw new Error(`TkmsVersion mismatch`);
476
+ }
406
477
  }
@@ -1,13 +1,16 @@
1
1
  import type { FhevmRuntime } from '../../../types/coreFhevmRuntime.js';
2
2
  import type {
3
3
  DecryptAndReconstructParameters,
4
- DecryptAndReconstructUserParameters,
4
+ //DecryptAndReconstructUserParameters,
5
5
  DecryptModuleFactory,
6
6
  DeserializeTkmsPrivateKeyParameters,
7
+ GenerateTkmsPrivateKeyParameters,
8
+ GetTkmsModuleInfoParameters,
7
9
  GetTkmsPublicKeyHexParameters,
10
+ InitTkmsModuleParameters,
8
11
  SerializeTkmsPrivateKeyParameters,
9
- UserDecryptModuleFactory,
10
- UserDecryptModuleParameters,
12
+ //UserDecryptModuleFactory,
13
+ //UserDecryptModuleParameters,
11
14
  VerifyTkmsPrivateKeyParameters,
12
15
  } from '../types.js';
13
16
  import {
@@ -27,12 +30,12 @@ import { getTkmsModuleInfo, initTkmsModule } from './init-p.js';
27
30
  export const decryptModule: DecryptModuleFactory = (runtime: FhevmRuntime) => {
28
31
  return Object.freeze({
29
32
  decrypt: Object.freeze({
30
- initTkmsModule: async () => {
31
- await initTkmsModule(runtime);
33
+ initTkmsModule: async (args: InitTkmsModuleParameters) => {
34
+ await initTkmsModule(runtime, args);
32
35
  },
33
- getTkmsModuleInfo: () => getTkmsModuleInfo(),
36
+ getTkmsModuleInfo: (args: GetTkmsModuleInfoParameters) => getTkmsModuleInfo(args),
34
37
  decryptAndReconstruct: (args: DecryptAndReconstructParameters) => decryptAndReconstruct(runtime, args),
35
- generateTkmsPrivateKey: () => generateTkmsPrivateKey(runtime),
38
+ generateTkmsPrivateKey: (args: GenerateTkmsPrivateKeyParameters) => generateTkmsPrivateKey(runtime, args),
36
39
  serializeTkmsPrivateKey: (args: SerializeTkmsPrivateKeyParameters) => serializeTkmsPrivateKey(runtime, args),
37
40
  deserializeTkmsPrivateKey: (args: DeserializeTkmsPrivateKeyParameters) =>
38
41
  deserializeTkmsPrivateKey(runtime, args),
@@ -48,30 +51,30 @@ export const decryptModule: DecryptModuleFactory = (runtime: FhevmRuntime) => {
48
51
  // userDecryptModule
49
52
  //////////////////////////////////////////////////////////////////////////////
50
53
 
51
- export const userDecryptModule: UserDecryptModuleFactory = (
52
- runtime: FhevmRuntime,
53
- parameters: UserDecryptModuleParameters,
54
- ) => {
55
- const { privateKey } = parameters;
56
- return Object.freeze({
57
- userDecrypt: Object.freeze({
58
- initTkmsModule: async () => {
59
- await initTkmsModule(runtime);
60
- },
61
- getTkmsModuleInfo: () => getTkmsModuleInfo(),
62
- decryptAndReconstruct: (args: DecryptAndReconstructUserParameters) =>
63
- decryptAndReconstruct(runtime, {
64
- ...args,
65
- tkmsPrivateKey: privateKey,
66
- }),
67
- getTkmsPublicKeyHex: () =>
68
- getTkmsPublicKeyHex(runtime, {
69
- tkmsPrivateKey: privateKey,
70
- }),
71
- serializeTkmsPrivateKey: () =>
72
- serializeTkmsPrivateKey(runtime, {
73
- tkmsPrivateKey: privateKey,
74
- }),
75
- }),
76
- });
77
- };
54
+ // export const userDecryptModule: UserDecryptModuleFactory = (
55
+ // runtime: FhevmRuntime,
56
+ // parameters: UserDecryptModuleParameters,
57
+ // ) => {
58
+ // const { privateKey } = parameters;
59
+ // return Object.freeze({
60
+ // userDecrypt: Object.freeze({
61
+ // initTkmsModule: async () => {
62
+ // await initTkmsModule(runtime);
63
+ // },
64
+ // getTkmsModuleInfo: () => getTkmsModuleInfo(),
65
+ // decryptAndReconstruct: (args: DecryptAndReconstructUserParameters) =>
66
+ // decryptAndReconstruct(runtime, {
67
+ // ...args,
68
+ // tkmsPrivateKey: privateKey,
69
+ // }),
70
+ // getTkmsPublicKeyHex: () =>
71
+ // getTkmsPublicKeyHex(runtime, {
72
+ // tkmsPrivateKey: privateKey,
73
+ // }),
74
+ // serializeTkmsPrivateKey: () =>
75
+ // serializeTkmsPrivateKey(runtime, {
76
+ // tkmsPrivateKey: privateKey,
77
+ // }),
78
+ // }),
79
+ // });
80
+ // };
@@ -1,16 +1,26 @@
1
1
  import type { FhevmRuntime, FhevmRuntimeConfig } from '../../../types/coreFhevmRuntime.js';
2
- import type { GetTkmsModuleInfoReturnType, TkmsModuleInfo } from '../types.js';
2
+ import type {
3
+ GetTkmsModuleInfoParameters,
4
+ GetTkmsModuleInfoReturnType,
5
+ InitTkmsModuleParameters,
6
+ TkmsModuleInfo,
7
+ } from '../types.js';
3
8
  import type { KmsLibApi, TkmsVersion } from '../../../../wasm/tkms/KmsLibApi.js';
4
9
  import type { KmsAssetMetadata } from '../../../../wasm/tkms/loadKmsLib.js';
5
10
  import { isBrowserLike } from '../../../base/isomorphicWorker.js';
6
11
  import { isomorphicCompileVerifiedWasm, isomorphicCompileWasmFromBase64 } from '../../../base/wasm.js';
7
12
  import { assertIsFhevmRuntime } from '../../../runtime/CoreFhevmRuntime-p.js';
8
- import { resolveTkmsModuleVersion } from '../../../../wasm/tkmsModuleVersion-p.js';
9
13
  import { wasmBaseUrl } from '../../../../wasm/wasmBaseUrl.js';
10
14
  import { kmsAssetsWithVersion, loadKmsLib, loadKmsWasmBase64 } from '../../../../wasm/tkms/loadKmsLib.js';
11
15
 
12
16
  ////////////////////////////////////////////////////////////////////////////////
13
17
 
18
+ const ownerUidByVersion = new Map<TkmsVersion, string>();
19
+ const cachedTkmsModulePromiseByVersion = new Map<TkmsVersion, Promise<KmsLibApi>>();
20
+ const moduleInfoByVersion = new Map<TkmsVersion, TkmsModuleInfo>();
21
+
22
+ ////////////////////////////////////////////////////////////////////////////////
23
+
14
24
  // Pure JS file (not compiled by tsc) — provides cross-platform base URL
15
25
  // for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
16
26
 
@@ -41,26 +51,26 @@ type ResolvedTkmsModuleConfig = {
41
51
  readonly logger: FhevmRuntimeConfig['logger'];
42
52
  };
43
53
 
44
- let resolvedTkmsModuleConfig: ResolvedTkmsModuleConfig | undefined = undefined;
54
+ const resolvedTkmsModuleConfigByVersion = new Map<TkmsVersion, ResolvedTkmsModuleConfig>();
45
55
 
46
56
  /**
47
57
  * @internal
48
58
  * Returns the existing resolved config, or resolves it from the runtime config.
49
59
  */
50
- function _getOrResolveTkmsModuleConfig(runtime: FhevmRuntime): ResolvedTkmsModuleConfig {
51
- if (resolvedTkmsModuleConfig !== undefined) return resolvedTkmsModuleConfig;
60
+ function _getOrResolveTkmsModuleConfig(runtime: FhevmRuntime, tkmsVersion: TkmsVersion): ResolvedTkmsModuleConfig {
61
+ let resolvedTkmsModuleConfig = resolvedTkmsModuleConfigByVersion.get(tkmsVersion);
62
+ if (resolvedTkmsModuleConfig !== undefined) {
63
+ return resolvedTkmsModuleConfig;
64
+ }
52
65
 
53
- const version = resolveTkmsModuleVersion(runtime.config);
66
+ resolvedTkmsModuleConfig = _resolveTkmsModuleConfig(runtime.config, tkmsVersion);
67
+
68
+ resolvedTkmsModuleConfigByVersion.set(tkmsVersion, resolvedTkmsModuleConfig);
54
69
 
55
- resolvedTkmsModuleConfig = _resolveTkmsModuleConfig(runtime.config, version);
56
70
  return resolvedTkmsModuleConfig;
57
71
  }
58
72
 
59
73
  function _resolveTkmsModuleConfig(parameters: FhevmRuntimeConfig, version: TkmsVersion): ResolvedTkmsModuleConfig {
60
- if (cachedTkmsModulePromise !== undefined) {
61
- throw new Error('Cannot configure module after initialization has started');
62
- }
63
-
64
74
  const { locateFile } = parameters;
65
75
 
66
76
  const assets = kmsAssetsWithVersion(version);
@@ -95,23 +105,21 @@ function _resolveTkmsModuleConfig(parameters: FhevmRuntimeConfig, version: TkmsV
95
105
 
96
106
  type TkmsInitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
97
107
 
98
- type InitTkmsModuleParameters = {
108
+ type TkmsLibInitAsyncParameters = {
99
109
  readonly module_or_path: TkmsInitInput | Promise<TkmsInitInput>;
100
110
  };
101
111
 
102
- let cachedTkmsModulePromise: Promise<KmsLibApi> | undefined;
103
- let ownerUid: string | undefined = undefined;
104
-
105
- export async function initTkmsModule(runtime: FhevmRuntime): Promise<KmsLibApi> {
112
+ export async function initTkmsModule(runtime: FhevmRuntime, parameters: InitTkmsModuleParameters): Promise<KmsLibApi> {
106
113
  assertIsFhevmRuntime(runtime, {});
107
114
 
115
+ const ownerUid = ownerUidByVersion.get(parameters.tkmsVersion);
108
116
  if (ownerUid !== undefined && runtime.uid !== ownerUid) {
109
117
  throw new Error(
110
118
  `Decrypt WASM module is already owned by runtime '${ownerUid}' and cannot be shared with runtime '${runtime.uid}'`,
111
119
  );
112
120
  }
113
121
 
114
- ownerUid = runtime.uid;
122
+ ownerUidByVersion.set(parameters.tkmsVersion, runtime.uid);
115
123
 
116
124
  // Cache the TKMS initialization promise once and keep it cached even if it
117
125
  // rejects.
@@ -122,17 +130,18 @@ export async function initTkmsModule(runtime: FhevmRuntime): Promise<KmsLibApi>
122
130
  // keep module-level state that cannot be reset reliably after a partial
123
131
  // initialization failure; later callers should observe the original error
124
132
  // instead of retrying against half-initialized state.
133
+
134
+ let cachedTkmsModulePromise = cachedTkmsModulePromiseByVersion.get(parameters.tkmsVersion);
125
135
  if (cachedTkmsModulePromise === undefined) {
126
136
  // resolve is sync
127
- const cfg = _getOrResolveTkmsModuleConfig(runtime);
137
+ const cfg = _getOrResolveTkmsModuleConfig(runtime, parameters.tkmsVersion);
128
138
  cachedTkmsModulePromise = _initTkmsModule(cfg);
139
+ cachedTkmsModulePromiseByVersion.set(parameters.tkmsVersion, cachedTkmsModulePromise);
129
140
  }
130
141
 
131
142
  return cachedTkmsModulePromise;
132
143
  }
133
144
 
134
- let moduleInfo: TkmsModuleInfo | undefined = undefined;
135
-
136
145
  async function _initTkmsModule(cfg: ResolvedTkmsModuleConfig): Promise<KmsLibApi> {
137
146
  const kmsLib = await loadKmsLib(cfg.version);
138
147
 
@@ -147,18 +156,27 @@ async function _initTkmsModule(cfg: ResolvedTkmsModuleConfig): Promise<KmsLibApi
147
156
  wasmModule = await isomorphicCompileWasmFromBase64(tkmsWasmBase64, tkmsWasmBase64IsGzipped ? 'gzip' : undefined);
148
157
  }
149
158
 
150
- const input: InitTkmsModuleParameters = { module_or_path: wasmModule };
159
+ const input: TkmsLibInitAsyncParameters = { module_or_path: wasmModule };
151
160
 
152
161
  await kmsLib.initAsync(input);
153
162
 
154
163
  // Note: init_panic_hook is not exposed by kms_lib
155
164
  const wasmInfo = kmsLib.getWasmInfo();
165
+ const memory = { byteLength: 0, pages: 0 };
166
+ if (wasmInfo.memory !== undefined) {
167
+ memory.byteLength = wasmInfo.memory.byteLength;
168
+ memory.pages = wasmInfo.memory.pages;
169
+ }
156
170
 
157
- moduleInfo = Object.freeze({
158
- wasmUrl: cfg.wasm.url ? new URL(cfg.wasm.url) : undefined,
159
- version: wasmInfo.version,
160
- name: wasmInfo.name,
161
- });
171
+ moduleInfoByVersion.set(
172
+ cfg.version,
173
+ Object.freeze({
174
+ wasmUrl: cfg.wasm.url ? new URL(cfg.wasm.url) : undefined,
175
+ version: wasmInfo.version,
176
+ name: wasmInfo.name,
177
+ memory,
178
+ }),
179
+ );
162
180
 
163
181
  return kmsLib;
164
182
  }
@@ -167,6 +185,20 @@ async function _initTkmsModule(cfg: ResolvedTkmsModuleConfig): Promise<KmsLibApi
167
185
  // getTkmsModuleInfo
168
186
  ////////////////////////////////////////////////////////////////////////////////
169
187
 
170
- export function getTkmsModuleInfo(): GetTkmsModuleInfoReturnType {
171
- return moduleInfo;
188
+ export async function getTkmsModuleInfo(parameters: GetTkmsModuleInfoParameters): Promise<GetTkmsModuleInfoReturnType> {
189
+ const tkmsLib = await loadKmsLib(parameters.tkmsVersion);
190
+ const stored = moduleInfoByVersion.get(parameters.tkmsVersion);
191
+ if (stored === undefined) {
192
+ throw new Error(`getTkmsModuleInfo: no module info recorded for version "${parameters.tkmsVersion}"`);
193
+ }
194
+ const memory: { byteLength: number; pages: number } = {
195
+ byteLength: stored.memory.byteLength,
196
+ pages: stored.memory.pages,
197
+ };
198
+ const wasmInfo = tkmsLib.getWasmInfo();
199
+ if (wasmInfo.memory !== undefined) {
200
+ memory.byteLength = wasmInfo.memory.byteLength;
201
+ memory.pages = wasmInfo.memory.pages;
202
+ }
203
+ return { ...stored, memory };
172
204
  }