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

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 (648) 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/actions/host/getUserDecryptionDelegationExpirationDate.js +12 -14
  19. package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
  20. package/_cjs/core/base/bytes.js +8 -0
  21. package/_cjs/core/base/bytes.js.map +1 -1
  22. package/_cjs/core/base/sign.js +50 -0
  23. package/_cjs/core/base/sign.js.map +1 -0
  24. package/_cjs/core/base/typedValue.js +17 -0
  25. package/_cjs/core/base/typedValue.js.map +1 -1
  26. package/_cjs/core/base/uint.js +29 -0
  27. package/_cjs/core/base/uint.js.map +1 -1
  28. package/_cjs/core/clients/decorators/decrypt.js +3 -3
  29. package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
  30. package/_cjs/core/coprocessor/ZkProof-p.js +17 -11
  31. package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
  32. package/_cjs/core/coprocessor/ZkProofBuilder-p.js +6 -4
  33. package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  34. package/_cjs/core/coprocessor/encrypt.js +1 -3
  35. package/_cjs/core/coprocessor/encrypt.js.map +1 -1
  36. package/_cjs/core/coprocessor/fetchVerifiedInputProof.js +3 -4
  37. package/_cjs/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
  38. package/_cjs/core/handle/FheType.js +5 -2
  39. package/_cjs/core/handle/FheType.js.map +1 -1
  40. package/_cjs/core/host-contracts/KmsSignersContext-p.js +1 -1
  41. package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  42. package/_cjs/core/host-contracts/checkDelegation.js +74 -0
  43. package/_cjs/core/host-contracts/checkDelegation.js.map +1 -0
  44. package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +21 -0
  45. package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
  46. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +33 -0
  47. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
  48. package/_cjs/core/host-contracts/persistAllowed.js +1 -1
  49. package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
  50. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
  51. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  52. package/_cjs/core/kms/publicDecrypt.js +1 -4
  53. package/_cjs/core/kms/publicDecrypt.js.map +1 -1
  54. package/_cjs/core/modules/decrypt/mock.js +93 -10
  55. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  56. package/_cjs/core/modules/encrypt/mock.js +142 -12
  57. package/_cjs/core/modules/encrypt/mock.js.map +1 -1
  58. package/_cjs/core/modules/encrypt/module/api-p.js +7 -2
  59. package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
  60. package/_cjs/core/modules/ethereum/types-ct.js +3 -0
  61. package/_cjs/core/modules/ethereum/types-ct.js.map +1 -0
  62. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +68 -0
  63. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
  64. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +119 -0
  65. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
  66. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
  67. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
  68. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +117 -0
  69. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
  70. package/_cjs/core/modules/relayer/cleartext/mock.js +40 -0
  71. package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -0
  72. package/_cjs/core/modules/relayer/cleartext/signers.js +34 -0
  73. package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -0
  74. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
  75. package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  76. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
  77. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  78. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  79. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  80. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
  81. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  82. package/_cjs/core/modules/relayer/utils.js +16 -0
  83. package/_cjs/core/modules/relayer/utils.js.map +1 -0
  84. package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js +17 -0
  85. package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  86. package/_cjs/ethers/cleartext/createFhevmCleartextClient.js +11 -0
  87. package/_cjs/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
  88. package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js +10 -0
  89. package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  90. package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js +10 -0
  91. package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  92. package/_cjs/ethers/cleartext/decorators/decrypt.js +9 -0
  93. package/_cjs/ethers/cleartext/decorators/decrypt.js.map +1 -0
  94. package/_cjs/ethers/cleartext/decorators/encrypt.js +9 -0
  95. package/_cjs/ethers/cleartext/decorators/encrypt.js.map +1 -0
  96. package/_cjs/ethers/cleartext/index.js +12 -0
  97. package/_cjs/ethers/cleartext/index.js.map +1 -0
  98. package/_cjs/ethers/clients/createFhevmBaseClient.js +2 -1
  99. package/_cjs/ethers/clients/createFhevmBaseClient.js.map +1 -1
  100. package/_cjs/ethers/clients/createFhevmClient.js +2 -2
  101. package/_cjs/ethers/clients/createFhevmClient.js.map +1 -1
  102. package/_cjs/ethers/clients/createFhevmDecryptClient.js +1 -1
  103. package/_cjs/ethers/clients/createFhevmDecryptClient.js.map +1 -1
  104. package/_cjs/ethers/clients/createFhevmEncryptClient.js +1 -1
  105. package/_cjs/ethers/clients/createFhevmEncryptClient.js.map +1 -1
  106. package/_cjs/{viem → ethers/clients}/decorators/decrypt.js +2 -2
  107. package/_cjs/ethers/clients/decorators/decrypt.js.map +1 -0
  108. package/_cjs/ethers/{decorators → clients/decorators}/encrypt.js +2 -2
  109. package/_cjs/ethers/clients/decorators/encrypt.js.map +1 -0
  110. package/_cjs/ethers/index.js +4 -3
  111. package/_cjs/ethers/index.js.map +1 -1
  112. package/_cjs/ethers/internal/config.js +32 -0
  113. package/_cjs/ethers/internal/config.js.map +1 -0
  114. package/_cjs/ethers/internal/ethereum-ct.js +42 -0
  115. package/_cjs/ethers/internal/ethereum-ct.js.map +1 -0
  116. package/_cjs/ethers/internal/ethers-p.js +0 -32
  117. package/_cjs/ethers/internal/ethers-p.js.map +1 -1
  118. package/_cjs/ethers/internal/runtime-ct.js +22 -0
  119. package/_cjs/ethers/internal/runtime-ct.js.map +1 -0
  120. package/_cjs/ethers/internal/runtime.js +22 -0
  121. package/_cjs/ethers/internal/runtime.js.map +1 -0
  122. package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js +3 -2
  123. package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
  124. package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js +3 -2
  125. package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
  126. package/_cjs/ethers/runtime/initFhevmRuntime.js +3 -2
  127. package/_cjs/ethers/runtime/initFhevmRuntime.js.map +1 -1
  128. package/_cjs/index.js +2 -0
  129. package/_cjs/index.js.map +1 -0
  130. package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js +17 -0
  131. package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  132. package/_cjs/viem/cleartext/createFhevmCleartextClient.js +11 -0
  133. package/_cjs/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
  134. package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js +10 -0
  135. package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  136. package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js +10 -0
  137. package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  138. package/_cjs/viem/cleartext/decorators/decrypt.js +9 -0
  139. package/_cjs/viem/cleartext/decorators/decrypt.js.map +1 -0
  140. package/_cjs/viem/cleartext/decorators/encrypt.js +9 -0
  141. package/_cjs/viem/cleartext/decorators/encrypt.js.map +1 -0
  142. package/_cjs/viem/cleartext/index.js +12 -0
  143. package/_cjs/viem/cleartext/index.js.map +1 -0
  144. package/_cjs/viem/clients/createFhevmBaseClient.js +2 -1
  145. package/_cjs/viem/clients/createFhevmBaseClient.js.map +1 -1
  146. package/_cjs/viem/clients/createFhevmClient.js +2 -2
  147. package/_cjs/viem/clients/createFhevmClient.js.map +1 -1
  148. package/_cjs/viem/clients/createFhevmDecryptClient.js +1 -1
  149. package/_cjs/viem/clients/createFhevmDecryptClient.js.map +1 -1
  150. package/_cjs/viem/clients/createFhevmEncryptClient.js +1 -1
  151. package/_cjs/viem/clients/createFhevmEncryptClient.js.map +1 -1
  152. package/_cjs/{ethers → viem/clients}/decorators/decrypt.js +2 -2
  153. package/_cjs/viem/clients/decorators/decrypt.js.map +1 -0
  154. package/_cjs/viem/{decorators → clients/decorators}/encrypt.js +2 -2
  155. package/_cjs/viem/clients/decorators/encrypt.js.map +1 -0
  156. package/_cjs/viem/index.js +6 -5
  157. package/_cjs/viem/index.js.map +1 -1
  158. package/_cjs/viem/internal/config.js +32 -0
  159. package/_cjs/viem/internal/config.js.map +1 -0
  160. package/_cjs/viem/internal/ethereum-ct.js +42 -0
  161. package/_cjs/viem/internal/ethereum-ct.js.map +1 -0
  162. package/_cjs/viem/internal/runtime-ct.js +22 -0
  163. package/_cjs/viem/internal/runtime-ct.js.map +1 -0
  164. package/_cjs/viem/internal/runtime.js +22 -0
  165. package/_cjs/viem/internal/runtime.js.map +1 -0
  166. package/_cjs/viem/internal/viem-p.js +0 -32
  167. package/_cjs/viem/internal/viem-p.js.map +1 -1
  168. package/_cjs/viem/runtime/initFhevmDecryptRuntime.js +2 -1
  169. package/_cjs/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
  170. package/_cjs/viem/runtime/initFhevmEncryptRuntime.js +2 -1
  171. package/_cjs/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
  172. package/_cjs/viem/runtime/initFhevmRuntime.js +2 -1
  173. package/_cjs/viem/runtime/initFhevmRuntime.js.map +1 -1
  174. package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js +279 -426
  175. package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js.map +7 -0
  176. package/_cjs/wasm/tfhe/tfhe.v1.5.3.js +2779 -3032
  177. package/_cjs/wasm/tfhe/tfhe.v1.5.3.js.map +7 -0
  178. package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js +29 -1
  179. package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js.map +7 -0
  180. package/_cjs/wasm/tkms/kms_lib.v0.13.10.js +1793 -1985
  181. package/_cjs/wasm/tkms/kms_lib.v0.13.10.js.map +7 -0
  182. package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js +29 -3
  183. package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js.map +7 -0
  184. package/_cjs/wasm/wasmBaseUrl.js +36 -14
  185. package/_cjs/wasm/wasmBaseUrl.js.map +7 -0
  186. package/_esm/core/_version.js +1 -1
  187. package/_esm/core/actions/base/fetchVerifiedInputProof.js +1 -1
  188. package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
  189. package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
  190. package/_esm/core/actions/chain/index.js +4 -4
  191. package/_esm/core/actions/chain/index.js.map +1 -1
  192. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
  193. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  194. package/_esm/core/actions/chain/parseTransportKeypair.js +1 -3
  195. package/_esm/core/actions/chain/parseTransportKeypair.js.map +1 -1
  196. package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -1
  197. package/_esm/core/actions/chain/serializeTransportKeypair.js.map +1 -1
  198. package/_esm/core/actions/decrypt/decryptValue.js +5 -1
  199. package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
  200. package/_esm/core/actions/decrypt/decryptValues.js +5 -1
  201. package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
  202. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +5 -1
  203. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  204. package/_esm/core/actions/decrypt/index.js +2 -2
  205. package/_esm/core/actions/decrypt/index.js.map +1 -1
  206. package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js +13 -14
  207. package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
  208. package/_esm/core/base/bytes.js +7 -0
  209. package/_esm/core/base/bytes.js.map +1 -1
  210. package/_esm/core/base/sign.js +58 -0
  211. package/_esm/core/base/sign.js.map +1 -0
  212. package/_esm/core/base/typedValue.js +16 -0
  213. package/_esm/core/base/typedValue.js.map +1 -1
  214. package/_esm/core/base/uint.js +30 -0
  215. package/_esm/core/base/uint.js.map +1 -1
  216. package/_esm/core/clients/decorators/decrypt.js +3 -3
  217. package/_esm/core/clients/decorators/decrypt.js.map +1 -1
  218. package/_esm/core/coprocessor/InputProof-p.js +2 -2
  219. package/_esm/core/coprocessor/InputProof-p.js.map +1 -1
  220. package/_esm/core/coprocessor/ZkProof-p.js +19 -12
  221. package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
  222. package/_esm/core/coprocessor/ZkProofBuilder-p.js +7 -5
  223. package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
  224. package/_esm/core/coprocessor/encrypt.js +1 -3
  225. package/_esm/core/coprocessor/encrypt.js.map +1 -1
  226. package/_esm/core/coprocessor/fetchVerifiedInputProof.js +3 -4
  227. package/_esm/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
  228. package/_esm/core/handle/FheType.js +4 -2
  229. package/_esm/core/handle/FheType.js.map +1 -1
  230. package/_esm/core/host-contracts/KmsSignersContext-p.js +1 -1
  231. package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  232. package/_esm/core/host-contracts/checkDelegation.js +81 -0
  233. package/_esm/core/host-contracts/checkDelegation.js.map +1 -0
  234. package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +19 -0
  235. package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
  236. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +32 -0
  237. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
  238. package/_esm/core/host-contracts/persistAllowed.js +1 -1
  239. package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
  240. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
  241. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  242. package/_esm/core/kms/publicDecrypt.js +1 -4
  243. package/_esm/core/kms/publicDecrypt.js.map +1 -1
  244. package/_esm/core/modules/decrypt/mock.js +96 -10
  245. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  246. package/_esm/core/modules/encrypt/mock.js +151 -12
  247. package/_esm/core/modules/encrypt/mock.js.map +1 -1
  248. package/_esm/core/modules/encrypt/module/api-p.js +7 -2
  249. package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
  250. package/_esm/core/modules/ethereum/types-ct.js +2 -0
  251. package/_esm/core/modules/ethereum/types-ct.js.map +1 -0
  252. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +75 -0
  253. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
  254. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +121 -0
  255. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
  256. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
  257. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
  258. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +119 -0
  259. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
  260. package/_esm/core/modules/relayer/cleartext/mock.js +39 -0
  261. package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -0
  262. package/_esm/core/modules/relayer/cleartext/signers.js +34 -0
  263. package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -0
  264. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
  265. package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
  266. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
  267. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
  268. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  269. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  270. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
  271. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  272. package/_esm/core/modules/relayer/utils.js +13 -0
  273. package/_esm/core/modules/relayer/utils.js.map +1 -0
  274. package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js +15 -0
  275. package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  276. package/_esm/ethers/cleartext/createFhevmCleartextClient.js +9 -0
  277. package/_esm/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
  278. package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js +8 -0
  279. package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  280. package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js +8 -0
  281. package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  282. package/_esm/ethers/cleartext/decorators/decrypt.js +7 -0
  283. package/_esm/ethers/cleartext/decorators/decrypt.js.map +1 -0
  284. package/_esm/ethers/cleartext/decorators/encrypt.js +7 -0
  285. package/_esm/ethers/cleartext/decorators/encrypt.js.map +1 -0
  286. package/_esm/ethers/cleartext/index.js +5 -0
  287. package/_esm/ethers/cleartext/index.js.map +1 -0
  288. package/_esm/ethers/clients/createFhevmBaseClient.js +2 -1
  289. package/_esm/ethers/clients/createFhevmBaseClient.js.map +1 -1
  290. package/_esm/ethers/clients/createFhevmClient.js +2 -2
  291. package/_esm/ethers/clients/createFhevmClient.js.map +1 -1
  292. package/_esm/ethers/clients/createFhevmDecryptClient.js +1 -1
  293. package/_esm/ethers/clients/createFhevmDecryptClient.js.map +1 -1
  294. package/_esm/ethers/clients/createFhevmEncryptClient.js +1 -1
  295. package/_esm/ethers/clients/createFhevmEncryptClient.js.map +1 -1
  296. package/_esm/ethers/clients/decorators/decrypt.js +7 -0
  297. package/_esm/ethers/clients/decorators/decrypt.js.map +1 -0
  298. package/_esm/ethers/clients/decorators/encrypt.js +7 -0
  299. package/_esm/ethers/clients/decorators/encrypt.js.map +1 -0
  300. package/_esm/ethers/index.js +1 -1
  301. package/_esm/ethers/index.js.map +1 -1
  302. package/_esm/ethers/internal/config.js +38 -0
  303. package/_esm/ethers/internal/config.js.map +1 -0
  304. package/_esm/ethers/internal/ethereum-ct.js +39 -0
  305. package/_esm/ethers/internal/ethereum-ct.js.map +1 -0
  306. package/_esm/ethers/internal/ethers-p.js +0 -43
  307. package/_esm/ethers/internal/ethers-p.js.map +1 -1
  308. package/_esm/ethers/internal/runtime-ct.js +21 -0
  309. package/_esm/ethers/internal/runtime-ct.js.map +1 -0
  310. package/_esm/ethers/internal/runtime.js +21 -0
  311. package/_esm/ethers/internal/runtime.js.map +1 -0
  312. package/_esm/ethers/runtime/initFhevmDecryptRuntime.js +2 -1
  313. package/_esm/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
  314. package/_esm/ethers/runtime/initFhevmEncryptRuntime.js +2 -1
  315. package/_esm/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
  316. package/_esm/ethers/runtime/initFhevmRuntime.js +2 -1
  317. package/_esm/ethers/runtime/initFhevmRuntime.js.map +1 -1
  318. package/_esm/index.js +2 -0
  319. package/_esm/index.js.map +1 -0
  320. package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js +15 -0
  321. package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
  322. package/_esm/viem/cleartext/createFhevmCleartextClient.js +9 -0
  323. package/_esm/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
  324. package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js +8 -0
  325. package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
  326. package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js +8 -0
  327. package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
  328. package/_esm/viem/cleartext/decorators/decrypt.js +7 -0
  329. package/_esm/viem/cleartext/decorators/decrypt.js.map +1 -0
  330. package/_esm/viem/cleartext/decorators/encrypt.js +7 -0
  331. package/_esm/viem/cleartext/decorators/encrypt.js.map +1 -0
  332. package/_esm/viem/cleartext/index.js +5 -0
  333. package/_esm/viem/cleartext/index.js.map +1 -0
  334. package/_esm/viem/clients/createFhevmBaseClient.js +2 -1
  335. package/_esm/viem/clients/createFhevmBaseClient.js.map +1 -1
  336. package/_esm/viem/clients/createFhevmClient.js +2 -2
  337. package/_esm/viem/clients/createFhevmClient.js.map +1 -1
  338. package/_esm/viem/clients/createFhevmDecryptClient.js +1 -1
  339. package/_esm/viem/clients/createFhevmDecryptClient.js.map +1 -1
  340. package/_esm/viem/clients/createFhevmEncryptClient.js +1 -2
  341. package/_esm/viem/clients/createFhevmEncryptClient.js.map +1 -1
  342. package/_esm/viem/clients/decorators/decrypt.js +7 -0
  343. package/_esm/viem/clients/decorators/decrypt.js.map +1 -0
  344. package/_esm/viem/clients/decorators/encrypt.js +7 -0
  345. package/_esm/viem/clients/decorators/encrypt.js.map +1 -0
  346. package/_esm/viem/index.js +2 -2
  347. package/_esm/viem/index.js.map +1 -1
  348. package/_esm/viem/internal/config.js +38 -0
  349. package/_esm/viem/internal/config.js.map +1 -0
  350. package/_esm/viem/internal/ethereum-ct.js +39 -0
  351. package/_esm/viem/internal/ethereum-ct.js.map +1 -0
  352. package/_esm/viem/internal/runtime-ct.js +21 -0
  353. package/_esm/viem/internal/runtime-ct.js.map +1 -0
  354. package/_esm/viem/internal/runtime.js +21 -0
  355. package/_esm/viem/internal/runtime.js.map +1 -0
  356. package/_esm/viem/internal/viem-p.js +0 -43
  357. package/_esm/viem/internal/viem-p.js.map +1 -1
  358. package/_esm/viem/runtime/initFhevmDecryptRuntime.js +2 -1
  359. package/_esm/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
  360. package/_esm/viem/runtime/initFhevmEncryptRuntime.js +2 -1
  361. package/_esm/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
  362. package/_esm/viem/runtime/initFhevmRuntime.js +2 -1
  363. package/_esm/viem/runtime/initFhevmRuntime.js.map +1 -1
  364. package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
  365. package/_types/core/actions/chain/index.d.ts +4 -4
  366. package/_types/core/actions/chain/index.d.ts.map +1 -1
  367. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +7 -2
  368. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  369. package/_types/core/actions/chain/parseTransportKeypair.d.ts +2 -2
  370. package/_types/core/actions/chain/parseTransportKeypair.d.ts.map +1 -1
  371. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +1 -1
  372. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
  373. package/_types/core/actions/decrypt/decryptValue.d.ts +5 -13
  374. package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
  375. package/_types/core/actions/decrypt/decryptValues.d.ts +5 -13
  376. package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
  377. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +5 -13
  378. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
  379. package/_types/core/actions/decrypt/index.d.ts +3 -3
  380. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  381. package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts +5 -2
  382. package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -1
  383. package/_types/core/base/bytes.d.ts +1 -0
  384. package/_types/core/base/bytes.d.ts.map +1 -1
  385. package/_types/core/base/sign.d.ts +10 -0
  386. package/_types/core/base/sign.d.ts.map +1 -0
  387. package/_types/core/base/typedValue.d.ts +2 -1
  388. package/_types/core/base/typedValue.d.ts.map +1 -1
  389. package/_types/core/base/uint.d.ts +3 -0
  390. package/_types/core/base/uint.d.ts.map +1 -1
  391. package/_types/core/clients/decorators/decrypt.d.ts +6 -15
  392. package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
  393. package/_types/core/coprocessor/ZkProof-p.d.ts +2 -2
  394. package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
  395. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +2 -1
  396. package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
  397. package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
  398. package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts +0 -2
  399. package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts.map +1 -1
  400. package/_types/core/handle/FheType.d.ts +1 -0
  401. package/_types/core/handle/FheType.d.ts.map +1 -1
  402. package/_types/core/host-contracts/checkDelegation.d.ts +22 -0
  403. package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -0
  404. package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts +19 -0
  405. package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -0
  406. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +20 -0
  407. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -0
  408. package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +1 -1
  409. package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
  410. package/_types/core/modules/decrypt/mock.d.ts +5 -5
  411. package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
  412. package/_types/core/modules/encrypt/mock.d.ts +6 -6
  413. package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
  414. package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
  415. package/_types/core/modules/encrypt/types.d.ts +6 -2
  416. package/_types/core/modules/encrypt/types.d.ts.map +1 -1
  417. package/_types/core/modules/ethereum/types-ct.d.ts +46 -0
  418. package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -0
  419. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts +3 -0
  420. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -0
  421. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts +3 -0
  422. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +1 -0
  423. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts +3 -0
  424. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -0
  425. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +3 -0
  426. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -0
  427. package/_types/core/modules/relayer/cleartext/mock.d.ts +3 -0
  428. package/_types/core/modules/relayer/cleartext/mock.d.ts.map +1 -0
  429. package/_types/core/modules/relayer/cleartext/signers.d.ts +7 -0
  430. package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -0
  431. package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts +2 -2
  432. package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts.map +1 -1
  433. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts +2 -2
  434. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +1 -1
  435. package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts +2 -2
  436. package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts.map +1 -1
  437. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts +2 -2
  438. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  439. package/_types/core/modules/relayer/types.d.ts +14 -5
  440. package/_types/core/modules/relayer/types.d.ts.map +1 -1
  441. package/_types/core/modules/relayer/utils.d.ts +4 -0
  442. package/_types/core/modules/relayer/utils.d.ts.map +1 -0
  443. package/_types/core/types/index.d.ts +1 -0
  444. package/_types/core/types/index.d.ts.map +1 -1
  445. package/_types/core/types/kms.d.ts +21 -0
  446. package/_types/core/types/kms.d.ts.map +1 -1
  447. package/_types/core/types/zkProof-p.d.ts +2 -1
  448. package/_types/core/types/zkProof-p.d.ts.map +1 -1
  449. package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
  450. package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
  451. package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts +11 -0
  452. package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
  453. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
  454. package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
  455. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
  456. package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
  457. package/_types/ethers/cleartext/decorators/decrypt.d.ts +6 -0
  458. package/_types/ethers/cleartext/decorators/decrypt.d.ts.map +1 -0
  459. package/_types/ethers/cleartext/decorators/encrypt.d.ts +6 -0
  460. package/_types/ethers/cleartext/decorators/encrypt.d.ts.map +1 -0
  461. package/_types/ethers/cleartext/index.d.ts +5 -0
  462. package/_types/ethers/cleartext/index.d.ts.map +1 -0
  463. package/_types/ethers/clients/createFhevmBaseClient.d.ts.map +1 -1
  464. package/_types/ethers/clients/decorators/decrypt.d.ts +6 -0
  465. package/_types/ethers/clients/decorators/decrypt.d.ts.map +1 -0
  466. package/_types/ethers/clients/decorators/encrypt.d.ts +6 -0
  467. package/_types/ethers/clients/decorators/encrypt.d.ts.map +1 -0
  468. package/_types/ethers/index.d.ts +1 -1
  469. package/_types/ethers/index.d.ts.map +1 -1
  470. package/_types/ethers/internal/config.d.ts +15 -0
  471. package/_types/ethers/internal/config.d.ts.map +1 -0
  472. package/_types/ethers/internal/ethereum-ct.d.ts +3 -0
  473. package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -0
  474. package/_types/ethers/internal/ethers-p.d.ts +1 -13
  475. package/_types/ethers/internal/ethers-p.d.ts.map +1 -1
  476. package/_types/ethers/internal/runtime-ct.d.ts +3 -0
  477. package/_types/ethers/internal/runtime-ct.d.ts.map +1 -0
  478. package/_types/ethers/internal/runtime.d.ts +3 -0
  479. package/_types/ethers/internal/runtime.d.ts.map +1 -0
  480. package/_types/ethers/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
  481. package/_types/ethers/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
  482. package/_types/ethers/runtime/initFhevmRuntime.d.ts.map +1 -1
  483. package/_types/index.d.ts +2 -0
  484. package/_types/index.d.ts.map +1 -0
  485. package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
  486. package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
  487. package/_types/viem/cleartext/createFhevmCleartextClient.d.ts +11 -0
  488. package/_types/viem/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
  489. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
  490. package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
  491. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
  492. package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
  493. package/_types/viem/cleartext/decorators/decrypt.d.ts +6 -0
  494. package/_types/viem/cleartext/decorators/decrypt.d.ts.map +1 -0
  495. package/_types/viem/cleartext/decorators/encrypt.d.ts +6 -0
  496. package/_types/viem/cleartext/decorators/encrypt.d.ts.map +1 -0
  497. package/_types/viem/cleartext/index.d.ts +5 -0
  498. package/_types/viem/cleartext/index.d.ts.map +1 -0
  499. package/_types/viem/clients/createFhevmBaseClient.d.ts.map +1 -1
  500. package/_types/viem/clients/decorators/decrypt.d.ts +6 -0
  501. package/_types/viem/clients/decorators/decrypt.d.ts.map +1 -0
  502. package/_types/viem/clients/decorators/encrypt.d.ts +6 -0
  503. package/_types/viem/clients/decorators/encrypt.d.ts.map +1 -0
  504. package/_types/viem/index.d.ts +2 -2
  505. package/_types/viem/index.d.ts.map +1 -1
  506. package/_types/viem/internal/config.d.ts +15 -0
  507. package/_types/viem/internal/config.d.ts.map +1 -0
  508. package/_types/viem/internal/ethereum-ct.d.ts +3 -0
  509. package/_types/viem/internal/ethereum-ct.d.ts.map +1 -0
  510. package/_types/viem/internal/runtime-ct.d.ts +3 -0
  511. package/_types/viem/internal/runtime-ct.d.ts.map +1 -0
  512. package/_types/viem/internal/runtime.d.ts +3 -0
  513. package/_types/viem/internal/runtime.d.ts.map +1 -0
  514. package/_types/viem/internal/viem-p.d.ts +1 -13
  515. package/_types/viem/internal/viem-p.d.ts.map +1 -1
  516. package/_types/viem/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
  517. package/_types/viem/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
  518. package/_types/viem/runtime/initFhevmRuntime.d.ts.map +1 -1
  519. package/core/_version.ts +1 -1
  520. package/core/actions/base/fetchVerifiedInputProof.ts +1 -1
  521. package/core/actions/base/signDecryptionPermit.ts +2 -0
  522. package/core/actions/chain/index.ts +11 -11
  523. package/core/actions/chain/parseSignedDecryptionPermit.ts +9 -6
  524. package/core/actions/chain/parseTransportKeypair.ts +3 -7
  525. package/core/actions/chain/serializeTransportKeypair.ts +0 -2
  526. package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +1 -1
  527. package/core/actions/decrypt/decryptValue.ts +9 -28
  528. package/core/actions/decrypt/decryptValues.ts +9 -28
  529. package/core/actions/decrypt/decryptValuesFromPairs.ts +9 -28
  530. package/core/actions/decrypt/index.ts +3 -14
  531. package/core/actions/host/getUserDecryptionDelegationExpirationDate.ts +22 -18
  532. package/core/base/bytes.ts +8 -0
  533. package/core/base/sign.ts +75 -0
  534. package/core/base/typedValue.ts +18 -0
  535. package/core/base/uint.ts +32 -0
  536. package/core/clients/decorators/decrypt.ts +12 -28
  537. package/core/coprocessor/InputProof-p.ts +2 -2
  538. package/core/coprocessor/ZkProof-p.ts +21 -9
  539. package/core/coprocessor/ZkProofBuilder-p.ts +15 -8
  540. package/core/coprocessor/encrypt.ts +1 -3
  541. package/core/coprocessor/fetchVerifiedInputProof.ts +7 -13
  542. package/core/handle/FheType.ts +5 -2
  543. package/core/host-contracts/KmsSignersContext-p.ts +1 -1
  544. package/core/host-contracts/checkDelegation.ts +114 -0
  545. package/core/host-contracts/getUserDecryptionDelegationExpirationDate.ts +45 -0
  546. package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +77 -0
  547. package/core/host-contracts/persistAllowed.ts +1 -1
  548. package/core/kms/fetchKmsSignedcryptedShares-p.ts +31 -29
  549. package/core/kms/publicDecrypt.ts +6 -12
  550. package/core/modules/decrypt/mock.ts +126 -13
  551. package/core/modules/encrypt/mock.ts +206 -12
  552. package/core/modules/encrypt/module/api-p.ts +7 -2
  553. package/core/modules/encrypt/types.ts +6 -2
  554. package/core/modules/ethereum/types-ct.ts +89 -0
  555. package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +94 -0
  556. package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +147 -0
  557. package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +67 -0
  558. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +141 -0
  559. package/core/modules/relayer/cleartext/mock.ts +54 -0
  560. package/core/modules/relayer/cleartext/signers.ts +52 -0
  561. package/core/modules/relayer/module/fetchCoprocessorSignatures.ts +4 -4
  562. package/core/modules/relayer/module/fetchDelegatedUserDecrypt.ts +3 -3
  563. package/core/modules/relayer/module/fetchPublicDecrypt.ts +3 -3
  564. package/core/modules/relayer/module/fetchUserDecrypt.ts +3 -3
  565. package/core/modules/relayer/types.ts +13 -5
  566. package/core/modules/relayer/utils.ts +17 -0
  567. package/core/types/index.ts +1 -0
  568. package/core/types/kms.ts +19 -0
  569. package/core/types/zkProof-p.ts +3 -1
  570. package/ethers/cleartext/createFhevmCleartextBaseClient.ts +25 -0
  571. package/ethers/cleartext/createFhevmCleartextClient.ts +20 -0
  572. package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +18 -0
  573. package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +19 -0
  574. package/ethers/cleartext/decorators/decrypt.ts +12 -0
  575. package/ethers/cleartext/decorators/encrypt.ts +12 -0
  576. package/ethers/cleartext/index.ts +4 -0
  577. package/ethers/cleartext/package.json +6 -0
  578. package/ethers/clients/createFhevmBaseClient.ts +2 -1
  579. package/ethers/clients/createFhevmClient.ts +2 -2
  580. package/ethers/clients/createFhevmDecryptClient.ts +1 -1
  581. package/ethers/clients/createFhevmEncryptClient.ts +1 -1
  582. package/ethers/clients/decorators/decrypt.ts +12 -0
  583. package/ethers/clients/decorators/encrypt.ts +12 -0
  584. package/ethers/index.ts +1 -1
  585. package/ethers/internal/config.ts +50 -0
  586. package/ethers/internal/ethereum-ct.ts +61 -0
  587. package/ethers/internal/ethers-p.ts +1 -56
  588. package/ethers/internal/runtime-ct.ts +28 -0
  589. package/ethers/internal/runtime.ts +28 -0
  590. package/ethers/runtime/initFhevmDecryptRuntime.ts +2 -1
  591. package/ethers/runtime/initFhevmEncryptRuntime.ts +2 -1
  592. package/ethers/runtime/initFhevmRuntime.ts +2 -1
  593. package/index.ts +0 -0
  594. package/package.json +14 -2
  595. package/viem/cleartext/createFhevmCleartextBaseClient.ts +28 -0
  596. package/viem/cleartext/createFhevmCleartextClient.ts +20 -0
  597. package/viem/cleartext/createFhevmCleartextDecryptClient.ts +21 -0
  598. package/viem/cleartext/createFhevmCleartextEncryptClient.ts +22 -0
  599. package/viem/cleartext/decorators/decrypt.ts +12 -0
  600. package/viem/cleartext/decorators/encrypt.ts +12 -0
  601. package/viem/cleartext/index.ts +4 -0
  602. package/viem/cleartext/package.json +6 -0
  603. package/viem/clients/createFhevmBaseClient.ts +2 -1
  604. package/viem/clients/createFhevmClient.ts +2 -2
  605. package/viem/clients/createFhevmDecryptClient.ts +1 -1
  606. package/viem/clients/createFhevmEncryptClient.ts +1 -3
  607. package/viem/clients/decorators/decrypt.ts +12 -0
  608. package/viem/clients/decorators/encrypt.ts +12 -0
  609. package/viem/index.ts +2 -2
  610. package/viem/internal/config.ts +50 -0
  611. package/viem/internal/ethereum-ct.ts +61 -0
  612. package/viem/internal/runtime-ct.ts +28 -0
  613. package/viem/internal/runtime.ts +28 -0
  614. package/viem/internal/viem-p.ts +1 -56
  615. package/viem/runtime/initFhevmDecryptRuntime.ts +2 -1
  616. package/viem/runtime/initFhevmEncryptRuntime.ts +2 -1
  617. package/viem/runtime/initFhevmRuntime.ts +2 -1
  618. package/_cjs/core/modules/relayer/mock.js +0 -29
  619. package/_cjs/core/modules/relayer/mock.js.map +0 -1
  620. package/_cjs/ethers/decorators/decrypt.js.map +0 -1
  621. package/_cjs/ethers/decorators/encrypt.js.map +0 -1
  622. package/_cjs/viem/decorators/decrypt.js.map +0 -1
  623. package/_cjs/viem/decorators/encrypt.js.map +0 -1
  624. package/_esm/core/modules/relayer/mock.js +0 -28
  625. package/_esm/core/modules/relayer/mock.js.map +0 -1
  626. package/_esm/ethers/decorators/decrypt.js +0 -7
  627. package/_esm/ethers/decorators/decrypt.js.map +0 -1
  628. package/_esm/ethers/decorators/encrypt.js +0 -7
  629. package/_esm/ethers/decorators/encrypt.js.map +0 -1
  630. package/_esm/viem/decorators/decrypt.js +0 -7
  631. package/_esm/viem/decorators/decrypt.js.map +0 -1
  632. package/_esm/viem/decorators/encrypt.js +0 -7
  633. package/_esm/viem/decorators/encrypt.js.map +0 -1
  634. package/_types/core/modules/relayer/mock.d.ts +0 -3
  635. package/_types/core/modules/relayer/mock.d.ts.map +0 -1
  636. package/_types/ethers/decorators/decrypt.d.ts +0 -6
  637. package/_types/ethers/decorators/decrypt.d.ts.map +0 -1
  638. package/_types/ethers/decorators/encrypt.d.ts +0 -6
  639. package/_types/ethers/decorators/encrypt.d.ts.map +0 -1
  640. package/_types/viem/decorators/decrypt.d.ts +0 -6
  641. package/_types/viem/decorators/decrypt.d.ts.map +0 -1
  642. package/_types/viem/decorators/encrypt.d.ts +0 -6
  643. package/_types/viem/decorators/encrypt.d.ts.map +0 -1
  644. package/core/modules/relayer/mock.ts +0 -47
  645. package/ethers/decorators/decrypt.ts +0 -12
  646. package/ethers/decorators/encrypt.ts +0 -12
  647. package/viem/decorators/decrypt.ts +0 -12
  648. package/viem/decorators/encrypt.ts +0 -12
