@inco/js 0.2.16 → 0.2.17

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 (529) hide show
  1. package/dist/{attesteddecrypt → cjs/attesteddecrypt}/attested-decrypt.d.ts +10 -11
  2. package/dist/cjs/attesteddecrypt/attested-decrypt.js +91 -0
  3. package/dist/cjs/attesteddecrypt/index.d.ts +2 -0
  4. package/dist/{attesteddecrypt → cjs/attesteddecrypt}/index.js +3 -3
  5. package/dist/cjs/attesteddecrypt/types.d.ts +18 -0
  6. package/dist/{attesteddecrypt → cjs/attesteddecrypt}/types.js +1 -1
  7. package/dist/cjs/binary.js +82 -0
  8. package/dist/{chain.js → cjs/chain.js} +1 -1
  9. package/dist/{encryption → cjs/encryption}/encryption.d.ts +2 -2
  10. package/dist/cjs/encryption/encryption.js +109 -0
  11. package/dist/cjs/encryption/index.d.ts +1 -0
  12. package/dist/{encryption → cjs/encryption}/index.js +2 -2
  13. package/dist/{fhevm → cjs/fhevm}/fhe-environment.d.ts +1 -1
  14. package/dist/cjs/fhevm/fhe-environment.js +11 -0
  15. package/dist/{fhevm → cjs/fhevm}/fhevm.d.ts +1 -1
  16. package/dist/cjs/fhevm/fhevm.js +145 -0
  17. package/dist/cjs/fhevm/index.d.ts +1 -0
  18. package/dist/{fhevm → cjs/fhevm}/index.js +2 -2
  19. package/dist/{fhevm → cjs/fhevm}/reencrypt.d.ts +3 -3
  20. package/dist/cjs/fhevm/reencrypt.js +127 -0
  21. package/dist/{fhevm → cjs/fhevm}/tfhe.d.ts +1 -1
  22. package/dist/cjs/fhevm/tfhe.js +336 -0
  23. package/dist/{fhevm → cjs/fhevm}/types.d.ts +1 -1
  24. package/dist/cjs/fhevm/types.js +29 -0
  25. package/dist/cjs/generated/abis/addTwo.js +62 -0
  26. package/dist/cjs/generated/abis/inco-fhevm.js +681 -0
  27. package/dist/{generated → cjs/generated}/abis/index.js +1 -1
  28. package/dist/cjs/generated/abis/lightning.js +1606 -0
  29. package/dist/{generated → cjs/generated}/es/cosmos/ics23/v1/proofs_pb.js +1 -1
  30. package/dist/{generated → cjs/generated}/es/cosmos/msg/v1/msg_pb.js +1 -1
  31. package/dist/{generated → cjs/generated}/es/cosmos_proto/cosmos_pb.js +1 -1
  32. package/dist/{generated → cjs/generated}/es/google/api/annotations_pb.js +1 -1
  33. package/dist/{generated → cjs/generated}/es/google/api/http_pb.js +1 -1
  34. package/dist/{generated → cjs/generated}/es/inco/fhe/v1/events_pb.js +1 -1
  35. package/dist/{generated → cjs/generated}/es/inco/fhe/v1/genesis_pb.js +1 -1
  36. package/dist/{generated → cjs/generated}/es/inco/fhe/v1/query_pb.js +1 -1
  37. package/dist/{generated → cjs/generated}/es/inco/fhe/v1/tx_pb.js +1 -1
  38. package/dist/{generated → cjs/generated}/es/inco/fhe/v1/types_pb.js +1 -1
  39. package/dist/{generated → cjs/generated}/es/inco/kms/lite/v1/kms_service_pb.d.ts +54 -41
  40. package/dist/{generated → cjs/generated}/es/inco/kms/lite/v1/kms_service_pb.js +6 -11
  41. package/dist/{generated → cjs/generated}/es/inco/kms/lite/v1/types_pb.js +1 -1
  42. package/dist/{generated → cjs/generated}/es/inco/preflight/v1/genesis_pb.js +1 -1
  43. package/dist/{generated → cjs/generated}/es/inco/preflight/v1/query_pb.js +1 -1
  44. package/dist/{generated → cjs/generated}/es/inco/preflight/v1/tx_pb.js +1 -1
  45. package/dist/{generated → cjs/generated}/es/inco/preflight/v1/types_pb.js +1 -1
  46. package/dist/{generated → cjs/generated}/es/kms/base_pb.js +1 -1
  47. package/dist/{generated → cjs/generated}/es/sf/ethereum/type/v2/type_pb.js +1 -1
  48. package/dist/{generated → cjs/generated}/fhe-environments.js +1 -1
  49. package/dist/{generated → cjs/generated}/lightning.js +1 -1
  50. package/dist/cjs/generated/local-node.d.ts +23 -0
  51. package/dist/cjs/generated/local-node.js +27 -0
  52. package/dist/{generated → cjs/generated}/ts/amino/amino.js +1 -1
  53. package/dist/{generated → cjs/generated}/ts/cometbft/abci/v1/types.js +1 -1
  54. package/dist/cjs/generated/ts/cometbft/crypto/v1/keys.js +108 -0
  55. package/dist/cjs/generated/ts/cometbft/crypto/v1/proof.js +433 -0
  56. package/dist/cjs/generated/ts/cometbft/types/v1/params.js +716 -0
  57. package/dist/cjs/generated/ts/cometbft/types/v1/validator.js +358 -0
  58. package/dist/cjs/generated/ts/cosmos/app/v1alpha1/module.js +221 -0
  59. package/dist/{generated → cjs/generated}/ts/cosmos/msg/v1/msg.js +1 -1
  60. package/dist/cjs/generated/ts/cosmos_proto/cosmos.js +216 -0
  61. package/dist/{generated → cjs/generated}/ts/gogoproto/gogo.js +1 -1
  62. package/dist/{generated → cjs/generated}/ts/google/api/annotations.js +1 -1
  63. package/dist/cjs/generated/ts/google/api/http.js +356 -0
  64. package/dist/{generated → cjs/generated}/ts/google/protobuf/descriptor.js +1 -1
  65. package/dist/cjs/generated/ts/google/protobuf/duration.js +93 -0
  66. package/dist/cjs/generated/ts/google/protobuf/timestamp.js +93 -0
  67. package/dist/cjs/generated/ts/google/protobuf/wrappers.js +509 -0
  68. package/dist/cjs/generated/ts/inco/abci/v1/types.js +73 -0
  69. package/dist/cjs/generated/ts/inco/fhe/module/v1/module.js +66 -0
  70. package/dist/cjs/generated/ts/inco/fhe/v1/events.js +190 -0
  71. package/dist/cjs/generated/ts/inco/fhe/v1/genesis.js +714 -0
  72. package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/query.js +1 -1
  73. package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/tx.js +1 -1
  74. package/dist/cjs/generated/ts/inco/fhe/v1/types.js +990 -0
  75. package/dist/cjs/generated/ts/inco/originchain/module/v1/module.js +66 -0
  76. package/dist/cjs/generated/ts/inco/originchain/v1/abci.js +331 -0
  77. package/dist/cjs/generated/ts/inco/originchain/v1/events.js +216 -0
  78. package/dist/cjs/generated/ts/inco/originchain/v1/genesis.js +69 -0
  79. package/dist/cjs/generated/ts/inco/originchain/v1/query.js +280 -0
  80. package/dist/cjs/generated/ts/inco/originchain/v1/tx.js +140 -0
  81. package/dist/cjs/generated/ts/inco/originchain/v1/types.js +203 -0
  82. package/dist/cjs/generated/ts/inco/preflight/module/v1/module.js +66 -0
  83. package/dist/cjs/generated/ts/inco/preflight/v1/genesis.js +185 -0
  84. package/dist/cjs/generated/ts/inco/preflight/v1/query.js +259 -0
  85. package/dist/cjs/generated/ts/inco/preflight/v1/tx.js +448 -0
  86. package/dist/cjs/generated/ts/inco/preflight/v1/types.js +398 -0
  87. package/dist/{handle.d.ts → cjs/handle.d.ts} +1 -1
  88. package/dist/{handle.js → cjs/handle.js} +5 -5
  89. package/dist/cjs/index.d.ts +5 -0
  90. package/dist/{index.js → cjs/index.js} +5 -5
  91. package/dist/{kms → cjs/kms}/client.d.ts +2 -2
  92. package/dist/{kms → cjs/kms}/client.js +3 -3
  93. package/dist/{l1 → cjs/l1}/client.d.ts +6 -6
  94. package/dist/{l1 → cjs/l1}/client.js +8 -8
  95. package/dist/cjs/l1/index.d.ts +2 -0
  96. package/dist/{l1 → cjs/l1}/index.js +3 -3
  97. package/dist/{l1 → cjs/l1}/preflight.d.ts +3 -3
  98. package/dist/cjs/l1/preflight.js +42 -0
  99. package/dist/{lite → cjs/lite}/attested-decrypt.d.ts +1 -1
  100. package/dist/cjs/lite/attested-decrypt.js +6 -0
  101. package/dist/{lite → cjs/lite}/deployments.d.ts +2 -2
  102. package/dist/cjs/lite/deployments.js +21 -0
  103. package/dist/{lite → cjs/lite}/ecies.d.ts +6 -6
  104. package/dist/cjs/lite/ecies.js +135 -0
  105. package/dist/{lite → cjs/lite}/hadu.d.ts +1 -1
  106. package/dist/cjs/lite/hadu.js +41 -0
  107. package/dist/cjs/lite/index.d.ts +7 -0
  108. package/dist/cjs/lite/index.js +23 -0
  109. package/dist/{lite → cjs/lite}/lightning.d.ts +12 -9
  110. package/dist/cjs/lite/lightning.js +204 -0
  111. package/dist/{lite → cjs/lite}/reencrypt.d.ts +7 -6
  112. package/dist/cjs/lite/reencrypt.js +142 -0
  113. package/dist/cjs/local/index.d.ts +1 -0
  114. package/dist/{local → cjs/local}/index.js +2 -2
  115. package/dist/{local → cjs/local}/local-node.js +1 -1
  116. package/dist/{reencryption → cjs/reencryption}/eip712.js +5 -5
  117. package/dist/cjs/reencryption/index.d.ts +2 -0
  118. package/dist/cjs/reencryption/index.js +19 -0
  119. package/dist/{reencryption → cjs/reencryption}/types.d.ts +6 -8
  120. package/dist/{reencryption → cjs/reencryption}/types.js +1 -1
  121. package/dist/{retry.js → cjs/retry.js} +1 -1
  122. package/dist/{schema.js → cjs/schema.js} +1 -1
  123. package/dist/{viem.d.ts → cjs/viem.d.ts} +1 -1
  124. package/dist/cjs/viem.js +12 -0
  125. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +34 -0
  126. package/dist/esm/attesteddecrypt/attested-decrypt.js +88 -0
  127. package/dist/esm/attesteddecrypt/index.d.ts +2 -0
  128. package/dist/esm/attesteddecrypt/index.js +3 -0
  129. package/dist/esm/attesteddecrypt/types.d.ts +18 -0
  130. package/dist/esm/attesteddecrypt/types.js +12 -0
  131. package/dist/esm/binary.d.ts +21 -0
  132. package/dist/esm/binary.js +67 -0
  133. package/dist/esm/chain.d.ts +22 -0
  134. package/dist/esm/chain.js +24 -0
  135. package/dist/esm/encryption/encryption.d.ts +119 -0
  136. package/dist/esm/encryption/encryption.js +101 -0
  137. package/dist/esm/encryption/index.d.ts +1 -0
  138. package/dist/esm/encryption/index.js +2 -0
  139. package/dist/esm/fhevm/fhe-environment.d.ts +9 -0
  140. package/dist/esm/fhevm/fhe-environment.js +8 -0
  141. package/dist/esm/fhevm/fhevm.d.ts +41 -0
  142. package/dist/esm/fhevm/fhevm.js +139 -0
  143. package/dist/esm/fhevm/index.d.ts +1 -0
  144. package/dist/esm/fhevm/index.js +2 -0
  145. package/dist/esm/fhevm/reencrypt.d.ts +20 -0
  146. package/dist/esm/fhevm/reencrypt.js +123 -0
  147. package/dist/esm/fhevm/tfhe.d.ts +74 -0
  148. package/dist/esm/fhevm/tfhe.js +328 -0
  149. package/dist/esm/fhevm/types.d.ts +3 -0
  150. package/dist/esm/fhevm/types.js +26 -0
  151. package/dist/esm/generated/abis/addTwo.d.ts +83 -0
  152. package/dist/{generated → esm/generated}/abis/addTwo.js +2 -5
  153. package/dist/esm/generated/abis/inco-fhevm.d.ts +874 -0
  154. package/dist/{generated → esm/generated}/abis/inco-fhevm.js +3 -6
  155. package/dist/esm/generated/abis/index.d.ts +2 -0
  156. package/dist/esm/generated/abis/index.js +3 -0
  157. package/dist/esm/generated/abis/lightning.d.ts +2226 -0
  158. package/dist/{generated → esm/generated}/abis/lightning.js +2 -5
  159. package/dist/esm/generated/es/cosmos/ics23/v1/proofs_pb.d.ts +593 -0
  160. package/dist/esm/generated/es/cosmos/ics23/v1/proofs_pb.js +198 -0
  161. package/dist/esm/generated/es/cosmos/msg/v1/msg_pb.d.ts +29 -0
  162. package/dist/esm/generated/es/cosmos/msg/v1/msg_pb.js +33 -0
  163. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.d.ts +174 -0
  164. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +115 -0
  165. package/dist/esm/generated/es/google/api/annotations_pb.d.ts +13 -0
  166. package/dist/esm/generated/es/google/api/annotations_pb.js +27 -0
  167. package/dist/esm/generated/es/google/api/http_pb.d.ts +440 -0
  168. package/dist/esm/generated/es/google/api/http_pb.js +34 -0
  169. package/dist/esm/generated/es/inco/fhe/v1/events_pb.d.ts +79 -0
  170. package/dist/esm/generated/es/inco/fhe/v1/events_pb.js +21 -0
  171. package/dist/esm/generated/es/inco/fhe/v1/genesis_pb.d.ts +252 -0
  172. package/dist/esm/generated/es/inco/fhe/v1/genesis_pb.js +46 -0
  173. package/dist/esm/generated/es/inco/fhe/v1/query_pb.d.ts +569 -0
  174. package/dist/esm/generated/es/inco/fhe/v1/query_pb.js +108 -0
  175. package/dist/esm/generated/es/inco/fhe/v1/tx_pb.d.ts +494 -0
  176. package/dist/esm/generated/es/inco/fhe/v1/tx_pb.js +108 -0
  177. package/dist/esm/generated/es/inco/fhe/v1/types_pb.d.ts +419 -0
  178. package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +133 -0
  179. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +333 -0
  180. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +58 -0
  181. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.d.ts +212 -0
  182. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +44 -0
  183. package/dist/esm/generated/es/inco/preflight/v1/genesis_pb.d.ts +56 -0
  184. package/dist/esm/generated/es/inco/preflight/v1/genesis_pb.js +20 -0
  185. package/dist/esm/generated/es/inco/preflight/v1/query_pb.d.ts +100 -0
  186. package/dist/esm/generated/es/inco/preflight/v1/query_pb.js +38 -0
  187. package/dist/esm/generated/es/inco/preflight/v1/tx_pb.d.ts +193 -0
  188. package/dist/esm/generated/es/inco/preflight/v1/tx_pb.js +48 -0
  189. package/dist/esm/generated/es/inco/preflight/v1/types_pb.d.ts +144 -0
  190. package/dist/esm/generated/es/inco/preflight/v1/types_pb.js +34 -0
  191. package/dist/esm/generated/es/kms/base_pb.d.ts +765 -0
  192. package/dist/esm/generated/es/kms/base_pb.js +238 -0
  193. package/dist/esm/generated/es/sf/ethereum/type/v2/type_pb.d.ts +1736 -0
  194. package/dist/esm/generated/es/sf/ethereum/type/v2/type_pb.js +571 -0
  195. package/dist/esm/generated/fhe-environments.d.ts +14 -0
  196. package/dist/esm/generated/fhe-environments.js +15 -0
  197. package/dist/esm/generated/lightning.d.ts +211 -0
  198. package/dist/esm/generated/lightning.js +223 -0
  199. package/dist/esm/generated/local-node.d.ts +23 -0
  200. package/dist/esm/generated/local-node.js +24 -0
  201. package/dist/esm/generated/ts/amino/amino.d.ts +1 -0
  202. package/dist/esm/generated/ts/amino/amino.js +8 -0
  203. package/dist/esm/generated/ts/cometbft/abci/v1/types.d.ts +597 -0
  204. package/dist/esm/generated/ts/cometbft/abci/v1/types.js +5063 -0
  205. package/dist/esm/generated/ts/cometbft/crypto/v1/keys.d.ts +27 -0
  206. package/dist/esm/generated/ts/cometbft/crypto/v1/keys.js +105 -0
  207. package/dist/esm/generated/ts/cometbft/crypto/v1/proof.d.ts +60 -0
  208. package/dist/esm/generated/ts/cometbft/crypto/v1/proof.js +430 -0
  209. package/dist/esm/generated/ts/cometbft/types/v1/params.d.ts +179 -0
  210. package/dist/esm/generated/ts/cometbft/types/v1/params.js +713 -0
  211. package/dist/esm/generated/ts/cometbft/types/v1/validator.d.ts +61 -0
  212. package/dist/esm/generated/ts/cometbft/types/v1/validator.js +353 -0
  213. package/dist/esm/generated/ts/cosmos/app/v1alpha1/module.d.ts +104 -0
  214. package/dist/esm/generated/ts/cosmos/app/v1alpha1/module.js +218 -0
  215. package/dist/esm/generated/ts/cosmos/msg/v1/msg.d.ts +1 -0
  216. package/dist/esm/generated/ts/cosmos/msg/v1/msg.js +8 -0
  217. package/dist/esm/generated/ts/cosmos_proto/cosmos.d.ts +80 -0
  218. package/dist/esm/generated/ts/cosmos_proto/cosmos.js +211 -0
  219. package/dist/esm/generated/ts/gogoproto/gogo.d.ts +1 -0
  220. package/dist/esm/generated/ts/gogoproto/gogo.js +8 -0
  221. package/dist/esm/generated/ts/google/api/annotations.d.ts +1 -0
  222. package/dist/esm/generated/ts/google/api/annotations.js +8 -0
  223. package/dist/esm/generated/ts/google/api/http.d.ts +371 -0
  224. package/dist/esm/generated/ts/google/api/http.js +353 -0
  225. package/dist/esm/generated/ts/google/protobuf/descriptor.d.ts +1228 -0
  226. package/dist/esm/generated/ts/google/protobuf/descriptor.js +5070 -0
  227. package/dist/esm/generated/ts/google/protobuf/duration.d.ts +99 -0
  228. package/dist/esm/generated/ts/google/protobuf/duration.js +90 -0
  229. package/dist/esm/generated/ts/google/protobuf/timestamp.d.ts +128 -0
  230. package/dist/esm/generated/ts/google/protobuf/timestamp.js +90 -0
  231. package/dist/esm/generated/ts/google/protobuf/wrappers.d.ts +111 -0
  232. package/dist/esm/generated/ts/google/protobuf/wrappers.js +506 -0
  233. package/dist/esm/generated/ts/inco/abci/v1/types.d.ts +35 -0
  234. package/dist/esm/generated/ts/inco/abci/v1/types.js +70 -0
  235. package/dist/esm/generated/ts/inco/fhe/module/v1/module.d.ts +31 -0
  236. package/dist/esm/generated/ts/inco/fhe/module/v1/module.js +63 -0
  237. package/dist/esm/generated/ts/inco/fhe/v1/events.d.ts +66 -0
  238. package/dist/esm/generated/ts/inco/fhe/v1/events.js +187 -0
  239. package/dist/esm/generated/ts/inco/fhe/v1/genesis.d.ts +117 -0
  240. package/dist/esm/generated/ts/inco/fhe/v1/genesis.js +711 -0
  241. package/dist/esm/generated/ts/inco/fhe/v1/query.d.ts +366 -0
  242. package/dist/esm/generated/ts/inco/fhe/v1/query.js +1391 -0
  243. package/dist/esm/generated/ts/inco/fhe/v1/tx.d.ts +409 -0
  244. package/dist/esm/generated/ts/inco/fhe/v1/tx.js +1233 -0
  245. package/dist/esm/generated/ts/inco/fhe/v1/types.d.ts +225 -0
  246. package/dist/esm/generated/ts/inco/fhe/v1/types.js +985 -0
  247. package/dist/esm/generated/ts/inco/originchain/module/v1/module.d.ts +30 -0
  248. package/dist/esm/generated/ts/inco/originchain/module/v1/module.js +63 -0
  249. package/dist/esm/generated/ts/inco/originchain/v1/abci.d.ts +80 -0
  250. package/dist/esm/generated/ts/inco/originchain/v1/abci.js +328 -0
  251. package/dist/esm/generated/ts/inco/originchain/v1/events.d.ts +60 -0
  252. package/dist/esm/generated/ts/inco/originchain/v1/events.js +213 -0
  253. package/dist/esm/generated/ts/inco/originchain/v1/genesis.d.ts +28 -0
  254. package/dist/esm/generated/ts/inco/originchain/v1/genesis.js +66 -0
  255. package/dist/esm/generated/ts/inco/originchain/v1/query.d.ts +116 -0
  256. package/dist/esm/generated/ts/inco/originchain/v1/query.js +277 -0
  257. package/dist/esm/generated/ts/inco/originchain/v1/tx.d.ts +89 -0
  258. package/dist/esm/generated/ts/inco/originchain/v1/tx.js +137 -0
  259. package/dist/esm/generated/ts/inco/originchain/v1/types.d.ts +58 -0
  260. package/dist/esm/generated/ts/inco/originchain/v1/types.js +200 -0
  261. package/dist/esm/generated/ts/inco/preflight/module/v1/module.d.ts +31 -0
  262. package/dist/esm/generated/ts/inco/preflight/module/v1/module.js +63 -0
  263. package/dist/esm/generated/ts/inco/preflight/v1/genesis.d.ts +41 -0
  264. package/dist/esm/generated/ts/inco/preflight/v1/genesis.js +182 -0
  265. package/dist/esm/generated/ts/inco/preflight/v1/query.d.ts +93 -0
  266. package/dist/esm/generated/ts/inco/preflight/v1/query.js +256 -0
  267. package/dist/esm/generated/ts/inco/preflight/v1/tx.d.ts +187 -0
  268. package/dist/esm/generated/ts/inco/preflight/v1/tx.js +445 -0
  269. package/dist/esm/generated/ts/inco/preflight/v1/types.d.ts +84 -0
  270. package/dist/esm/generated/ts/inco/preflight/v1/types.js +395 -0
  271. package/dist/esm/handle.d.ts +41 -0
  272. package/dist/esm/handle.js +94 -0
  273. package/dist/esm/index.d.ts +5 -0
  274. package/dist/esm/index.js +6 -0
  275. package/dist/esm/kms/client.d.ts +8 -0
  276. package/dist/esm/kms/client.js +35 -0
  277. package/dist/esm/l1/client.d.ts +35 -0
  278. package/dist/esm/l1/client.js +93 -0
  279. package/dist/esm/l1/index.d.ts +2 -0
  280. package/dist/esm/l1/index.js +3 -0
  281. package/dist/esm/l1/preflight.d.ts +20 -0
  282. package/dist/esm/l1/preflight.js +39 -0
  283. package/dist/esm/lite/attested-decrypt.d.ts +3 -0
  284. package/dist/esm/lite/attested-decrypt.js +3 -0
  285. package/dist/esm/lite/deployments.d.ts +6 -0
  286. package/dist/esm/lite/deployments.js +17 -0
  287. package/dist/esm/lite/ecies.d.ts +26 -0
  288. package/dist/esm/lite/ecies.js +124 -0
  289. package/dist/esm/lite/hadu.d.ts +24 -0
  290. package/dist/esm/lite/hadu.js +36 -0
  291. package/dist/esm/lite/index.d.ts +7 -0
  292. package/dist/esm/lite/index.js +7 -0
  293. package/dist/esm/lite/lightning.d.ts +124 -0
  294. package/dist/esm/lite/lightning.js +200 -0
  295. package/dist/esm/lite/reencrypt.d.ts +24 -0
  296. package/dist/esm/lite/reencrypt.js +132 -0
  297. package/dist/esm/local/index.d.ts +1 -0
  298. package/dist/esm/local/index.js +2 -0
  299. package/dist/esm/local/local-node.d.ts +19 -0
  300. package/dist/esm/local/local-node.js +24 -0
  301. package/dist/esm/reencryption/eip712.d.ts +29 -0
  302. package/dist/esm/reencryption/eip712.js +81 -0
  303. package/dist/esm/reencryption/index.d.ts +2 -0
  304. package/dist/esm/reencryption/index.js +3 -0
  305. package/dist/esm/reencryption/types.d.ts +25 -0
  306. package/dist/esm/reencryption/types.js +2 -0
  307. package/dist/esm/retry.d.ts +15 -0
  308. package/dist/esm/retry.js +25 -0
  309. package/dist/esm/schema.d.ts +4 -0
  310. package/dist/esm/schema.js +15 -0
  311. package/dist/esm/viem.d.ts +427 -0
  312. package/dist/esm/viem.js +8 -0
  313. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +34 -0
  314. package/dist/types/attesteddecrypt/index.d.ts +2 -0
  315. package/dist/types/attesteddecrypt/types.d.ts +18 -0
  316. package/dist/types/binary.d.ts +21 -0
  317. package/dist/types/chain.d.ts +22 -0
  318. package/dist/types/encryption/encryption.d.ts +119 -0
  319. package/dist/types/encryption/index.d.ts +1 -0
  320. package/dist/types/fhevm/fhe-environment.d.ts +9 -0
  321. package/dist/types/fhevm/fhevm.d.ts +41 -0
  322. package/dist/types/fhevm/index.d.ts +1 -0
  323. package/dist/types/fhevm/reencrypt.d.ts +20 -0
  324. package/dist/types/fhevm/tfhe.d.ts +74 -0
  325. package/dist/types/fhevm/types.d.ts +3 -0
  326. package/dist/types/generated/abis/addTwo.d.ts +83 -0
  327. package/dist/types/generated/abis/inco-fhevm.d.ts +874 -0
  328. package/dist/types/generated/abis/index.d.ts +2 -0
  329. package/dist/types/generated/abis/lightning.d.ts +2226 -0
  330. package/dist/types/generated/es/cosmos/ics23/v1/proofs_pb.d.ts +593 -0
  331. package/dist/types/generated/es/cosmos/msg/v1/msg_pb.d.ts +29 -0
  332. package/dist/types/generated/es/cosmos_proto/cosmos_pb.d.ts +174 -0
  333. package/dist/types/generated/es/google/api/annotations_pb.d.ts +13 -0
  334. package/dist/types/generated/es/google/api/http_pb.d.ts +440 -0
  335. package/dist/types/generated/es/inco/fhe/v1/events_pb.d.ts +79 -0
  336. package/dist/types/generated/es/inco/fhe/v1/genesis_pb.d.ts +252 -0
  337. package/dist/types/generated/es/inco/fhe/v1/query_pb.d.ts +569 -0
  338. package/dist/types/generated/es/inco/fhe/v1/tx_pb.d.ts +494 -0
  339. package/dist/types/generated/es/inco/fhe/v1/types_pb.d.ts +419 -0
  340. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +333 -0
  341. package/dist/types/generated/es/inco/kms/lite/v1/types_pb.d.ts +212 -0
  342. package/dist/types/generated/es/inco/preflight/v1/genesis_pb.d.ts +56 -0
  343. package/dist/types/generated/es/inco/preflight/v1/query_pb.d.ts +100 -0
  344. package/dist/types/generated/es/inco/preflight/v1/tx_pb.d.ts +193 -0
  345. package/dist/types/generated/es/inco/preflight/v1/types_pb.d.ts +144 -0
  346. package/dist/types/generated/es/kms/base_pb.d.ts +765 -0
  347. package/dist/types/generated/es/sf/ethereum/type/v2/type_pb.d.ts +1736 -0
  348. package/dist/types/generated/fhe-environments.d.ts +14 -0
  349. package/dist/types/generated/lightning.d.ts +211 -0
  350. package/dist/types/generated/local-node.d.ts +23 -0
  351. package/dist/types/generated/ts/amino/amino.d.ts +1 -0
  352. package/dist/types/generated/ts/cometbft/abci/v1/types.d.ts +597 -0
  353. package/dist/types/generated/ts/cometbft/crypto/v1/keys.d.ts +27 -0
  354. package/dist/types/generated/ts/cometbft/crypto/v1/proof.d.ts +60 -0
  355. package/dist/types/generated/ts/cometbft/types/v1/params.d.ts +179 -0
  356. package/dist/types/generated/ts/cometbft/types/v1/validator.d.ts +61 -0
  357. package/dist/types/generated/ts/cosmos/app/v1alpha1/module.d.ts +104 -0
  358. package/dist/types/generated/ts/cosmos/msg/v1/msg.d.ts +1 -0
  359. package/dist/types/generated/ts/cosmos_proto/cosmos.d.ts +80 -0
  360. package/dist/types/generated/ts/gogoproto/gogo.d.ts +1 -0
  361. package/dist/types/generated/ts/google/api/annotations.d.ts +1 -0
  362. package/dist/types/generated/ts/google/api/http.d.ts +371 -0
  363. package/dist/types/generated/ts/google/protobuf/descriptor.d.ts +1228 -0
  364. package/dist/types/generated/ts/google/protobuf/duration.d.ts +99 -0
  365. package/dist/types/generated/ts/google/protobuf/timestamp.d.ts +128 -0
  366. package/dist/types/generated/ts/google/protobuf/wrappers.d.ts +111 -0
  367. package/dist/types/generated/ts/inco/abci/v1/types.d.ts +35 -0
  368. package/dist/types/generated/ts/inco/fhe/module/v1/module.d.ts +31 -0
  369. package/dist/types/generated/ts/inco/fhe/v1/events.d.ts +66 -0
  370. package/dist/types/generated/ts/inco/fhe/v1/genesis.d.ts +117 -0
  371. package/dist/types/generated/ts/inco/fhe/v1/query.d.ts +366 -0
  372. package/dist/types/generated/ts/inco/fhe/v1/tx.d.ts +409 -0
  373. package/dist/types/generated/ts/inco/fhe/v1/types.d.ts +225 -0
  374. package/dist/types/generated/ts/inco/originchain/module/v1/module.d.ts +30 -0
  375. package/dist/types/generated/ts/inco/originchain/v1/abci.d.ts +80 -0
  376. package/dist/types/generated/ts/inco/originchain/v1/events.d.ts +60 -0
  377. package/dist/types/generated/ts/inco/originchain/v1/genesis.d.ts +28 -0
  378. package/dist/types/generated/ts/inco/originchain/v1/query.d.ts +116 -0
  379. package/dist/types/generated/ts/inco/originchain/v1/tx.d.ts +89 -0
  380. package/dist/types/generated/ts/inco/originchain/v1/types.d.ts +58 -0
  381. package/dist/types/generated/ts/inco/preflight/module/v1/module.d.ts +31 -0
  382. package/dist/types/generated/ts/inco/preflight/v1/genesis.d.ts +41 -0
  383. package/dist/types/generated/ts/inco/preflight/v1/query.d.ts +93 -0
  384. package/dist/types/generated/ts/inco/preflight/v1/tx.d.ts +187 -0
  385. package/dist/types/generated/ts/inco/preflight/v1/types.d.ts +84 -0
  386. package/dist/types/handle.d.ts +41 -0
  387. package/dist/types/index.d.ts +5 -0
  388. package/dist/types/kms/client.d.ts +8 -0
  389. package/dist/types/l1/client.d.ts +35 -0
  390. package/dist/types/l1/index.d.ts +2 -0
  391. package/dist/types/l1/preflight.d.ts +20 -0
  392. package/dist/types/lite/attested-decrypt.d.ts +3 -0
  393. package/dist/types/lite/deployments.d.ts +6 -0
  394. package/dist/types/lite/ecies.d.ts +26 -0
  395. package/dist/types/lite/hadu.d.ts +24 -0
  396. package/dist/types/lite/index.d.ts +7 -0
  397. package/dist/types/lite/lightning.d.ts +124 -0
  398. package/dist/types/lite/reencrypt.d.ts +24 -0
  399. package/dist/types/local/index.d.ts +1 -0
  400. package/dist/types/local/local-node.d.ts +19 -0
  401. package/dist/types/reencryption/eip712.d.ts +29 -0
  402. package/dist/types/reencryption/index.d.ts +2 -0
  403. package/dist/types/reencryption/types.d.ts +25 -0
  404. package/dist/types/retry.d.ts +15 -0
  405. package/dist/types/schema.d.ts +4 -0
  406. package/dist/types/viem.d.ts +427 -0
  407. package/package.json +64 -15
  408. package/dist/attesteddecrypt/attested-decrypt.js +0 -79
  409. package/dist/attesteddecrypt/index.d.ts +0 -2
  410. package/dist/attesteddecrypt/types.d.ts +0 -28
  411. package/dist/binary.js +0 -82
  412. package/dist/encryption/encryption.js +0 -109
  413. package/dist/encryption/index.d.ts +0 -1
  414. package/dist/fhevm/fhe-environment.js +0 -11
  415. package/dist/fhevm/fhevm.js +0 -145
  416. package/dist/fhevm/index.d.ts +0 -1
  417. package/dist/fhevm/reencrypt.js +0 -127
  418. package/dist/fhevm/tfhe.js +0 -336
  419. package/dist/fhevm/types.js +0 -29
  420. package/dist/generated/local-node.d.ts +0 -7
  421. package/dist/generated/local-node.js +0 -11
  422. package/dist/generated/ts/cometbft/crypto/v1/keys.js +0 -108
  423. package/dist/generated/ts/cometbft/crypto/v1/proof.js +0 -433
  424. package/dist/generated/ts/cometbft/types/v1/params.js +0 -716
  425. package/dist/generated/ts/cometbft/types/v1/validator.js +0 -358
  426. package/dist/generated/ts/cosmos/app/v1alpha1/module.js +0 -221
  427. package/dist/generated/ts/cosmos_proto/cosmos.js +0 -216
  428. package/dist/generated/ts/google/api/http.js +0 -356
  429. package/dist/generated/ts/google/protobuf/duration.js +0 -93
  430. package/dist/generated/ts/google/protobuf/timestamp.js +0 -93
  431. package/dist/generated/ts/google/protobuf/wrappers.js +0 -509
  432. package/dist/generated/ts/inco/abci/v1/types.js +0 -73
  433. package/dist/generated/ts/inco/fhe/module/v1/module.js +0 -66
  434. package/dist/generated/ts/inco/fhe/v1/events.js +0 -190
  435. package/dist/generated/ts/inco/fhe/v1/genesis.js +0 -714
  436. package/dist/generated/ts/inco/fhe/v1/types.js +0 -990
  437. package/dist/generated/ts/inco/originchain/module/v1/module.js +0 -66
  438. package/dist/generated/ts/inco/originchain/v1/abci.js +0 -331
  439. package/dist/generated/ts/inco/originchain/v1/events.js +0 -216
  440. package/dist/generated/ts/inco/originchain/v1/genesis.js +0 -69
  441. package/dist/generated/ts/inco/originchain/v1/query.js +0 -280
  442. package/dist/generated/ts/inco/originchain/v1/tx.js +0 -140
  443. package/dist/generated/ts/inco/originchain/v1/types.js +0 -203
  444. package/dist/generated/ts/inco/preflight/module/v1/module.js +0 -66
  445. package/dist/generated/ts/inco/preflight/v1/genesis.js +0 -185
  446. package/dist/generated/ts/inco/preflight/v1/query.js +0 -259
  447. package/dist/generated/ts/inco/preflight/v1/tx.js +0 -448
  448. package/dist/generated/ts/inco/preflight/v1/types.js +0 -398
  449. package/dist/index.d.ts +0 -5
  450. package/dist/l1/index.d.ts +0 -2
  451. package/dist/l1/preflight.js +0 -42
  452. package/dist/lite/attested-decrypt.js +0 -6
  453. package/dist/lite/deployments.js +0 -21
  454. package/dist/lite/ecies.js +0 -135
  455. package/dist/lite/hadu.js +0 -41
  456. package/dist/lite/index.d.ts +0 -7
  457. package/dist/lite/index.js +0 -23
  458. package/dist/lite/lightning.js +0 -198
  459. package/dist/lite/reencrypt.js +0 -142
  460. package/dist/local/index.d.ts +0 -1
  461. package/dist/reencryption/index.d.ts +0 -2
  462. package/dist/reencryption/index.js +0 -19
  463. package/dist/types.d.ts +0 -20
  464. package/dist/types.js +0 -3
  465. package/dist/viem.js +0 -12
  466. /package/dist/{binary.d.ts → cjs/binary.d.ts} +0 -0
  467. /package/dist/{chain.d.ts → cjs/chain.d.ts} +0 -0
  468. /package/dist/{generated → cjs/generated}/abis/addTwo.d.ts +0 -0
  469. /package/dist/{generated → cjs/generated}/abis/inco-fhevm.d.ts +0 -0
  470. /package/dist/{generated → cjs/generated}/abis/index.d.ts +0 -0
  471. /package/dist/{generated → cjs/generated}/abis/lightning.d.ts +0 -0
  472. /package/dist/{generated → cjs/generated}/es/cosmos/ics23/v1/proofs_pb.d.ts +0 -0
  473. /package/dist/{generated → cjs/generated}/es/cosmos/msg/v1/msg_pb.d.ts +0 -0
  474. /package/dist/{generated → cjs/generated}/es/cosmos_proto/cosmos_pb.d.ts +0 -0
  475. /package/dist/{generated → cjs/generated}/es/google/api/annotations_pb.d.ts +0 -0
  476. /package/dist/{generated → cjs/generated}/es/google/api/http_pb.d.ts +0 -0
  477. /package/dist/{generated → cjs/generated}/es/inco/fhe/v1/events_pb.d.ts +0 -0
  478. /package/dist/{generated → cjs/generated}/es/inco/fhe/v1/genesis_pb.d.ts +0 -0
  479. /package/dist/{generated → cjs/generated}/es/inco/fhe/v1/query_pb.d.ts +0 -0
  480. /package/dist/{generated → cjs/generated}/es/inco/fhe/v1/tx_pb.d.ts +0 -0
  481. /package/dist/{generated → cjs/generated}/es/inco/fhe/v1/types_pb.d.ts +0 -0
  482. /package/dist/{generated → cjs/generated}/es/inco/kms/lite/v1/types_pb.d.ts +0 -0
  483. /package/dist/{generated → cjs/generated}/es/inco/preflight/v1/genesis_pb.d.ts +0 -0
  484. /package/dist/{generated → cjs/generated}/es/inco/preflight/v1/query_pb.d.ts +0 -0
  485. /package/dist/{generated → cjs/generated}/es/inco/preflight/v1/tx_pb.d.ts +0 -0
  486. /package/dist/{generated → cjs/generated}/es/inco/preflight/v1/types_pb.d.ts +0 -0
  487. /package/dist/{generated → cjs/generated}/es/kms/base_pb.d.ts +0 -0
  488. /package/dist/{generated → cjs/generated}/es/sf/ethereum/type/v2/type_pb.d.ts +0 -0
  489. /package/dist/{generated → cjs/generated}/fhe-environments.d.ts +0 -0
  490. /package/dist/{generated → cjs/generated}/lightning.d.ts +0 -0
  491. /package/dist/{generated → cjs/generated}/ts/amino/amino.d.ts +0 -0
  492. /package/dist/{generated → cjs/generated}/ts/cometbft/abci/v1/types.d.ts +0 -0
  493. /package/dist/{generated → cjs/generated}/ts/cometbft/crypto/v1/keys.d.ts +0 -0
  494. /package/dist/{generated → cjs/generated}/ts/cometbft/crypto/v1/proof.d.ts +0 -0
  495. /package/dist/{generated → cjs/generated}/ts/cometbft/types/v1/params.d.ts +0 -0
  496. /package/dist/{generated → cjs/generated}/ts/cometbft/types/v1/validator.d.ts +0 -0
  497. /package/dist/{generated → cjs/generated}/ts/cosmos/app/v1alpha1/module.d.ts +0 -0
  498. /package/dist/{generated → cjs/generated}/ts/cosmos/msg/v1/msg.d.ts +0 -0
  499. /package/dist/{generated → cjs/generated}/ts/cosmos_proto/cosmos.d.ts +0 -0
  500. /package/dist/{generated → cjs/generated}/ts/gogoproto/gogo.d.ts +0 -0
  501. /package/dist/{generated → cjs/generated}/ts/google/api/annotations.d.ts +0 -0
  502. /package/dist/{generated → cjs/generated}/ts/google/api/http.d.ts +0 -0
  503. /package/dist/{generated → cjs/generated}/ts/google/protobuf/descriptor.d.ts +0 -0
  504. /package/dist/{generated → cjs/generated}/ts/google/protobuf/duration.d.ts +0 -0
  505. /package/dist/{generated → cjs/generated}/ts/google/protobuf/timestamp.d.ts +0 -0
  506. /package/dist/{generated → cjs/generated}/ts/google/protobuf/wrappers.d.ts +0 -0
  507. /package/dist/{generated → cjs/generated}/ts/inco/abci/v1/types.d.ts +0 -0
  508. /package/dist/{generated → cjs/generated}/ts/inco/fhe/module/v1/module.d.ts +0 -0
  509. /package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/events.d.ts +0 -0
  510. /package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/genesis.d.ts +0 -0
  511. /package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/query.d.ts +0 -0
  512. /package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/tx.d.ts +0 -0
  513. /package/dist/{generated → cjs/generated}/ts/inco/fhe/v1/types.d.ts +0 -0
  514. /package/dist/{generated → cjs/generated}/ts/inco/originchain/module/v1/module.d.ts +0 -0
  515. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/abci.d.ts +0 -0
  516. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/events.d.ts +0 -0
  517. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/genesis.d.ts +0 -0
  518. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/query.d.ts +0 -0
  519. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/tx.d.ts +0 -0
  520. /package/dist/{generated → cjs/generated}/ts/inco/originchain/v1/types.d.ts +0 -0
  521. /package/dist/{generated → cjs/generated}/ts/inco/preflight/module/v1/module.d.ts +0 -0
  522. /package/dist/{generated → cjs/generated}/ts/inco/preflight/v1/genesis.d.ts +0 -0
  523. /package/dist/{generated → cjs/generated}/ts/inco/preflight/v1/query.d.ts +0 -0
  524. /package/dist/{generated → cjs/generated}/ts/inco/preflight/v1/tx.d.ts +0 -0
  525. /package/dist/{generated → cjs/generated}/ts/inco/preflight/v1/types.d.ts +0 -0
  526. /package/dist/{local → cjs/local}/local-node.d.ts +0 -0
  527. /package/dist/{reencryption → cjs/reencryption}/eip712.d.ts +0 -0
  528. /package/dist/{retry.d.ts → cjs/retry.d.ts} +0 -0
  529. /package/dist/{schema.d.ts → cjs/schema.d.ts} +0 -0
