@fhevm/sdk 1.0.0-alpha.1 → 1.0.0-alpha.2

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 (609) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/actions/base/fetchVerifiedInputProof.js +1 -1
  3. package/_cjs/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
  4. package/_cjs/core/actions/base/signDecryptionPermit.js.map +1 -1
  5. package/_cjs/core/actions/chain/index.js +5 -5
  6. package/_cjs/core/actions/chain/index.js.map +1 -1
  7. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
  8. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  9. package/_cjs/core/actions/chain/parseTransportKeypair.js +1 -2
  10. package/_cjs/core/actions/chain/parseTransportKeypair.js.map +1 -1
  11. package/_cjs/core/actions/decrypt/decryptValue.js +4 -1
  12. package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
  13. package/_cjs/core/actions/decrypt/decryptValues.js +4 -1
  14. package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
  15. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +4 -1
  16. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  17. package/_cjs/core/actions/decrypt/index.js.map +1 -1
  18. package/_cjs/core/base/bytes.js +8 -0
  19. package/_cjs/core/base/bytes.js.map +1 -1
  20. package/_cjs/core/base/sign.js +50 -0
  21. package/_cjs/core/base/sign.js.map +1 -0
  22. package/_cjs/core/base/typedValue.js +17 -0
  23. package/_cjs/core/base/typedValue.js.map +1 -1
  24. package/_cjs/core/base/uint.js +29 -0
  25. package/_cjs/core/base/uint.js.map +1 -1
  26. package/_cjs/core/clients/decorators/decrypt.js +3 -3
  27. package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
  28. package/_cjs/core/coprocessor/ZkProof-p.js +17 -11
  29. package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
  30. package/_cjs/core/coprocessor/ZkProofBuilder-p.js +6 -4
  31. package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  32. package/_cjs/core/coprocessor/encrypt.js +1 -3
  33. package/_cjs/core/coprocessor/encrypt.js.map +1 -1
  34. package/_cjs/core/coprocessor/fetchVerifiedInputProof.js +3 -4
  35. package/_cjs/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
  36. package/_cjs/core/handle/FheType.js +5 -2
  37. package/_cjs/core/handle/FheType.js.map +1 -1
  38. package/_cjs/core/host-contracts/KmsSignersContext-p.js +1 -1
  39. package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  40. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js +2 -3
  41. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  42. package/_cjs/core/kms/publicDecrypt.js +1 -4
  43. package/_cjs/core/kms/publicDecrypt.js.map +1 -1
  44. package/_cjs/core/modules/decrypt/mock.js +93 -10
  45. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  46. package/_cjs/core/modules/encrypt/mock.js +142 -12
  47. package/_cjs/core/modules/encrypt/mock.js.map +1 -1
  48. package/_cjs/core/modules/encrypt/module/api-p.js +7 -2
  49. package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
  50. package/_cjs/core/modules/ethereum/types-ct.js +3 -0
  51. package/_cjs/core/modules/ethereum/types-ct.js.map +1 -0
  52. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +68 -0
  53. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
  54. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +119 -0
  55. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
  56. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
  57. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
  58. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +117 -0
  59. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
  60. package/_cjs/core/modules/relayer/cleartext/mock.js +40 -0
  61. package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -0
  62. package/_cjs/core/modules/relayer/cleartext/signers.js +34 -0
  63. package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -0
  64. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
  65. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  66. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
  67. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  68. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  69. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  70. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
  71. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  72. package/_cjs/core/modules/relayer/utils.js +16 -0
  73. package/_cjs/core/modules/relayer/utils.js.map +1 -0
  74. package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js +17 -0
  75. package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  76. package/_cjs/ethers/cleartext/createFhevmCleartextClient.js +11 -0
  77. package/_cjs/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
  78. package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js +10 -0
  79. package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  80. package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js +10 -0
  81. package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  82. package/_cjs/ethers/cleartext/decorators/decrypt.js +9 -0
  83. package/_cjs/ethers/cleartext/decorators/decrypt.js.map +1 -0
  84. package/_cjs/ethers/cleartext/decorators/encrypt.js +9 -0
  85. package/_cjs/ethers/cleartext/decorators/encrypt.js.map +1 -0
  86. package/_cjs/ethers/cleartext/index.js +12 -0
  87. package/_cjs/ethers/cleartext/index.js.map +1 -0
  88. package/_cjs/ethers/clients/createFhevmBaseClient.js +2 -1
  89. package/_cjs/ethers/clients/createFhevmBaseClient.js.map +1 -1
  90. package/_cjs/ethers/clients/createFhevmClient.js +2 -2
  91. package/_cjs/ethers/clients/createFhevmClient.js.map +1 -1
  92. package/_cjs/ethers/clients/createFhevmDecryptClient.js +1 -1
  93. package/_cjs/ethers/clients/createFhevmDecryptClient.js.map +1 -1
  94. package/_cjs/ethers/clients/createFhevmEncryptClient.js +1 -1
  95. package/_cjs/ethers/clients/createFhevmEncryptClient.js.map +1 -1
  96. package/_cjs/{viem → ethers/clients}/decorators/decrypt.js +2 -2
  97. package/_cjs/ethers/clients/decorators/decrypt.js.map +1 -0
  98. package/_cjs/ethers/{decorators → clients/decorators}/encrypt.js +2 -2
  99. package/_cjs/ethers/clients/decorators/encrypt.js.map +1 -0
  100. package/_cjs/ethers/index.js +4 -3
  101. package/_cjs/ethers/index.js.map +1 -1
  102. package/_cjs/ethers/internal/config.js +32 -0
  103. package/_cjs/ethers/internal/config.js.map +1 -0
  104. package/_cjs/ethers/internal/ethereum-ct.js +42 -0
  105. package/_cjs/ethers/internal/ethereum-ct.js.map +1 -0
  106. package/_cjs/ethers/internal/ethers-p.js +0 -32
  107. package/_cjs/ethers/internal/ethers-p.js.map +1 -1
  108. package/_cjs/ethers/internal/runtime-ct.js +22 -0
  109. package/_cjs/ethers/internal/runtime-ct.js.map +1 -0
  110. package/_cjs/ethers/internal/runtime.js +22 -0
  111. package/_cjs/ethers/internal/runtime.js.map +1 -0
  112. package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js +3 -2
  113. package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
  114. package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js +3 -2
  115. package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
  116. package/_cjs/ethers/runtime/initFhevmRuntime.js +3 -2
  117. package/_cjs/ethers/runtime/initFhevmRuntime.js.map +1 -1
  118. package/_cjs/index.js +2 -0
  119. package/_cjs/index.js.map +1 -0
  120. package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js +17 -0
  121. package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  122. package/_cjs/viem/cleartext/createFhevmCleartextClient.js +11 -0
  123. package/_cjs/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
  124. package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js +10 -0
  125. package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  126. package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js +10 -0
  127. package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  128. package/_cjs/viem/cleartext/decorators/decrypt.js +9 -0
  129. package/_cjs/viem/cleartext/decorators/decrypt.js.map +1 -0
  130. package/_cjs/viem/cleartext/decorators/encrypt.js +9 -0
  131. package/_cjs/viem/cleartext/decorators/encrypt.js.map +1 -0
  132. package/_cjs/viem/cleartext/index.js +12 -0
  133. package/_cjs/viem/cleartext/index.js.map +1 -0
  134. package/_cjs/viem/clients/createFhevmBaseClient.js +2 -1
  135. package/_cjs/viem/clients/createFhevmBaseClient.js.map +1 -1
  136. package/_cjs/viem/clients/createFhevmClient.js +2 -2
  137. package/_cjs/viem/clients/createFhevmClient.js.map +1 -1
  138. package/_cjs/viem/clients/createFhevmDecryptClient.js +1 -1
  139. package/_cjs/viem/clients/createFhevmDecryptClient.js.map +1 -1
  140. package/_cjs/viem/clients/createFhevmEncryptClient.js +1 -1
  141. package/_cjs/viem/clients/createFhevmEncryptClient.js.map +1 -1
  142. package/_cjs/{ethers → viem/clients}/decorators/decrypt.js +2 -2
  143. package/_cjs/viem/clients/decorators/decrypt.js.map +1 -0
  144. package/_cjs/viem/{decorators → clients/decorators}/encrypt.js +2 -2
  145. package/_cjs/viem/clients/decorators/encrypt.js.map +1 -0
  146. package/_cjs/viem/index.js +6 -5
  147. package/_cjs/viem/index.js.map +1 -1
  148. package/_cjs/viem/internal/config.js +32 -0
  149. package/_cjs/viem/internal/config.js.map +1 -0
  150. package/_cjs/viem/internal/ethereum-ct.js +42 -0
  151. package/_cjs/viem/internal/ethereum-ct.js.map +1 -0
  152. package/_cjs/viem/internal/runtime-ct.js +22 -0
  153. package/_cjs/viem/internal/runtime-ct.js.map +1 -0
  154. package/_cjs/viem/internal/runtime.js +22 -0
  155. package/_cjs/viem/internal/runtime.js.map +1 -0
  156. package/_cjs/viem/internal/viem-p.js +0 -32
  157. package/_cjs/viem/internal/viem-p.js.map +1 -1
  158. package/_cjs/viem/runtime/initFhevmDecryptRuntime.js +2 -1
  159. package/_cjs/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
  160. package/_cjs/viem/runtime/initFhevmEncryptRuntime.js +2 -1
  161. package/_cjs/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
  162. package/_cjs/viem/runtime/initFhevmRuntime.js +2 -1
  163. package/_cjs/viem/runtime/initFhevmRuntime.js.map +1 -1
  164. package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js +279 -426
  165. package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js.map +7 -0
  166. package/_cjs/wasm/tfhe/tfhe.v1.5.3.js +2779 -3032
  167. package/_cjs/wasm/tfhe/tfhe.v1.5.3.js.map +7 -0
  168. package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js +29 -1
  169. package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js.map +7 -0
  170. package/_cjs/wasm/tkms/kms_lib.v0.13.10.js +1793 -1985
  171. package/_cjs/wasm/tkms/kms_lib.v0.13.10.js.map +7 -0
  172. package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js +29 -3
  173. package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js.map +7 -0
  174. package/_cjs/wasm/wasmBaseUrl.js +36 -14
  175. package/_cjs/wasm/wasmBaseUrl.js.map +7 -0
  176. package/_esm/core/_version.js +1 -1
  177. package/_esm/core/actions/base/fetchVerifiedInputProof.js +1 -1
  178. package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
  179. package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
  180. package/_esm/core/actions/chain/index.js +4 -4
  181. package/_esm/core/actions/chain/index.js.map +1 -1
  182. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
  183. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  184. package/_esm/core/actions/chain/parseTransportKeypair.js +1 -3
  185. package/_esm/core/actions/chain/parseTransportKeypair.js.map +1 -1
  186. package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -1
  187. package/_esm/core/actions/chain/serializeTransportKeypair.js.map +1 -1
  188. package/_esm/core/actions/decrypt/decryptValue.js +5 -1
  189. package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
  190. package/_esm/core/actions/decrypt/decryptValues.js +5 -1
  191. package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
  192. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +5 -1
  193. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  194. package/_esm/core/actions/decrypt/index.js +2 -2
  195. package/_esm/core/actions/decrypt/index.js.map +1 -1
  196. package/_esm/core/base/bytes.js +7 -0
  197. package/_esm/core/base/bytes.js.map +1 -1
  198. package/_esm/core/base/sign.js +58 -0
  199. package/_esm/core/base/sign.js.map +1 -0
  200. package/_esm/core/base/typedValue.js +16 -0
  201. package/_esm/core/base/typedValue.js.map +1 -1
  202. package/_esm/core/base/uint.js +30 -0
  203. package/_esm/core/base/uint.js.map +1 -1
  204. package/_esm/core/clients/decorators/decrypt.js +3 -3
  205. package/_esm/core/clients/decorators/decrypt.js.map +1 -1
  206. package/_esm/core/coprocessor/InputProof-p.js +2 -2
  207. package/_esm/core/coprocessor/InputProof-p.js.map +1 -1
  208. package/_esm/core/coprocessor/ZkProof-p.js +19 -12
  209. package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
  210. package/_esm/core/coprocessor/ZkProofBuilder-p.js +7 -5
  211. package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  212. package/_esm/core/coprocessor/encrypt.js +1 -3
  213. package/_esm/core/coprocessor/encrypt.js.map +1 -1
  214. package/_esm/core/coprocessor/fetchVerifiedInputProof.js +3 -4
  215. package/_esm/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
  216. package/_esm/core/handle/FheType.js +4 -2
  217. package/_esm/core/handle/FheType.js.map +1 -1
  218. package/_esm/core/host-contracts/KmsSignersContext-p.js +1 -1
  219. package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  220. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js +2 -3
  221. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  222. package/_esm/core/kms/publicDecrypt.js +1 -4
  223. package/_esm/core/kms/publicDecrypt.js.map +1 -1
  224. package/_esm/core/modules/decrypt/mock.js +96 -10
  225. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  226. package/_esm/core/modules/encrypt/mock.js +151 -12
  227. package/_esm/core/modules/encrypt/mock.js.map +1 -1
  228. package/_esm/core/modules/encrypt/module/api-p.js +7 -2
  229. package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
  230. package/_esm/core/modules/ethereum/types-ct.js +2 -0
  231. package/_esm/core/modules/ethereum/types-ct.js.map +1 -0
  232. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +75 -0
  233. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
  234. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +121 -0
  235. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
  236. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
  237. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
  238. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +119 -0
  239. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
  240. package/_esm/core/modules/relayer/cleartext/mock.js +39 -0
  241. package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -0
  242. package/_esm/core/modules/relayer/cleartext/signers.js +34 -0
  243. package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -0
  244. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
  245. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  246. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
  247. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  248. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  249. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  250. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
  251. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  252. package/_esm/core/modules/relayer/utils.js +13 -0
  253. package/_esm/core/modules/relayer/utils.js.map +1 -0
  254. package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js +15 -0
  255. package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  256. package/_esm/ethers/cleartext/createFhevmCleartextClient.js +9 -0
  257. package/_esm/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
  258. package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js +8 -0
  259. package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  260. package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js +8 -0
  261. package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  262. package/_esm/ethers/cleartext/decorators/decrypt.js +7 -0
  263. package/_esm/ethers/cleartext/decorators/decrypt.js.map +1 -0
  264. package/_esm/ethers/cleartext/decorators/encrypt.js +7 -0
  265. package/_esm/ethers/cleartext/decorators/encrypt.js.map +1 -0
  266. package/_esm/ethers/cleartext/index.js +5 -0
  267. package/_esm/ethers/cleartext/index.js.map +1 -0
  268. package/_esm/ethers/clients/createFhevmBaseClient.js +2 -1
  269. package/_esm/ethers/clients/createFhevmBaseClient.js.map +1 -1
  270. package/_esm/ethers/clients/createFhevmClient.js +2 -2
  271. package/_esm/ethers/clients/createFhevmClient.js.map +1 -1
  272. package/_esm/ethers/clients/createFhevmDecryptClient.js +1 -1
  273. package/_esm/ethers/clients/createFhevmDecryptClient.js.map +1 -1
  274. package/_esm/ethers/clients/createFhevmEncryptClient.js +1 -1
  275. package/_esm/ethers/clients/createFhevmEncryptClient.js.map +1 -1
  276. package/_esm/ethers/clients/decorators/decrypt.js +7 -0
  277. package/_esm/ethers/clients/decorators/decrypt.js.map +1 -0
  278. package/_esm/ethers/clients/decorators/encrypt.js +7 -0
  279. package/_esm/ethers/clients/decorators/encrypt.js.map +1 -0
  280. package/_esm/ethers/index.js +1 -1
  281. package/_esm/ethers/index.js.map +1 -1
  282. package/_esm/ethers/internal/config.js +38 -0
  283. package/_esm/ethers/internal/config.js.map +1 -0
  284. package/_esm/ethers/internal/ethereum-ct.js +39 -0
  285. package/_esm/ethers/internal/ethereum-ct.js.map +1 -0
  286. package/_esm/ethers/internal/ethers-p.js +0 -43
  287. package/_esm/ethers/internal/ethers-p.js.map +1 -1
  288. package/_esm/ethers/internal/runtime-ct.js +21 -0
  289. package/_esm/ethers/internal/runtime-ct.js.map +1 -0
  290. package/_esm/ethers/internal/runtime.js +21 -0
  291. package/_esm/ethers/internal/runtime.js.map +1 -0
  292. package/_esm/ethers/runtime/initFhevmDecryptRuntime.js +2 -1
  293. package/_esm/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
  294. package/_esm/ethers/runtime/initFhevmEncryptRuntime.js +2 -1
  295. package/_esm/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
  296. package/_esm/ethers/runtime/initFhevmRuntime.js +2 -1
  297. package/_esm/ethers/runtime/initFhevmRuntime.js.map +1 -1
  298. package/_esm/index.js +2 -0
  299. package/_esm/index.js.map +1 -0
  300. package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js +15 -0
  301. package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  302. package/_esm/viem/cleartext/createFhevmCleartextClient.js +9 -0
  303. package/_esm/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
  304. package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js +8 -0
  305. package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  306. package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js +8 -0
  307. package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  308. package/_esm/viem/cleartext/decorators/decrypt.js +7 -0
  309. package/_esm/viem/cleartext/decorators/decrypt.js.map +1 -0
  310. package/_esm/viem/cleartext/decorators/encrypt.js +7 -0
  311. package/_esm/viem/cleartext/decorators/encrypt.js.map +1 -0
  312. package/_esm/viem/cleartext/index.js +5 -0
  313. package/_esm/viem/cleartext/index.js.map +1 -0
  314. package/_esm/viem/clients/createFhevmBaseClient.js +2 -1
  315. package/_esm/viem/clients/createFhevmBaseClient.js.map +1 -1
  316. package/_esm/viem/clients/createFhevmClient.js +2 -2
  317. package/_esm/viem/clients/createFhevmClient.js.map +1 -1
  318. package/_esm/viem/clients/createFhevmDecryptClient.js +1 -1
  319. package/_esm/viem/clients/createFhevmDecryptClient.js.map +1 -1
  320. package/_esm/viem/clients/createFhevmEncryptClient.js +1 -2
  321. package/_esm/viem/clients/createFhevmEncryptClient.js.map +1 -1
  322. package/_esm/viem/clients/decorators/decrypt.js +7 -0
  323. package/_esm/viem/clients/decorators/decrypt.js.map +1 -0
  324. package/_esm/viem/clients/decorators/encrypt.js +7 -0
  325. package/_esm/viem/clients/decorators/encrypt.js.map +1 -0
  326. package/_esm/viem/index.js +2 -2
  327. package/_esm/viem/index.js.map +1 -1
  328. package/_esm/viem/internal/config.js +38 -0
  329. package/_esm/viem/internal/config.js.map +1 -0
  330. package/_esm/viem/internal/ethereum-ct.js +39 -0
  331. package/_esm/viem/internal/ethereum-ct.js.map +1 -0
  332. package/_esm/viem/internal/runtime-ct.js +21 -0
  333. package/_esm/viem/internal/runtime-ct.js.map +1 -0
  334. package/_esm/viem/internal/runtime.js +21 -0
  335. package/_esm/viem/internal/runtime.js.map +1 -0
  336. package/_esm/viem/internal/viem-p.js +0 -43
  337. package/_esm/viem/internal/viem-p.js.map +1 -1
  338. package/_esm/viem/runtime/initFhevmDecryptRuntime.js +2 -1
  339. package/_esm/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
  340. package/_esm/viem/runtime/initFhevmEncryptRuntime.js +2 -1
  341. package/_esm/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
  342. package/_esm/viem/runtime/initFhevmRuntime.js +2 -1
  343. package/_esm/viem/runtime/initFhevmRuntime.js.map +1 -1
  344. package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
  345. package/_types/core/actions/chain/index.d.ts +4 -4
  346. package/_types/core/actions/chain/index.d.ts.map +1 -1
  347. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +3 -2
  348. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  349. package/_types/core/actions/chain/parseTransportKeypair.d.ts +2 -2
  350. package/_types/core/actions/chain/parseTransportKeypair.d.ts.map +1 -1
  351. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +1 -1
  352. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
  353. package/_types/core/actions/decrypt/decryptValue.d.ts +5 -13
  354. package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
  355. package/_types/core/actions/decrypt/decryptValues.d.ts +5 -13
  356. package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
  357. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +5 -13
  358. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
  359. package/_types/core/actions/decrypt/index.d.ts +3 -3
  360. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  361. package/_types/core/base/bytes.d.ts +1 -0
  362. package/_types/core/base/bytes.d.ts.map +1 -1
  363. package/_types/core/base/sign.d.ts +10 -0
  364. package/_types/core/base/sign.d.ts.map +1 -0
  365. package/_types/core/base/typedValue.d.ts +2 -1
  366. package/_types/core/base/typedValue.d.ts.map +1 -1
  367. package/_types/core/base/uint.d.ts +3 -0
  368. package/_types/core/base/uint.d.ts.map +1 -1
  369. package/_types/core/clients/decorators/decrypt.d.ts +6 -15
  370. package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
  371. package/_types/core/coprocessor/ZkProof-p.d.ts +2 -2
  372. package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
  373. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +2 -1
  374. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
  375. package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
  376. package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts +0 -2
  377. package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts.map +1 -1
  378. package/_types/core/handle/FheType.d.ts +1 -0
  379. package/_types/core/handle/FheType.d.ts.map +1 -1
  380. package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +1 -1
  381. package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
  382. package/_types/core/modules/decrypt/mock.d.ts +5 -5
  383. package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
  384. package/_types/core/modules/encrypt/mock.d.ts +6 -6
  385. package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
  386. package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
  387. package/_types/core/modules/encrypt/types.d.ts +6 -2
  388. package/_types/core/modules/encrypt/types.d.ts.map +1 -1
  389. package/_types/core/modules/ethereum/types-ct.d.ts +46 -0
  390. package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -0
  391. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts +3 -0
  392. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -0
  393. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts +3 -0
  394. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +1 -0
  395. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts +3 -0
  396. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -0
  397. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +3 -0
  398. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -0
  399. package/_types/core/modules/relayer/cleartext/mock.d.ts +3 -0
  400. package/_types/core/modules/relayer/cleartext/mock.d.ts.map +1 -0
  401. package/_types/core/modules/relayer/cleartext/signers.d.ts +7 -0
  402. package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -0
  403. package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts +2 -2
  404. package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts.map +1 -1
  405. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts +2 -2
  406. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +1 -1
  407. package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts +2 -2
  408. package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts.map +1 -1
  409. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts +2 -2
  410. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  411. package/_types/core/modules/relayer/types.d.ts +14 -5
  412. package/_types/core/modules/relayer/types.d.ts.map +1 -1
  413. package/_types/core/modules/relayer/utils.d.ts +4 -0
  414. package/_types/core/modules/relayer/utils.d.ts.map +1 -0
  415. package/_types/core/types/zkProof-p.d.ts +2 -1
  416. package/_types/core/types/zkProof-p.d.ts.map +1 -1
  417. package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
  418. package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
  419. package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts +11 -0
  420. package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
  421. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
  422. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
  423. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
  424. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
  425. package/_types/ethers/cleartext/decorators/decrypt.d.ts +6 -0
  426. package/_types/ethers/cleartext/decorators/decrypt.d.ts.map +1 -0
  427. package/_types/ethers/cleartext/decorators/encrypt.d.ts +6 -0
  428. package/_types/ethers/cleartext/decorators/encrypt.d.ts.map +1 -0
  429. package/_types/ethers/cleartext/index.d.ts +5 -0
  430. package/_types/ethers/cleartext/index.d.ts.map +1 -0
  431. package/_types/ethers/clients/createFhevmBaseClient.d.ts.map +1 -1
  432. package/_types/ethers/clients/decorators/decrypt.d.ts +6 -0
  433. package/_types/ethers/clients/decorators/decrypt.d.ts.map +1 -0
  434. package/_types/ethers/clients/decorators/encrypt.d.ts +6 -0
  435. package/_types/ethers/clients/decorators/encrypt.d.ts.map +1 -0
  436. package/_types/ethers/index.d.ts +1 -1
  437. package/_types/ethers/index.d.ts.map +1 -1
  438. package/_types/ethers/internal/config.d.ts +15 -0
  439. package/_types/ethers/internal/config.d.ts.map +1 -0
  440. package/_types/ethers/internal/ethereum-ct.d.ts +3 -0
  441. package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -0
  442. package/_types/ethers/internal/ethers-p.d.ts +1 -13
  443. package/_types/ethers/internal/ethers-p.d.ts.map +1 -1
  444. package/_types/ethers/internal/runtime-ct.d.ts +3 -0
  445. package/_types/ethers/internal/runtime-ct.d.ts.map +1 -0
  446. package/_types/ethers/internal/runtime.d.ts +3 -0
  447. package/_types/ethers/internal/runtime.d.ts.map +1 -0
  448. package/_types/ethers/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
  449. package/_types/ethers/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
  450. package/_types/ethers/runtime/initFhevmRuntime.d.ts.map +1 -1
  451. package/_types/index.d.ts +2 -0
  452. package/_types/index.d.ts.map +1 -0
  453. package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
  454. package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
  455. package/_types/viem/cleartext/createFhevmCleartextClient.d.ts +11 -0
  456. package/_types/viem/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
  457. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
  458. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
  459. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
  460. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
  461. package/_types/viem/cleartext/decorators/decrypt.d.ts +6 -0
  462. package/_types/viem/cleartext/decorators/decrypt.d.ts.map +1 -0
  463. package/_types/viem/cleartext/decorators/encrypt.d.ts +6 -0
  464. package/_types/viem/cleartext/decorators/encrypt.d.ts.map +1 -0
  465. package/_types/viem/cleartext/index.d.ts +5 -0
  466. package/_types/viem/cleartext/index.d.ts.map +1 -0
  467. package/_types/viem/clients/createFhevmBaseClient.d.ts.map +1 -1
  468. package/_types/viem/clients/decorators/decrypt.d.ts +6 -0
  469. package/_types/viem/clients/decorators/decrypt.d.ts.map +1 -0
  470. package/_types/viem/clients/decorators/encrypt.d.ts +6 -0
  471. package/_types/viem/clients/decorators/encrypt.d.ts.map +1 -0
  472. package/_types/viem/index.d.ts +2 -2
  473. package/_types/viem/index.d.ts.map +1 -1
  474. package/_types/viem/internal/config.d.ts +15 -0
  475. package/_types/viem/internal/config.d.ts.map +1 -0
  476. package/_types/viem/internal/ethereum-ct.d.ts +3 -0
  477. package/_types/viem/internal/ethereum-ct.d.ts.map +1 -0
  478. package/_types/viem/internal/runtime-ct.d.ts +3 -0
  479. package/_types/viem/internal/runtime-ct.d.ts.map +1 -0
  480. package/_types/viem/internal/runtime.d.ts +3 -0
  481. package/_types/viem/internal/runtime.d.ts.map +1 -0
  482. package/_types/viem/internal/viem-p.d.ts +1 -13
  483. package/_types/viem/internal/viem-p.d.ts.map +1 -1
  484. package/_types/viem/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
  485. package/_types/viem/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
  486. package/_types/viem/runtime/initFhevmRuntime.d.ts.map +1 -1
  487. package/core/_version.ts +1 -1
  488. package/core/actions/base/fetchVerifiedInputProof.ts +1 -1
  489. package/core/actions/base/signDecryptionPermit.ts +2 -0
  490. package/core/actions/chain/index.ts +11 -11
  491. package/core/actions/chain/parseSignedDecryptionPermit.ts +5 -6
  492. package/core/actions/chain/parseTransportKeypair.ts +3 -7
  493. package/core/actions/chain/serializeTransportKeypair.ts +0 -2
  494. package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +1 -1
  495. package/core/actions/decrypt/decryptValue.ts +9 -28
  496. package/core/actions/decrypt/decryptValues.ts +9 -28
  497. package/core/actions/decrypt/decryptValuesFromPairs.ts +9 -28
  498. package/core/actions/decrypt/index.ts +3 -14
  499. package/core/base/bytes.ts +8 -0
  500. package/core/base/sign.ts +75 -0
  501. package/core/base/typedValue.ts +18 -0
  502. package/core/base/uint.ts +32 -0
  503. package/core/clients/decorators/decrypt.ts +12 -28
  504. package/core/coprocessor/InputProof-p.ts +2 -2
  505. package/core/coprocessor/ZkProof-p.ts +21 -9
  506. package/core/coprocessor/ZkProofBuilder-p.ts +15 -8
  507. package/core/coprocessor/encrypt.ts +1 -3
  508. package/core/coprocessor/fetchVerifiedInputProof.ts +7 -13
  509. package/core/handle/FheType.ts +5 -2
  510. package/core/host-contracts/KmsSignersContext-p.ts +1 -1
  511. package/core/kms/fetchKmsSignedcryptedShares-p.ts +16 -24
  512. package/core/kms/publicDecrypt.ts +6 -12
  513. package/core/modules/decrypt/mock.ts +126 -13
  514. package/core/modules/encrypt/mock.ts +206 -12
  515. package/core/modules/encrypt/module/api-p.ts +7 -2
  516. package/core/modules/encrypt/types.ts +6 -2
  517. package/core/modules/ethereum/types-ct.ts +89 -0
  518. package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +94 -0
  519. package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +147 -0
  520. package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +67 -0
  521. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +141 -0
  522. package/core/modules/relayer/cleartext/mock.ts +54 -0
  523. package/core/modules/relayer/cleartext/signers.ts +52 -0
  524. package/core/modules/relayer/module/fetchCoprocessorSignatures.ts +4 -4
  525. package/core/modules/relayer/module/fetchDelegatedUserDecrypt.ts +3 -3
  526. package/core/modules/relayer/module/fetchPublicDecrypt.ts +3 -3
  527. package/core/modules/relayer/module/fetchUserDecrypt.ts +3 -3
  528. package/core/modules/relayer/types.ts +13 -5
  529. package/core/modules/relayer/utils.ts +17 -0
  530. package/core/types/zkProof-p.ts +3 -1
  531. package/ethers/cleartext/createFhevmCleartextBaseClient.ts +25 -0
  532. package/ethers/cleartext/createFhevmCleartextClient.ts +20 -0
  533. package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +18 -0
  534. package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +19 -0
  535. package/ethers/cleartext/decorators/decrypt.ts +12 -0
  536. package/ethers/cleartext/decorators/encrypt.ts +12 -0
  537. package/ethers/cleartext/index.ts +4 -0
  538. package/ethers/cleartext/package.json +6 -0
  539. package/ethers/clients/createFhevmBaseClient.ts +2 -1
  540. package/ethers/clients/createFhevmClient.ts +2 -2
  541. package/ethers/clients/createFhevmDecryptClient.ts +1 -1
  542. package/ethers/clients/createFhevmEncryptClient.ts +1 -1
  543. package/ethers/clients/decorators/decrypt.ts +12 -0
  544. package/ethers/clients/decorators/encrypt.ts +12 -0
  545. package/ethers/index.ts +1 -1
  546. package/ethers/internal/config.ts +50 -0
  547. package/ethers/internal/ethereum-ct.ts +61 -0
  548. package/ethers/internal/ethers-p.ts +1 -56
  549. package/ethers/internal/runtime-ct.ts +28 -0
  550. package/ethers/internal/runtime.ts +28 -0
  551. package/ethers/runtime/initFhevmDecryptRuntime.ts +2 -1
  552. package/ethers/runtime/initFhevmEncryptRuntime.ts +2 -1
  553. package/ethers/runtime/initFhevmRuntime.ts +2 -1
  554. package/index.ts +0 -0
  555. package/package.json +14 -2
  556. package/viem/cleartext/createFhevmCleartextBaseClient.ts +28 -0
  557. package/viem/cleartext/createFhevmCleartextClient.ts +20 -0
  558. package/viem/cleartext/createFhevmCleartextDecryptClient.ts +21 -0
  559. package/viem/cleartext/createFhevmCleartextEncryptClient.ts +22 -0
  560. package/viem/cleartext/decorators/decrypt.ts +12 -0
  561. package/viem/cleartext/decorators/encrypt.ts +12 -0
  562. package/viem/cleartext/index.ts +4 -0
  563. package/viem/cleartext/package.json +6 -0
  564. package/viem/clients/createFhevmBaseClient.ts +2 -1
  565. package/viem/clients/createFhevmClient.ts +2 -2
  566. package/viem/clients/createFhevmDecryptClient.ts +1 -1
  567. package/viem/clients/createFhevmEncryptClient.ts +1 -3
  568. package/viem/clients/decorators/decrypt.ts +12 -0
  569. package/viem/clients/decorators/encrypt.ts +12 -0
  570. package/viem/index.ts +2 -2
  571. package/viem/internal/config.ts +50 -0
  572. package/viem/internal/ethereum-ct.ts +61 -0
  573. package/viem/internal/runtime-ct.ts +28 -0
  574. package/viem/internal/runtime.ts +28 -0
  575. package/viem/internal/viem-p.ts +1 -56
  576. package/viem/runtime/initFhevmDecryptRuntime.ts +2 -1
  577. package/viem/runtime/initFhevmEncryptRuntime.ts +2 -1
  578. package/viem/runtime/initFhevmRuntime.ts +2 -1
  579. package/_cjs/core/modules/relayer/mock.js +0 -29
  580. package/_cjs/core/modules/relayer/mock.js.map +0 -1
  581. package/_cjs/ethers/decorators/decrypt.js.map +0 -1
  582. package/_cjs/ethers/decorators/encrypt.js.map +0 -1
  583. package/_cjs/viem/decorators/decrypt.js.map +0 -1
  584. package/_cjs/viem/decorators/encrypt.js.map +0 -1
  585. package/_esm/core/modules/relayer/mock.js +0 -28
  586. package/_esm/core/modules/relayer/mock.js.map +0 -1
  587. package/_esm/ethers/decorators/decrypt.js +0 -7
  588. package/_esm/ethers/decorators/decrypt.js.map +0 -1
  589. package/_esm/ethers/decorators/encrypt.js +0 -7
  590. package/_esm/ethers/decorators/encrypt.js.map +0 -1
  591. package/_esm/viem/decorators/decrypt.js +0 -7
  592. package/_esm/viem/decorators/decrypt.js.map +0 -1
  593. package/_esm/viem/decorators/encrypt.js +0 -7
  594. package/_esm/viem/decorators/encrypt.js.map +0 -1
  595. package/_types/core/modules/relayer/mock.d.ts +0 -3
  596. package/_types/core/modules/relayer/mock.d.ts.map +0 -1
  597. package/_types/ethers/decorators/decrypt.d.ts +0 -6
  598. package/_types/ethers/decorators/decrypt.d.ts.map +0 -1
  599. package/_types/ethers/decorators/encrypt.d.ts +0 -6
  600. package/_types/ethers/decorators/encrypt.d.ts.map +0 -1
  601. package/_types/viem/decorators/decrypt.d.ts +0 -6
  602. package/_types/viem/decorators/decrypt.d.ts.map +0 -1
  603. package/_types/viem/decorators/encrypt.d.ts +0 -6
  604. package/_types/viem/decorators/encrypt.d.ts.map +0 -1
  605. package/core/modules/relayer/mock.ts +0 -47
  606. package/ethers/decorators/decrypt.ts +0 -12
  607. package/ethers/decorators/encrypt.ts +0 -12
  608. package/viem/decorators/decrypt.ts +0 -12
  609. package/viem/decorators/encrypt.ts +0 -12
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/unified-signatures */
2
1
  import type { Fhevm, FhevmBase, FhevmExtension, OptionalNativeClient } from '../../types/coreFhevmClient.js';