@@ -15,6 +15,7 @@ import { assertKmsDecryptionBitLimit } from './utils.js';
15
15
  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
+ import { checkDelegation } from '../host-contracts/checkDelegation.js';
18
19
 
19
20
  /*
20
21
  See: in KMS (eip712Domain)
@@ -118,11 +119,20 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
118
119
  signedPermit.assertNotExpired();
119
120
 
120
121
  // 7. Check: ACL permissions (user is signer or delegatorAddress)
121
- await checkPersistAllowed(context, {
122
- address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
123
- userAddress: encryptedDataOwnerAddress,
124
- handleContractPairs,
125
- });
122
+ if (signedPermit.isDelegated) {
123
+ await checkDelegation(context, {
124
+ address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
125
+ delegate: signerAddress,
126
+ delegator: encryptedDataOwnerAddress,
127
+ handleContractPairs,
128
+ });
129
+ } else {
130
+ await checkPersistAllowed(context, {
131
+ address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
132
+ userAddress: encryptedDataOwnerAddress,
133
+ handleContractPairs,
134
+ });
135
+ }
126
136
 
127
137
  // 8. Verify the EIP712 signature
128
138
  // Not required because a signedPermit is guaranteed to be verified.
@@ -157,36 +167,28 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
157
167
  // Safe casts: the discriminated union on parameters guarantees
158
168
  // that options type matches signedPermit type, but TS can't prove
159
169
  // it after destructuring (nested discriminant limitation).
160
- const relayerUrl = context.chain.fhevm.relayerUrl;
161
-
162
170
  let shares: readonly KmsSigncryptedShare[];
163
171
 
164
172
  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,
173
+ shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(context, {
174
+ payload: {
175
+ handleContractPairs,
176
+ kmsDecryptEip712Signer: signerAddress,
177
+ kmsDecryptEip712Message: signedPermit.eip712.message,
178
+ kmsDecryptEip712Signature: signature,
175
179
  },
176
- );
180
+ options: relayerOptions as RelayerDelegatedUserDecryptOptions,
181
+ });
177
182
  } 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,
183
+ shares = await context.runtime.relayer.fetchUserDecrypt(context, {
184
+ payload: {
185
+ handleContractPairs,
186
+ kmsDecryptEip712Signer: signerAddress,
187
+ kmsDecryptEip712Message: signedPermit.eip712.message,
188
+ kmsDecryptEip712Signature: signature,
188
189
  },
189
- );
190
+ options: relayerOptions as RelayerUserDecryptOptions,
191
+ });
190
192
  }
191
193
 
192
194
  // 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
  //////////////////////////////////////////////////////////////////////////////
@@ -1,5 +1,18 @@
1
1
  /* eslint-disable @typescript-eslint/require-await */
