@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,200 @@
1
+ import { hexToBytes } from 'viem';
2
+ import { baseSepolia } from 'viem/chains';
3
+ import { HexString, parseAddress } from '../binary.js';
4
+ import { encryptionSchemes } from '../encryption/index.js';
5
+ import { lightningDeployments } from '../generated/lightning.js';
6
+ import { localNodeLightningConfig } from '../generated/local-node.js';
7
+ import { handleTypes } from '../handle.js';
8
+ import { parse } from '../schema.js';
9
+ import { decodeSecp256k1PublicKey, generateSecp256k1Keypair, getEciesEncryptor } from './ecies.js';
10
+ import { getKmsClient, incoLiteReencryptor } from './reencrypt.js';
11
+ const DefaultPepper = 'testnet';
12
+ /**
13
+ * The Lightning class provides a convenient way to interact with the Inco Lightning contract by binding to a specific
14
+ * deployment.
15
+ */
16
+ export class Lightning {
17
+ _deployment;
18
+ covalidatorUrl;
19
+ executorAddress;
20
+ eciesPublicKey;
21
+ chainId;
22
+ encryptor;
23
+ ephemeralKeypair;
24
+ kmsClient;
25
+ constructor(_deployment, covalidatorUrl) {
26
+ this._deployment = _deployment;
27
+ this.covalidatorUrl = covalidatorUrl;
28
+ this.executorAddress = parseAddress(_deployment.executorAddress);
29
+ this.eciesPublicKey = parse(HexString, _deployment.eciesPublicKey);
30
+ this.chainId = BigInt(_deployment.chainId);
31
+ this.ephemeralKeypair = generateSecp256k1Keypair();
32
+ this.kmsClient = getKmsClient(covalidatorUrl);
33
+ this.encryptor = getEciesEncryptor({
34
+ scheme: encryptionSchemes.ecies,
35
+ pubKeyA: decodeSecp256k1PublicKey(hexToBytes(parse(HexString, _deployment.eciesPublicKey))),
36
+ privKeyB: this.ephemeralKeypair,
37
+ });
38
+ }
39
+ /**
40
+ * Get a Lightning instance bound to the latest Lightning deployment for the Base Sepolia testnet.
41
+ */
42
+ static baseSepoliaTestnet() {
43
+ return Lightning.latest('testnet', baseSepolia.id);
44
+ }
45
+ /**
46
+ * Get a Lightning instance bound to our canonical Anvil-based test node and test Covalidator node
47
+ *
48
+ * These can be run in docker-compose using images pushed to dockerhub as:
49
+ * - inconetwork/local-node-anvil
50
+ * - inconetwork/local-node-covalidator
51
+ *
52
+ * See the sample docker-compose file here: https://github.com/Inco-fhevm/lightning-rod/blob/main/docker-compose.yaml
53
+ *
54
+ * @param env either a Pepper such as 'testnet', 'devnet', 'alphanet' or a LocalNodeEnv object containing the
55
+ * executorAddress, eciesPublicKey, chainId, covalidatorUrl and senderPrivateKey. If none is provided, it defaults to
56
+ * the 'testnet' Pepper. This produces allows connection to a local node running against a state dump of the
57
+ * corresponding Pepper.
58
+ *
59
+ */
60
+ static localNode(env) {
61
+ if (!env) {
62
+ return Lightning.custom(localNodeLightningConfig[DefaultPepper]);
63
+ }
64
+ if (typeof env === 'string') {
65
+ return Lightning.custom(localNodeLightningConfig[env]);
66
+ }
67
+ const conf = localNodeLightningConfig[DefaultPepper];
68
+ return Lightning.custom({
69
+ // We assume that we always run a local node as the default anvil node
70
+ chainId: conf.chainId,
71
+ covalidatorUrl: conf.covalidatorUrl,
72
+ // These variables vary per environment
73
+ executorAddress: env.EXECUTOR_ADDRESS,
74
+ eciesPublicKey: env.ECIES_PUBLIC_KEY,
75
+ senderPrivateKey: env.SENDER_PRIVATE_KEY,
76
+ });
77
+ }
78
+ /**
79
+ * Get a Lightning deployment by name or executor address on a particular chain.
80
+ *
81
+ * @param id this is an object containing either the pair of name and chainId or the executorAddress and chainId
82
+ */
83
+ static at(id) {
84
+ const deployment = this.isIdByName(id)
85
+ ? lightningDeployments.find((d) => d.name === id.name && d.chainId === id.chainId)
86
+ : lightningDeployments.find((d) => d.executorAddress === id.executorAddress && d.chainId === id.chainId);
87
+ if (!deployment) {
88
+ throw new Error(`No deployment found for ${JSON.stringify(id)}`);
89
+ }
90
+ return new Lightning(deployment, Lightning.getCovalidatorUrl(deployment));
91
+ }
92
+ /**
93
+ * Get a Lightning deployment for a local or custom node
94
+ *
95
+ * @param config this is an object containing the executorAddress, eciesPublicKey, chainId and covalidatorUrl.
96
+ * additional fields past will be made available as part of the `deployment` property.
97
+ */
98
+ static custom(config) {
99
+ return new Lightning(config, config.covalidatorUrl);
100
+ }
101
+ /**
102
+ * Get the latest deployment for a given pepper, which usually denotes a family of deployments distinct from their
103
+ * version such as 'devnet', 'testnet', 'mainnet', etc.
104
+ *
105
+ * @param pepper the pepper to use to filter the deployments
106
+ * @param chainId the chainId to use to filter the deployments
107
+ */
108
+ static latestDeployment(pepper, chainId) {
109
+ // Deployments are sorted so we are guaranteed to get the latest first
110
+ const latestByPepper = lightningDeployments.find((d) => d.pepper === pepper && d.chainId === chainId);
111
+ if (!latestByPepper) {
112
+ // This should not actually happen provided this file compiles since we are extracting the available peppers
113
+ // from the const itself
114
+ throw new Error(`No deployment found for pepper ${pepper}`);
115
+ }
116
+ return latestByPepper;
117
+ }
118
+ /**
119
+ * Get the latest Lightning deployment for a given pepper amd chainId unconditionally.
120
+ * Note that if you upgrade the library the latest deployment may change and contracts deployed to a previous version
121
+ * will not be compatible with the new version.
122
+ *
123
+ * @param pepper the pepper to use to filter the deployments
124
+ * @param chainId the chainId to use to filter the deployments
125
+ */
126
+ static latest(pepper, chainId) {
127
+ return Lightning.at(Lightning.latestDeployment(pepper, chainId));
128
+ }
129
+ /*
130
+ * Get the latest deployment for a given pepper, which usually denotes a family of deployments distinct from their
131
+ * version such as 'devnet', 'testnet', 'mainnet', etc.
132
+ */
133
+ get deployment() {
134
+ return { ...this._deployment };
135
+ }
136
+ /**
137
+ * Encrypt a value using the public ECIES key of the Lightning deployment.
138
+ *
139
+ * @param value a boolean or numeric value to encrypt
140
+ * @param accountAddress the address of the account interacting with the dapp contract, normally an Externally Owned Account (EOA)
141
+ * @param dappAddress the address of the dapp contract that interacts with the Inco Lightning contract or library
142
+ */
143
+ async encrypt(value, { accountAddress, dappAddress }) {
144
+ const { ciphertext } = await this.encryptor({
145
+ plaintext: Lightning.plaintextFromValue(value),
146
+ context: {
147
+ hostChainId: this.chainId,
148
+ aclAddress: this.executorAddress,
149
+ userAddress: parseAddress(accountAddress),
150
+ contractAddress: parseAddress(dappAddress),
151
+ },
152
+ });
153
+ return ciphertext.value;
154
+ }
155
+ /**
156
+ * Obtain a reencryptor for a particular Externally Owned Account (EOA) to request decrypted values.
157
+ * The account associated with the walletClient must have permissions to decrypt the handle or ciphertext passed
158
+ * to the reencryptor function.
159
+ *
160
+ * @param walletClient the wallet client to use for signing the reencrypt request.
161
+ */
162
+ getReencryptor(walletClient) {
163
+ return incoLiteReencryptor({
164
+ walletClient,
165
+ kmsConnectRpcEndpointOrClient: this.kmsClient,
166
+ chainId: this.chainId,
167
+ ephemeralKeypair: this.ephemeralKeypair,
168
+ });
169
+ }
170
+ /**
171
+ * Get the GRPC endpoint for the covalidator that services this deployment.
172
+ */
173
+ static getCovalidatorUrl(deployment) {
174
+ const { executorAddress, chainId, pepper } = deployment;
175
+ return `https://${executorAddress.toLowerCase()}.${chainId}.${pepper}.inco.org`;
176
+ }
177
+ static isIdByName(id) {
178
+ return id.name !== undefined;
179
+ }
180
+ static plaintextFromValue(value) {
181
+ if (typeof value === 'boolean') {
182
+ return {
183
+ scheme: encryptionSchemes.ecies,
184
+ type: handleTypes.ebool,
185
+ value: value,
186
+ };
187
+ }
188
+ else if (typeof value === 'bigint' || typeof value === 'number') {
189
+ return {
190
+ scheme: encryptionSchemes.ecies,
191
+ type: handleTypes.euint256,
192
+ value: BigInt(value),
193
+ };
194
+ }
195
+ else {
196
+ throw new Error(`Unsupported type ${typeof value}`);
197
+ }
198
+ }
199
+ }
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsVUFBVSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBVyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFvQixNQUFNLFlBQVksQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF3Qm5FLE1BQU0sYUFBYSxHQUFvQixTQUFTLENBQUM7QUFvQmpEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBVUQ7SUFDRDtJQVZGLGVBQWUsQ0FBVTtJQUN6QixjQUFjLENBQVk7SUFDMUIsT0FBTyxDQUFTO0lBRWYsU0FBUyxDQUF5QjtJQUNsQyxnQkFBZ0IsQ0FBbUI7SUFDbkMsU0FBUyxDQUE0QjtJQUV0RCxZQUNtQixXQUFjLEVBQ2YsY0FBc0I7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQUc7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsZUFB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
@@ -0,0 +1,24 @@
1
+ import { Client } from '@connectrpc/connect';
2
+ import { Account, Chain, Hex, Transport, WalletClient } from 'viem';
3
+ import { SupportedChain } from '../chain.js';
4
+ import { EciesScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
5
+ import { KmsService, ReencryptResponse } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
6
+ import { Handle } from '../handle.js';
7
+ import type { EIP712 } from '../reencryption/eip712.js';
8
+ import type { Reencryptor, ReencryptorArgs } from '../reencryption/types.js';
9
+ import { Secp256k1Keypair } from './ecies.js';
10
+ export interface IncoLiteReencryptorArgs extends ReencryptorArgs {
11
+ walletClient: WalletClient<Transport, Chain, Account>;
12
+ kmsConnectRpcEndpointOrClient?: string | Client<typeof KmsService>;
13
+ ephemeralKeypair?: Secp256k1Keypair;
14
+ }
15
+ export declare function reencryptEIP712(chainId: bigint, ephemeralPubKey: Uint8Array): EIP712<{
16
+ publicKey: Hex;
17
+ }>;
18
+ export declare function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }: IncoLiteReencryptorArgs): Promise<Reencryptor<EciesScheme>>;
19
+ export declare function getKmsClient(kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>): Client<typeof KmsService>;
20
+ export declare function decryptGrpcResponse<T extends SupportedFheType>(response: ReencryptResponse, ephemeralKeypair: Secp256k1Keypair, handle: Handle): Promise<PlaintextOf<1, T>>;
21
+ export declare function defaultCovalidatorGrpc(chain: SupportedChain): string;
22
+ export declare function pulumiCovalidatorGrpc(chain: SupportedChain): string;
23
+ export declare function lightningDevnetCovalidatorGrpc(chain: SupportedChain): string;
24
+ export declare function lightningTestnetCovalidatorGrpc(chain: SupportedChain): string;
@@ -0,0 +1,132 @@
1
+ import { createClient } from '@connectrpc/connect';
2
+ import { createConnectTransport } from '@connectrpc/connect-web';
3
+ import { bytesToHex, hexToBytes } from 'viem';
4
+ import { bytesToBigInt } from '../binary.js';
5
+ import { getSupportedChain } from '../chain.js';
6
+ import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption.js';
7
+ import { KmsService } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
8
+ import { getHandleType } from '../handle.js';
9
+ import { createEIP712Payload } from '../reencryption/eip712.js';
10
+ import { retryWithBackoff } from '../retry.js';
11
+ import { decrypt, generateSecp256k1Keypair } from './ecies.js';
12
+ // The domain constants used for basic reencrypts.
13
+ // Note: for advanced ACL, since the signature is checked on-chain, the domain
14
+ // and version must match the ones used in the contract. For basic ones, we use
15
+ // a domain different than the one used on-chain
16
+ const BASIC_REENCRYPT_DOMAIN = {
17
+ name: 'IncoReencryption',
18
+ version: '0.1.0',
19
+ };
20
+ // Create an EIP712 payload for the Inco Lite basic reencrypt.
21
+ export function reencryptEIP712(chainId, ephemeralPubKey) {
22
+ return createEIP712Payload({
23
+ chainId,
24
+ primaryType: 'ReencryptionRequest',
25
+ primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
26
+ message: {
27
+ publicKey: bytesToHex(ephemeralPubKey),
28
+ },
29
+ domainName: BASIC_REENCRYPT_DOMAIN.name,
30
+ domainVersion: BASIC_REENCRYPT_DOMAIN.version,
31
+ });
32
+ }
33
+ // Returns the Inco Lite Reencryptor, which can reencrypt a handle using the
34
+ // Basic ACL.
35
+ export async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }) {
36
+ const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient || defaultCovalidatorGrpc(getSupportedChain(chainId)));
37
+ if (!ephemeralKeypair) {
38
+ ephemeralKeypair = await generateSecp256k1Keypair();
39
+ }
40
+ // Sign the EIP712 attesting that the user has access to the private key
41
+ // corresponding to the ephemeral public key.
42
+ const eip712Payload = reencryptEIP712(chainId, ephemeralKeypair.encodePublicKey());
43
+ // Using browser extensions, this step will prompt the user to sign the
44
+ // payload.
45
+ const eip712Signature = await walletClient.signTypedData(eip712Payload);
46
+ return async function reencrypt({ handle }, backoffConfig) {
47
+ const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
48
+ const reencryptRequest = {
49
+ $typeName: 'inco.kms.lite.v1.ReencryptRequest',
50
+ userAddress: walletClient.account.address,
51
+ ephemeralPubKey,
52
+ eip712Signature: hexToBytes(eip712Signature),
53
+ handlesWithProofs: [
54
+ {
55
+ $typeName: 'inco.kms.lite.v1.HandleWithProof',
56
+ handle,
57
+ aclProof: {
58
+ $typeName: 'inco.kms.lite.v1.ACLProof',
59
+ // See advancedacl/session-key.ts for an example of using
60
+ // Advanced ACL.
61
+ proof: {
62
+ case: 'incoLiteBasicAclProof',
63
+ value: {
64
+ $typeName: 'inco.kms.lite.v1.IncoLiteBasicACLProof',
65
+ },
66
+ },
67
+ },
68
+ },
69
+ ],
70
+ };
71
+ try {
72
+ return await retryWithBackoff(async () => {
73
+ const response = await kmsClient.reencrypt(reencryptRequest);
74
+ return decryptGrpcResponse(response, ephemeralKeypair, handle);
75
+ }, backoffConfig);
76
+ }
77
+ catch (error) {
78
+ console.log(error);
79
+ throw error;
80
+ }
81
+ };
82
+ }
83
+ // Helper function to get a KMS client from a string or a Client instance.
84
+ export function getKmsClient(kmsConnectRpcEndpointOrClient) {
85
+ if (typeof kmsConnectRpcEndpointOrClient === 'string') {
86
+ const transport = createConnectTransport({
87
+ baseUrl: kmsConnectRpcEndpointOrClient,
88
+ });
89
+ return createClient(KmsService, transport);
90
+ }
91
+ return kmsConnectRpcEndpointOrClient;
92
+ }
93
+ // Decrypt using ECIES the ciphertext in the response.
94
+ // Even though the proto specifies a list of ciphertexts, our JS SDK
95
+ // currently only supports a single ciphertext.
96
+ export async function decryptGrpcResponse(response, ephemeralKeypair, handle) {
97
+ const reencryptedCt = response.payload?.userCiphertexts[0];
98
+ if (!reencryptedCt) {
99
+ throw new Error('No reencrypted ciphertext in the response');
100
+ }
101
+ const plaintextBytes = await decrypt(ephemeralKeypair, reencryptedCt.ciphertext);
102
+ const plaintext = bytesToBigInt(plaintextBytes);
103
+ return bigintToPlaintext(encryptionSchemes.ecies, getHandleType(handle), plaintext);
104
+ }
105
+ // Helper function to return the default gRPC endpoint for the covalidator.
106
+ // Currently, this returns the covalidator for the Inco Lightning public testnet.
107
+ export function defaultCovalidatorGrpc(chain) {
108
+ return lightningTestnetCovalidatorGrpc(chain);
109
+ }
110
+ // Helper function to get the gRPC endpoint for the Denver covalidator on the
111
+ // AWS (Pulumi) setup. This function is a convenience, and might disappear in
112
+ // the future, if the denver testnet is no longer supported.
113
+ export function pulumiCovalidatorGrpc(chain) {
114
+ return `https://grpc.${chain.name.toLowerCase()}.covalidator.denver.inco.org`;
115
+ }
116
+ // Helper function to get the devnet gRPC endpoint for the Inco Lightning covalidator.
117
+ export function lightningDevnetCovalidatorGrpc(chain) {
118
+ return getCovalidatorGrpcHelper(chain, 'devnet', 'lightning');
119
+ }
120
+ // Helper function to get the testnet gRPC endpoint for the Inco Lightning covalidator.
121
+ export function lightningTestnetCovalidatorGrpc(chain) {
122
+ return getCovalidatorGrpcHelper(chain, 'testnet', 'lightning');
123
+ }
124
+ // Convert camelCase to dash-case.
125
+ function camelToDashCase(str) {
126
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
127
+ }
128
+ // Small helper, as our GCP covalidator URLs are in a specific format.
129
+ function getCovalidatorGrpcHelper(chain, network, cluster) {
130
+ return `https://grpc.${camelToDashCase(chain.name)}.${cluster}.${network}.inco.org`;
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvcmVlbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQVcsVUFBVSxFQUFjLFVBQVUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBR2xCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBdUMsTUFBTSxvREFBb0QsQ0FBQztBQUNySCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0sY0FBYyxDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFvQixNQUFNLFlBQVksQ0FBQztBQWlCakYsa0RBQWtEO0FBQ2xELDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsZ0RBQWdEO0FBQ2hELE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QixPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDO0FBRUYsOERBQThEO0FBQzlELE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBZSxFQUFFLGVBQTJCO0lBQzFFLE9BQU8sbUJBQW1CLENBQUM7UUFDekIsT0FBTztRQUNQLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLElB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
@@ -0,0 +1 @@
1
+ export * from './local-node.js';
@@ -0,0 +1,2 @@
1
+ export * from './local-node.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9jYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyJ9
@@ -0,0 +1,19 @@
1
+ import { Schema } from 'effect';
2
+ export declare const LocalNodeEnv: Schema.Struct<{
3
+ DEPLOYER_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
4
+ STATE_DUMP: typeof Schema.String;
5
+ EXECUTOR_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
6
+ ECIES_PUBLIC_KEY: Schema.TemplateLiteral<`0x${string}`>;
7
+ CALLBACK_ADDRESS: Schema.TemplateLiteral<`0x${string}`>;
8
+ SENDER_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
9
+ SENDER_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
10
+ PEPPER: typeof Schema.String;
11
+ COVALIDATOR_ECIES_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
12
+ COVALIDATOR_EIP712_PRIVATE_SIGNING_KEY: Schema.TemplateLiteral<`0x${string}`>;
13
+ COVALIDATOR_CALLBACK_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
14
+ COVALIDATOR_ACL_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
15
+ COVALIDATOR_INCO_EXECUTOR_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
16
+ COVALIDATOR_DECRYPTION_HANDLER_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
17
+ }>;
18
+ export type LocalNodeEnv = typeof LocalNodeEnv.Type;
19
+ export declare function parseLocalEnv(envFileContents: string | Buffer): LocalNodeEnv;
@@ -0,0 +1,24 @@
1
+ import { Address, HexString } from '@inco/pega/lib/hex';
2
+ import * as dotenv from 'dotenv';
3
+ import { Schema } from 'effect';
4
+ export const LocalNodeEnv = Schema.Struct({
5
+ DEPLOYER_ADDRESS: Address,
6
+ STATE_DUMP: Schema.String,
7
+ EXECUTOR_ADDRESS: Address,
8
+ ECIES_PUBLIC_KEY: HexString,
9
+ CALLBACK_ADDRESS: HexString,
10
+ SENDER_ADDRESS: Address,
11
+ SENDER_PRIVATE_KEY: HexString,
12
+ PEPPER: Schema.String,
13
+ COVALIDATOR_ECIES_PRIVATE_KEY: HexString,
14
+ COVALIDATOR_EIP712_PRIVATE_SIGNING_KEY: HexString,
15
+ COVALIDATOR_CALLBACK_PRIVATE_KEY: HexString,
16
+ COVALIDATOR_ACL_ADDR: Address,
17
+ COVALIDATOR_INCO_EXECUTOR_ADDR: Address,
18
+ COVALIDATOR_DECRYPTION_HANDLER_ADDR: Address,
19
+ });
20
+ export function parseLocalEnv(envFileContents) {
21
+ const envObj = dotenv.parse(envFileContents);
22
+ return Schema.decodeUnknownSync(LocalNodeEnv)(envObj);
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtJQUN6QixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLGdCQUFnQixFQUFFLFNBQVM7SUFDM0IsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQixjQUFjLEVBQUUsT0FBTztJQUN2QixrQkFBa0IsRUFBRSxTQUFTO0lBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtJQUNyQiw2QkFBNkIsRUFBRSxTQUFTO0lBQ3hDLHNDQUFzQyxFQUFFLFNBQVM7SUFDakQsZ0NBQWdDLEVBQUUsU0FBUztJQUMzQyxvQkFBb0IsRUFBRSxPQUFPO0lBQzdCLDhCQUE4QixFQUFFLE9BQU87SUFDdkMsbUNBQW1DLEVBQUUsT0FBTztDQUM3QyxDQUFDLENBQUM7QUFJSCxNQUFNLFVBQVUsYUFBYSxDQUFDLGVBQWdDO0lBQzVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEQsQ0FBQyJ9
@@ -0,0 +1,29 @@
1
+ import { Schema } from 'effect';
2
+ import { Address } from 'viem';
3
+ declare const baseEIP712: Schema.Struct<{
4
+ domain: Schema.Struct<{
5
+ chainId: typeof Schema.BigInt;
6
+ name: typeof Schema.String;
7
+ version: typeof Schema.String;
8
+ verifyingContract: Schema.optional<Schema.TemplateLiteral<`0x${string}`>>;
9
+ }>;
10
+ primaryType: typeof Schema.String;
11
+ types: Schema.Record$<typeof Schema.String, Schema.Array$<Schema.Struct<{
12
+ name: typeof Schema.String;
13
+ type: typeof Schema.String;
14
+ }>>>;
15
+ }>;
16
+ type BaseEIP712 = typeof baseEIP712.Type;
17
+ export interface EIP712<Message extends object> extends BaseEIP712 {
18
+ message: Message;
19
+ }
20
+ export declare function createEIP712Payload<PrimaryType extends string, Message extends object>({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }: {
21
+ chainId: bigint;
22
+ primaryType: PrimaryType;
23
+ primaryTypeFields: BaseEIP712['types'][PrimaryType];
24
+ message: Message;
25
+ verifyingContract?: Address;
26
+ domainName?: string;
27
+ domainVersion?: string;
28
+ }): EIP712<Message>;
29
+ export {};
@@ -0,0 +1,81 @@
1
+ import { Schema } from 'effect';
2
+ import { HexString } from '../binary.js';
3
+ import { getActiveLightningDeployment } from '../lite/deployments.js';
4
+ // An effect Schema representing a base EIP712 typed message, without any
5
+ // custom message types, as defined in EIP-712.
6
+ const baseEIP712 = Schema.Struct({
7
+ domain: Schema.Struct({
8
+ chainId: Schema.BigInt,
9
+ name: Schema.String,
10
+ version: Schema.String,
11
+ verifyingContract: Schema.optional(HexString),
12
+ // If salt is needed, it can be added here. Currently, none of the Incolite
13
+ // features need this.
14
+ }),
15
+ primaryType: Schema.String,
16
+ types: Schema.Record({
17
+ key: Schema.String,
18
+ value: Schema.Array(Schema.Struct({
19
+ name: Schema.String,
20
+ type: Schema.String,
21
+ })),
22
+ }),
23
+ });
24
+ // This function creates the payload that will be signed by the user. It is used to verify that the
25
+ // user has access to the private key that corresponds to the ephemeral public key in the payload.
26
+ // If the last argument is provided, it will be used as the contract address.
27
+ //
28
+ // The `message` argument must have the same keys as the all the `name` values
29
+ // in the `primaryTypeFields` argument.
30
+ export function createEIP712Payload({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }) {
31
+ const types = {
32
+ // This refers to the domain the contract is hosted on.
33
+ EIP712Domain: [
34
+ { name: 'name', type: 'string' },
35
+ { name: 'version', type: 'string' },
36
+ { name: 'chainId', type: 'uint256' },
37
+ ],
38
+ // Refer to primaryType.
39
+ [primaryType]: primaryTypeFields,
40
+ };
41
+ if (verifyingContract) {
42
+ types.EIP712Domain.push({ name: 'verifyingContract', type: 'address' });
43
+ }
44
+ // Check that the message has the same keys as the primaryTypeFields.
45
+ const messageKeys = Object.keys(message);
46
+ const primaryTypeFieldsKeys = primaryTypeFields.map((field) => field.name);
47
+ if (messageKeys.length !== primaryTypeFieldsKeys.length) {
48
+ throw new Error('Message keys do not match primaryTypeFields keys');
49
+ }
50
+ for (const key of messageKeys) {
51
+ if (!primaryTypeFieldsKeys.includes(key)) {
52
+ throw new Error(`Message key ${key} does not match primaryTypeFields key`);
53
+ }
54
+ }
55
+ // TODO: We could also check that the types of the values are correct here.
56
+ if (!domainVersion) {
57
+ const incoLite = getActiveLightningDeployment(chainId);
58
+ // See Version.sol for the format of the version string.
59
+ domainVersion = `${incoLite.version.major}_${incoLite.version.minor}_${incoLite.version.patch}`;
60
+ }
61
+ const msgParams = {
62
+ types,
63
+ // This defines the message you're proposing the user to sign, is dapp-specific, and contains
64
+ // anything you want. There are no required fields. Be as explicit as possible when building out
65
+ // the message schema.
66
+ // This refers to the keys of the following types object.
67
+ primaryType,
68
+ domain: {
69
+ // Give a user-friendly name to the specific contract you're signing for.
70
+ name: domainName ?? 'incoLite',
71
+ // This identifies the latest version.
72
+ version: domainVersion,
73
+ // This defines the network, in this case, Mainnet.
74
+ chainId,
75
+ verifyingContract,
76
+ },
77
+ message,
78
+ };
79
+ return msgParams;
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZW5jcnlwdGlvbi9laXA3MTIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLHlFQUF5RTtBQUN6RSwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDdEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUN0QixpQkFBaUIsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUM3QywyRUFBMkU7UUFDM0Usc0JBQXNCO0tBQ3ZCLENBQUM7SUFDRixXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU07SUFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQ0g7S0FDRixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBU0gsbUdBQW1HO0FBQ25HLGtHQUFrRztBQUNsRyw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLDhFQUE4RTtBQUM5RSx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLG1CQUFtQixDQUFxRCxFQUN0RixPQUFPLEVBQ1AsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixhQUFhLEdBU2Q7SUFDQyxNQUFNLEtBQUssR0FBRztRQUNaLHVEQUF1RDtRQUN2RCxZQUFZLEVBQUU7WUFDWixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNuQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUNyQztRQUNELHdCQUF3QjtRQUN4QixDQUFDLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQjtLQUNqQyxDQUFDO0lBRUYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxHQUFHLHVDQUF1QyxDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFDRCwyRUFBMkU7SUFFM0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELHdEQUF3RDtRQUN4RCxhQUFhLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xHLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRztRQUNoQixLQUFLO1FBQ0wsNkZBQTZGO1FBQzdGLGdHQUFnRztRQUNoRyxzQkFBc0I7UUFDdEIseURBQXlEO1FBQ3pELFdBQVc7UUFDWCxNQUFNLEVBQUU7WUFDTix5RUFBeUU7WUFDekUsSUFBSSxFQUFFLFVBQVUsSUFBSSxVQUFVO1lBQzlCLHNDQUFzQztZQUN0QyxPQUFPLEVBQUUsYUFBYTtZQUN0QixtREFBbUQ7WUFDbkQsT0FBTztZQUNQLGlCQUFpQjtTQUNsQjtRQUNELE9BQU87S0FDUixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ export * from './eip712.js';
2
+ export * from './types.js';
@@ -0,0 +1,3 @@
1
+ export * from './eip712.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVlbmNyeXB0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDIn0=
@@ -0,0 +1,25 @@
1
+ import { Address } from 'viem';
2
+ import { HexString } from '../binary.js';
3
+ import { CiphertextOf, EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
4
+ import type { EphemeralCryptoBoxKeypair } from '../fhevm/reencrypt.js';
5
+ import { Handle } from '../handle.js';
6
+ import type { Secp256k1Keypair } from '../lite/ecies.js';
7
+ import type { BackoffConfig } from '../retry.js';
8
+ export type Reencryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: ReencryptFnArgs<S, T>, backoffConfig?: Partial<BackoffConfig>) => Promise<PlaintextOf<S, T>>;
9
+ export interface ReencryptorArgs {
10
+ chainId: bigint;
11
+ }
12
+ export type ReencryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
13
+ handle: Handle;
14
+ ciphertext?: CiphertextOf<S, T>;
15
+ };
16
+ export type SupportedEphemeralKeypairs = EphemeralCryptoBoxKeypair | Secp256k1Keypair;
17
+ export interface PubKeyEncodable {
18
+ encodePublicKey(): Uint8Array;
19
+ }
20
+ export interface ReencryptEndpointRequest<EKP extends SupportedEphemeralKeypairs> {
21
+ userAddress: Address;
22
+ handle: Handle;
23
+ eip712Signature: HexString;
24
+ ephemeralKeypair: EKP;
25
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVlbmNyeXB0aW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Configuration for exponential backoff retry logic.
3
+ */
4
+ export type BackoffConfig = {
5
+ maxRetries: number;
6
+ baseDelayInMs: number;
7
+ backoffFactor: number;
8
+ };
9
+ /**
10
+ * Helper function to implement exponential backoff retry logic.
11
+ * @param fn - The function to retry
12
+ * @param config - Optional backoff configuration
13
+ * @returns Promise that resolves with the result of the function
14
+ */
15
+ export declare function retryWithBackoff<T>(fn: () => Promise<T>, { maxRetries, baseDelayInMs, backoffFactor }?: Partial<BackoffConfig>): Promise<T>;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Helper function to implement exponential backoff retry logic.
3
+ * @param fn - The function to retry
4
+ * @param config - Optional backoff configuration
5
+ * @returns Promise that resolves with the result of the function
6
+ */
7
+ export async function retryWithBackoff(fn, { maxRetries = 10, baseDelayInMs = 1000, backoffFactor = 1.5 } = {}) {
8
+ let lastError;
9
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
10
+ try {
11
+ return await fn();
12
+ }
13
+ catch (error) {
14
+ lastError = error;
15
+ if (attempt === maxRetries - 1) {
16
+ break;
17
+ }
18
+ const delay = baseDelayInMs * Math.pow(backoffFactor, attempt);
19
+ const jitter = delay * (0.8 + Math.random() * 0.4); // random jitter, 80% to 120% of the delay
20
+ await new Promise((resolve) => setTimeout(resolve, jitter));
21
+ }
22
+ }
23
+ throw lastError;
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxFQUFvQixFQUNwQixFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsYUFBYSxHQUFHLElBQUksRUFBRSxhQUFhLEdBQUcsR0FBRyxLQUE2QixFQUFFO0lBRTNGLElBQUksU0FBNEIsQ0FBQztJQUVqQyxLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsU0FBUyxHQUFHLEtBQWMsQ0FBQztZQUMzQixJQUFJLE9BQU8sS0FBSyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE1BQU07WUFDUixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7WUFDOUYsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLENBQUM7QUFDbEIsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ import { Schema } from 'effect';
2
+ import { ParseOptions } from 'effect/SchemaAST';
3
+ export declare function parse<A, I>(schema: Schema.Schema<A, I>, obj: unknown, options?: ParseOptions): A;
4
+ export declare function parseJson<A, I>(schema: Schema.Schema<A, I>, json: string | Uint8Array, options?: ParseOptions): A;