@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
@@ -2,6 +2,9 @@ import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
2
2
  import type { FhevmRuntime, WithDecrypt } from '../types/coreFhevmRuntime.js';
3
3
  import type { Bytes, BytesHex } from '../types/primitives.js';
4
4
  import type { TkmsPrivateKey } from '../types/tkms-p.js';
5
+ import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
6
+ import type { NativeClient, OptionalNativeClient } from '../types/coreFhevmClient.js';
7
+ import type { FhevmChain } from '../types/fhevmChain.js';
5
8
  import { assertIsBytesOrBytesHex, bytesToHexLarge, hexToBytesFaster } from '../base/bytes.js';
6
9
  import { InvalidTypeError } from '../base/errors/InvalidTypeError.js';
7
10
  import { assertRecordNonNullableProperty } from '../base/record.js';
@@ -18,6 +21,7 @@ declare const TransportKeyPairBrand: unique symbol;
18
21
 
19
22
  export type TransportKeyPair = {
20
23
  readonly publicKey: BytesHex;
24
+ readonly tkmsVersion: TkmsVersion;
21
25
  readonly [TransportKeyPairBrand]: true;
22
26
  };
23
27
 
@@ -40,6 +44,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
40
44
 
41
45
  readonly #publicKeyBytesHex: BytesHex;
42
46
  readonly #privateKeyBytes: Bytes;
47
+ readonly #tkmsVersion: TkmsVersion;
43
48
 
44
49
  readonly #runtime: WeakRef<FhevmRuntime>;
45
50
  #tkmsPrivateKey: TkmsPrivateKey | undefined;
@@ -51,6 +56,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
51
56
  readonly publicKeyBytesHex: BytesHex;
52
57
  readonly privateKeyBytes: Bytes;
53
58
  readonly tkmsPrivateKey?: TkmsPrivateKey | undefined;
59
+ readonly tkmsVersion: TkmsVersion;
54
60
  },