2
+ import { concatBytes, hexToBytes32 } from '../../base/bytes.js';
3
+ import { remove0x } from '../../base/string.js';
4
+ import { typedValueToBytes32Hex } from '../../base/typedValue.js';
2
5
  import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
6
+ import type {
7
+ FheEncryptionCrs,
8
+ FheEncryptionCrsBrand,
9
+ FheEncryptionCrsBytes,
10
+ FheEncryptionKeyBytes,
11
+ FheEncryptionPublicKey,
12
+ FheEncryptionPublicKeyBrand,
13
+ FheEncryptionPublicKeyBytes,
14
+ } from '../../types/fheEncryptionKey.js';
15
+ import type { Bytes, BytesHex, UintNumber } from '../../types/primitives.js';
3
16
  import type {
4
17
  BuildWithProofPackedReturnTypeParameters,
5
18
  BuildWithProofPackedReturnType,
@@ -18,6 +31,83 @@ import type {
18
31
  DeserializeFheEncryptionCrsReturnType,
19
32
  } from './types.js';
20
33
 
34
+ ////////////////////////////////////////////////////////////////////////////////
35
+
36
+ const GET_NATIVE_FUNC = Symbol('CleartextTFHELib.getNative');
37
+ const PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN = Symbol('CleartextTFHELib.token');
38
+
39
+ ////////////////////////////////////////////////////////////////////////////////
40
+ // TfheCompactPublicKeyImpl
41
+ ////////////////////////////////////////////////////////////////////////////////
42
+
43
+ class CleartextTfheCompactPublicKeyImpl implements FheEncryptionPublicKey {
44
+ declare readonly [FheEncryptionPublicKeyBrand]: never;
45
+
46
+ readonly #id: string;
47
+ readonly #tfheCompactPublicKeyWasmType: Bytes;
48
+
49
+ constructor(token: symbol, id: string, publicEncKeyMlKem512Wasm: Bytes) {
50
+ if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
51
+ throw new Error('Unauthorized');
52
+ }
53
+ this.#id = id;
54
+ this.#tfheCompactPublicKeyWasmType = publicEncKeyMlKem512Wasm;
55
+ }
56
+
57
+ public get id(): string {
58
+ return this.#id;
59
+ }
60
+
61
+ public static [GET_NATIVE_FUNC](key: unknown, token: symbol): Bytes {
62
+ if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
63
+ throw new Error('Unauthorized');
64
+ }
65
+ if (!(key instanceof CleartextTfheCompactPublicKeyImpl)) {
66
+ throw new Error('Unauthorized');
67
+ }
68
+ return key.#tfheCompactPublicKeyWasmType;
69
+ }
70
+ }
71
+
72
+ ////////////////////////////////////////////////////////////////////////////////
73
+ // TfheCompactPkeCrsImpl
74
+ ////////////////////////////////////////////////////////////////////////////////
75
+
76
+ class CleartextTfheCompactPkeCrsImpl implements FheEncryptionCrs {
77
+ declare readonly [FheEncryptionCrsBrand]: never;
78
+
79
+ readonly #id: string;
80
+ readonly #capacity: UintNumber;
81
+ readonly #compactPublicKeyWasmType: Bytes;
82
+
83
+ constructor(token: symbol, id: string, capacity: UintNumber, compactPublicKeyWasmType: Bytes) {
84
+ if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
85
+ throw new Error('Unauthorized');
86
+ }
87
+ this.#id = id;
88
+ this.#capacity = capacity;
89
+ this.#compactPublicKeyWasmType = compactPublicKeyWasmType;
90
+ }
91
+
92
+ public get id(): string {
93
+ return this.#id;
94
+ }
95
+
96
+ public get capacity(): UintNumber {
97
+ return this.#capacity;
98
+ }
99
+
100
+ public static [GET_NATIVE_FUNC](key: unknown, token: symbol): Bytes {
101
+ if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
102
+ throw new Error('Unauthorized');
103
+ }
104
+ if (!(key instanceof CleartextTfheCompactPkeCrsImpl)) {
105
+ throw new Error('Unauthorized');
106
+ }
107
+ return key.#compactPublicKeyWasmType;
108
+ }
109
+ }
110
+
21
111
  ////////////////////////////////////////////////////////////////////////////////