@@ -0,0 +1,24 @@
1
+ // No imports here to avoid issues with closures and modules across pulumi boundary
2
+ // This file can be seen as mirroring the functionality of viem changes without depending on it directly.
3
+ // It exists as a workaround for some very gnarly issues with code reuse between Pulumi and this module, partly
4
+ // relating to modules but also linked to Pulumi's ability to capture closures and serialise them.
5
+ export const supportedChains = {
6
+ baseSepolia: 84532,
7
+ sepolia: 11155111,
8
+ monadTestnet: 10143,
9
+ };
10
+ export const fheSupportedChains = { baseSepolia: 84532, sepolia: 11155111 };
11
+ // Get supportedChain either by its chain ID or the short name (lower pascal case)
12
+ export function getSupportedChain(chainish) {
13
+ const found = typeof chainish === 'number' || typeof chainish === 'bigint'
14
+ ? Object.entries(supportedChains).find(([, id]) => id === Number(chainish))
15
+ : typeof chainish === 'object'
16
+ ? Object.entries(supportedChains).find(([, id]) => id === Number(chainish.id))
17
+ : Object.entries(supportedChains).find(([shortName]) => shortName === chainish);
18
+ if (!found) {
19
+ throw new Error(`Supported chain ${JSON.stringify(chainish)} not found`);
20
+ }
21
+ const [name, id] = found;
22
+ return { name: name, id };
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUZBQW1GO0FBRW5GLHlHQUF5RztBQUN6RywrR0FBK0c7QUFDL0csa0dBQWtHO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixXQUFXLEVBQUUsS0FBSztJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixZQUFZLEVBQUUsS0FBSztDQUNYLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBVyxDQUFDO0FBY3JGLGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBa0I7SUFDbEQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRO1lBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQTBCLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQsQ0FBQyJ9
@@ -0,0 +1,119 @@
1
+ import { Schema } from 'effect';
2
+ import { Bytes32 } from '../binary.js';
3
+ import { InputContext } from '../handle.js';
4
+ export type Encryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(plaintext: PlaintextWithContextOf<S, T>) => Promise<EncryptResultOf<S, T>>;
5
+ export type Decryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(ciphertext: CiphertextOf<S, T>, context?: InputContext) => Promise<PlaintextOf<S, T>>;
6
+ export declare const supportedFheTypes: {
7
+ readonly euint64: 5;
8
+ readonly euint160: 7;
9
+ readonly euint256: 8;
10
+ readonly ebool: 0;
11
+ };
12
+ export declare const SupportedFheTypeName: Schema.SchemaClass<"ebool" | "euint64" | "euint160" | "euint256", "ebool" | "euint64" | "euint160" | "euint256", never>;
13
+ export type SupportedFheTypeName = typeof SupportedFheTypeName.Type;
14
+ export declare const SupportedFheType: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
15
+ export type SupportedFheType = typeof SupportedFheType.Type;
16
+ export declare const encryptionSchemes: {
17
+ readonly tfhe: 0;
18
+ readonly ecies: 1;
19
+ readonly cryptobox: 2;
20
+ };
21
+ export declare function getEncryptionSchemeName(scheme: number): string;
22
+ export type EncryptionSchemes = typeof encryptionSchemes;
23
+ export type EciesScheme = EncryptionSchemes['ecies'];
24
+ export type TfheScheme = EncryptionSchemes['tfhe'];
25
+ export type CryptoboxScheme = EncryptionSchemes['cryptobox'];
26
+ export declare const EncryptionScheme: Schema.Literal<[0, 1, 2]>;
27
+ export type EncryptionScheme = typeof EncryptionScheme.Type;
28
+ type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
29
+ scheme: S;
30
+ type: T;
31
+ } : never;
32
+ export declare const ciphertextEnvelopes: {
33
+ readonly none: 0;
34
+ readonly hadu: 1;
35
+ };
36
+ export declare const CiphertextEnvelope: Schema.SchemaClass<0 | 1, 0 | 1, never>;
37
+ export declare const Ciphertext: Schema.Struct<{
38
+ scheme: Schema.Literal<[0, 1, 2]>;
39
+ type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
40
+ value: Schema.TemplateLiteral<`0x${string}`>;
41
+ envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
42
+ }>;
43
+ export type Ciphertext = typeof Ciphertext.Type;
44
+ export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
45
+ export declare const CiphertextWithContext: Schema.Struct<{
46
+ ciphertext: Schema.Struct<{
47
+ scheme: Schema.Literal<[0, 1, 2]>;
48
+ type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
49
+ value: Schema.TemplateLiteral<`0x${string}`>;
50
+ envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
51
+ }>;
52
+ context: Schema.Struct<{
53
+ hostChainId: typeof Schema.BigInt;
54
+ aclAddress: Schema.TemplateLiteral<`0x${string}`>;
55
+ userAddress: Schema.TemplateLiteral<`0x${string}`>;
56
+ contractAddress: Schema.TemplateLiteral<`0x${string}`>;
57
+ }>;
58
+ }>;
59
+ export type CiphertextWithContext = typeof CiphertextWithContext.Type;
60
+ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends SupportedFheType> = CiphertextWithContext & {
61
+ ciphertext: CiphertextOf<S, T>;
62
+ };
63
+ export declare const EncryptResult: Schema.Struct<{
64
+ ciphertext: Schema.Struct<{
65
+ scheme: Schema.Literal<[0, 1, 2]>;
66
+ type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
67
+ value: Schema.TemplateLiteral<`0x${string}`>;
68
+ envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
69
+ }>;
70
+ context: Schema.Struct<{
71
+ hostChainId: typeof Schema.BigInt;
72
+ aclAddress: Schema.TemplateLiteral<`0x${string}`>;
73
+ userAddress: Schema.TemplateLiteral<`0x${string}`>;
74
+ contractAddress: Schema.TemplateLiteral<`0x${string}`>;
75
+ }>;
76
+ prehandle: Schema.brand<Schema.filter<Schema.transformOrFail<Schema.Union<[typeof Schema.String, Schema.refine<object & Uint8Array<ArrayBufferLike>, Schema.Schema<object, object, never>>]>, Schema.TemplateLiteral<`0x${string}`>, never>>, "Bytes32">;
77
+ handle: Schema.brand<Schema.filter<Schema.transformOrFail<Schema.Union<[typeof Schema.String, Schema.refine<object & Uint8Array<ArrayBufferLike>, Schema.Schema<object, object, never>>]>, Schema.TemplateLiteral<`0x${string}`>, never>>, "Bytes32">;
78
+ }>;
79
+ export type EncryptResult = typeof EncryptResult.Type;
80
+ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheType> = EncryptResult & {
81
+ ciphertext: CiphertextOf<S, T>;
82
+ };
83
+ export declare const Plaintext: Schema.Union<[Schema.Struct<{
84
+ scheme: Schema.Literal<[0, 1, 2]>;
85
+ type: Schema.Literal<[5, 7, 8]>;
86
+ value: typeof Schema.BigInt;
87
+ }>, Schema.Struct<{
88
+ scheme: Schema.Literal<[0, 1, 2]>;
89
+ type: Schema.Literal<[0]>;
90
+ value: typeof Schema.Boolean;
91
+ }>]>;
92
+ export type Plaintext = typeof Plaintext.Type;
93
+ export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
94
+ export declare const PlaintextWithContext: Schema.Struct<{
95
+ plaintext: Schema.Union<[Schema.Struct<{
96
+ scheme: Schema.Literal<[0, 1, 2]>;
97
+ type: Schema.Literal<[5, 7, 8]>;
98
+ value: typeof Schema.BigInt;
99
+ }>, Schema.Struct<{
100
+ scheme: Schema.Literal<[0, 1, 2]>;
101
+ type: Schema.Literal<[0]>;
102
+ value: typeof Schema.Boolean;
103
+ }>]>;
104
+ context: Schema.Struct<{
105
+ hostChainId: typeof Schema.BigInt;
106
+ aclAddress: Schema.TemplateLiteral<`0x${string}`>;
107
+ userAddress: Schema.TemplateLiteral<`0x${string}`>;
108
+ contractAddress: Schema.TemplateLiteral<`0x${string}`>;
109
+ }>;
110
+ }>;
111
+ export type PlaintextWithContext = typeof PlaintextWithContext.Type;
112
+ export type PlaintextWithContextOf<S extends EncryptionScheme, T extends SupportedFheType> = PlaintextWithContext & {
113
+ plaintext: PlaintextOf<S, T>;
114
+ };
115
+ export declare function bigintToPlaintext<S extends EncryptionScheme, T extends SupportedFheType>(scheme: S, type: T, bigPt: bigint): PlaintextOf<S, T>;
116
+ export declare function plaintextToBigint(plaintext: Plaintext): bigint;
117
+ export declare function plaintextToBytes32(plaintext: Plaintext): Bytes32;
118
+ export declare function bytes32ToPlaintext(plaintext: Bytes32, scheme: EncryptionScheme, type: SupportedFheType): Plaintext;
119
+ export {};
@@ -0,0 +1,101 @@
1
+ import { Schema } from 'effect';
2
+ import { bigintToBytes32, Bytes32, HexString } from '../binary.js';
3
+ import { handleTypes, InputContext } from '../handle.js';
4
+ export const supportedFheTypes = {
5
+ euint64: handleTypes.euint64,
6
+ euint160: handleTypes.euint160,
7
+ euint256: handleTypes.euint256,
8
+ ebool: handleTypes.ebool,
9
+ };
10
+ const supportedFheTypeNames = Object.keys(supportedFheTypes);
11
+ export const SupportedFheTypeName = Schema.Literal(...supportedFheTypeNames);
12
+ // TODO: extend to all types
13
+ export const SupportedFheType = Schema.Literal(...Object.values(supportedFheTypes));
14
+ export const encryptionSchemes = {
15
+ tfhe: 0,
16
+ ecies: 1,
17
+ cryptobox: 2,
18
+ };
19
+ export function getEncryptionSchemeName(scheme) {
20
+ switch (scheme) {
21
+ case encryptionSchemes.tfhe:
22
+ return 'TFHE';
23
+ case encryptionSchemes.ecies:
24
+ return 'ECIES';
25
+ case encryptionSchemes.cryptobox:
26
+ return 'NACLCryptoBox';
27
+ default:
28
+ throw new Error(`Unknown encryption scheme: ${scheme}`);
29
+ }
30
+ }
31
+ export const EncryptionScheme = Schema.Literal(encryptionSchemes.tfhe, encryptionSchemes.ecies, encryptionSchemes.cryptobox);
32
+ export const ciphertextEnvelopes = {
33
+ none: 0,
34
+ hadu: 1,
35
+ };
36
+ export const CiphertextEnvelope = Schema.Literal(...Object.values(ciphertextEnvelopes));
37
+ export const Ciphertext = Schema.Struct({
38
+ scheme: EncryptionScheme,
39
+ type: SupportedFheType,
40
+ value: HexString,
41
+ envelope: Schema.optional(CiphertextEnvelope),
42
+ });
43
+ export const CiphertextWithContext = Schema.Struct({
44
+ ciphertext: Ciphertext,
45
+ context: InputContext,
46
+ });
47
+ export const EncryptResult = Schema.Struct({
48
+ ciphertext: Ciphertext,
49
+ context: InputContext,
50
+ prehandle: Bytes32,
51
+ handle: Bytes32,
52
+ });
53
+ export const Plaintext = Schema.Union(Schema.Struct({
54
+ scheme: EncryptionScheme,
55
+ type: Schema.Literal(handleTypes.euint64, handleTypes.euint160, handleTypes.euint256),
56
+ value: Schema.BigInt,
57
+ }), Schema.Struct({
58
+ scheme: EncryptionScheme,
59
+ type: Schema.Literal(handleTypes.ebool),
60
+ value: Schema.Boolean,
61
+ }));
62
+ export const PlaintextWithContext = Schema.Struct({
63
+ plaintext: Plaintext,
64
+ context: InputContext,
65
+ });
66
+ export function bigintToPlaintext(scheme, type, bigPt) {
67
+ switch (type) {
68
+ case handleTypes.euint64:
69
+ case handleTypes.euint160:
70
+ case handleTypes.euint256:
71
+ return {
72
+ scheme,
73
+ type,
74
+ value: bigPt,
75
+ };
76
+ case handleTypes.ebool:
77
+ return {
78
+ scheme,
79
+ type,
80
+ value: bigPt !== 0n,
81
+ };
82
+ }
83
+ throw new Error(`Unsupported FHE type: ${type}`);
84
+ }
85
+ export function plaintextToBigint(plaintext) {
86
+ switch (plaintext.type) {
87
+ case handleTypes.euint64:
88
+ case handleTypes.euint160:
89
+ case handleTypes.euint256:
90
+ return plaintext.value;
91
+ case handleTypes.ebool:
92
+ return plaintext.value ? 1n : 0n;
93
+ }
94
+ }
95
+ export function plaintextToBytes32(plaintext) {
96
+ return bigintToBytes32(plaintextToBigint(plaintext));
97
+ }
98
+ export function bytes32ToPlaintext(plaintext, scheme, type) {
99
+ return bigintToPlaintext(scheme, type, BigInt(plaintext));
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmNyeXB0aW9uL2VuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFhekQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO0lBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtJQUM5QixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7SUFDOUIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO0NBQ2hCLENBQUM7QUFFWCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQXVDLENBQUM7QUFFbkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUM7QUFJN0UsNEJBQTRCO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUlwRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsU0FBUyxFQUFFLENBQUM7Q0FDSixDQUFDO0FBRVgsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssaUJBQWlCLENBQUMsSUFBSTtZQUN6QixPQUFPLE1BQU0s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
@@ -0,0 +1 @@
1
+ export * from './encryption.js';
@@ -0,0 +1,2 @@
1
+ export * from './encryption.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5jcnlwdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ import { Chainish } from '../chain.js';
2
+ export type Address = `0x${string}`;
3
+ export type FheEnvironment = {
4
+ aclAddress: Address;
5
+ thfeExecutorAddress: Address;
6
+ gatewayAddress: Address;
7
+ kmsVerifierAddress: Address;
8
+ };
9
+ export declare function getFheEnvironment(chainId: Chainish): FheEnvironment;
@@ -0,0 +1,8 @@
1
+ // Avoid inporting any other dependencies in this file to avoid serialisation issues downstream in infracto
2
+ import { getSupportedChain } from '../chain.js';
3
+ import { FHEEnvironments } from '../generated/fhe-environments.js';
4
+ export function getFheEnvironment(chainId) {
5
+ const supportedChain = getSupportedChain(chainId);
6
+ return FHEEnvironments[supportedChain.name];
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmhlLWVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZoZXZtL2ZoZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyR0FBMkc7QUFDM0csT0FBTyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFhbkUsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWlCO0lBQ2pELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUF1QyxDQUFDLENBQUM7QUFDakYsQ0FBQyJ9
@@ -0,0 +1,41 @@
1
+ import { Account, Chain, PublicClient, TransactionReceipt, Transport, WalletClient } from 'viem';
2
+ import { SupportedChain } from '../chain.js';
3
+ export type PublicWalletClient = {
4
+ public: PublicClient<Transport, Chain, Account>;
5
+ wallet: WalletClient<Transport, Chain, Account>;
6
+ };
7
+ export declare function createPublicWalletClient({ account, hostChainRpcUrl, chain, }: {
8
+ account: Account;
9
+ hostChainRpcUrl: string;
10
+ chain: Chain;
11
+ }): PublicWalletClient;
12
+ export declare function getFhevmDeployerClient({ deployer, hostChainRpcUrl, chain, }: {
13
+ deployer: Account;
14
+ hostChainRpcUrl: string;
15
+ chain: SupportedChain;
16
+ }): PublicWalletClient;
17
+ export type PrivateKeys = {
18
+ relayer: string;
19
+ kmsSigner: string;
20
+ deployer: string;
21
+ };
22
+ export type HostChainConfig = {
23
+ privateKeys: PrivateKeys;
24
+ rpcUrl: string;
25
+ };
26
+ export declare function configureFhevmContracts({ chain, hostChain: { privateKeys, rpcUrl }, }: {
27
+ hostChain: HostChainConfig;
28
+ chain: SupportedChain;
29
+ }): Promise<{
30
+ addRelayerTxReceipt: TransactionReceipt | null;
31
+ addKmsSignerTxReceipt: TransactionReceipt | null;
32
+ }>;
33
+ export type L1Config = {
34
+ cometRpcEndpoint: string;
35
+ mnemonic: string;
36
+ grpcEndpoint: string;
37
+ };
38
+ export declare function ensureFheEnvironmentRegistered({ l1, chain, }: {
39
+ l1: L1Config;
40
+ chain: SupportedChain;
41
+ }): Promise<void>;
@@ -0,0 +1,139 @@
1
+ import { createClient } from '@connectrpc/connect';
2
+ import { createGrpcTransport } from '@connectrpc/connect-node';
3
+ import { createPublicClient, createWalletClient, getContract, http, } from 'viem';
4
+ import { privateKeyToAccount } from 'viem/accounts';
5
+ import * as chains from 'viem/chains';
6
+ import { normaliseToHex } from '../binary.js';
7
+ import { gatewayContractAbi, kmsVerifierAbi } from '../generated/abis/inco-fhevm.js';
8
+ import { Query } from '../generated/es/inco/fhe/v1/query_pb.js';
9
+ import { createL1Client, createL1Wallet } from '../l1/index.js';
10
+ import { getFheEnvironment } from './fhe-environment.js';
11
+ // Create a public and wallet client for the given chain.
12
+ export function createPublicWalletClient({ account, hostChainRpcUrl, chain, }) {
13
+ const transport = http(hostChainRpcUrl);
14
+ const publicClient = createPublicClient({
15
+ chain,
16
+ transport,
17
+ });
18
+ // const privateKey = await shell("cast wallet private-key --account sepolia_deployer --password ''");
19
+ // const account = privateKeyToAccount(mustBeHex(privateKey));
20
+ const walletClient = createWalletClient({
21
+ chain,
22
+ transport,
23
+ account,
24
+ });
25
+ return { public: publicClient, wallet: walletClient };
26
+ }
27
+ export function getFhevmDeployerClient({ deployer, hostChainRpcUrl, chain, }) {
28
+ const viemChain = getViemChain(chain.id);
29
+ const transport = http(hostChainRpcUrl);
30
+ const publicClient = createPublicClient({
31
+ chain: viemChain,
32
+ transport,
33
+ });
34
+ // const privateKey = await shell("cast wallet private-key --account sepolia_deployer --password ''");
35
+ // const account = privateKeyToAccount(mustBeHex(privateKey));
36
+ const walletClient = createWalletClient({
37
+ chain: viemChain,
38
+ transport,
39
+ account: deployer,
40
+ });
41
+ return { public: publicClient, wallet: walletClient };
42
+ }
43
+ export async function configureFhevmContracts({ chain, hostChain: { privateKeys, rpcUrl }, }) {
44
+ const deployer = privateKeyToAccount(normaliseToHex(privateKeys.deployer));
45
+ const relayer = privateKeyToAccount(normaliseToHex(privateKeys.relayer));
46
+ const kmsSigner = privateKeyToAccount(normaliseToHex(privateKeys.kmsSigner));
47
+ console.log(`Configuring FHE environment contracts on ${chain.name} with deployer ${deployer.address}, relayer ${relayer.address}, and KMS signer ${kmsSigner.address}...`);
48
+ const client = getFhevmDeployerClient({
49
+ hostChainRpcUrl: rpcUrl,
50
+ deployer,
51
+ chain,
52
+ });
53
+ const { gatewayAddress, kmsVerifierAddress } = getFheEnvironment(chain.id);
54
+ const gateway = getContract({
55
+ address: gatewayAddress,
56
+ abi: gatewayContractAbi,
57
+ client,
58
+ });
59
+ const kmsVerifier = getContract({
60
+ address: kmsVerifierAddress,
61
+ abi: kmsVerifierAbi,
62
+ client,
63
+ });
64
+ console.log(`Adding relayer ${relayer.address}...`);
65
+ let addRelayerTxReceipt = null;
66
+ let addKmsSignerTxReceipt = null;
67
+ const ErrAlreadyRelayer = 'Address is already relayer';
68
+ try {
69
+ const addRelayerTxHash = await gateway.write.addRelayer([relayer.address]);
70
+ addRelayerTxReceipt = await client.public.waitForTransactionReceipt({
71
+ hash: addRelayerTxHash,
72
+ });
73
+ }
74
+ catch (err) {
75
+ if (!err.message.includes(ErrAlreadyRelayer)) {
76
+ throw err;
77
+ }
78
+ console.log(`Relayer ${relayer.address} already added`);
79
+ }
80
+ console.log(`Adding KMS signer ${kmsSigner.address}...`);
81
+ const ErrAlreadySigner = 'Address is already a signer';
82
+ try {
83
+ const addKmsSignerTxHash = await kmsVerifier.write.addSigner([kmsSigner.address]);
84
+ addKmsSignerTxReceipt = await client.public.waitForTransactionReceipt({
85
+ hash: addKmsSignerTxHash,
86
+ });
87
+ }
88
+ catch (err) {
89
+ if (!err.message.includes(ErrAlreadySigner)) {
90
+ throw err;
91
+ }
92
+ console.log(`KMS signer ${kmsSigner.address} already added`);
93
+ }
94
+ return { addRelayerTxReceipt, addKmsSignerTxReceipt };
95
+ }
96
+ // Attempts to ensure the given Inco L1 has the FHE environment for the given chain/ACL registered.
97
+ // based extracting from logs.
98
+ export async function ensureFheEnvironmentRegistered({ l1, chain, }) {
99
+ console.log(`Ensuring FHE environment is registered on ${l1.grpcEndpoint} ...`);
100
+ const { aclAddress } = getFheEnvironment(chain.id);
101
+ const wallet = await createL1Wallet(l1.mnemonic);
102
+ const signingClient = await createL1Client({
103
+ cometRpcEndpoint: l1.cometRpcEndpoint,
104
+ grpcEndpoint: l1.grpcEndpoint,
105
+ wallet,
106
+ });
107
+ const transport = createGrpcTransport({ baseUrl: l1.grpcEndpoint });
108
+ const queryClient = createClient(Query, transport);
109
+ const [signingAccount] = await wallet.getAccounts();
110
+ const fheEnvArg = {
111
+ keysetId: aclAddress.slice(2),
112
+ hostChainId: `evm/${chain.id}`,
113
+ accessControl: undefined,
114
+ };
115
+ const NotFoundErrorMessage = 'collections: not found';
116
+ try {
117
+ const { fheEnv } = await queryClient.fheEnv(fheEnvArg);
118
+ console.log(`FHE environment already registered on ${chain.id} using ACL ${aclAddress} : ${JSON.stringify(fheEnv)} `);
119
+ }
120
+ catch (err) {
121
+ if (String(err).includes(NotFoundErrorMessage)) {
122
+ const tx = await signingClient.sendTx(signingAccount.address, '/inco.fhe.v1.MsgAddFheEnv', {
123
+ fheEnv: fheEnvArg,
124
+ authority: signingAccount.address,
125
+ });
126
+ console.log(tx);
127
+ return;
128
+ }
129
+ throw err;
130
+ }
131
+ }
132
+ function getViemChain(chainId) {
133
+ const found = Object.values(chains).find((chain) => chain.id === chainId);
134
+ if (!found) {
135
+ throw new Error(`could not find chain with id ${chainId}`);
136
+ }
137
+ return found;
138
+ }
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmhldm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmhldm0vZmhldm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFHTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxJQUFJLEdBS0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPekQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUN2QyxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssR0FLTjtJQUNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBNEI7UUFDakUsS0FBSztRQUNMLFNBQVM7S0FDVixDQUFDLENBQUM7SUFDSCxzR0FBc0c7SUFDdEcsOERBQThEO0lBQzlELE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ3RDLEtBQUs7UUFDTCxTQUFTO1FBQ1QsT0FBTztLQUNSLENBQUMsQ0FBQztJQUVILE9BQU8sRUFB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
@@ -0,0 +1 @@
1
+ export * from './fhe-environment.js';
@@ -0,0 +1,2 @@
1
+ export * from './fhe-environment.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmhldm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyJ9
@@ -0,0 +1,20 @@
1
+ import { Account, Address, Chain, Transport, WalletClient } from 'viem';
2
+ import { CryptoboxScheme } from '../encryption/encryption.js';
3
+ import type { Reencryptor, ReencryptorArgs } from '../reencryption/index.js';
4
+ import type { PubKeyEncodable } from '../reencryption/types.js';
5
+ export interface EphemeralCryptoBoxKeypair extends PubKeyEncodable {
6
+ scheme: CryptoboxScheme;
7
+ publicKey: Uint8Array;
8
+ privateKey: Uint8Array;
9
+ }
10
+ export interface ZamaReencryptorArgs extends ReencryptorArgs {
11
+ gatewayUrl: string;
12
+ unsafeSkipVerifyKMSSignatures?: boolean;
13
+ walletClient: WalletClient<Transport, Chain, Account>;
14
+ contractAddress: Address;
15
+ chainId: bigint;
16
+ kmsSigners: Address[];
17
+ userAddress: Address;
18
+ }
19
+ export declare function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVerifyKMSSignatures, contractAddress, kmsSigners, userAddress, }: ZamaReencryptorArgs): Promise<Reencryptor<CryptoboxScheme>>;
20
+ export declare function generateCryptoBoxEphemeralKeyPair(): EphemeralCryptoBoxKeypair;
@@ -0,0 +1,123 @@
1
+ import { Schema } from 'effect';
2
+ import { cryptobox_get_pk, cryptobox_keygen, cryptobox_pk_to_u8vec, cryptobox_sk_to_u8vec, new_client, process_reencryption_resp_from_js, u8vec_to_cryptobox_pk, u8vec_to_cryptobox_sk, } from 'node-tkms';
3
+ import { getAddress, hexToBigInt } from 'viem';
4
+ import { bytesToBigInt, bytesToHex } from '../binary.js';
5
+ import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption.js';
6
+ import { getHandleType } from '../handle.js';
7
+ import { createEIP712Payload } from '../reencryption/index.js';
8
+ import { parse } from '../schema.js';
9
+ // The domain constants that Zama uses for reencrypts.
10
+ const ZAMA_REENCRYPT_DOMAIN = {
11
+ name: 'Authorization token',
12
+ version: '1',
13
+ salt: undefined,
14
+ };
15
+ export async function zamaReencryptor({ chainId, gatewayUrl, walletClient, unsafeSkipVerifyKMSSignatures, contractAddress, kmsSigners, userAddress, }) {
16
+ const ephemeralKeypair = generateCryptoBoxEphemeralKeyPair();
17
+ // Sign the EIP712 attesting that the user has access to the private key
18
+ // corresponding to the ephemeral public key.
19
+ const eip712Payload = createEIP712Payload({
20
+ chainId,
21
+ primaryType: 'ReencryptionRequest',
22
+ primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
23
+ message: {
24
+ publicKey: bytesToHex(ephemeralKeypair.encodePublicKey()),
25
+ },
26
+ domainName: ZAMA_REENCRYPT_DOMAIN.name,
27
+ domainVersion: ZAMA_REENCRYPT_DOMAIN.version,
28
+ });
29
+ // Using browser extensions, this step will prompt the user to sign the
30
+ // payload.
31
+ const eip712Signature = await walletClient.signTypedData(eip712Payload);
32
+ return async function reencrypt({ handle, }) {
33
+ const handleBigInt = hexToBigInt(handle);
34
+ const reencryptRequest = {
35
+ signature: eip712Signature.replace(/^(0x)/, ''),
36
+ client_address: getAddress(userAddress),
37
+ enc_key: bytesToHex(ephemeralKeypair.encodePublicKey()).replace(/^(0x)/, ''),
38
+ ciphertext_handle: handleBigInt.toString(16).padStart(64, '0'),
39
+ eip712_verifying_contract: getAddress(contractAddress),
40
+ };
41
+ const reencryptResponse = await makeReencryptRequest(reencryptRequest, gatewayUrl);
42
+ let pubKey;
43
+ let privKey;
44
+ try {
45
+ pubKey = u8vec_to_cryptobox_pk(ephemeralKeypair.publicKey);
46
+ privKey = u8vec_to_cryptobox_sk(ephemeralKeypair.privateKey);
47
+ }
48
+ catch (e) {
49
+ throw new Error(`Invalid public or private key: ${JSON.stringify(e)}`);
50
+ }
51
+ const client = new_client(kmsSigners, userAddress, 'default');
52
+ try {
53
+ const buffer = new ArrayBuffer(32);
54
+ const view = new DataView(buffer);
55
+ view.setUint32(28, Number(chainId), false);
56
+ const chainIdArrayBE = new Uint8Array(buffer);
57
+ // Duplicate reencryptRequest and replace ciphertext_handle with ciphertext_digest.
58
+ const { ciphertext_handle, ...p } = reencryptRequest;
59
+ // TODO (from Zama): check all ciphertext digests are all the same
60
+ const payloadForVerification = {
61
+ ...p,
62
+ ciphertext_digest: reencryptResponse.response[0].ciphertext_digest,
63
+ };
64
+ const decrypted = process_reencryption_resp_from_js(client, payloadForVerification, {
65
+ name: eip712Payload.domain.name,
66
+ version: eip712Payload.domain.version,
67
+ chain_id: chainIdArrayBE,
68
+ verifying_contract: eip712Payload.domain.verifyingContract,
69
+ }, reencryptResponse.response, pubKey, privKey, !unsafeSkipVerifyKMSSignatures);
70
+ return bigintToPlaintext(encryptionSchemes.cryptobox, getHandleType(handle), bytesToBigInt(decrypted));
71
+ }
72
+ catch (e) {
73
+ console.error(e);
74
+ throw new Error(`An error occurred during decryption: ${e}`);
75
+ }
76
+ };
77
+ }
78
+ // Generate a new ephemeral keypair for reencryption.
79
+ export function generateCryptoBoxEphemeralKeyPair() {
80
+ const keypair = cryptobox_keygen();
81
+ const publicKey = cryptobox_pk_to_u8vec(cryptobox_get_pk(keypair));
82
+ return {
83
+ scheme: encryptionSchemes.cryptobox,
84
+ publicKey,
85
+ privateKey: cryptobox_sk_to_u8vec(keypair),
86
+ encodePublicKey() {
87
+ return publicKey;
88
+ },
89
+ };
90
+ }
91
+ // This is the response type of the reencrypt endpoint, defined on the
92
+ // server-side in Zama's gateway. The response field is a vector of this struct
93
+ // in Rust:
94
+ // https://github.com/zama-ai/kms-core/blob/a3b824b389e87429d04537696e28dee902a3b2d9/blockchain/events/src/kms.rs#L985-L1003
95
+ const ZamaGatewayReencryptResponse = Schema.Struct({
96
+ status: Schema.Union(Schema.Literal('success'), Schema.Literal('failure')),
97
+ response: Schema.Array(Schema.Struct({
98
+ ciphertext_digest: Schema.optional(Schema.String),
99
+ payload: Schema.String,
100
+ signature: Schema.String,
101
+ })),
102
+ });
103
+ // Make a HTTP request to the reencrypt endpoint of the gateway.
104
+ async function makeReencryptRequest(request, gatewayUrl) {
105
+ const fetchOptions = {
106
+ method: 'POST',
107
+ headers: {
108
+ 'Content-Type': 'application/json',
109
+ },
110
+ body: JSON.stringify(request),
111
+ };
112
+ const response = await fetch(`${gatewayUrl}/reencrypt`, fetchOptions);
113
+ if (!response.ok) {
114
+ throw new Error(`Reencrypt failed: gateway respond with HTTP code ${response.status}: ${JSON.stringify(await response.json())}`);
115
+ }
116
+ const json = await response.json();
117
+ const reencryptResponse = parse(ZamaGatewayReencryptResponse, json);
118
+ if (reencryptResponse.status === 'failure') {
119
+ throw new Error('Reencrypt failed: gateway responded with failure');
120
+ }
121
+ return reencryptResponse;
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZoZXZtL3JlZW5jcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLGlDQUFpQyxFQUNqQyxxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3RCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBMkIsVUFBVSxFQUFFLFdBQVcsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixpQkFBaUIsR0FHbEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFpQ3JDLHNEQUFzRDtBQUN0RCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLEdBQUc7SUFDWixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxHQUNTO0lBQ3BCLE1BQU0sZ0JBQWdCLEdBQUcsaUNBQWlDLEVBQUUsQ0FBQztJQUU3RCx3RUFBd0U7SUFDeEUsNkNBQTZDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLE9BQU87UUFDUCxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFEO1FBQ0QsVUFBVSxFQUFFLHFCQUFxQixDQUFDLElBQUk7UUFDdEMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLE9BQU87S0FDN0MsQ0FBQyxDQUFDO0lBQ0gsdUVBQXVFO0lBQ3ZFLFdBQVc7SUFDWCxNQUFNLGVBQWUsR0FBRyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFeEUsT0FBTyxLQUFLLFVBQVUsU0FBUyxDQUE2QixFQUMxRCxNQUFNLEdBQzhCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLGdCQUFnQixHQUFnQztZQUNwRCxTQUFTLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQy9DLGNBQWMsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM1RSxpQkFBaUIsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1lBQzlELHlCQUF5QixFQUFFLFVBQVUsQ0FBQyxlQUFlLENBQUM7U0FDdkQsQ0FBQztRQUNGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVuRixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsbUZBQW1GO1lBQ25GLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLGdCQUFnQixDQUFDO1lBQ3JELGtFQUFrRTtZQUNsRSxNQUFNLHNCQUFzQixHQUFHO2dCQUM3QixHQUFHLENBQUM7Z0JBQ0osaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjthQUNuRSxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsaUNBQWlDLENBQ2pELE1BQU0sRUFDTixzQkFBc0IsRUFDdEI7Z0JBQ0UsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDL0IsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDckMsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCO2FBQzNELEVBQ0QsaUJBQWlCLENBQUMsUUFBUSxFQUMxQixNQUFNLEVBQ04sT0FBTyxFQUNQLENBQUMsNkJBQTZCLENBQy9CLENBQUM7WUFFRixPQUFPLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGlDQUFpQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25DLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkUsT0FBTztRQUNMLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxTQUFTO1FBQ25DLFNBQVM7UUFDVCxVQUFVLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO1FBQzFDLGVBQWU7WUFDYixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFhRCxzRUFBc0U7QUFDdEUsK0VBQStFO0FBQy9FLFdBQVc7QUFDWCw0SEFBNEg7QUFDNUgsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2pELE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNaLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDdEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNO0tBQ3pCLENBQUMsQ0FDSDtDQUNGLENBQUMsQ0FBQztBQUlILGdFQUFnRTtBQUNoRSxLQUFLLFVBQVUsb0JBQW9CLENBQ2pDLE9BQW9DLEVBQ3BDLFVBQWtCO0lBRWxCLE1BQU0sWUFBWSxHQUFHO1FBQ25CLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFO1lBQ1AsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztRQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztLQUM5QixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxVQUFVLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ2hILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUMifQ==