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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/actions/base/fetchEncryptedValues.js +18 -0
  3. package/_cjs/core/actions/base/fetchEncryptedValues.js.map +1 -0
  4. package/_cjs/core/actions/base/index.js +3 -1
  5. package/_cjs/core/actions/base/index.js.map +1 -1
  6. package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
  7. package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
  8. package/_cjs/core/actions/chain/index.js +5 -5
  9. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -2
  10. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  11. package/_cjs/core/actions/chain/parseTransportKeyPair.js +8 -0
  12. package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -0
  13. package/_cjs/core/actions/chain/serializeTransportKeyPair.js +8 -0
  14. package/_cjs/core/actions/chain/serializeTransportKeyPair.js.map +1 -0
  15. package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +8 -0
  16. package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -0
  17. package/_cjs/core/actions/decrypt/index.js +3 -3
  18. package/_cjs/core/actions/decrypt/index.js.map +1 -1
  19. package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
  20. package/_cjs/core/base/address.js.map +1 -1
  21. package/_cjs/core/base/fetch.js +2 -2
  22. package/_cjs/core/base/fetch.js.map +1 -1
  23. package/_cjs/core/base/index.js +0 -5
  24. package/_cjs/core/base/index.js.map +1 -1
  25. package/_cjs/core/base/sign.js +12 -6
  26. package/_cjs/core/base/sign.js.map +1 -1
  27. package/_cjs/core/base/typedValue.js +20 -6
  28. package/_cjs/core/base/typedValue.js.map +1 -1
  29. package/_cjs/core/base/uint.js +23 -0
  30. package/_cjs/core/base/uint.js.map +1 -1
  31. package/_cjs/core/base/wasm.js +1 -1
  32. package/_cjs/core/base/wasm.js.map +1 -1
  33. package/_cjs/core/clients/decorators/base.js +4 -4
  34. package/_cjs/core/clients/decorators/decrypt.js +2 -2
  35. package/_cjs/core/coprocessor/ZkProof-p.js +2 -1
  36. package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
  37. package/_cjs/core/handle/EncryptedValue.js +0 -4
  38. package/_cjs/core/handle/EncryptedValue.js.map +1 -1
  39. package/_cjs/core/handle/FheType.js.map +1 -1
  40. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
  41. package/_cjs/core/host-contracts/checkDelegation.js +13 -0
  42. package/_cjs/core/host-contracts/checkDelegation.js.map +1 -1
  43. package/_cjs/core/host-contracts/constants.js +5 -0
  44. package/_cjs/core/host-contracts/constants.js.map +1 -0
  45. package/_cjs/core/kms/SignedDecryptionPermit-p.js +9 -9
  46. package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  47. package/_cjs/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +48 -48
  48. package/_cjs/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
  49. package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js +3 -3
  50. package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
  51. package/_cjs/core/kms/decryptValuesFromPairs.js +2 -2
  52. package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
  53. package/_cjs/core/kms/index.js +0 -1
  54. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  55. package/_cjs/core/modules/decrypt/module/init-p.js +3 -7
  56. package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
  57. package/_cjs/core/modules/encrypt/mock.js.map +1 -1
  58. package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
  59. package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
  60. package/_cjs/core/modules/encrypt/module/init-p.js +18 -13
  61. package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
  62. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  63. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  64. package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js +27 -0
  65. package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
  66. package/_cjs/core/types/index.js +4 -0
  67. package/_cjs/core/types/index.js.map +1 -1
  68. package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +14 -0
  69. package/_cjs/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
  70. package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
  71. package/_esm/core/_version.js +1 -1
  72. package/_esm/core/actions/base/fetchEncryptedValues.js +16 -0
  73. package/_esm/core/actions/base/fetchEncryptedValues.js.map +1 -0
  74. package/_esm/core/actions/base/index.js +1 -0
  75. package/_esm/core/actions/base/index.js.map +1 -1
  76. package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
  77. package/_esm/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
  78. package/_esm/core/actions/chain/index.js +2 -2
  79. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +3 -3
  80. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  81. package/_esm/core/actions/chain/parseTransportKeyPair.js +5 -0
  82. package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -0
  83. package/_esm/core/actions/chain/serializeTransportKeyPair.js +5 -0
  84. package/_esm/core/actions/chain/{serializeTransportKeypair.js.map → serializeTransportKeyPair.js.map} +1 -1
  85. package/_esm/core/actions/decrypt/generateTransportKeyPair.js +6 -0
  86. package/_esm/core/actions/decrypt/{generateTransportKeypair.js.map → generateTransportKeyPair.js.map} +1 -1
  87. package/_esm/core/actions/decrypt/index.js +3 -1
  88. package/_esm/core/actions/decrypt/index.js.map +1 -1
  89. package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
  90. package/_esm/core/base/address.js.map +1 -1
  91. package/_esm/core/base/fetch.js +2 -2
  92. package/_esm/core/base/fetch.js.map +1 -1
  93. package/_esm/core/base/index.js +1 -1
  94. package/_esm/core/base/index.js.map +1 -1
  95. package/_esm/core/base/sign.js +15 -8
  96. package/_esm/core/base/sign.js.map +1 -1
  97. package/_esm/core/base/typedValue.js +24 -7
  98. package/_esm/core/base/typedValue.js.map +1 -1
  99. package/_esm/core/base/uint.js +21 -0
  100. package/_esm/core/base/uint.js.map +1 -1
  101. package/_esm/core/base/wasm.js +1 -1
  102. package/_esm/core/base/wasm.js.map +1 -1
  103. package/_esm/core/clients/decorators/base.js +4 -4
  104. package/_esm/core/clients/decorators/decrypt.js +2 -2
  105. package/_esm/core/coprocessor/ZkProof-p.js +3 -2
  106. package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
  107. package/_esm/core/handle/EncryptedValue.js +0 -3
  108. package/_esm/core/handle/EncryptedValue.js.map +1 -1
  109. package/_esm/core/handle/FheType.js +10 -17
  110. package/_esm/core/handle/FheType.js.map +1 -1
  111. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
  112. package/_esm/core/host-contracts/checkDelegation.js +19 -5
  113. package/_esm/core/host-contracts/checkDelegation.js.map +1 -1
  114. package/_esm/core/host-contracts/constants.js +2 -0
  115. package/_esm/core/host-contracts/constants.js.map +1 -0
  116. package/_esm/core/kms/SignedDecryptionPermit-p.js +9 -9
  117. package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  118. package/_esm/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +55 -55
  119. package/_esm/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
  120. package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js +4 -4
  121. package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
  122. package/_esm/core/kms/decryptValuesFromPairs.js +2 -2
  123. package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
  124. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  125. package/_esm/core/modules/decrypt/module/init-p.js +13 -11
  126. package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
  127. package/_esm/core/modules/encrypt/mock.js.map +1 -1
  128. package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
  129. package/_esm/core/modules/encrypt/module/index.js.map +1 -1
  130. package/_esm/core/modules/encrypt/module/init-p.js +34 -17
  131. package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
  132. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
  133. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  134. package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js +24 -0
  135. package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
  136. package/_esm/core/types/index.js +1 -1
  137. package/_esm/core/types/index.js.map +1 -1
  138. package/_esm/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +19 -0
  139. package/_esm/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
  140. package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
  141. package/_types/core/actions/base/fetchEncryptedValues.d.ts +16 -0
  142. package/_types/core/actions/base/fetchEncryptedValues.d.ts.map +1 -0
  143. package/_types/core/actions/base/index.d.ts +1 -0
  144. package/_types/core/actions/base/index.d.ts.map +1 -1
  145. package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
  146. package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts.map +1 -1
  147. package/_types/core/actions/chain/index.d.ts +2 -2
  148. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +4 -4
  149. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  150. package/_types/core/actions/chain/{parseTransportKeypair.d.ts → parseTransportKeyPair.d.ts} +5 -5
  151. package/_types/core/actions/chain/{parseTransportKeypair.d.ts.map → parseTransportKeyPair.d.ts.map} +1 -1
  152. package/_types/core/actions/chain/{serializeTransportKeypair.d.ts → serializeTransportKeyPair.d.ts} +6 -6
  153. package/_types/core/actions/chain/{serializeTransportKeypair.d.ts.map → serializeTransportKeyPair.d.ts.map} +1 -1
  154. package/_types/core/actions/decrypt/canDecryptValue.d.ts +4 -4
  155. package/_types/core/actions/decrypt/canDecryptValues.d.ts +2 -2
  156. package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts +2 -2
  157. package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts +2 -2
  158. package/_types/core/actions/decrypt/decryptValue.d.ts +2 -2
  159. package/_types/core/actions/decrypt/decryptValues.d.ts +2 -2
  160. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +2 -2
  161. package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts → generateTransportKeyPair.d.ts} +4 -4
  162. package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts.map → generateTransportKeyPair.d.ts.map} +1 -1
  163. package/_types/core/actions/decrypt/index.d.ts +3 -1
  164. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  165. package/_types/core/actions/encrypt/encryptValue.d.ts +5 -2
  166. package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
  167. package/_types/core/actions/encrypt/encryptValues.d.ts +5 -2
  168. package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
  169. package/_types/core/actions/encrypt/generateZkProof.d.ts +4 -2
  170. package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
  171. package/_types/core/base/address.d.ts.map +1 -1
  172. package/_types/core/base/errors/InvalidTypeError.d.ts +1 -1
  173. package/_types/core/base/errors/InvalidTypeError.d.ts.map +1 -1
  174. package/_types/core/base/index.d.ts +1 -1
  175. package/_types/core/base/index.d.ts.map +1 -1
  176. package/_types/core/base/sign.d.ts.map +1 -1
  177. package/_types/core/base/typedValue.d.ts +3 -13
  178. package/_types/core/base/typedValue.d.ts.map +1 -1
  179. package/_types/core/base/uint.d.ts +4 -0
  180. package/_types/core/base/uint.d.ts.map +1 -1
  181. package/_types/core/clients/decorators/base.d.ts +6 -6
  182. package/_types/core/clients/decorators/base.d.ts.map +1 -1
  183. package/_types/core/clients/decorators/decrypt.d.ts +2 -2
  184. package/_types/core/coprocessor/ZkProof-p.d.ts +2 -1
  185. package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
  186. package/_types/core/handle/EncryptedValue.d.ts +0 -1
  187. package/_types/core/handle/EncryptedValue.d.ts.map +1 -1
  188. package/_types/core/handle/FheType.d.ts +10 -17
  189. package/_types/core/handle/FheType.d.ts.map +1 -1
  190. package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts +2 -2
  191. package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -1
  192. package/_types/core/host-contracts/constants.d.ts +3 -0
  193. package/_types/core/host-contracts/constants.d.ts.map +1 -0
  194. package/_types/core/kms/SignedDecryptionPermit-p.d.ts +6 -6
  195. package/_types/core/kms/{TransportKeypair-p.d.ts → TransportKeyPair-p.d.ts} +23 -23
  196. package/_types/core/kms/{TransportKeypair-p.d.ts.map → TransportKeyPair-p.d.ts.map} +1 -1
  197. package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts +2 -2
  198. package/_types/core/kms/decryptValuesFromPairs.d.ts +3 -3
  199. package/_types/core/kms/index.d.ts +1 -1
  200. package/_types/core/kms/index.d.ts.map +1 -1
  201. package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
  202. package/_types/core/modules/encrypt/mock.d.ts +2 -2
  203. package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
  204. package/_types/core/modules/encrypt/module/api-p.d.ts +2 -2
  205. package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
  206. package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
  207. package/_types/core/modules/encrypt/types.d.ts +2 -2
  208. package/_types/core/modules/encrypt/types.d.ts.map +1 -1
  209. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  210. package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts +13 -0
  211. package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts.map +1 -0
  212. package/_types/core/types/index.d.ts +2 -0
  213. package/_types/core/types/index.d.ts.map +1 -1
  214. package/_types/core/types/primitives.d.ts +4 -0
  215. package/_types/core/types/primitives.d.ts.map +1 -1
  216. package/_types/core/utils-p/decrypt/assertPermitMatchesKeyPair.d.ts +12 -0
  217. package/_types/core/utils-p/decrypt/{assertPermitMatchesKeypair.d.ts.map → assertPermitMatchesKeyPair.d.ts.map} +1 -1
  218. package/core/_version.ts +1 -1
  219. package/core/actions/base/fetchEncryptedValues.ts +42 -0
  220. package/core/actions/base/index.ts +6 -0
  221. package/core/actions/chain/createKmsDelegatedUserDecryptEip712.ts +1 -2
  222. package/core/actions/chain/createKmsUserDecryptEip712.ts +1 -2
  223. package/core/actions/chain/index.ts +8 -8
  224. package/core/actions/chain/parseSignedDecryptionPermit.ts +6 -6
  225. package/core/actions/chain/{parseTransportKeypair.ts → parseTransportKeyPair.ts} +7 -7
  226. package/core/actions/chain/{serializeTransportKeypair.ts → serializeTransportKeyPair.ts} +10 -10
  227. package/core/actions/decrypt/canDecryptValue.ts +4 -4
  228. package/core/actions/decrypt/canDecryptValues.ts +2 -2
  229. package/core/actions/decrypt/canDecryptValuesFromPairs.ts +2 -2
  230. package/core/actions/decrypt/decryptKmsSignedcryptedShares.ts +2 -2
  231. package/core/actions/decrypt/decryptValue.ts +2 -2
  232. package/core/actions/decrypt/decryptValues.ts +2 -2
  233. package/core/actions/decrypt/decryptValuesFromPairs.ts +2 -2
  234. package/core/actions/decrypt/{generateTransportKeypair.ts → generateTransportKeyPair.ts} +7 -7
  235. package/core/actions/decrypt/index.ts +8 -4
  236. package/core/actions/encrypt/encryptValue.ts +2 -2
  237. package/core/actions/encrypt/encryptValues.ts +2 -2
  238. package/core/actions/encrypt/generateZkProof.ts +1 -2
  239. package/core/base/address.ts +2 -2
  240. package/core/base/errors/InvalidTypeError.ts +1 -1
  241. package/core/base/fetch.ts +2 -2
  242. package/core/base/index.ts +0 -1
  243. package/core/base/sign.ts +16 -8
  244. package/core/base/typedValue.ts +32 -25
  245. package/core/base/uint.ts +30 -0
  246. package/core/base/wasm.ts +1 -1
  247. package/core/clients/decorators/base.ts +18 -18
  248. package/core/clients/decorators/decrypt.ts +4 -4
  249. package/core/coprocessor/ZkProof-p.ts +6 -6
  250. package/core/handle/EncryptedValue.ts +0 -4
  251. package/core/handle/FheType.ts +10 -17
  252. package/core/host-contracts/canDecryptValuesFromPairs.ts +5 -5
  253. package/core/host-contracts/checkDelegation.ts +20 -5
  254. package/core/host-contracts/constants.ts +3 -0
  255. package/core/kms/SignedDecryptionPermit-p.ts +13 -13
  256. package/core/kms/{TransportKeypair-p.ts → TransportKeyPair-p.ts} +42 -42
  257. package/core/kms/decryptKmsSignedcryptedShares-p.ts +6 -6
  258. package/core/kms/decryptValuesFromPairs.ts +5 -5
  259. package/core/kms/index.ts +0 -1
  260. package/core/modules/decrypt/mock.ts +3 -3
  261. package/core/modules/decrypt/module/init-p.ts +13 -14
  262. package/core/modules/encrypt/mock.ts +4 -6
  263. package/core/modules/encrypt/module/api-p.ts +4 -6
  264. package/core/modules/encrypt/module/index.ts +2 -2
  265. package/core/modules/encrypt/module/init-p.ts +37 -21
  266. package/core/modules/encrypt/types.ts +2 -2
  267. package/core/modules/relayer/module/fetchPublicDecrypt.ts +2 -2
  268. package/core/modules/relayer/module/fetchUserDecrypt.ts +1 -2
  269. package/core/modules/relayer/module/guards/RelayerErrorBody.ts +33 -0
  270. package/core/types/index.ts +2 -0
  271. package/core/types/primitives.ts +4 -0
  272. package/core/utils-p/decrypt/{assertPermitMatchesKeypair.ts → assertPermitMatchesKeyPair.ts} +9 -9
  273. package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +1 -1
  274. package/package.json +3 -2
  275. package/_cjs/core/actions/chain/parseTransportKeypair.js +0 -8
  276. package/_cjs/core/actions/chain/parseTransportKeypair.js.map +0 -1
  277. package/_cjs/core/actions/chain/serializeTransportKeypair.js +0 -8
  278. package/_cjs/core/actions/chain/serializeTransportKeypair.js.map +0 -1
  279. package/_cjs/core/actions/decrypt/generateTransportKeypair.js +0 -8
  280. package/_cjs/core/actions/decrypt/generateTransportKeypair.js.map +0 -1
  281. package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -14
  282. package/_esm/core/actions/chain/parseTransportKeypair.js +0 -5
  283. package/_esm/core/actions/chain/parseTransportKeypair.js.map +0 -1
  284. package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -5
  285. package/_esm/core/actions/decrypt/generateTransportKeypair.js +0 -6
  286. package/_esm/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -19
  287. package/_types/core/utils-p/decrypt/assertPermitMatchesKeypair.d.ts +0 -12
  288. package/tsconfig.json +0 -9