22
112
  // parseTFHEProvenCompactCiphertextList
23
113
  ////////////////////////////////////////////////////////////////////////////////
@@ -33,9 +123,36 @@ export async function parseTFHEProvenCompactCiphertextList(
33
123
  ////////////////////////////////////////////////////////////////////////////////
34
124
 
35
125
  export async function buildWithProofPacked(
36
- _parameters: BuildWithProofPackedReturnTypeParameters,
126
+ parameters: BuildWithProofPackedReturnTypeParameters,
37
127
  ): Promise<BuildWithProofPackedReturnType> {
38
- throw new Error('Not yet implemented');
128
+ const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues, extraData } = parameters;
129
+
130
+ const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
131
+ const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
132
+
133
+ if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
134
+ throw new Error('Invalid tfhePublicKey');
135
+ }
136
+ if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
137
+ throw new Error('Invalid tfheCrs');
138
+ }
139
+
140
+ const typedValuesBytes32HexNo0x = typedValues.map(typedValueToBytes32Hex).map(remove0x).join('');
141
+ const cleartextExtraData = `0x${typedValuesBytes32HexNo0x}${remove0x(extraData)}` as BytesHex;
142
+
143
+ // Per typedValue: random nonce (8 bytes) || metaData || value bytes (32).
144
+ const perValueBlobs = typedValues.map((tv) => {
145
+ const nonce = crypto.getRandomValues(new Uint8Array(new ArrayBuffer(8)));
146
+ const valueBytes = hexToBytes32(typedValueToBytes32Hex(tv));
147
+ return concatBytes(nonce, metaData, valueBytes);
148
+ });
149
+
150
+ const ciphertextWithZKProofBytes = concatBytes(...perValueBlobs);
151
+
152
+ return {
153
+ ciphertextWithZKProofBytes,
154
+ extraData: cleartextExtraData,
155
+ };
39
156
  }