3
2
  import type { FhevmRuntime, WithDecrypt } from '../../types/coreFhevmRuntime.js';
4
3
  import type { FhevmChain } from '../../types/fhevmChain.js';
@@ -8,38 +7,29 @@ import { asFhevmClientWith, assertIsFhevmClientWith } from '../../runtime/CoreFh
8
7
  import { generateTransportKeypair } from '../../kms/TransportKeypair-p.js';
9
8
  import {
10
9
  decryptValue,
11
- type DecryptSelfValueParameters,
12
- type DecryptDelegatedValueParameters,
10
+ type DecryptValueParameters,
13
11
  type DecryptValueReturnType,
14
12
  } from '../../actions/decrypt/decryptValue.js';
15
13
  import {
16
14
  decryptValues,
17
- type DecryptDelegatedValuesParameters,
18
- type DecryptSelfValuesParameters,
15
+ type DecryptValuesParameters,
19
16
  type DecryptValuesReturnType,
20
17
  } from '../../actions/decrypt/decryptValues.js';
21
18
  import {
22
19
  decryptValuesFromPairs,
23
- type DecryptSelfValuesFromPairsParameters,
24
- type DecryptDelegatedValuesFromPairsParameters,
20
+ type DecryptValuesFromPairsParameters,
25
21
  type DecryptValuesFromPairsReturnType,
26
22
  } from '../../actions/decrypt/decryptValuesFromPairs.js';