@@ -2,18 +2,18 @@ import type { Fhevm, OptionalNativeClient } from '../../types/coreFhevmClient.js
2
2
  import type { WithDecrypt } from '../../types/coreFhevmRuntime.js';
3
3
  import type { FhevmChain } from '../../types/fhevmChain.js';
4
4
  import {
5
- generateTransportKeypair as generateTransportKeypair_,
6
- type TransportKeypair,
7
- } from '../../kms/TransportKeypair-p.js';
5
+ generateTransportKeyPair as generateTransportKeyPair_,
6
+ type TransportKeyPair,
7
+ } from '../../kms/TransportKeyPair-p.js';
8
8
 
9
9
  ////////////////////////////////////////////////////////////////////////////////
10
10
 
11
- export type GenerateTransportKeypairReturnType = TransportKeypair;
11
+ export type GenerateTransportKeyPairReturnType = TransportKeyPair;
12
12
 
13
- export async function generateTransportKeypair(
13
+ export async function generateTransportKeyPair(
14
14
  fhevm: Fhevm<FhevmChain | undefined, WithDecrypt, OptionalNativeClient>,
15
- ): Promise<GenerateTransportKeypairReturnType> {
16
- return await generateTransportKeypair_(fhevm);
15
+ ): Promise<GenerateTransportKeyPairReturnType> {
16
+ return await generateTransportKeyPair_(fhevm);
17
17
  }
18
18
 
19
19
  ////////////////////////////////////////////////////////////////////////////////
@@ -4,10 +4,7 @@ export type {
4
4
  RelayerDelegatedUserDecryptProgressArgs,
5
5
  } from '../../types/relayer.js';
6
6
 
7
- export {
8
- type GenerateTransportKeypairReturnType as GenerateE2eTransportKeypairReturnType,
9
- generateTransportKeypair as generateE2eTransportKeypair,
10
- } from './generateTransportKeypair.js';
7
+ export { type GenerateTransportKeyPairReturnType, generateTransportKeyPair } from './generateTransportKeyPair.js';
11
8
 
12
9
  export {
13
10
  type DecryptValuesFromPairsParameters,
@@ -45,3 +42,10 @@ export {
45
42
  type CanDecryptValueReturnType,
46
43
  canDecryptValue,
47
44
  } from './canDecryptValue.js';
45
+
46
+ export { type TransportKeyPair } from '../../kms/TransportKeyPair-p.js';
47
+
48
+ export {
49
+ type SignDecryptionPermitParameters,
50
+ type SignDecryptionPermitReturnType,
51
+ } from '../base/signDecryptionPermit.js';
@@ -2,7 +2,7 @@ import type { RelayerInputProofOptions } from '../../types/relayer.js';
2
2
  import type { Fhevm } from '../../types/coreFhevmClient.js';
3
3
  import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
4
4
  import type { FhevmChain } from '../../types/fhevmChain.js';
5
- import type { BytesHex, TypedValueLike } from '../../types/primitives.js';
5
+ import type { BytesHex } from '../../types/primitives.js';
6
6
  import type { EncryptedValue } from '../../types/encryptedTypes.js';
7
7
  import { addressToChecksummedAddress, assertIsAddress } from '../../base/address.js';
8
8
  import { toArray } from '../../base/object.js';
@@ -12,7 +12,7 @@ import { encrypt as encrypt_ } from '../../coprocessor/encrypt.js';
12
12
  ////////////////////////////////////////////////////////////////////////////////
13
13
 
14
14
  export type EncryptValueParameters = {
15
- readonly value: TypedValueLike;
15
+ readonly value: { readonly type: string; readonly value: boolean | bigint | number | string };
16
16
  readonly contractAddress: string;
17
17
  readonly userAddress: string;
18
18
  readonly options?: RelayerInputProofOptions | undefined;
@@ -2,7 +2,7 @@ import type { RelayerInputProofOptions } from '../../types/relayer.js';
2
2
  import type { Fhevm } from '../../types/coreFhevmClient.js';
3
3
  import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
4
4
  import type { FhevmChain } from '../../types/fhevmChain.js';
5
- import type { BytesHex, TypedValueLike } from '../../types/primitives.js';
5
+ import type { BytesHex } from '../../types/primitives.js';
6
6
  import type { EncryptedValue } from '../../types/encryptedTypes.js';
7
7
  import { addressToChecksummedAddress, assertIsAddress } from '../../base/address.js';
8
8
  import { createTypedValue } from '../../base/typedValue.js';
@@ -11,7 +11,7 @@ import { encrypt as encrypt_ } from '../../coprocessor/encrypt.js';
11
11
  ////////////////////////////////////////////////////////////////////////////////
12
12
 
13
13
  export type EncryptValuesParameters = {
14
- readonly values: readonly TypedValueLike[];
14
+ readonly values: ReadonlyArray<{ readonly type: string; readonly value: boolean | bigint | number | string }>;
15
15
  readonly contractAddress: string;
16
16
  readonly userAddress: string;
17
17
  readonly options?: RelayerInputProofOptions | undefined;
@@ -1,7 +1,6 @@
1
1
  import type { Fhevm } from '../../types/coreFhevmClient.js';
2
2
  import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
3
3
  import type { FhevmChain } from '../../types/fhevmChain.js';
4
- import type { TypedValueLike } from '../../types/primitives.js';
5
4
  import type { ZkProof } from '../../types/zkProof-p.js';
6
5
  import { createTypedValue } from '../../base/typedValue.js';
7
6
  import { createZkProofBuilder } from '../../coprocessor/ZkProofBuilder-p.js';
@@ -11,7 +10,7 @@ import { createZkProofBuilder } from '../../coprocessor/ZkProofBuilder-p.js';
11
10
  export type GenerateZkProofParameters = {
12
11
  readonly contractAddress: string;
13
12
  readonly userAddress: string;
14
- readonly values: readonly TypedValueLike[];
13
+ readonly values: ReadonlyArray<{ readonly type: string; readonly value: boolean | bigint | number | string }>;
15
14
  };
16
15
 
17
16
  export type GenerateZkProofReturnType = ZkProof;
@@ -1,4 +1,4 @@
1
- import type { Address, Bytes20, Bytes20HexNo0x, ChecksummedAddress } from '../types/primitives.js';
1
+ import type { Address, Bytes20, ChecksummedAddress } from '../types/primitives.js';
2
2
  import type {
3
3
  RecordAddressPropertyType,
4
4
  RecordChecksummedAddressArrayPropertyType,
@@ -117,7 +117,7 @@ export function isAddress(value: unknown): value is Address {
117
117
  return false;
118
118
  }
119
119
 
120
- const hexNo0x = remove0x(value) as Bytes20HexNo0x;
120
+ const hexNo0x = remove0x(value);
121
121
  const hexNo0xLowerCase = hexNo0x.toLowerCase();
122
122
 
123
123
  if (hexNo0x === hexNo0xLowerCase) {
@@ -4,7 +4,7 @@ import { ErrorBase } from './ErrorBase.js';
4
4
  ////////////////////////////////////////////////////////////////////////////////
5
5
 
6
6
  export type ExpectedTypeParams = {
7
- expectedType: string | string[];
7
+ expectedType: string | readonly string[];
8
8
  };
9
9
 
10
10
  ////////////////////////////////////////////////////////////////////////////////
@@ -219,8 +219,8 @@ export async function fetchWithRetry(
219
219
  ): Promise<Response> {
220
220
  let lastError: unknown;
221
221
 
222
- const retries = args.retries ?? 3;
223
- const retryDelayMs = args.retryDelayMs ?? 1000;
222
+ const retries = Math.max(0, Math.min(1000, args.retries ?? 3));
223
+ const retryDelayMs = Math.max(100, args.retryDelayMs ?? 1000);
224
224
  const { url, init } = args;
225
225
 
226
226
  for (let attempt = 0; attempt <= retries; attempt++) {
@@ -1 +0,0 @@
1
- export { createTypedValue, createTypedValueArray } from './typedValue.js';
package/core/base/sign.ts CHANGED
@@ -1,20 +1,28 @@
1
1
  import type { Address, Bytes65Hex, BytesHex, ChecksummedAddress } from '../types/primitives.js';
2
- import { secp256k1 } from '@noble/curves/secp256k1';
2
+ import { secp256k1 } from '@noble/curves/secp256k1.js';
3
3
  import { keccak_256 } from '@noble/hashes/sha3.js';
4
4
  import { addressToChecksummedAddress } from './address.js';
5
- import { bytesToHex } from './bytes.js';
5
+ import { bytesToHex, bytesToHexNo0x, hexToBytes } from './bytes.js';
6
6
 
7
7
  export function sign({ hash, privateKey }: { readonly hash: BytesHex; readonly privateKey: BytesHex }): Bytes65Hex {
8
- const sig = secp256k1.sign(hash.slice(2), privateKey.slice(2), {
8
+ const sig = secp256k1.sign(hexToBytes(hash), hexToBytes(privateKey), {
9
+ prehash: false,
9
10
  lowS: true,
10
11
  extraEntropy: true,
12
+ format: 'recovered',
11
13
  });
12
14
 
13
- if (sig.recovery !== 0 && sig.recovery !== 1) {
15
+ if (sig.length !== 65) {
16
+ throw new Error('Unexpected signature length');
17
+ }
18
+
19
+ // @noble/curves v2 'recovered' format: [recovery (1 byte)] || [r (32 bytes)] || [s (32 bytes)]
20
+ const recovery = sig[0];
21
+ if (recovery !== 0 && recovery !== 1) {
14
22
  throw new Error('Unexpected signature recovery value');
15
23
  }
16
24
 
17
- const signatureHex = `0x${sig.toCompactHex()}${sig.recovery === 0 ? '1b' : '1c'}` as BytesHex;
25
+ const signatureHex = `0x${bytesToHexNo0x(sig.subarray(1, 65))}${recovery === 0 ? '1b' : '1c'}` as BytesHex;
18
26
 
19
27
  if (signatureHex.length !== 2 + 130) {
20
28
  throw new Error('Unexpected signature length');
@@ -48,10 +56,10 @@ function _recoverPublicKey(parameters: { readonly hash: BytesHex; readonly signa
48
56
  throw new Error(`Invalid v value: ${v}`);
49
57
  }
50
58
 
51
- const sig = secp256k1.Signature.fromCompact(compactHex).addRecoveryBit(recoveryBit);
59
+ const sig = secp256k1.Signature.fromBytes(hexToBytes(compactHex), 'compact').addRecoveryBit(recoveryBit);
52
60
 
53
- // toRawBytes(false) → uncompressed encoding: 0x04 || X (32) || Y (32) = 65 bytes.
54
- return sig.recoverPublicKey(hash.slice(2)).toRawBytes(false);
61
+ // toBytes(false) → uncompressed encoding: 0x04 || X (32) || Y (32) = 65 bytes.
62
+ return sig.recoverPublicKey(hexToBytes(hash)).toBytes(false);
55
63
  }
56
64
 
57
65
  function _keccak256(bytes: Uint8Array): Uint8Array {
@@ -3,8 +3,8 @@ import type {
3
3
  AddressValueLike,
4
4
  BoolValueLike,
5
5
  Bytes32Hex,
6
+ RawTypedValue,
6
7
  TypedValue,
7
- TypedValueFrom,
8
8
  TypedValueLike,
9
9
  TypedValueOfBase,
10
10
  Uint128ValueLike,
@@ -20,7 +20,7 @@ import type {
20
20
  import { asAddress } from './address.js';
21
21
  import { toBoolean } from './boolean.js';
22
22
  import { InvalidTypeError } from './errors/InvalidTypeError.js';
23
- import { asUintForType, normalizeUintForType } from './uint.js';
23
+ import { assertIsUintTypeName, asUintForType, normalizeUintForType } from './uint.js';
24
24
  import { bigIntToBytesHex } from './bytes.js';
25
25
 
26
26
  ////////////////////////////////////////////////////////////////////////////////
@@ -184,15 +184,13 @@ export function assertIsTypedValueArray(
184
184
  * // Type: TypedValue<'address', ChecksummedAddress>
185
185
  * ```
186
186
  */
187
- export function createTypedValue<InputType extends TypedValueLike>(
188
- input: InputType,
189
- ): TypedValue & { readonly type: InputType['type'] } {
190
- if ((input as unknown) == null || typeof input !== 'object') {
187
+ export function createTypedValue(input: RawTypedValue): TypedValue {
188
+ if ((input as unknown) == null || typeof input !== 'object' || (input as unknown) === undefined) {
191
189
  throw new InvalidTypeError(
192
190
  {
193
191
  subject: 'input',
194
192
  type: typeof input,
195
- expectedType: 'InputTypedValue ({ type, value })',
193
+ expectedType: '{ type, value }',
196
194
  },
197
195
  {},
198
196
  );
@@ -205,27 +203,36 @@ export function createTypedValue<InputType extends TypedValueLike>(
205
203
  const expectedType = input.type;
206
204
 
207
205
  let validatedValue: ValueType;
206
+ let resolvedType: ValueTypeName;
208
207
 
209
208
  if (expectedType === 'bool') {
209
+ resolvedType = 'bool';
210
210
  validatedValue = toBoolean(input.value, {});
211
- } else if (expectedType === 'address') {
212
- validatedValue = asAddress(input.value);
211
+ } else if (expectedType === 'address' || expectedType === 'uint160') {
212
+ // uint160 and address share a 160-bit width; canonicalize uint160 → address.
213
+ resolvedType = 'address';
214
+ if (typeof input.value === 'string') {
215
+ validatedValue = asAddress(input.value);
216
+ } else {
217
+ const u = asUintForType(input.value, 'uint160', {});
218
+ validatedValue = asAddress(bigIntToBytesHex(BigInt(u), { byteLength: 20 }));
219
+ }
213
220
  } else {
221
+ assertIsUintTypeName(expectedType, {});
222
+ if (expectedType === 'uint160') {
223
+ // Unreachable: handled by the address branch above. Re-checked here
224
+ // because `assertIsUintTypeName` widens the type back to include 'uint160'.
225
+ throw new InvalidTypeError({ subject: 'input.type', type: expectedType, expectedType: 'ValueTypeName' }, {});
226
+ }
227
+ resolvedType = expectedType;
214
228
  validatedValue = normalizeUintForType(asUintForType(input.value, expectedType, {}), expectedType);
215
229
  }
216
230
 
217
- const v: TypedValueOfBase<typeof expectedType> = new TypedValueImpl(validatedValue, expectedType);
231
+ const v = new TypedValueImpl(validatedValue, resolvedType);
218
232
  Object.freeze(v);
219
- return v as TypedValueFrom<InputType>;
220
- }
221
233
 
222
- /**
223
- * Mapped tuple type that preserves per-element type narrowing.
224
- * @internal
225
- */
226
- type TypedValueArrayFrom<T extends readonly TypedValueLike[]> = {
227
- [K in keyof T]: TypedValueFrom<T[K]>;
228
- };
234
+ return v as TypedValue;
235
+ }
229
236
 
230
237
  /**
231
238
  * Creates an array of validated {@link TypedValueOf}s from a tuple of inputs.
@@ -239,8 +246,8 @@ type TypedValueArrayFrom<T extends readonly TypedValueLike[]> = {
239
246
  * // b: BoolValue, n: Uint8Value
240
247
  * ```
241
248
  */
242
- export function createTypedValueArray<T extends readonly TypedValueLike[]>(inputs: [...T]): TypedValueArrayFrom<T> {
243
- return inputs.map(createTypedValue) as unknown as TypedValueArrayFrom<T>;
249
+ export function createTypedValueArray(inputs: readonly RawTypedValue[]): TypedValue[] {
250
+ return inputs.map(createTypedValue);
244
251
  }
245
252
 
246
253
  /**
@@ -300,10 +307,10 @@ export class TypedValueArrayBuilder {
300
307
  return this;
301
308
  }
302
309
 
303
- #push(typeName: ValueTypeName, value: unknown): this {
310
+ #push(typeName: ValueTypeName, value: TypedValueLike | RawTypedValue['value']): this {
304
311
  if (isTypedValue(value, { type: typeName })) {
305
312
  this.#arr.push(value);
306
- } else if (typeof value === 'object' && value !== null) {
313
+ } else if (typeof value === 'object') {
307
314
  const tv = value as TypedValue;
308
315
  if (tv.type !== typeName) {
309
316
  throw new InvalidTypeError(
@@ -315,9 +322,9 @@ export class TypedValueArrayBuilder {
315
322
  {},
316
323
  );
317
324
  }
318
- this.#arr.push(createTypedValue({ type: typeName, value: tv.value } as TypedValueLike));
325
+ this.#arr.push(createTypedValue({ type: typeName, value: tv.value }));
319
326
  } else {
320
- this.#arr.push(createTypedValue({ type: typeName, value } as TypedValueLike));
327
+ this.#arr.push(createTypedValue({ type: typeName, value }));
321
328
  }
322
329
  return this;
323
330
  }
package/core/base/uint.ts CHANGED
@@ -444,6 +444,36 @@ export function normalizeUintForType<T extends UintTypeName>(value: Uint, typeNa
444
444
  }
445
445
  }
446
446
 
447
+ const UINT_TYPE_NAMES = [
448
+ 'uint8',
449
+ 'uint16',
450
+ 'uint32',
451
+ 'uint64',
452
+ 'uint128',
453
+ 'uint160',
454
+ 'uint256',
455
+ ] as const satisfies readonly UintTypeName[];
456
+
457
+ export function isUintTypeName(value: unknown): value is UintTypeName {
458
+ return typeof value === 'string' && (UINT_TYPE_NAMES as readonly string[]).includes(value);
459
+ }
460
+
461
+ export function assertIsUintTypeName(
462
+ value: unknown,
463
+ options: { subject?: string } & ErrorMetadataParams = {},
464
+ ): asserts value is UintTypeName {
465
+ if (!isUintTypeName(value)) {
466
+ throw new InvalidTypeError(
467
+ {
468
+ subject: options.subject,
469
+ type: typeof value,
470
+ expectedType: UINT_TYPE_NAMES,
471
+ },
472
+ options,
473
+ );
474
+ }
475
+ }
476
+
447
477
  ////////////////////////////////////////////////////////////////////////////////
448
478
  // asUintXX
449
479
  ////////////////////////////////////////////////////////////////////////////////
package/core/base/wasm.ts CHANGED
@@ -52,7 +52,7 @@ export async function isomorphicCompileWasm(wasmUrl: URL): Promise<WebAssembly.M
52
52
  // ArrayBufferLike (includes SharedArrayBuffer), making it incompatible with
53
53
  // BufferSource. At runtime Buffer is always backed by ArrayBuffer, so the
54
54
  // cast at WebAssembly.compile is safe and avoids copying.
55
- bytes = (await readFile(fileURLToPath(wasmUrl))) as BufferSource;
55
+ bytes = await readFile(fileURLToPath(wasmUrl));
56
56
  } else {
57
57
  // fetch wasm
58
58
  const res = await fetch(wasmUrl);
@@ -5,9 +5,9 @@ import type {
5
5
  SignedDelegatedDecryptionPermit,
6
6
  } from '../../types/signedDecryptionPermit.js';
7
7
  import type {
8
- SerializeTransportKeypairParameters,
9
- SerializeTransportKeypairReturnType,
10
- } from '../../actions/chain/serializeTransportKeypair.js';
8
+ SerializeTransportKeyPairParameters,
9
+ SerializeTransportKeyPairReturnType,
10
+ } from '../../actions/chain/serializeTransportKeyPair.js';
11
11
  import { assertIsFhevmBaseClient } from '../../runtime/CoreFhevm-p.js';
12
12
  import {
13
13
  signDecryptionPermit,
@@ -15,16 +15,16 @@ import {
15
15
  type SignDelegatedDecryptionPermitParameters,
16
16
  } from '../../actions/base/signDecryptionPermit.js';
17
17
  import {
18
- parseTransportKeypair,
19
- type ParseTransportKeypairParameters,
20
- type ParseTransportKeypairReturnType,
21
- } from '../../actions/chain/parseTransportKeypair.js';
18
+ parseTransportKeyPair,
19
+ type ParseTransportKeyPairParameters,
20
+ type ParseTransportKeyPairReturnType,
21
+ } from '../../actions/chain/parseTransportKeyPair.js';
22
22
  import {
23
23
  fetchFheEncryptionKeyBytes,
24
24
  type FetchFheEncryptionKeyBytesParameters,
25
25
  type FetchFheEncryptionKeyBytesReturnType,
26
26
  } from '../../actions/chain/fetchFheEncryptionKeyBytes.js';
27
- import { serializeTransportKeypair } from '../../actions/chain/serializeTransportKeypair.js';
27
+ import { serializeTransportKeyPair } from '../../actions/chain/serializeTransportKeyPair.js';
28
28
  import {
29
29
  serializeSignedDecryptionPermit,
30
30
  type SerializeSignedDecryptionPermitParameters,
@@ -147,14 +147,14 @@ export type BaseActions = {
147
147
  */
148
148
  (parameters: SignDelegatedDecryptionPermitParameters): Promise<SignedDelegatedDecryptionPermit>;
149
149
  };
150
- /** Deserializes a previously serialized e2e transport keypair back into a usable keypair. */
151
- readonly parseTransportKeypair: (
152
- parameters: ParseTransportKeypairParameters,
153
- ) => Promise<ParseTransportKeypairReturnType>;
154
- /** Serializes an e2e transport keypair to hex strings for storage. */
155
- readonly serializeTransportKeypair: (
156
- parameters: SerializeTransportKeypairParameters,
157
- ) => SerializeTransportKeypairReturnType;
150
+ /** Deserializes a previously serialized e2e transport key pair back into a usable key pair. */
151
+ readonly parseTransportKeyPair: (
152
+ parameters: ParseTransportKeyPairParameters,
153
+ ) => Promise<ParseTransportKeyPairReturnType>;
154
+ /** Serializes an e2e transport key pair to hex strings for storage. */
155
+ readonly serializeTransportKeyPair: (
156
+ parameters: SerializeTransportKeyPairParameters,
157
+ ) => SerializeTransportKeyPairReturnType;
158
158
  /** Serializes a signed decryption permit to a plain object for storage or transmission. */
159
159
  readonly serializeSignedDecryptionPermit: (
160
160
  parameters: SerializeSignedDecryptionPermitParameters,
@@ -183,8 +183,8 @@ function _baseActions(fhevm: Fhevm<FhevmChain>): BaseActions {
183
183
  fhevm,
184
184
  parameters as SignSelfDecryptionPermitParameters,
185
185
  )) as BaseActions['signDecryptionPermit'],
186
- parseTransportKeypair: (parameters) => parseTransportKeypair(fhevm, parameters),
187
- serializeTransportKeypair: (parameters) => serializeTransportKeypair(fhevm, parameters),
186
+ parseTransportKeyPair: (parameters) => parseTransportKeyPair(fhevm, parameters),
187
+ serializeTransportKeyPair: (parameters) => serializeTransportKeyPair(fhevm, parameters),
188
188
  serializeSignedDecryptionPermit: (parameters) => serializeSignedDecryptionPermit(fhevm, parameters),
189
189
  parseSignedDecryptionPermit: (parameters) => parseSignedDecryptionPermit(fhevm, parameters),
190
190
  fetchFheEncryptionKeyBytes: (parameters) => fetchFheEncryptionKeyBytes(fhevm, parameters),
@@ -1,10 +1,10 @@
1
1
  import type { Fhevm, FhevmBase, FhevmExtension, OptionalNativeClient } from '../../types/coreFhevmClient.js';
2
2
  import type { FhevmRuntime, WithDecrypt } from '../../types/coreFhevmRuntime.js';
3
3
  import type { FhevmChain } from '../../types/fhevmChain.js';
4
- import type { GenerateTransportKeypairReturnType } from '../../actions/decrypt/generateTransportKeypair.js';
4
+ import type { GenerateTransportKeyPairReturnType } from '../../actions/decrypt/generateTransportKeyPair.js';
5
5
  import type { DecryptModuleFactory } from '../../modules/decrypt/types.js';
6
6
  import { asFhevmClientWith, assertIsFhevmClientWith } from '../../runtime/CoreFhevm-p.js';
7
- import { generateTransportKeypair } from '../../kms/TransportKeypair-p.js';
7
+ import { generateTransportKeyPair } from '../../kms/TransportKeyPair-p.js';
8
8
  import {
9
9
  decryptValue,
10
10
  type DecryptValueParameters,
@@ -30,7 +30,7 @@ export type DecryptActions = {
30
30
  readonly decryptValuesFromPairs: (
31
31
  parameters: DecryptValuesFromPairsParameters,
32
32
  ) => Promise<DecryptValuesFromPairsReturnType>;
33
- readonly generateTransportKeypair: () => Promise<GenerateTransportKeypairReturnType>;
33
+ readonly generateTransportKeyPair: () => Promise<GenerateTransportKeyPairReturnType>;
34
34
  };
35
35
 
36
36
  ////////////////////////////////////////////////////////////////////////////////
@@ -42,7 +42,7 @@ function _decryptActions(fhevm: Fhevm<FhevmChain, WithDecrypt>): DecryptActions
42
42
  decryptValue: (parameters) => decryptValue(fhevm, parameters),
43
43
  decryptValues: (parameters) => decryptValues(fhevm, parameters),
44
44
  decryptValuesFromPairs: (parameters) => decryptValuesFromPairs(fhevm, parameters),
45
- generateTransportKeypair: () => generateTransportKeypair(fhevm),
45
+ generateTransportKeyPair: () => generateTransportKeyPair(fhevm),
46
46
  };
47
47
  }
48
48
 
@@ -6,7 +6,6 @@ import type {
6
6
  Bytes32,
7
7
  Uint64,
8
8
  Bytes21Hex,
9
- Uint8Number,
10
9
  BytesHex,
11
10
  } from '../types/primitives.js';
12
11
  import type { ZkProofLike, ZkProof } from '../types/zkProof-p.js';
@@ -23,7 +22,7 @@ import {
23
22
  import { bytes32ToHex, bytesToHexLarge, concatBytes, hexToBytes32, toBytes } from '../base/bytes.js';
24
23
  import { assertIsUint64, assertIsUint8, asUint64BigInt, uint64ToBytes32 } from '../base/uint.js';
25
24
  import { ZkProofError } from '../errors/ZkProofError.js';
26
- import { assertIsEncryptionBitsArray, fheTypeIdFromEncryptionBits } from '../handle/FheType.js';
25
+ import { asEncryptionBits, assertIsEncryptionBitsArray, fheTypeIdFromEncryptionBits } from '../handle/FheType.js';
27
26
  import { buildHandle } from '../handle/FhevmHandle.js';
28
27
  import { keccak_256 } from '@noble/hashes/sha3.js';
29
28
  import { InvalidTypeError } from '../base/errors/InvalidTypeError.js';
@@ -74,7 +73,7 @@ class ZkProofImpl implements ZkProof {
74
73
  this.#userAddress = parameters.userAddress;
75
74
  this.#ciphertextWithZkProof = parameters.ciphertextWithZkProof;
76
75
  this.#encryptionBits = Object.freeze([...parameters.encryptionBits]);
77
- this.#fheTypeIds = Object.freeze(this.#encryptionBits.map(fheTypeIdFromEncryptionBits));
76
+ this.#fheTypeIds = Object.freeze(this.#encryptionBits.map((w) => fheTypeIdFromEncryptionBits(asEncryptionBits(w))));
78
77
  this.#extraData = parameters.extraData;
79
78
  Object.freeze(this);
80
79
  }
@@ -105,7 +104,7 @@ class ZkProofImpl implements ZkProof {
105
104
 
106
105
  /** The ciphertext with Zk proof (guaranteed non-empty). Returns a copy. */
107
106
  public get ciphertextWithZkProof(): Bytes {
108
- return new Uint8Array(this.#ciphertextWithZkProof) as Bytes;
107
+ return new Uint8Array(this.#ciphertextWithZkProof);
109
108
  }
110
109
 
111
110
  /** The encryption bit sizes for each encrypted value in the proof. */
@@ -197,7 +196,7 @@ export function isZkProof(value: unknown): value is ZkProof {
197
196
 
198
197
  export function assertIsZkProof(
199
198
  value: unknown,
200
- options: { subject?: string } & ErrorMetadataParams,
199
+ options: { readonly subject?: string; readonly metaMessages?: string[] | undefined } & ErrorMetadataParams,
201
200
  ): asserts value is ZkProof {
202
201
  if (!isZkProof(value)) {
203
202
  throw new InvalidTypeError(
@@ -205,6 +204,7 @@ export function assertIsZkProof(
205
204
  subject: options.subject,
206
205
  type: typeof value,
207
206
  expectedType: 'ZkProof',
207
+ metaMessages: options.metaMessages,
208
208
  },
209
209
  options,
210
210
  );
@@ -379,7 +379,7 @@ function _zkProofToInputHandles(
379
379
  chainId: args.chainId,
380
380
  fheTypeId,
381
381
  ...(options?.version !== undefined ? { version: options.version } : {}),
382
- index: i as Uint8Number,
382
+ index: i,
383
383
  }),
384
384
  );
385
385
  }
@@ -23,7 +23,3 @@ export function asEncryptedValue(value: unknown): EncryptedValue {
23
23
  assertIsEncryptedValue(value);
24
24
  return value;
25
25
  }
26
-
27
- export function toEncryptedValue(value: unknown): EncryptedValue {
28
- return toFhevmHandle(value).bytes32Hex as unknown as EncryptedValue;
29
- }
@@ -316,8 +316,6 @@ export function assertIsEncryptionBitsArray(
316
316
 
317
317
  /**
318
318
  * Converts an encryption bit width to its corresponding FheTypeId.
319
- * Accepts loose `number` input; validates internally via `isEncryptionBits`.
320
- * @throws A {@link FheTypeError} If bitwidth is not a valid encryption bit width.
321
319
  * @example fheTypeIdFromEncryptionBits(8) // 2 (euint8)
322
320
  */
323
321
  export function fheTypeIdFromEncryptionBits(bitwidth: EncryptionBits): FheTypeId {
@@ -326,8 +324,6 @@ export function fheTypeIdFromEncryptionBits(bitwidth: EncryptionBits): FheTypeId
326
324
 
327
325
  /**
328
326
  * Converts an FheType to its corresponding FheTypeId.
329
- * Accepts loose `string` input; validates internally via `isFheType`.
330
- * @throws A {@link FheTypeError} If name is not a valid FheType.
331
327
  * @example fheTypeIdFromName('euint8') // 2
332
328
  */
333
329
  export function fheTypeIdFromName(name: FheType): FheTypeId {
@@ -336,7 +332,6 @@ export function fheTypeIdFromName(name: FheType): FheTypeId {
336
332
 
337
333
  /**
338
334
  * Converts an FheTypeId to its corresponding FheType.
339
- * @throws A {@link FheTypeError} If id is not a valid FheTypeId.
340
335
  * @example fheTypeNameFromId(2) // 'euint8'
341
336
  */
342
337
  export function fheTypeNameFromId(typeId: FheTypeId): FheType {
@@ -353,7 +348,7 @@ export function fheTypeNameFromTypeName(typeName: ValueTypeName): FheType {
353
348
 
354
349
  /**
355
350
  * Converts a FheType to its corresponding TypeName.
356
- * @example fheTypeNameFromTypeName('euint8') // 'uint8'
351
+ * @example typeNameFromFheTypeName('euint8') // 'uint8'
357
352
  */
358
353
  export function typeNameFromFheTypeName(fheType: FheType): ValueTypeName {
359
354
  return fheType.substring(1) as ValueTypeName;
@@ -365,7 +360,6 @@ export function typeNameFromFheTypeName(fheType: FheType): ValueTypeName {
365
360
 
366
361
  /**
367
362
  * Returns the Solidity primitive type name for an FheTypeId.
368
- * Accepts loose `number` input; validates internally via `isFheTypeId`.
369
363
  * @example solidityPrimitiveTypeNameFromFheTypeId(0) // 'bool'
370
364
  * @example solidityPrimitiveTypeNameFromFheTypeId(7) // 'address'
371
365
  * @example solidityPrimitiveTypeNameFromFheTypeId(2) // 'uint256'
@@ -398,9 +392,9 @@ export function encryptionBitsFromFheTypeId(typeId: FheTypeId): EncryptionBits {
398
392
  * Returns the encryption bit width for an FheType name.
399
393
  * @param name - The FHE type name (e.g., 'ebool', 'euint32', 'eaddress')
400
394
  * @returns The encryption bit width (always \>= 2)
401
- * @example encryptionBitsFromFheTypeName('ebool') // 2
402
- * @example encryptionBitsFromFheTypeName('euint32') // 32
403
- * @example encryptionBitsFromFheTypeName('eaddress') // 160
395
+ * @example encryptionBitsFromFheType('ebool') // 2
396
+ * @example encryptionBitsFromFheType('euint32') // 32
397
+ * @example encryptionBitsFromFheType('eaddress') // 160
404
398
  */
405
399
  export function encryptionBitsFromFheType(name: FheType): EncryptionBits {
406
400
  const bw = FheTypeIdToEncryptionBits[FheTypeNameToId[name]];
@@ -463,11 +457,11 @@ export function bytesToClearValueType<etype extends FheType>(fheType: etype, byt
463
457
  * and returns it narrowed. No conversion is performed.
464
458
  *
465
459
  * - `ebool` → `boolean`
466
- * - `eaddress` → `string` (checksummed address)
460
+ * - `eaddress` → `string` (validated address)
467
461
  * - `euint8/16/32` → `number`
468
462
  * - `euint64/128/256` → `bigint`
469
463
  *
470
- * @throws If `value` is not the expected JS type or exceeds the type's range.
464
+ * @throws If `value` is not the expected JS type.
471
465
  */
472
466
  export function asClearValueType<etype extends FheType>(
473
467
  fheTypeName: etype,
@@ -504,14 +498,13 @@ export function asClearValueType<etype extends FheType>(
504
498
 
505
499
  /**
506
500
  * Converts `value` to the correct JS type for the given `fheTypeName`.
507
- * Accepts any uint-like input (number, bigint, string) and coerces it.
508
501
  *
509
- * - `ebool` → `boolean`
502
+ * - `ebool` → `boolean` (value must already be a `boolean`; no coercion)
510
503
  * - `eaddress` → `string` (validated address)
511
- * - `euint8/16/32` → coerced to `number` via `Number()`
512
- * - `euint64/128/256` → coerced to `bigint` via `BigInt()`
504
+ * - `euint8/16/32` → coerced to `number` via `Number()` (accepts `number` or `bigint`)
505
+ * - `euint64/128/256` → coerced to `bigint` via `BigInt()` (accepts `number` or `bigint`)
513
506
  *
514
- * @throws If `value` cannot be converted or exceeds the type's range.
507
+ * @throws If `value` is not the expected JS type or cannot be coerced.
515
508
  */
516
509
  export function toClearValueType<etype extends FheType>(
517
510
  fheTypeName: etype,