40
157
 
41
158
  ////////////////////////////////////////////////////////////////////////////////
@@ -43,9 +160,40 @@ export async function buildWithProofPacked(
43
160
  ////////////////////////////////////////////////////////////////////////////////
44
161
 
45
162
  export async function serializeFheEncryptionKey(
46
- _parameters: SerializeFheEncryptionKeyParameters,
163
+ parameters: SerializeFheEncryptionKeyParameters,
47
164
  ): Promise<SerializeFheEncryptionKeyReturnType> {
48
- throw new Error('Not yet implemented');
165
+ const { fheEncryptionKey: publicEncryptionParams } = parameters;
166
+
167
+ const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
168
+ const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
169
+
170
+ if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
171
+ throw new Error('Invalid tfhePublicKey');
172
+ }
173
+ if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
174
+ throw new Error('Invalid tfheCrs');
175
+ }
176
+
177
+ const tfhePublicKeyBytes: Bytes = CleartextTfheCompactPublicKeyImpl[GET_NATIVE_FUNC](
178
+ tfheCompactPublicKeyImpl,
179
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
180
+ );
181
+ const tfheCrsBytes: Bytes = CleartextTfheCompactPkeCrsImpl[GET_NATIVE_FUNC](
182
+ tfheCompactPkeCrsImpl,
183
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
184
+ );
185
+
186
+ return Object.freeze({
187
+ publicKeyBytes: Object.freeze({
188
+ id: publicEncryptionParams.publicKey.id,
189
+ bytes: tfhePublicKeyBytes,
190
+ }),
191
+ crsBytes: Object.freeze({
192
+ id: publicEncryptionParams.crs.id,
193
+ capacity: publicEncryptionParams.crs.capacity,
194
+ bytes: tfheCrsBytes,
195
+ }),
196
+ }) as FheEncryptionKeyBytes;
49
197
  }