27
23
 
28
24
  ////////////////////////////////////////////////////////////////////////////////
29
25
 
30
26
  export type DecryptActions = {
31
- readonly decryptValue: {
32
- (parameters: DecryptSelfValueParameters): Promise<DecryptValueReturnType>;
33
- (parameters: DecryptDelegatedValueParameters): Promise<DecryptValueReturnType>;
34
- };
35
- readonly decryptValues: {
36
- (parameters: DecryptSelfValuesParameters): Promise<DecryptValuesReturnType>;
37
- (parameters: DecryptDelegatedValuesParameters): Promise<DecryptValuesReturnType>;
38
- };
39
- readonly decryptValuesFromPairs: {
40
- (parameters: DecryptSelfValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
41
- (parameters: DecryptDelegatedValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
42
- };
27
+ readonly decryptValue: (parameters: DecryptValueParameters) => Promise<DecryptValueReturnType>;
28
+ readonly decryptValues: (parameters: DecryptValuesParameters) => Promise<DecryptValuesReturnType>;
29
+
30
+ readonly decryptValuesFromPairs: (
31
+ parameters: DecryptValuesFromPairsParameters,
32
+ ) => Promise<DecryptValuesFromPairsReturnType>;
43
33
  readonly generateTransportKeypair: () => Promise<GenerateTransportKeypairReturnType>;
44
34
  };
45
35
 
@@ -49,15 +39,9 @@ function _decryptActions(fhevm: Fhevm<FhevmChain, WithDecrypt>): DecryptActions
49
39
  // Preserve the original action overloads on the decorated client API.
50
40
  // Runtime behavior is unchanged: this is a direct pass-through wrapper.
51
41
  return {
52
- decryptValue: ((parameters) =>
53
- decryptValue(fhevm, parameters as DecryptSelfValueParameters)) as DecryptActions['decryptValue'],
54
- decryptValues: ((parameters) =>
55
- decryptValues(fhevm, parameters as DecryptSelfValuesParameters)) as DecryptActions['decryptValues'],
56
- decryptValuesFromPairs: ((parameters) =>
57
- decryptValuesFromPairs(
58
- fhevm,
59
- parameters as DecryptSelfValuesFromPairsParameters,
60
- )) as DecryptActions['decryptValuesFromPairs'],
42
+ decryptValue: (parameters) => decryptValue(fhevm, parameters),
43
+ decryptValues: (parameters) => decryptValues(fhevm, parameters),
44
+ decryptValuesFromPairs: (parameters) => decryptValuesFromPairs(fhevm, parameters),
61
45
  generateTransportKeypair: () => generateTransportKeypair(fhevm),
62
46
  };
63
47
  }
@@ -208,9 +208,9 @@ export function createInputProofFromInputHandles({
208
208
  // Proof format :
209
209
  // ==============
210
210
  //
211
- // <len(handles)><len(signatures)><concat(handles)><concat(signatures)>
211
+ // <len(handles)><len(signatures)><concat(handles)><concat(signatures)><extraData>
212
212
  //
213
- // size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65
213
+ // size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65 + BytesN(extraData)
214
214
  //
215
215
 
216
216
  let proof: string = '';
@@ -7,6 +7,7 @@ import type {
7
7
  Uint64,
8
8
  Bytes21Hex,
9
9
  Uint8Number,
10
+ BytesHex,
10
11
  } from '../types/primitives.js';
11
12
  import type { ZkProofLike, ZkProof } from '../types/zkProof-p.js';
12
13
  import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
@@ -49,27 +50,32 @@ class ZkProofImpl implements ZkProof {
49
50
  readonly #fheTypeIds: readonly FheTypeId[]; // Can be empty
50
51
  #inputHandles: InputHandle[] | undefined;
51
52
 
53
+ // In theory, 'extraData' is not part of the ZkProof
54
+ readonly #extraData: BytesHex;
55
+
52
56
  constructor(
53
57
  privateToken: symbol,
54
- params: {
58
+ parameters: {
55
59
  readonly chainId: Uint64BigInt;
56
60
  readonly aclContractAddress: ChecksummedAddress;
57
61
  readonly contractAddress: ChecksummedAddress;
58
62
  readonly userAddress: ChecksummedAddress;
59
63
  readonly ciphertextWithZkProof: Bytes;
60
64
  readonly encryptionBits: readonly EncryptionBits[];
65
+ readonly extraData: BytesHex;
61
66
  },
62
67
  ) {
63
68
  if (privateToken !== PRIVATE_TOKEN) {
64
69
  throw new Error('Unauthorized');
65
70
  }
66
- this.#chainId = params.chainId;
67
- this.#aclContractAddress = params.aclContractAddress;
68
- this.#contractAddress = params.contractAddress;
69
- this.#userAddress = params.userAddress;
70
- this.#ciphertextWithZkProof = params.ciphertextWithZkProof;
71
- this.#encryptionBits = Object.freeze([...params.encryptionBits]);
71
+ this.#chainId = parameters.chainId;
72
+ this.#aclContractAddress = parameters.aclContractAddress;
73
+ this.#contractAddress = parameters.contractAddress;
74
+ this.#userAddress = parameters.userAddress;
75
+ this.#ciphertextWithZkProof = parameters.ciphertextWithZkProof;
76
+ this.#encryptionBits = Object.freeze([...parameters.encryptionBits]);
72
77
  this.#fheTypeIds = Object.freeze(this.#encryptionBits.map(fheTypeIdFromEncryptionBits));
78
+ this.#extraData = parameters.extraData;
73
79
  Object.freeze(this);
74
80
  }
75
81
 
@@ -145,6 +151,10 @@ class ZkProofImpl implements ZkProof {
145
151
  return this.#inputHandles;
146
152
  }
147
153
 
154
+ public getExtraData(): BytesHex {
155
+ return this.#extraData;
156
+ }
157
+
148
158
  //////////////////////////////////////////////////////////////////////////////
149
159
  // JSON
150
160
  //////////////////////////////////////////////////////////////////////////////
@@ -218,6 +228,7 @@ export function assertIsZkProof(
218
228
  */
219
229
  export async function toZkProof(
220
230
  zkProofLike: ZkProofLike,
231
+ extraData: BytesHex,
221
232
  options?: {
222
233
  readonly zkProofParser?: ParseTFHEProvenCompactCiphertextListModuleFunction;
223
234
  readonly copy?: boolean;
@@ -265,8 +276,9 @@ export async function toZkProof(
265
276
  aclContractAddress,
266
277
  contractAddress,
267
278
  userAddress,
268
- ciphertextWithZkProof: ciphertextWithZkProof,
279
+ ciphertextWithZkProof,
269
280
  encryptionBits,
281
+ extraData,
270
282
  });
271
283
  }
272
284
 
@@ -440,7 +452,7 @@ async function _getOrParseEncryptionBits(
440
452
  * assert_eq!(handle.len(), 32);
441
453
  * ```
442
454
  *
443
- * @see https://github.com/zama-ai/fhevm/blob/8ffbd5906ab3d57af178e049930e3fc065c9d4b3/coprocessor/fhevm-engine/zkproof-worker/src/verifier.rs#L431
455
+ * @see https://github.com/zama-ai/fhevm/blob/322748569f0b5eb100b8cc1a58f691cfe88d17c4/coprocessor/fhevm-engine/zkproof-worker/src/verifier.rs#L538
444
456
  * @internal
445
457
  */
446
458
  function _computeInputHash21(
@@ -1,4 +1,4 @@
1
- import type { Bytes20, Bytes32, ChecksummedAddress, UintNumber } from '../types/primitives.js';
1
+ import type { Bytes20, Bytes32, BytesHex, ChecksummedAddress, UintNumber } from '../types/primitives.js';
2
2
  import type { ZkProof } from '../types/zkProof-p.js';
3
3
  import type { EncryptionBits, FheType } from '../types/fheType.js';
4
4
  import type { ZkProofBuilder } from '../types/zkProofBuilder.js';
@@ -18,7 +18,7 @@ import type {
18
18
  import { assert } from '../base/errors/InternalError.js';
19
19
  import { isUint64, uint256ToBytes32 } from '../base/uint.js';
20
20
  import { isAddress } from '../base/address.js';
21
- import { hexToBytes20 } from '../base/bytes.js';
21
+ import { asBytesHex, hexToBytes20 } from '../base/bytes.js';
22
22
  import { ZkProofError } from '../errors/ZkProofError.js';
23
23
  import { createTypedValue, TypedValueArrayBuilder } from '../base/typedValue.js';
24
24
  import { toZkProof } from './ZkProof-p.js';
@@ -142,9 +142,11 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
142
142
  {
143
143
  contractAddress,
144
144
  userAddress,
145
+ extraData,
145
146
  }: {
146
147
  readonly contractAddress: string;
147
148
  readonly userAddress: string;
149
+ readonly extraData: string;
148
150
  },
149
151
  ): Promise<ZkProof> {
150
152
  // Fetch the FheEncryptionKey (in wasm format) from the global cache.
@@ -211,11 +213,13 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
211
213
 
212
214
  assert(metaData.length - chainIdBytes32.length === 60);
213
215
 
214
- const ciphertextWithZKProofBytes: Uint8Array = await context.runtime.encrypt.buildWithProofPacked({
215
- typedValues: [...this.#builder.build()],
216
- fheEncryptionKey: fheEncryptionKeyWasm,
217
- metaData,
218
- });
216
+ const { ciphertextWithZKProofBytes, extraData: finalExtraData } =
217
+ await context.runtime.encrypt.buildWithProofPacked({
218
+ typedValues: [...this.#builder.build()],
219
+ fheEncryptionKey: fheEncryptionKeyWasm,
220
+ metaData,
221
+ extraData: asBytesHex(extraData),
222
+ });
219
223
 
220
224
  return toZkProof(
221
225
  {
@@ -226,6 +230,7 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
226
230
  ciphertextWithZkProof: ciphertextWithZKProofBytes,
227
231
  encryptionBits: this.#bits,
228
232
  },
233
+ finalExtraData,
229
234
  { copy: false }, // Take ownership
230
235
  );
231
236
  }
@@ -273,9 +278,10 @@ export async function createZkProof(
273
278
  readonly values: readonly TypedValue[];
274
279
  readonly contractAddress: ChecksummedAddress;
275
280
  readonly userAddress: ChecksummedAddress;
281
+ readonly extraData: BytesHex;
276
282
  },
277
283
  ): Promise<ZkProof> {
278
- const { contractAddress, userAddress, values } = parameters;
284
+ const { contractAddress, userAddress, values, extraData } = parameters;
279
285
 
280
286
  const builder = new ZkProofBuilderImpl(PRIVATE_TOKEN, {
281
287
  ciphertextCapacity: TFHE_ZKPROOF_CIPHERTEXT_CAPACITY,
@@ -289,6 +295,7 @@ export async function createZkProof(
289
295
  const zkProof = await builder.build(context, {
290
296
  contractAddress,
291
297
  userAddress,
298
+ extraData,
292
299
  });
293
300
 
294
301
  return zkProof;
@@ -3,7 +3,6 @@ import type { FhevmChain } from '../types/fhevmChain.js';
3
3
  import type { BytesHex, ChecksummedAddress, TypedValue } from '../types/primitives.js';
4
4
  import type { RelayerInputProofOptions } from '../types/relayer.js';
5
5
  import type { InputHandle } from '../types/encryptedTypes-p.js';
6
- import { asBytesHex } from '../base/bytes.js';
7
6
  import { fetchVerifiedInputProof } from './fetchVerifiedInputProof.js';
8
7
  import { createZkProof } from './ZkProofBuilder-p.js';
9
8
 
@@ -33,11 +32,10 @@ type ReturnType = {
33
32
  export async function encrypt(context: Context, parameters: Parameters): Promise<ReturnType> {
34
33
  const hardCodedExtraData = '0x00' as BytesHex;
35
34
 
36
- const zkProof = await createZkProof(context, parameters);
35
+ const zkProof = await createZkProof(context, { ...parameters, extraData: hardCodedExtraData });
37
36
 
38
37
  const inputProof = await fetchVerifiedInputProof(context, {
39
38
  zkProof,
40
- extraData: asBytesHex(hardCodedExtraData),
41
39
  options: parameters.options,
42
40
  });
43
41
 
@@ -1,7 +1,6 @@
1
1
  import type { RelayerInputProofOptions } from '../types/relayer.js';
2
2
  import type { FhevmChain } from '../types/fhevmChain.js';
3
3
  import type { VerifiedInputProof } from '../types/inputProof.js';
4
- import type { BytesHex } from '../types/primitives.js';
5
4
  import type { ZkProof } from '../types/zkProof-p.js';
6
5
  import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
7
6
  import type { InputHandle } from '../types/encryptedTypes-p.js';
@@ -22,7 +21,6 @@ type Context = {
22
21
 
23
22
  type Parameters = {
24
23
  readonly zkProof: ZkProof;
25
- readonly extraData: BytesHex;
26
24
  readonly options?: RelayerInputProofOptions | undefined;
27
25
  };
28
26
 
@@ -31,7 +29,7 @@ type ReturnType = VerifiedInputProof;
31
29
  ////////////////////////////////////////////////////////////////////////////////
32
30
 
33
31
  export async function fetchVerifiedInputProof(context: Context, parameters: Parameters): Promise<ReturnType> {
34
- const { zkProof, extraData, options } = parameters;
32
+ const { zkProof, options } = parameters;
35
33
 
36
34
  assertIsZkProof(zkProof, {});
37
35
 
@@ -52,16 +50,12 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
52
50
 
53
51
  // 2. Request coprocessor signatures from the relayer for the given ZK proof
54
52
  const { handles: coprocessorSignedHandles, coprocessorEip712Signatures: coprocessorSignatures } =
55
- await context.runtime.relayer.fetchCoprocessorSignatures(
56
- { relayerUrl: context.chain.fhevm.relayerUrl, chainId: context.chain.id },
57
- {
58
- payload: {
59
- zkProof,
60
- extraData,
61
- },
62
- options: relayerOptions,
53
+ await context.runtime.relayer.fetchCoprocessorSignatures(context, {
54
+ payload: {
55
+ zkProof,
63
56
  },
64
- );
57
+ options: relayerOptions,
58
+ });
65
59
 
66
60
  // 3. Check that the handles and the one in the fetch result
67
61
  // Note: this check is theoretically unnecessary
@@ -73,7 +67,7 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
73
67
  const inputProof = createInputProofFromInputHandles({
74
68
  coprocessorEip712Signatures: coprocessorSignatures,
75
69
  inputHandles,
76
- extraData,
70
+ extraData: zkProof.getExtraData(),
77
71
  signedHandleAccess: {
78
72
  userAddress: zkProof.userAddress,
79
73
  contractAddress: zkProof.contractAddress,
@@ -418,8 +418,7 @@ function _assertMinimumEncryptionBitWidth(bw: number): void {
418
418
  );
419
419
  }
420
420
 
421
- export function bytesToClearValueType<etype extends FheType>(fheType: etype, bytes: Bytes): ClearValueType<etype> {
422
- const bn = bytesToBigInt(bytes);
421
+ export function bigintToClearValueType<etype extends FheType>(fheType: etype, bn: bigint): ClearValueType<etype> {
423
422
  // needed to type narrowing
424
423
  const ft: FheType = fheType;
425
424
 
@@ -455,6 +454,10 @@ export function bytesToClearValueType<etype extends FheType>(fheType: etype, byt
455
454
  }
456
455
  }
457
456
 
457
+ export function bytesToClearValueType<etype extends FheType>(fheType: etype, bytes: Bytes): ClearValueType<etype> {
458
+ return bigintToClearValueType(fheType, bytesToBigInt(bytes));
459
+ }
460
+
458
461
  /**
459
462
  * Asserts that `value` is already the correct JS type for the given `fheTypeName`
460
463
  * and returns it narrowed. No conversion is performed.
@@ -70,7 +70,7 @@ class KmsSignersContextImpl implements KmsSignersContext {
70
70
  }
71
71
 
72
72
  public has(signer: string): boolean {
73
- return this.#kmsSignersSet.has(signer);
73
+ return this.#kmsSignersSet.has(signer.toLowerCase());
74
74
  }
75
75
 
76
76
  public static [VERIFY_FUNC](instance: unknown, owner: FhevmRuntime): void {
@@ -157,36 +157,28 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
157
157
  // Safe casts: the discriminated union on parameters guarantees
158
158
  // that options type matches signedPermit type, but TS can't prove
159
159
  // it after destructuring (nested discriminant limitation).
160
- const relayerUrl = context.chain.fhevm.relayerUrl;
161
-
162
160
  let shares: readonly KmsSigncryptedShare[];
163
161
 
164
162
  if (signedPermit.isDelegated) {
165
- shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(
166
- { relayerUrl, chainId: context.chain.id },
167
- {
168
- payload: {
169
- handleContractPairs,
170
- kmsDecryptEip712Signer: signerAddress,
171
- kmsDecryptEip712Message: signedPermit.eip712.message,
172
- kmsDecryptEip712Signature: signature,
173
- },
174
- options: relayerOptions as RelayerDelegatedUserDecryptOptions,
163
+ shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(context, {
164
+ payload: {
165
+ handleContractPairs,
166
+ kmsDecryptEip712Signer: signerAddress,
167
+ kmsDecryptEip712Message: signedPermit.eip712.message,
168
+ kmsDecryptEip712Signature: signature,
175
169
  },
176
- );
170
+ options: relayerOptions as RelayerDelegatedUserDecryptOptions,
171
+ });
177
172
  } else {
178
- shares = await context.runtime.relayer.fetchUserDecrypt(
179
- { relayerUrl, chainId: context.chain.id },
180
- {
181
- payload: {
182
- handleContractPairs,
183
- kmsDecryptEip712Signer: signerAddress,
184
- kmsDecryptEip712Message: signedPermit.eip712.message,
185
- kmsDecryptEip712Signature: signature,
186
- },
187
- options: relayerOptions as RelayerUserDecryptOptions,
173
+ shares = await context.runtime.relayer.fetchUserDecrypt(context, {
174
+ payload: {
175
+ handleContractPairs,
176
+ kmsDecryptEip712Signer: signerAddress,
177
+ kmsDecryptEip712Message: signedPermit.eip712.message,
178
+ kmsDecryptEip712Signature: signature,
188
179
  },
189
- );
180
+ options: relayerOptions as RelayerUserDecryptOptions,
181
+ });
190
182
  }
191
183
 
192
184
  // 11. Build and verify the sealed validated `KmsSigncryptedShares` object
@@ -74,19 +74,13 @@ export async function publicDecrypt(context: Context, parameters: Parameters): P
74
74
  orderedAbiEncodedClearValues,
75
75
  kmsPublicDecryptEIP712Signatures,
76
76
  extraData: relayerExtraData,
77
- } = await context.runtime.relayer.fetchPublicDecrypt(
78
- {
79
- relayerUrl: context.chain.fhevm.relayerUrl,
80
- chainId: context.chain.id,
77
+ } = await context.runtime.relayer.fetchPublicDecrypt(context, {
78
+ payload: {
79
+ orderedHandles,
80
+ extraData: requestedExtraData,
81
81
  },
82
- {
83
- payload: {
84
- orderedHandles,
85
- extraData: requestedExtraData,
86
- },
87
- options: relayerOptions,
88
- },
89
- );
82
+ options: relayerOptions,
83
+ });
90
84
 
91
85
  // 6. Reconcile KMS signer context using 'loose' mode
92
86
  const reconciledKmsSignersContext: KmsSignersContext = await reconcileKmsSignersContext(context, {
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/require-await */
2
1
  import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
3
2
  import type {
4
3
  DecryptAndReconstructParameters,
@@ -16,24 +15,129 @@ import type {
16
15
  DecryptModuleFactory,
17
16
  UserDecryptModuleFactory,
18
17
  } from './types.js';
18
+ import type { CleartextEthereumModule } from '../ethereum/types-ct.js';
19
+ import type { TkmsPrivateKey } from '../../types/tkms-p.js';
20
+ import type { BytesHex } from '../../types/primitives.js';
21
+ import type { KmsSigncryptedShare, KmsSigncryptedSharesMetadata } from '../../types/kms-p.js';
22
+ import type { ClearValue } from '../../types/encryptedTypes-p.js';
23
+ import { assertIsKmsExtraData } from '../../kms/kmsExtraData.js';
24
+ import { ensure0x, remove0x } from '../../base/string.js';
25
+ import { getMetadata, getShares } from '../../kms/KmsSigncryptedShares-p.js';
26
+ import { asBytesHex, bytesToHex, hexToBytes } from '../../base/bytes.js';
27
+ import { bigintToClearValueType } from '../../handle/FheType.js';
28
+ import { createClearValue } from '../../handle/ClearValue.js';
29
+
30
+ ////////////////////////////////////////////////////////////////////////////////
31
+
32
+ const PRIVATE_CLEARTEXT_TKMS_LIB_TOKEN = Symbol('CleartextTKMSLib.token');
33
+
34
+ ////////////////////////////////////////////////////////////////////////////////
35
+
36
+ function _xorUnmaskWithPublicKey(publicKey: BytesHex, maskedCleartexts: readonly bigint[]): bigint[] {
37
+ const hex = remove0x(publicKey);
38
+ if (hex.length < 64) {
39
+ throw new Error(`PublicKeyTooShort: publicKey has ${hex.length / 2} bytes, need >= 32`);
40
+ }
41
+ const mask = BigInt('0x' + hex.slice(0, 64));
42
+ return maskedCleartexts.map((c) => c ^ mask);
43
+ }
19
44
 
20
45
  ////////////////////////////////////////////////////////////////////////////////
21
46
  // decryptAndReconstruct
22
47
  ////////////////////////////////////////////////////////////////////////////////
23
48
 
24
49
  export async function decryptAndReconstruct(
25
- _runtime: FhevmRuntime,
26
- _parameters: DecryptAndReconstructParameters,
50
+ runtime: FhevmRuntime,
51
+ parameters: DecryptAndReconstructParameters,
27
52
  ): Promise<DecryptAndReconstructReturnType> {
28
- throw new Error('Not yet implemented');
53
+ const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
54
+ const { tkmsPrivateKey, shares } = parameters;
55
+
56
+ const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
57
+ const publicKeySecp256k1 = cleartextEthereumModule.getPublicKey({ privateKey: privateKeySecp256k1 });
58
+
59
+ const metadata: KmsSigncryptedSharesMetadata = getMetadata(shares);
60
+ const sharesArray: readonly KmsSigncryptedShare[] = getShares(shares);
61
+
62
+ const firstShare = sharesArray[0];
63
+ if (firstShare === undefined) {
64
+ throw new Error('Expected at least one signcrypted share.');
65
+ }
66
+
67
+ const firstExtraData = firstShare.extraData;
68
+ for (let i = 1; i < sharesArray.length; i++) {
69
+ const share = sharesArray[i];
70
+ if (share !== undefined && share.extraData !== firstExtraData) {
71
+ throw new Error(
72
+ `Mismatched extraData across shares: share[0]="${firstExtraData}" vs share[${i}]="${share.extraData}".`,
73
+ );
74
+ }
75
+ }
76
+
77
+ const extraData: BytesHex = ensure0x(firstExtraData);
78
+ assertIsKmsExtraData(extraData, {});
79
+
80
+ for (let i = 0; i < sharesArray.length; ++i) {
81
+ const s = sharesArray[i];
82
+ if (!s) {
83
+ throw new Error('Internal error');
84
+ }
85
+ const recoveredAddress = await cleartextEthereumModule.recoverAddress({
86
+ hash: ensure0x(s.payload),
87
+ signature: ensure0x(s.signature),
88
+ });
89
+ if (!metadata.kmsSignersContext.has(recoveredAddress)) {
90
+ throw new Error(
91
+ `Unknown KMS signer: recovered address ${recoveredAddress} from share[${i}] is not a registered KMS signer.`,
92
+ );
93
+ }
94
+ }
95
+
96
+ const decoded = cleartextEthereumModule.decode({
97
+ encodedData: ensure0x(firstShare.payload),
98
+ types: ['uint256[]', 'bytes'],
99
+ });
100
+
101
+ if (decoded.length !== 2) {
102
+ throw new Error('Invalid decrypted result.');
103
+ }
104
+
105
+ const maskedCleartexts = decoded[0] as bigint[];
106
+ const signedExtraData = decoded[1] as BytesHex;
107
+
108
+ const cleartexts: bigint[] = _xorUnmaskWithPublicKey(publicKeySecp256k1, maskedCleartexts);
109
+
110
+ if (extraData !== signedExtraData) {
111
+ throw new Error(
112
+ `extraData mismatch: share extraData="${extraData}" does not match the signed payload's extraData="${signedExtraData}".`,
113
+ );
114
+ }
115
+
116
+ // 2. Build an unforgeable structure that contains the decrypted FhevmHandles
117
+ const orderedClearValues: readonly ClearValue[] = cleartexts.map((plaintext: bigint, idx: number) => {
118
+ const fhevmHandle = metadata.handles[idx];
119
+ if (fhevmHandle === undefined) {
120
+ throw new Error('Internal error');
121
+ }
122
+ return createClearValue({
123
+ value: bigintToClearValueType(fhevmHandle.fheType, plaintext),
124
+ handle: fhevmHandle,
125
+ originToken: PRIVATE_CLEARTEXT_TKMS_LIB_TOKEN, // origin token for authenticity assertion
126
+ });
127
+ });
128
+ Object.freeze(orderedClearValues);
129
+
130
+ return orderedClearValues;
29
131
  }
30
132
 
31
133
  //////////////////////////////////////////////////////////////////////////////
32
134
  // generateTkmsPrivateKey
33
135
  //////////////////////////////////////////////////////////////////////////////
34
136
 
35
- export async function generateTkmsPrivateKey(_runtime: FhevmRuntime): Promise<GenerateTkmsPrivateKeyReturnType> {
36
- throw new Error('Not yet implemented');
137
+ export async function generateTkmsPrivateKey(runtime: FhevmRuntime): Promise<GenerateTkmsPrivateKeyReturnType> {
138
+ const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
139
+ const privateKeySecp256k1 = cleartextEthereumModule.generatePrivateKey();
140
+ return Promise.resolve(privateKeySecp256k1 as unknown as TkmsPrivateKey);
37
141
  }
38
142
 
39
143
  //////////////////////////////////////////////////////////////////////////////
@@ -41,10 +145,14 @@ export async function generateTkmsPrivateKey(_runtime: FhevmRuntime): Promise<Ge
41
145
  //////////////////////////////////////////////////////////////////////////////
42
146
 
43
147
  export async function getTkmsPublicKeyHex(
44
- _runtime: FhevmRuntime,
45
- _parameters: GetTkmsPublicKeyHexParameters,
148
+ runtime: FhevmRuntime,
149
+ parameters: GetTkmsPublicKeyHexParameters,
46
150
  ): Promise<GetTkmsPublicKeyHexReturnType> {
47
- throw new Error('Not yet implemented');
151
+ const { tkmsPrivateKey } = parameters;
152
+ const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
153
+ const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
154
+ const publicKeySecp256k1 = cleartextEthereumModule.getPublicKey({ privateKey: privateKeySecp256k1 });
155
+ return Promise.resolve(publicKeySecp256k1);
48
156
  }
49
157
 
50
158
  //////////////////////////////////////////////////////////////////////////////
@@ -53,9 +161,12 @@ export async function getTkmsPublicKeyHex(
53
161
 
54
162
  export async function serializeTkmsPrivateKey(
55
163
  _runtime: FhevmRuntime,
56
- _parameters: SerializeTkmsPrivateKeyParameters,
164
+ parameters: SerializeTkmsPrivateKeyParameters,
57
165
  ): Promise<SerializeTkmsPrivateKeyReturnType> {
58
- throw new Error('Not yet implemented');
166
+ const { tkmsPrivateKey } = parameters;
167
+ const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
168
+ const privateKeySecp256k1Bytes = hexToBytes(privateKeySecp256k1);
169
+ return Promise.resolve(privateKeySecp256k1Bytes);
59
170
  }
60
171
 
61
172
  //////////////////////////////////////////////////////////////////////////////
@@ -64,9 +175,11 @@ export async function serializeTkmsPrivateKey(
64
175
 
65
176
  export async function deserializeTkmsPrivateKey(
66
177
  _runtime: FhevmRuntime,
67
- _parameters: DeserializeTkmsPrivateKeyParameters,
178
+ parameters: DeserializeTkmsPrivateKeyParameters,
68
179
  ): Promise<DeserializeTkmsPrivateKeyReturnType> {
69
- throw new Error('Not yet implemented');
180
+ const { tkmsPrivateKeyBytes } = parameters;
181
+ const privateKeySecp256k1 = bytesToHex(tkmsPrivateKeyBytes);
182
+ return Promise.resolve(privateKeySecp256k1 as unknown as TkmsPrivateKey);
70
183
  }
71
184
 
72
185
  //////////////////////////////////////////////////////////////////////////////