55
61
  ) {
56
62
  if (privateToken !== PRIVATE_TOKEN) {
@@ -60,12 +66,17 @@ class TransportKeyPairImpl implements TransportKeyPair {
60
66
  this.#publicKeyBytesHex = parameters.publicKeyBytesHex;
61
67
  this.#privateKeyBytes = parameters.privateKeyBytes;
62
68
  this.#tkmsPrivateKey = parameters.tkmsPrivateKey;
69
+ this.#tkmsVersion = parameters.tkmsVersion;
63
70
  }
64
71
 
65
72
  public get publicKey(): BytesHex {
66
73
  return this.#publicKeyBytesHex;
67
74
  }
68
75
 
76
+ public get tkmsVersion(): TkmsVersion {
77
+ return this.#tkmsVersion;
78
+ }
79
+
69
80
  /**
70
81
  * Hidden method (Symbol key) that returns the deserialized TKMS private key.
71
82
  * Lazily deserializes and verifies on first call.
@@ -94,11 +105,12 @@ class TransportKeyPairImpl implements TransportKeyPair {
94
105
 
95
106
  this.#tkmsPrivateKey = await runtimeWithDecrypt.decrypt.deserializeTkmsPrivateKey({
96
107
  tkmsPrivateKeyBytes: this.#privateKeyBytes,
108
+ tkmsVersion: this.#tkmsVersion,
97
109
  });
98
110
 
99
111
  // Verify the key is valid
100
112
  await verifyTkmsPublicKey(
101
- { runtime: runtimeWithDecrypt },
113
+ { runtime: runtimeWithDecrypt, tkmsVersion: this.#tkmsVersion },
102
114
  {
103
115
  tkmsPrivateKey: this.#tkmsPrivateKey,
104
116
  tkmsPublicKeyBytesHex: this.#publicKeyBytesHex,
@@ -114,8 +126,9 @@ class TransportKeyPairImpl implements TransportKeyPair {
114
126
  * Access is protected by the Symbol key (not exported) and the private token.
115
127
  */
116
128
  [SerializeFn](privateToken: symbol): {
117
- publicKey: BytesHex;
118
- privateKey: BytesHex;
129
+ readonly publicKey: BytesHex;
130
+ readonly privateKey: BytesHex;
131
+ readonly tkmsVersion: TkmsVersion;
119
132
  } {
120
133
  if (privateToken !== PRIVATE_TOKEN) {
121
134
  throw new Error('Unauthorized');
@@ -123,6 +136,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
123
136
  return {
124
137
  publicKey: this.#publicKeyBytesHex,
125
138
  privateKey: bytesToHexLarge(this.#privateKeyBytes, false /* no0x */),
139
+ tkmsVersion: this.#tkmsVersion,
126
140
  };
127
141
  }
128
142
 
@@ -130,8 +144,8 @@ class TransportKeyPairImpl implements TransportKeyPair {
130
144
  * Prevents accidental private key exposure via `JSON.stringify`.
131
145
  * Only the public key is included in the output.
132
146
  */
133
- public toJSON(): { publicKey: string } {
134
- return { publicKey: this.#publicKeyBytesHex };
147
+ public toJSON(): { publicKey: string; tkmsVersion: string } {
148
+ return { publicKey: this.#publicKeyBytesHex, tkmsVersion: this.#tkmsVersion };
135
149
  }
136
150
  }
137
151
 
@@ -167,16 +181,25 @@ export function assertIsTransportKeyPair(
167
181
  ////////////////////////////////////////////////////////////////////////////////
168
182
 
169
183
  /** Generates a fresh {@link TransportKeyPair}. */
170
- export async function generateTransportKeyPair(context: { readonly runtime: WithDecrypt }): Promise<TransportKeyPair> {
171
- const tkmsPrivateKey = await context.runtime.decrypt.generateTkmsPrivateKey();
172
- const tkmsPrivateKeyBytes = await context.runtime.decrypt.serializeTkmsPrivateKey({ tkmsPrivateKey });
184
+ export async function generateTransportKeyPair(context: {
185
+ readonly runtime: WithDecrypt;
186
+ readonly chain: FhevmChain;
187
+ readonly client: NativeClient;
188
+ readonly tkmsVersion: TkmsVersion;
189
+ }): Promise<TransportKeyPair> {
190
+ const tkmsVersion = context.tkmsVersion;
191
+
192
+ const tkmsPrivateKey = await context.runtime.decrypt.generateTkmsPrivateKey({ tkmsVersion });
193
+ const tkmsPrivateKeyBytes = await context.runtime.decrypt.serializeTkmsPrivateKey({ tkmsPrivateKey, tkmsVersion });
173
194
  const tkmsPublicKeyBytesHex = await context.runtime.decrypt.getTkmsPublicKeyHex({
174
195
  tkmsPrivateKey,
196
+ tkmsVersion,
175
197
  });
176
198
  return new TransportKeyPairImpl(PRIVATE_TOKEN, context.runtime, {
177
199
  privateKeyBytes: tkmsPrivateKeyBytes,
178
200
  publicKeyBytesHex: tkmsPublicKeyBytesHex,
179
201
  tkmsPrivateKey,
202
+ tkmsVersion,
180
203
  });
181
204
  }
182
205
 
@@ -190,7 +213,11 @@ export async function generateTransportKeyPair(context: { readonly runtime: With
190
213
  * @throws {InvalidTypeError} If `value` is not a recognized key pair shape.
191
214
  */
192
215
  export async function toTransportKeyPair(
193
- context: { readonly runtime: FhevmRuntime },
216
+ context: {
217
+ readonly runtime: FhevmRuntime;
218
+ readonly chain: FhevmChain;
219
+ readonly client?: OptionalNativeClient;
220
+ },
194
221
  value: unknown,
195
222
  ): Promise<TransportKeyPair> {
196
223
  if (isTransportKeyPair(value)) {
@@ -210,9 +237,20 @@ export async function toTransportKeyPair(
210
237
  expectedType: 'Bytes | BytesHex',
211
238
  ...options,
212
239
  });
240
+ assertRecordNonNullableProperty(value, 'tkmsVersion', name, {
241
+ expectedType: 'string',
242
+ ...options,
243
+ });
213
244
 
214
245
  const rawPublicKey = value.publicKey;
215
246
  const rawPrivateKey = value.privateKey;
247
+ const rawTkmsVersion = value.tkmsVersion;
248
+
249
+ // TODO: this is not correct. We must add a resolution function
250
+ let resolvedTkmsVersion: TkmsVersion = '0.13.20-0';
251
+ if (rawTkmsVersion === '0.13.10') {
252
+ resolvedTkmsVersion = rawTkmsVersion;
253
+ }
216
254
 
217
255
  assertIsBytesOrBytesHex(rawPublicKey, { subject: `${name}.publicKey` });
218
256
  assertIsBytesOrBytesHex(rawPrivateKey, { subject: `${name}.privateKey` });
@@ -236,14 +274,22 @@ export async function toTransportKeyPair(
236
274
  if (runtimeWithDecrypt !== undefined) {
237
275
  tkmsPrivateKey = await runtimeWithDecrypt.decrypt.deserializeTkmsPrivateKey({
238
276
  tkmsPrivateKeyBytes,
277
+ tkmsVersion: resolvedTkmsVersion,
239
278
  });
240
- await verifyTkmsPublicKey({ runtime: runtimeWithDecrypt }, { tkmsPrivateKey, tkmsPublicKeyBytesHex });
279
+ await verifyTkmsPublicKey(
280
+ { runtime: runtimeWithDecrypt, tkmsVersion: resolvedTkmsVersion },
281
+ {
282
+ tkmsPrivateKey,
283
+ tkmsPublicKeyBytesHex,
284
+ },
285
+ );
241
286
  }
242
287
 
243
288
  return new TransportKeyPairImpl(PRIVATE_TOKEN, context.runtime, {
244
289
  privateKeyBytes: tkmsPrivateKeyBytes,
245
290
  publicKeyBytesHex: tkmsPublicKeyBytesHex,
246
291
  tkmsPrivateKey,
292
+ tkmsVersion: resolvedTkmsVersion,
247
293
  });
248
294
  }
249
295
 
@@ -15,6 +15,7 @@ import { assertRecordStringProperty, ensure0x } from '../base/string.js';
15
15
  import { assertIsUint64, assertIsUintNumber } from '../base/uint.js';
16
16
  import { assertIsKmsExtraData } from './kmsExtraData.js';
17
17
  import { kmsUserDecryptEip712Types } from './kmsUserDecryptEip712Types.js';
18
+ import { isDeepEqual } from '../base/object.js';
18
19
 
19
20
  ////////////////////////////////////////////////////////////////////////////////
20
21
 
@@ -120,6 +121,9 @@ export function _assertIsKmsUserDecryptEip712Base(
120
121
  assertIsKmsEip712Domain((value as Record<string, unknown>).domain, `${name}.domain`, options);
121
122
 
122
123
  assertRecordNonNullableProperty(value, 'types', name, options);
124
+ if (!isDeepEqual(value.types, kmsUserDecryptEip712Types)) {
125
+ throw new Error('Unexpected KmsUserDecryptEip712Types');
126
+ }
123
127
 
124
128
  assertRecordStringProperty(value, 'primaryType', name, {
125
129
  expectedValue: primaryType,
@@ -0,0 +1,159 @@
1
+ import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
2
+ import type { KmsUserDecryptEip712V2 } from '../types/kms.js';
3
+ import type { BytesHex } from '../types/primitives.js';
4
+ import type { KmsUserDecryptEip712V2Message } from '../types/kms.js';
5
+ import {
6
+ addressToChecksummedAddress,
7
+ assertIsAddress,
8
+ assertIsAddressArray,
9
+ assertRecordAddressProperty,
10
+ assertRecordChecksummedAddressArrayProperty,
11
+ } from '../base/address.js';
12
+ import { assertIsKmsEip712Domain, createKmsEip712Domain } from './createKmsEip712Domain.js';
13
+ import { asBytesHex, assertIsBytesHex, assertRecordBytesHexProperty, bytesToHexLarge } from '../base/bytes.js';
14
+ import { isDeepEqual } from '../base/object.js';
15
+ import { assertRecordNonNullableProperty } from '../base/record.js';
16
+ import { assertRecordStringProperty, ensure0x } from '../base/string.js';
17
+ import { assertIsUint256, assertIsUint64, assertIsUintString, MAX_UINT256 } from '../base/uint.js';
18
+ import { assertIsKmsExtraData } from './kmsExtraData.js';
19
+ import { kmsUserDecryptEip712V2Types } from './kmsUserDecryptEip712V2Types.js';
20
+
21
+ ////////////////////////////////////////////////////////////////////////////////
22
+
23
+ export type CreateKmsUserDecryptEip712V2Parameters = {
24
+ readonly verifyingContractAddressDecryption: string;
25
+ readonly chainId: number | bigint;
26
+ readonly userAddress: string;
27
+ readonly publicKey: string | Uint8Array;
28
+ readonly allowedContracts: readonly string[];
29
+ readonly startTimestamp: number | bigint;
30
+ readonly durationSeconds: number | bigint;
31
+ readonly extraData: string;
32
+ };
33
+
34
+ ////////////////////////////////////////////////////////////////////////////////
35
+ // createKmsUserDecryptEip712V2 (RFC-016)
36
+ ////////////////////////////////////////////////////////////////////////////////
37
+
38
+ export function createKmsUserDecryptEip712V2(
39
+ parameters: CreateKmsUserDecryptEip712V2Parameters,
40
+ ): KmsUserDecryptEip712V2 {
41
+ const {
42
+ verifyingContractAddressDecryption,
43
+ chainId,
44
+ userAddress,
45
+ publicKey,
46
+ allowedContracts,
47
+ startTimestamp,
48
+ durationSeconds,
49
+ extraData,
50
+ } = parameters;
51
+ const publicKeyBytesHex = _verifyPublicKeyArg(publicKey);
52
+
53
+ assertIsUint64(chainId, {});
54
+ assertIsAddress(verifyingContractAddressDecryption, {});
55
+ assertIsAddress(userAddress, {});
56
+ assertIsAddressArray(allowedContracts, {});
57
+ assertIsUint256(startTimestamp, {});
58
+ assertIsUint256(durationSeconds, {});
59
+ assertIsBytesHex(extraData, {});
60
+ assertIsKmsExtraData(extraData, {});
61
+
62
+ const checksummedUserAddress = addressToChecksummedAddress(userAddress);
63
+ const checksummedContractAddresses = allowedContracts.map(addressToChecksummedAddress);
64
+
65
+ const primaryType: KmsUserDecryptEip712V2['primaryType'] = 'UserDecryptRequestVerification';
66
+
67
+ const domain = createKmsEip712Domain({
68
+ chainId,
69
+ verifyingContractAddressDecryption,
70
+ });
71
+
72
+ const eip712 = {
73
+ domain,
74
+ types: kmsUserDecryptEip712V2Types,
75
+ primaryType,
76
+ message: {
77
+ userAddress: checksummedUserAddress,
78
+ publicKey: publicKeyBytesHex,
79
+ allowedContracts: checksummedContractAddresses,
80
+ startTimestamp: startTimestamp.toString(),
81
+ durationSeconds: durationSeconds.toString(),
82
+ extraData,
83
+ } satisfies KmsUserDecryptEip712V2Message,
84
+ };
85
+
86
+ Object.freeze(eip712);
87
+ Object.freeze(eip712.domain);
88
+ Object.freeze(eip712.types);
89
+ Object.freeze(eip712.types.EIP712Domain);
90
+ Object.freeze(eip712.types.UserDecryptRequestVerification);
91
+ Object.freeze(eip712.message);
92
+ Object.freeze(eip712.message.allowedContracts);
93
+
94
+ return eip712;
95
+ }
96
+
97
+ ////////////////////////////////////////////////////////////////////////////////
98
+
99
+ export function assertIsKmsUserDecryptEip712V2(
100
+ value: unknown,
101
+ name: string,
102
+ options: ErrorMetadataParams,
103
+ ): asserts value is KmsUserDecryptEip712V2 {
104
+ assertRecordNonNullableProperty(value, 'domain', name, options);
105
+ assertIsKmsEip712Domain((value as Record<string, unknown>).domain, `${name}.domain`, options);
106
+
107
+ assertRecordNonNullableProperty(value, 'types', name, options);
108
+ if (!isDeepEqual(value.types, kmsUserDecryptEip712V2Types)) {
109
+ throw new Error('Unexpected KmsUserDecryptEip712V2Types');
110
+ }
111
+
112
+ assertRecordStringProperty(value, 'primaryType', name, {
113
+ expectedValue: 'UserDecryptRequestVerification',
114
+ ...options,
115
+ });
116
+
117
+ assertRecordNonNullableProperty(value, 'message', name, options);
118
+ const msg = (value as Record<string, unknown>).message as Record<string, unknown>;
119
+ _assertIsKmsUserDecryptEip712V2Message(msg, `${name}.message`, options);
120
+ }
121
+
122
+ function _assertIsKmsUserDecryptEip712V2Message(
123
+ msg: unknown,
124
+ msgName: string,
125
+ options: ErrorMetadataParams,
126
+ ): asserts msg is KmsUserDecryptEip712V2Message {
127
+ type MessageType = KmsUserDecryptEip712V2['message'];
128
+ assertRecordAddressProperty(msg, 'userAddress' satisfies keyof MessageType, msgName, options);
129
+ assertRecordBytesHexProperty(msg, 'publicKey' satisfies keyof MessageType, msgName, options);
130
+ assertRecordChecksummedAddressArrayProperty(msg, 'allowedContracts' satisfies keyof MessageType, msgName, options);
131
+ assertRecordStringProperty(msg, 'startTimestamp' satisfies keyof MessageType, msgName, options);
132
+ assertRecordStringProperty(msg, 'durationSeconds' satisfies keyof MessageType, msgName, options);
133
+ assertRecordBytesHexProperty(msg, 'extraData' satisfies keyof MessageType, msgName, options);
134
+ assertIsKmsExtraData(msg.extraData, options);
135
+ assertIsUintString(msg.startTimestamp, { max: MAX_UINT256 });
136
+ assertIsUintString(msg.durationSeconds, { max: MAX_UINT256 });
137
+ }
138
+
139
+ ////////////////////////////////////////////////////////////////////////////////
140
+
141
+ function _verifyPublicKeyArg(value: unknown): BytesHex {
142
+ if (value === null || value === undefined) {
143
+ throw new Error(`Missing publicKey argument.`);
144
+ }
145
+
146
+ let publicKeyBytesHex: BytesHex;
147
+
148
+ const pk = value;
149
+
150
+ if (typeof pk === 'string') {
151
+ publicKeyBytesHex = asBytesHex(ensure0x(pk));
152
+ } else if (pk instanceof Uint8Array) {
153
+ publicKeyBytesHex = bytesToHexLarge(pk);
154
+ } else {
155
+ throw new Error(`Invalid publicKey argument.`);
156
+ }
157
+
158
+ return publicKeyBytesHex;
159
+ }
@@ -2,14 +2,16 @@ import type { WithDecrypt } from '../types/coreFhevmRuntime.js';
2
2
  import type { KmsSigncryptedShares } from '../types/kms.js';
3
3
  import type { ClearValue } from '../types/encryptedTypes-p.js';
4
4
  import type { TransportKeyPair } from './TransportKeyPair-p.js';
5
+ import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
5
6
  import { transportKeyPairToTkmsPrivateKey } from './TransportKeyPair-p.js';
6
7
 
7
8
  ////////////////////////////////////////////////////////////////////////////////
8
- // decryptKmsSignedcryptedShares (with privateKey)
9
+ // decryptKmsSigncryptedShares (with privateKey)
9
10
  ////////////////////////////////////////////////////////////////////////////////
10
11
 
11
12
  type Context = {
12
13
  readonly runtime: WithDecrypt;
14
+ readonly tkmsVersion: TkmsVersion;
13
15
  };
14
16
 
15
17
  type Parameters = {
@@ -21,9 +23,16 @@ type ReturnType = readonly ClearValue[];
21
23
 
22
24
  ////////////////////////////////////////////////////////////////////////////////
23
25
 
24
- export async function decryptKmsSignedcryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
26
+ export async function decryptKmsSigncryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
25
27
  const { transportKeyPair: transportKeyPair, kmsSigncryptedShares } = parameters;
26
28
 
29
+ if (context.tkmsVersion !== kmsSigncryptedShares.tkmsVersion) {
30
+ throw new Error('TkmsVersion mismatch');
31
+ }
32
+ if (context.tkmsVersion !== transportKeyPair.tkmsVersion) {
33
+ throw new Error('TkmsVersion mismatch');
34
+ }
35
+
27
36
  // also validates `transportKeyPair`
28
37
  const tkmsPrivateKey = await transportKeyPairToTkmsPrivateKey(context, transportKeyPair);
29
38
 
@@ -31,6 +40,7 @@ export async function decryptKmsSignedcryptedShares(context: Context, parameters
31
40
  const orderedDecryptedHandles: readonly ClearValue[] = await context.runtime.decrypt.decryptAndReconstruct({
32
41
  shares: kmsSigncryptedShares,
33
42
  tkmsPrivateKey,
43
+ tkmsVersion: context.tkmsVersion,
34
44
  });
35
45
 
36
46
  return orderedDecryptedHandles;
@@ -1,5 +1,6 @@
1
1
  ////////////////////////////////////////////////////////////////////////////////
2
2
 
3
+ import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
3
4
  import type { WithDecrypt } from '../types/coreFhevmRuntime.js';
4
5
  import type { Handle } from '../types/encryptedTypes-p.js';
5
6
  import type { FhevmChain } from '../types/fhevmChain.js';
@@ -8,8 +9,8 @@ import type { ChecksummedAddress, TypedValue } from '../types/primitives.js';
8
9
  import type { RelayerDelegatedUserDecryptOptions, RelayerUserDecryptOptions } from '../types/relayer.js';
9
10
  import type { SignedDelegatedDecryptionPermit, SignedSelfDecryptionPermit } from '../types/signedDecryptionPermit.js';
10
11
  import type { TransportKeyPair } from './TransportKeyPair-p.js';
11
- import { decryptKmsSignedcryptedShares } from './decryptKmsSignedcryptedShares-p.js';
12
- import { fetchKmsSignedcryptedShares } from './fetchKmsSignedcryptedShares-p.js';
12
+ import { decryptKmsSigncryptedShares } from './decryptKmsSigncryptedShares-p.js';
13
+ import { fetchKmsSigncryptedShares } from './fetchKmsSigncryptedShares-p.js';
13
14
 
14
15
  ////////////////////////////////////////////////////////////////////////////////
15
16
 
@@ -17,6 +18,7 @@ type Context = {
17
18
  readonly chain: FhevmChain;
18
19
  readonly runtime: WithDecrypt;
19
20
  readonly client: NonNullable<object>;
21
+ readonly tkmsVersion: TkmsVersion;
20
22
  readonly options: { readonly batchRpcCalls: boolean };
21
23
  };
22
24
 
@@ -47,10 +49,10 @@ export type ReturnType = readonly TypedValue[];
47
49
  export async function decryptValuesFromPairs(fhevm: Context, parameters: Parameters): Promise<ReturnType> {
48
50
  const { transportKeyPair: transportKeyPair } = parameters;
49
51
 
50
- const kmsSigncryptedShares: KmsSigncryptedShares = await fetchKmsSignedcryptedShares(fhevm, parameters);
52
+ const kmsSigncryptedShares: KmsSigncryptedShares = await fetchKmsSigncryptedShares(fhevm, parameters);
51
53
 
52
54
  // Using the `KmsSigncryptedShares` decrypt and reconstruct clear values
53
- return decryptKmsSignedcryptedShares(fhevm, {
55
+ return decryptKmsSigncryptedShares(fhevm, {
54
56
  kmsSigncryptedShares,
55
57
  transportKeyPair: transportKeyPair,
56
58
  });
@@ -16,6 +16,7 @@ import { checkPersistAllowed } from '../host-contracts/checkPersistAllowed.js';
16
16
  import { assertExtraDataMatchesKmsSingersContext } from '../host-contracts/KmsSignersContext-p.js';
17
17
  import { createKmsEip712Domain } from './createKmsEip712Domain.js';
18
18
  import { checkDelegation } from '../host-contracts/checkDelegation.js';
19
+ import { resolveFhevmTkmsVersion } from '../runtime/resolveFhevmVersions-p.js';
19
20
 
20
21
  /*
21
22
  See: in KMS (eip712Domain)
@@ -64,12 +65,16 @@ type ReturnType = KmsSigncryptedShares;
64
65
  const MAX_USER_DECRYPT_CONTRACT_ADDRESSES = 10;
65
66
 
66
67
  ////////////////////////////////////////////////////////////////////////////////
67
- // fetchKmsSignedcryptedShares
68
+ // fetchKmsSigncryptedShares
68
69
  ////////////////////////////////////////////////////////////////////////////////
69
70
 
70
- export async function fetchKmsSignedcryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
71
+ export async function fetchKmsSigncryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
71
72
  const { signedPermit, options, pairs } = parameters;
72
73
 
74
+ // This helper must support base clients, where TKMS is not mandatory
75
+ // and tkmsVersion may not be initialized in the CoreFhevm instance yet.
76
+ const tkmsVersion = await resolveFhevmTkmsVersion(context);
77
+
73
78
  // Check: every requested contractAddress is listed in the permit
74
79
  assertPermitIncludesContractAddresses(
75
80
  signedPermit,
@@ -121,14 +126,14 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
121
126
  // 7. Check: ACL permissions (user is signer or delegatorAddress)
122
127
  if (signedPermit.isDelegated) {
123
128
  await checkDelegation(context, {
124
- address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
129
+ aclAddress: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
125
130
  delegate: signerAddress,
126
131
  delegator: encryptedDataOwnerAddress,
127
132
  handleContractPairs,
128
133
  });
129
134
  } else {
130
135
  await checkPersistAllowed(context, {
131
- address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
136
+ aclAddress: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
132
137
  userAddress: encryptedDataOwnerAddress,
133
138
  handleContractPairs,
134
139
  });
@@ -152,7 +157,8 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
152
157
  // though the context ID matches. Consider comparing the decoded `kmsContextId`
153
158
  // instead of the raw `extraData` bytes.
154
159
  const requestedKmsSignersContext: KmsSignersContext = await readKmsSignersContext(context, {
155
- address: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
160
+ kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
161
+ protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address as ChecksummedAddress | undefined,
156
162
  });
157
163
 
158
164
  assertExtraDataMatchesKmsSingersContext(
@@ -201,6 +207,7 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
201
207
  eip712Signature: signature,
202
208
  eip712SignerAddress: signerAddress,
203
209
  handles,
210
+ tkmsVersion,
204
211
  };
205
212
 
206
213
  // 12. The returned KmsSigncryptedShares is guaranteed to be fully verified:
@@ -1,49 +1,115 @@
1
- import type { ByteLength, Bytes32Hex, BytesHex, Uint256BigInt, Uint8Number } from '../types/primitives.js';
1
+ import type { Bytes32Hex, BytesHex, Uint256BigInt, Uint8Number } from '../types/primitives.js';
2
2
  import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
3
3
  import { asUint256BigInt, asUint8Number } from '../base/uint.js';
4
4
  import { asBytes32Hex, assertIsBytesHex } from '../base/bytes.js';
5
5
 
6
- const EXTRA_DATA_V1 = 0x01;
6
+ export const EXTRA_DATA_V0: Uint8Number = 0x00 as Uint8Number; // 0x00
7
+ export const EXTRA_DATA_V1: Uint8Number = 0x01 as Uint8Number; // 1 version byte + 32-byte big-endian context ID = 33 bytes
8
+ export const EXTRA_DATA_V2: Uint8Number = 0x02 as Uint8Number; // 1 version byte + 32-byte big-endian context ID + 32-byte big-endian epoch ID = 65 bytes
7
9
 
8
10
  export function fromKmsExtraData(extraData: BytesHex): {
9
11
  version: Uint8Number;
10
12
  kmsContextId: Uint256BigInt;
13
+ kmsEpochId: Uint256BigInt;
11
14
  } {
12
15
  if ((extraData as string) === '0x00' || (extraData as string) === '0x') {
13
16
  return {
14
- version: 0 as Uint8Number,
17
+ version: EXTRA_DATA_V0,
15
18
  kmsContextId: 0n as Uint256BigInt,
19
+ kmsEpochId: 0n as Uint256BigInt,
16
20
  };
17
21
  }
18
22
 
23
+ if (extraData.length <= 4) {
24
+ throw new Error(`Unsupported extraData length ${extraData.length}: must be more than 4 bytes`);
25
+ }
26
+
19
27
  // First byte = version (characters 2-3 after '0x')
20
- const version = asUint8Number(parseInt(extraData.slice(2, 4), 16));
28
+ const version = asUint8Number(Number('0x' + extraData.slice(2, 4)));
21
29
 
22
30
  if (version === EXTRA_DATA_V1) {
23
- // 1 version byte + 32 contextId bytes = 33 bytes = 66 hex chars + 2 for '0x' = 68
24
- if (extraData.length < 68) {
25
- throw new Error(`extraData too short for v1: expected at least 33 bytes, got ${(extraData.length - 2) / 2}`);
31
+ // ExtraData v1 format: 1 version byte + 32-byte big-endian context ID = 33 bytes = 66 hex chars + 2 for '0x' = 68
32
+ // 0x01aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
33
+ // ↑ ↑ ↑
34
+ // 0 4 68
35
+ // 0 1 2 3 4 5 6
36
+ // 01234567890123456789012345678901234567890123456789012345678901234567
37
+
38
+ if (extraData.length != 68) {
39
+ throw new Error(`Invalid extraData length for v1: expected 68, got ${extraData.length}`);
26
40
  }
27
41
  // 32-byte contextId starts at byte 1 (hex chars 4..67)
28
42
  const contextIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(4, 68)}`);
29
43
  const kmsContextId = asUint256BigInt(BigInt(contextIdBytes32Hex));
30
- return { version, kmsContextId };
44
+ return { version, kmsContextId, kmsEpochId: 0n as Uint256BigInt };
45
+ }
46
+
47
+ if (version === EXTRA_DATA_V2) {
48
+ // ExtraData v2 format: 1 version byte + 32-byte big-endian context ID + 32-byte big-endian epoch ID = 65 bytes = 130 hex chars + 2 for '0x' = 132
49
+ // 0x01aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
50
+ // ↑ ↑ ↑ ↑
51
+ // 0 4 68 132
52
+ // 0 1 2 3 4 5 6 7 8 9 0 1 2 3
53
+ // 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
54
+
55
+ if (extraData.length != 132) {
56
+ throw new Error(`Invalid extraData length for v2: expected 132, got ${extraData.length}`);
57
+ }
58
+ // 32-byte contextId starts at byte 1 (hex chars 4..67)
59
+ const contextIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(4, 68)}`);
60
+ const kmsContextId = asUint256BigInt(BigInt(contextIdBytes32Hex));
61
+
62
+ // 32-byte epochId starts at byte 33 (hex chars 68..131)
63
+ const epochIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(68, 132)}`);
64
+ const kmsEpochId = asUint256BigInt(BigInt(epochIdBytes32Hex));
65
+
66
+ return { version, kmsContextId, kmsEpochId };
31
67
  }
32
68
 
33
69
  throw new Error(`Unsupported extraData version ${version}`);
34
70
  }
35
71
 
36
72
  /**
37
- * Encodes a KMS context ID into the v1 extraData format.
38
- * Layout: `0x` + `01` (version byte) + 32-byte big-endian context ID.
73
+ * Encodes a KMS context into an extraData format.
74
+ * v0: `0x00`
75
+ * v1: `0x01` + 32-byte big-endian context ID.
76
+ * v2: `0x02` + 32-byte big-endian context ID + 32-byte big-endian epoch ID.
39
77
  */
40
78
  export function toKmsExtraData(args: {
41
79
  readonly version: Uint8Number;
42
80
  readonly kmsContextId: Uint256BigInt;
81
+ readonly kmsEpochId: Uint256BigInt;
43
82
  }): BytesHex {
44
83
  const v = args.version.toString(16).padStart(2, '0');
45
- const id = args.kmsContextId.toString(16).padStart(64, '0');
46
- return `0x${v}${id}` as BytesHex;
84
+
85
+ switch (args.version) {
86
+ case EXTRA_DATA_V0: {
87
+ return `0x${v}` as BytesHex;
88
+ }
89
+ case EXTRA_DATA_V1: {
90
+ if (args.kmsContextId === 0n) {
91
+ throw new Error('kmsContextId cannot be 0 for v1 extraData');
92
+ }
93
+ if (args.kmsEpochId !== 0n) {
94
+ throw new Error('kmsEpochId must be 0 for v1 extraData');
95
+ }
96
+ const contextId = args.kmsContextId.toString(16).padStart(64, '0');
97
+ return `0x${v}${contextId}` as BytesHex;
98
+ }
99
+ case EXTRA_DATA_V2: {
100
+ if (args.kmsContextId === 0n) {
101
+ throw new Error('kmsContextId cannot be 0 for v2 extraData');
102
+ }
103
+ if (args.kmsEpochId === 0n) {
104
+ throw new Error('kmsEpochId cannot be 0 for v2 extraData');
105
+ }
106
+ const contextId = args.kmsContextId.toString(16).padStart(64, '0');
107
+ const epochId = args.kmsEpochId.toString(16).padStart(64, '0');
108
+ return `0x${v}${contextId}${epochId}` as BytesHex;
109
+ }
110
+ default:
111
+ throw new Error(`Unsupported extraData version ${args.version}`);
112
+ }
47
113
  }
48
114
 
49
115
  export function assertIsKmsExtraData(
@@ -53,6 +119,9 @@ export function assertIsKmsExtraData(
53
119
  if (value === '0x00' || value === '0x') {
54
120
  return;
55
121
  }
56
- assertIsBytesHex(value, { ...options, byteLength: 33 as ByteLength });
122
+
123
+ assertIsBytesHex(value, options);
124
+
125
+ // Will valid extraData length too
57
126
  fromKmsExtraData(value);
58
127
  }