50
198
 
51
199
  ////////////////////////////////////////////////////////////////////////////////
@@ -53,9 +201,25 @@ export async function serializeFheEncryptionKey(
53
201
  ////////////////////////////////////////////////////////////////////////////////
54
202
 
55
203
  export async function serializeFheEncryptionPublicKey(
56
- _parameters: SerializeFheEncryptionPublicKeyParameters,
204
+ parameters: SerializeFheEncryptionPublicKeyParameters,
57
205
  ): Promise<SerializeFheEncryptionPublicKeyReturnType> {
58
- throw new Error('Not yet implemented');
206
+ const { publicKey: tfhePublicKey } = parameters;
207
+
208
+ const tfheCompactPublicKeyImpl = tfhePublicKey;
209
+
210
+ if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
211
+ throw new Error('Invalid tfhePublicKey');
212
+ }
213
+
214
+ const tfhePublicKeyBytes: Bytes = CleartextTfheCompactPublicKeyImpl[GET_NATIVE_FUNC](
215
+ tfheCompactPublicKeyImpl,
216
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
217
+ );
218
+
219
+ return Object.freeze({
220
+ id: tfhePublicKey.id,
221
+ bytes: tfhePublicKeyBytes,
222
+ }) as FheEncryptionPublicKeyBytes;
59
223
  }
60
224
 
61
225
  ////////////////////////////////////////////////////////////////////////////////
@@ -63,9 +227,26 @@ export async function serializeFheEncryptionPublicKey(
63
227
  ////////////////////////////////////////////////////////////////////////////////
64
228
 
65
229
  export async function serializeFheEncryptionCrs(
66
- _parameters: SerializeFheEncryptionCrsParameters,
230
+ parameters: SerializeFheEncryptionCrsParameters,
67
231
  ): Promise<SerializeFheEncryptionCrsReturnType> {
68
- throw new Error('Not yet implemented');
232
+ const { crs: tfheCrs } = parameters;
233
+
234
+ const tfheCompactPkeCrsImpl = tfheCrs;
235
+
236
+ if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
237
+ throw new Error('Invalid tfheCrs');
238
+ }
239
+
240
+ const tfheCrsBytes: Bytes = CleartextTfheCompactPkeCrsImpl[GET_NATIVE_FUNC](
241
+ tfheCompactPkeCrsImpl,
242
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
243
+ );
244
+
245
+ return Object.freeze({
246
+ id: tfheCrs.id,
247
+ capacity: tfheCrs.capacity,
248
+ bytes: tfheCrsBytes,
249
+ }) as FheEncryptionCrsBytes;
69
250
  }
70
251
 
71
252
  ////////////////////////////////////////////////////////////////////////////////
@@ -73,9 +254,16 @@ export async function serializeFheEncryptionCrs(
73
254
  ////////////////////////////////////////////////////////////////////////////////
74
255
 
75
256
  export async function deserializeFheEncryptionCrs(
76
- _parameters: DeserializeFheEncryptionCrsParameters,
257
+ parameters: DeserializeFheEncryptionCrsParameters,
77
258
  ): Promise<DeserializeFheEncryptionCrsReturnType> {
78
- throw new Error('Not yet implemented');
259
+ const { crsBytes: globalFheCrsBytes } = parameters;
260
+
261
+ return new CleartextTfheCompactPkeCrsImpl(
262
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
263
+ globalFheCrsBytes.id,
264
+ globalFheCrsBytes.capacity,
265
+ globalFheCrsBytes.bytes,
266
+ );
79
267
  }
80
268
 
81
269
  ////////////////////////////////////////////////////////////////////////////////
@@ -83,9 +271,15 @@ export async function deserializeFheEncryptionCrs(
83
271
  ////////////////////////////////////////////////////////////////////////////////
84
272
 
85
273
  export async function deserializeFheEncryptionPublicKey(
86
- _parameters: DeserializeFheEncryptionPublicKeyParameters,
274
+ parameters: DeserializeFheEncryptionPublicKeyParameters,
87
275
  ): Promise<DeserializeFheEncryptionPublicKeyReturnType> {
88
- throw new Error('Not yet implemented');
276
+ const { publicKeyBytes: globalFhePublicKeyBytes } = parameters;
277
+
278
+ return new CleartextTfheCompactPublicKeyImpl(
279
+ PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
280
+ globalFhePublicKeyBytes.id,
281
+ globalFhePublicKeyBytes.bytes,
282
+ );
89
283
  }
90
284
 
91
285
  ////////////////////////////////////////////////////////////////////////////////
@@ -40,6 +40,7 @@ import { encryptionBitsFromFheTypeId, isFheTypeId } from '../../../handle/FheTyp
40
40
  import { EncryptionError } from '../../../errors/EncryptionError.js';
41
41
  import { getErrorMessage } from '../../../base/errors/utils.js';
42
42
  import { initTfheModule } from './init-p.js';
43
+ import { assertIsTypedValue } from '../../../base/typedValue.js';
43
44
 
44
45
  ////////////////////////////////////////////////////////////////////////////////
45
46
 
@@ -198,7 +199,7 @@ export async function buildWithProofPacked(
198
199
  ): Promise<BuildWithProofPackedReturnType> {
199
200
  await initTfheModule(runtime);
200
201
 
201
- const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues } = parameters;
202
+ const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues, extraData } = parameters;
202
203
 
203
204
  const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
204
205
  const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
@@ -228,6 +229,7 @@ export async function buildWithProofPacked(
228
229
  fheCompactCiphertextListBuilderWasm = CompactCiphertextList.builder(tfheCompactPublicKeyWasm);
229
230
 
230
231
  for (const typedValue of typedValues) {
232
+ assertIsTypedValue(typedValue, {});
231
233
  switch (typedValue.type) {
232
234
  case 'uint8':
233
235
  fheCompactCiphertextListBuilderWasm.push_u8(typedValue.value);
@@ -264,7 +266,10 @@ export async function buildWithProofPacked(
264
266
 
265
267
  ciphertextWithZKProofBytes = tfheProvenCompactCiphertextList.safe_serialize(SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
266
268
 
267
- return ciphertextWithZKProofBytes;
269
+ return Object.freeze({
270
+ ciphertextWithZKProofBytes,
271
+ extraData,
272
+ });
268
273
  } finally {
269
274
  try {
270
275
  if (tfheProvenCompactCiphertextList !== undefined) {
@@ -1,4 +1,4 @@
1
- import type { TypedValue } from '../../types/primitives.js';
1
+ import type { BytesHex, TypedValue } from '../../types/primitives.js';
2
2
  import type { EncryptionBits, FheTypeId } from '../../types/fheType.js';
3
3
  import type {
4
4
  FheEncryptionCrs,
@@ -112,9 +112,13 @@ export type BuildWithProofPackedReturnTypeParameters = {
112
112
  readonly fheEncryptionKey: FheEncryptionKeyWasm;
113
113
  readonly typedValues: TypedValue[];
114
114
  readonly metaData: Uint8Array;
115
+ readonly extraData: BytesHex;
115
116
  };
116
117
 
117
- export type BuildWithProofPackedReturnType = Uint8Array;
118
+ export type BuildWithProofPackedReturnType = {
119
+ readonly ciphertextWithZKProofBytes: Uint8Array;
120
+ readonly extraData: BytesHex;
121
+ };
118
122
 
119
123
  export type BuildWithProofPackedModuleFunction = {
120
124
  buildWithProofPacked(parameters: BuildWithProofPackedReturnTypeParameters): Promise<BuildWithProofPackedReturnType>;