@inco/lightning-js 0.0.0-bootstrap.0

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 (283) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +587 -0
  3. package/dist/cjs/advancedacl/index.d.ts +2 -0
  4. package/dist/cjs/advancedacl/index.js +19 -0
  5. package/dist/cjs/advancedacl/session-key.d.ts +95 -0
  6. package/dist/cjs/advancedacl/session-key.js +376 -0
  7. package/dist/cjs/advancedacl/types.d.ts +16 -0
  8. package/dist/cjs/advancedacl/types.js +3 -0
  9. package/dist/cjs/attestedcompute/attested-compute.d.ts +65 -0
  10. package/dist/cjs/attestedcompute/attested-compute.js +80 -0
  11. package/dist/cjs/attestedcompute/types.d.ts +35 -0
  12. package/dist/cjs/attestedcompute/types.js +46 -0
  13. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +61 -0
  14. package/dist/cjs/attesteddecrypt/attested-decrypt.js +118 -0
  15. package/dist/cjs/attesteddecrypt/index.d.ts +1 -0
  16. package/dist/cjs/attesteddecrypt/index.js +18 -0
  17. package/dist/cjs/attesteddecrypt/types.d.ts +27 -0
  18. package/dist/cjs/attesteddecrypt/types.js +16 -0
  19. package/dist/cjs/attestedreveal/attested-reveal.d.ts +21 -0
  20. package/dist/cjs/attestedreveal/attested-reveal.js +31 -0
  21. package/dist/cjs/attestedreveal/index.d.ts +2 -0
  22. package/dist/cjs/attestedreveal/index.js +21 -0
  23. package/dist/cjs/attestedreveal/types.d.ts +4 -0
  24. package/dist/cjs/attestedreveal/types.js +13 -0
  25. package/dist/cjs/binary.d.ts +104 -0
  26. package/dist/cjs/binary.js +171 -0
  27. package/dist/cjs/chain.d.ts +50 -0
  28. package/dist/cjs/chain.js +62 -0
  29. package/dist/cjs/eip712/eip712.d.ts +18 -0
  30. package/dist/cjs/eip712/eip712.js +51 -0
  31. package/dist/cjs/eip712/index.d.ts +1 -0
  32. package/dist/cjs/eip712/index.js +8 -0
  33. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.d.ts +51 -0
  34. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.js +94 -0
  35. package/dist/cjs/elistattesteddecrypt/index.d.ts +2 -0
  36. package/dist/cjs/elistattesteddecrypt/index.js +22 -0
  37. package/dist/cjs/elistattesteddecrypt/types.d.ts +31 -0
  38. package/dist/cjs/elistattesteddecrypt/types.js +16 -0
  39. package/dist/cjs/encryption/encryption.d.ts +235 -0
  40. package/dist/cjs/encryption/encryption.js +226 -0
  41. package/dist/cjs/encryption/index.d.ts +1 -0
  42. package/dist/cjs/encryption/index.js +19 -0
  43. package/dist/cjs/generated/abis/add-two.d.ts +117 -0
  44. package/dist/cjs/generated/abis/add-two.js +80 -0
  45. package/dist/cjs/generated/abis/lightning.d.ts +3362 -0
  46. package/dist/cjs/generated/abis/lightning.js +2445 -0
  47. package/dist/cjs/generated/abis/test-elist.d.ts +276 -0
  48. package/dist/cjs/generated/abis/test-elist.js +168 -0
  49. package/dist/cjs/generated/abis/verifier.d.ts +1353 -0
  50. package/dist/cjs/generated/abis/verifier.js +954 -0
  51. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +1494 -0
  52. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +395 -0
  53. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +247 -0
  54. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +80 -0
  55. package/dist/cjs/generated/es/inco/helioswrapper/v1/helioswrapper_pb.d.ts +77 -0
  56. package/dist/cjs/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +28 -0
  57. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +685 -0
  58. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +100 -0
  59. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.d.ts +289 -0
  60. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +136 -0
  61. package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +371 -0
  62. package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +88 -0
  63. package/dist/cjs/generated/lightning.d.ts +830 -0
  64. package/dist/cjs/generated/lightning.js +872 -0
  65. package/dist/cjs/generated/local-node.d.ts +50 -0
  66. package/dist/cjs/generated/local-node.js +107 -0
  67. package/dist/cjs/handle.d.ts +123 -0
  68. package/dist/cjs/handle.js +221 -0
  69. package/dist/cjs/index.d.ts +5 -0
  70. package/dist/cjs/index.js +31 -0
  71. package/dist/cjs/kms/client.d.ts +12 -0
  72. package/dist/cjs/kms/client.js +47 -0
  73. package/dist/cjs/kms/quorumClient.d.ts +65 -0
  74. package/dist/cjs/kms/quorumClient.js +463 -0
  75. package/dist/cjs/kms/quorumConsistency.d.ts +82 -0
  76. package/dist/cjs/kms/quorumConsistency.js +269 -0
  77. package/dist/cjs/kms/signatureVerification.d.ts +35 -0
  78. package/dist/cjs/kms/signatureVerification.js +88 -0
  79. package/dist/cjs/kms/thresholdPromises.d.ts +8 -0
  80. package/dist/cjs/kms/thresholdPromises.js +62 -0
  81. package/dist/cjs/lite/attested-compute.d.ts +6 -0
  82. package/dist/cjs/lite/attested-compute.js +8 -0
  83. package/dist/cjs/lite/attested-decrypt.d.ts +4 -0
  84. package/dist/cjs/lite/attested-decrypt.js +6 -0
  85. package/dist/cjs/lite/deployments.d.ts +24 -0
  86. package/dist/cjs/lite/deployments.js +21 -0
  87. package/dist/cjs/lite/hadu.d.ts +4 -0
  88. package/dist/cjs/lite/hadu.js +28 -0
  89. package/dist/cjs/lite/index.d.ts +13 -0
  90. package/dist/cjs/lite/index.js +31 -0
  91. package/dist/cjs/lite/lightning.d.ts +459 -0
  92. package/dist/cjs/lite/lightning.js +696 -0
  93. package/dist/cjs/lite/types.d.ts +47 -0
  94. package/dist/cjs/lite/types.js +3 -0
  95. package/dist/cjs/lite/xwing.d.ts +154 -0
  96. package/dist/cjs/lite/xwing.js +326 -0
  97. package/dist/cjs/local/index.d.ts +1 -0
  98. package/dist/cjs/local/index.js +18 -0
  99. package/dist/cjs/local/local-node.d.ts +37 -0
  100. package/dist/cjs/local/local-node.js +80 -0
  101. package/dist/cjs/reencryption/eip712.d.ts +56 -0
  102. package/dist/cjs/reencryption/eip712.js +90 -0
  103. package/dist/cjs/reencryption/index.d.ts +2 -0
  104. package/dist/cjs/reencryption/index.js +19 -0
  105. package/dist/cjs/reencryption/types.d.ts +48 -0
  106. package/dist/cjs/reencryption/types.js +3 -0
  107. package/dist/cjs/retry.d.ts +30 -0
  108. package/dist/cjs/retry.js +87 -0
  109. package/dist/cjs/schema.d.ts +4 -0
  110. package/dist/cjs/schema.js +19 -0
  111. package/dist/cjs/test/mocks.d.ts +20 -0
  112. package/dist/cjs/test/mocks.js +72 -0
  113. package/dist/cjs/viem.d.ts +1141 -0
  114. package/dist/cjs/viem.js +36 -0
  115. package/dist/esm/advancedacl/index.d.ts +2 -0
  116. package/dist/esm/advancedacl/index.js +3 -0
  117. package/dist/esm/advancedacl/session-key.d.ts +95 -0
  118. package/dist/esm/advancedacl/session-key.js +367 -0
  119. package/dist/esm/advancedacl/types.d.ts +16 -0
  120. package/dist/esm/advancedacl/types.js +2 -0
  121. package/dist/esm/attestedcompute/attested-compute.d.ts +65 -0
  122. package/dist/esm/attestedcompute/attested-compute.js +76 -0
  123. package/dist/esm/attestedcompute/types.d.ts +35 -0
  124. package/dist/esm/attestedcompute/types.js +42 -0
  125. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +61 -0
  126. package/dist/esm/attesteddecrypt/attested-decrypt.js +112 -0
  127. package/dist/esm/attesteddecrypt/index.d.ts +1 -0
  128. package/dist/esm/attesteddecrypt/index.js +2 -0
  129. package/dist/esm/attesteddecrypt/types.d.ts +27 -0
  130. package/dist/esm/attesteddecrypt/types.js +12 -0
  131. package/dist/esm/attestedreveal/attested-reveal.d.ts +21 -0
  132. package/dist/esm/attestedreveal/attested-reveal.js +28 -0
  133. package/dist/esm/attestedreveal/index.d.ts +2 -0
  134. package/dist/esm/attestedreveal/index.js +3 -0
  135. package/dist/esm/attestedreveal/types.d.ts +4 -0
  136. package/dist/esm/attestedreveal/types.js +9 -0
  137. package/dist/esm/binary.d.ts +104 -0
  138. package/dist/esm/binary.js +155 -0
  139. package/dist/esm/chain.d.ts +50 -0
  140. package/dist/esm/chain.js +58 -0
  141. package/dist/esm/eip712/eip712.d.ts +18 -0
  142. package/dist/esm/eip712/eip712.js +46 -0
  143. package/dist/esm/eip712/index.d.ts +1 -0
  144. package/dist/esm/eip712/index.js +2 -0
  145. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.d.ts +51 -0
  146. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.js +89 -0
  147. package/dist/esm/elistattesteddecrypt/index.d.ts +2 -0
  148. package/dist/esm/elistattesteddecrypt/index.js +3 -0
  149. package/dist/esm/elistattesteddecrypt/types.d.ts +31 -0
  150. package/dist/esm/elistattesteddecrypt/types.js +12 -0
  151. package/dist/esm/encryption/encryption.d.ts +235 -0
  152. package/dist/esm/encryption/encryption.js +214 -0
  153. package/dist/esm/encryption/index.d.ts +1 -0
  154. package/dist/esm/encryption/index.js +2 -0
  155. package/dist/esm/generated/abis/add-two.d.ts +117 -0
  156. package/dist/esm/generated/abis/add-two.js +77 -0
  157. package/dist/esm/generated/abis/lightning.d.ts +3362 -0
  158. package/dist/esm/generated/abis/lightning.js +2442 -0
  159. package/dist/esm/generated/abis/test-elist.d.ts +276 -0
  160. package/dist/esm/generated/abis/test-elist.js +165 -0
  161. package/dist/esm/generated/abis/verifier.d.ts +1353 -0
  162. package/dist/esm/generated/abis/verifier.js +951 -0
  163. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +1494 -0
  164. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +392 -0
  165. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +247 -0
  166. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +77 -0
  167. package/dist/esm/generated/es/inco/helioswrapper/v1/helioswrapper_pb.d.ts +77 -0
  168. package/dist/esm/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +25 -0
  169. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +685 -0
  170. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +97 -0
  171. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.d.ts +289 -0
  172. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +133 -0
  173. package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +371 -0
  174. package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +85 -0
  175. package/dist/esm/generated/lightning.d.ts +830 -0
  176. package/dist/esm/generated/lightning.js +869 -0
  177. package/dist/esm/generated/local-node.d.ts +50 -0
  178. package/dist/esm/generated/local-node.js +104 -0
  179. package/dist/esm/handle.d.ts +123 -0
  180. package/dist/esm/handle.js +212 -0
  181. package/dist/esm/index.d.ts +5 -0
  182. package/dist/esm/index.js +6 -0
  183. package/dist/esm/kms/client.d.ts +12 -0
  184. package/dist/esm/kms/client.js +40 -0
  185. package/dist/esm/kms/quorumClient.d.ts +65 -0
  186. package/dist/esm/kms/quorumClient.js +459 -0
  187. package/dist/esm/kms/quorumConsistency.d.ts +82 -0
  188. package/dist/esm/kms/quorumConsistency.js +260 -0
  189. package/dist/esm/kms/signatureVerification.d.ts +35 -0
  190. package/dist/esm/kms/signatureVerification.js +84 -0
  191. package/dist/esm/kms/thresholdPromises.d.ts +8 -0
  192. package/dist/esm/kms/thresholdPromises.js +59 -0
  193. package/dist/esm/lite/attested-compute.d.ts +6 -0
  194. package/dist/esm/lite/attested-compute.js +4 -0
  195. package/dist/esm/lite/attested-decrypt.d.ts +4 -0
  196. package/dist/esm/lite/attested-decrypt.js +3 -0
  197. package/dist/esm/lite/deployments.d.ts +24 -0
  198. package/dist/esm/lite/deployments.js +17 -0
  199. package/dist/esm/lite/hadu.d.ts +4 -0
  200. package/dist/esm/lite/hadu.js +24 -0
  201. package/dist/esm/lite/index.d.ts +13 -0
  202. package/dist/esm/lite/index.js +10 -0
  203. package/dist/esm/lite/lightning.d.ts +459 -0
  204. package/dist/esm/lite/lightning.js +692 -0
  205. package/dist/esm/lite/types.d.ts +47 -0
  206. package/dist/esm/lite/types.js +2 -0
  207. package/dist/esm/lite/xwing.d.ts +154 -0
  208. package/dist/esm/lite/xwing.js +311 -0
  209. package/dist/esm/local/index.d.ts +1 -0
  210. package/dist/esm/local/index.js +2 -0
  211. package/dist/esm/local/local-node.d.ts +37 -0
  212. package/dist/esm/local/local-node.js +76 -0
  213. package/dist/esm/reencryption/eip712.d.ts +56 -0
  214. package/dist/esm/reencryption/eip712.js +87 -0
  215. package/dist/esm/reencryption/index.d.ts +2 -0
  216. package/dist/esm/reencryption/index.js +3 -0
  217. package/dist/esm/reencryption/types.d.ts +48 -0
  218. package/dist/esm/reencryption/types.js +2 -0
  219. package/dist/esm/retry.d.ts +30 -0
  220. package/dist/esm/retry.js +82 -0
  221. package/dist/esm/schema.d.ts +4 -0
  222. package/dist/esm/schema.js +15 -0
  223. package/dist/esm/test/mocks.d.ts +20 -0
  224. package/dist/esm/test/mocks.js +64 -0
  225. package/dist/esm/viem.d.ts +1141 -0
  226. package/dist/esm/viem.js +32 -0
  227. package/dist/types/advancedacl/index.d.ts +2 -0
  228. package/dist/types/advancedacl/session-key.d.ts +95 -0
  229. package/dist/types/advancedacl/types.d.ts +16 -0
  230. package/dist/types/attestedcompute/attested-compute.d.ts +65 -0
  231. package/dist/types/attestedcompute/types.d.ts +35 -0
  232. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +61 -0
  233. package/dist/types/attesteddecrypt/index.d.ts +1 -0
  234. package/dist/types/attesteddecrypt/types.d.ts +27 -0
  235. package/dist/types/attestedreveal/attested-reveal.d.ts +21 -0
  236. package/dist/types/attestedreveal/index.d.ts +2 -0
  237. package/dist/types/attestedreveal/types.d.ts +4 -0
  238. package/dist/types/binary.d.ts +104 -0
  239. package/dist/types/chain.d.ts +50 -0
  240. package/dist/types/eip712/eip712.d.ts +18 -0
  241. package/dist/types/eip712/index.d.ts +1 -0
  242. package/dist/types/elistattesteddecrypt/elist-attested-decrypt.d.ts +51 -0
  243. package/dist/types/elistattesteddecrypt/index.d.ts +2 -0
  244. package/dist/types/elistattesteddecrypt/types.d.ts +31 -0
  245. package/dist/types/encryption/encryption.d.ts +235 -0
  246. package/dist/types/encryption/index.d.ts +1 -0
  247. package/dist/types/generated/abis/add-two.d.ts +117 -0
  248. package/dist/types/generated/abis/lightning.d.ts +3362 -0
  249. package/dist/types/generated/abis/test-elist.d.ts +276 -0
  250. package/dist/types/generated/abis/verifier.d.ts +1353 -0
  251. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +1494 -0
  252. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +247 -0
  253. package/dist/types/generated/es/inco/helioswrapper/v1/helioswrapper_pb.d.ts +77 -0
  254. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +685 -0
  255. package/dist/types/generated/es/inco/kms/lite/v1/types_pb.d.ts +289 -0
  256. package/dist/types/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +371 -0
  257. package/dist/types/generated/lightning.d.ts +830 -0
  258. package/dist/types/generated/local-node.d.ts +50 -0
  259. package/dist/types/handle.d.ts +123 -0
  260. package/dist/types/index.d.ts +5 -0
  261. package/dist/types/kms/client.d.ts +12 -0
  262. package/dist/types/kms/quorumClient.d.ts +65 -0
  263. package/dist/types/kms/quorumConsistency.d.ts +82 -0
  264. package/dist/types/kms/signatureVerification.d.ts +35 -0
  265. package/dist/types/kms/thresholdPromises.d.ts +8 -0
  266. package/dist/types/lite/attested-compute.d.ts +6 -0
  267. package/dist/types/lite/attested-decrypt.d.ts +4 -0
  268. package/dist/types/lite/deployments.d.ts +24 -0
  269. package/dist/types/lite/hadu.d.ts +4 -0
  270. package/dist/types/lite/index.d.ts +13 -0
  271. package/dist/types/lite/lightning.d.ts +459 -0
  272. package/dist/types/lite/types.d.ts +47 -0
  273. package/dist/types/lite/xwing.d.ts +154 -0
  274. package/dist/types/local/index.d.ts +1 -0
  275. package/dist/types/local/local-node.d.ts +37 -0
  276. package/dist/types/reencryption/eip712.d.ts +56 -0
  277. package/dist/types/reencryption/index.d.ts +2 -0
  278. package/dist/types/reencryption/types.d.ts +48 -0
  279. package/dist/types/retry.d.ts +30 -0
  280. package/dist/types/schema.d.ts +4 -0
  281. package/dist/types/test/mocks.d.ts +20 -0
  282. package/dist/types/viem.d.ts +1141 -0
  283. package/package.json +129 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chains = void 0;
4
+ exports.getViemChain = getViemChain;
5
+ const chains_1 = require("viem/chains");
6
+ const chain_js_1 = require("./chain.js");
7
+ /** Map of supported chain short names to their viem chain objects. */
8
+ exports.chains = {
9
+ mainnet: chains_1.mainnet,
10
+ base: chains_1.base,
11
+ sepolia: chains_1.sepolia,
12
+ baseSepolia: chains_1.baseSepolia,
13
+ monadTestnet: chains_1.monadTestnet,
14
+ plasmaTestnet: chains_1.plasmaTestnet,
15
+ anvil: chains_1.anvil,
16
+ worldchainSepolia: chains_1.worldchainSepolia,
17
+ };
18
+ /**
19
+ * Resolves a {@link Chainish} value to a viem {@link Chain} object.
20
+ *
21
+ * Accepts a chain ID (`number` or `bigint`), an object with an `id` field,
22
+ * or a chain short name (e.g. `"baseSepolia"`).
23
+ *
24
+ * @param chainish - The chain identifier to resolve.
25
+ * @returns The matching `viem` chain object.
26
+ * @throws If no supported chain matches the given identifier.
27
+ */
28
+ function getViemChain(chainish) {
29
+ const { name } = (0, chain_js_1.getSupportedChain)(chainish);
30
+ const chain = exports.chains[name];
31
+ if (!chain) {
32
+ throw new Error(`Unable to get viem chain: ${name}`);
33
+ }
34
+ return chain;
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aWVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVDQSxvQ0FPQztBQTdDRCx3Q0FTcUI7QUFDckIseUNBQXlEO0FBTXpELHNFQUFzRTtBQUN6RCxRQUFBLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQVAsZ0JBQU87SUFDUCxJQUFJLEVBQUosYUFBSTtJQUNKLE9BQU8sRUFBUCxnQkFBTztJQUNQLFdBQVcsRUFBWCxvQkFBVztJQUNYLFlBQVksRUFBWixxQkFBWTtJQUNaLGFBQWEsRUFBYixzQkFBYTtJQUNiLEtBQUssRUFBTCxjQUFLO0lBQ0wsaUJBQWlCLEVBQWpCLDBCQUFpQjtDQUNsQixDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLFFBQWtCO0lBQzdDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDRCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLGNBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ export * from './session-key.js';
2
+ export * from './types.js';
@@ -0,0 +1,3 @@
1
+ export * from './session-key.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQyJ9
@@ -0,0 +1,95 @@
1
+ import { type Account, type Address, type Chain, type Hex, PublicClient, type Transport, type WalletClient } from 'viem';
2
+ import type { PrivateKeyAccount } from 'viem/accounts';
3
+ import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/index.js';
4
+ import { SupportedChainId } from '../chain.js';
5
+ import { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
6
+ import { HexString } from '../index.js';
7
+ import { type XwingKeypair } from '../lite/xwing.js';
8
+ import { BackoffConfig } from '../retry.js';
9
+ import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
10
+ import { AttestedComputeOP } from '../attestedcompute/types.js';
11
+ import { KmsQuorumClient } from '../kms/quorumClient.js';
12
+ export declare const SESSION_KEY_WARNING = "Inco Warning: signing this message may leak your private data, including from unrelated apps. Sign only if you fully trust this app.";
13
+ export interface Session {
14
+ decrypter: Address;
15
+ expiresAt: bigint;
16
+ }
17
+ export declare function createAllowanceVoucher(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>, verifyingContract: Address, callFunction: Hex, sharerArgData: Hex): Promise<AllowanceVoucher>;
18
+ export interface GrantSessionKeyArgs {
19
+ chainId: bigint;
20
+ incoLiteAddress: Address;
21
+ sessionVerifierContractAddress: Address;
22
+ granteeAddress: Address;
23
+ sharerWalletClient: WalletClient<Transport, Chain, Account>;
24
+ expiresAt: Date;
25
+ }
26
+ export interface GrantSessionKeyCustomVerifierArgs {
27
+ chainId: bigint;
28
+ incoLiteAddress: Address;
29
+ sessionVerifierContractAddress: Address;
30
+ sharerWalletClient: WalletClient<Transport, Chain, Account>;
31
+ sharerArgData: Hex;
32
+ }
33
+ export declare function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }: GrantSessionKeyArgs): Promise<AllowanceVoucherWithSig>;
34
+ export declare function grantSessionKeyCustomVerifier({ chainId, incoLiteAddress, sessionVerifierContractAddress, sharerWalletClient, sharerArgData, }: GrantSessionKeyCustomVerifierArgs): Promise<AllowanceVoucherWithSig>;
35
+ export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
36
+ export interface SessionKeyAttestedComputeArgs {
37
+ chainId: SupportedChainId;
38
+ ephemeralAccount: PrivateKeyAccount;
39
+ kmsQuorumClient: KmsQuorumClient;
40
+ allowanceVoucherWithSig: AllowanceVoucherWithSig;
41
+ lhsHandle: HexString;
42
+ op: AttestedComputeOP;
43
+ rhsPlaintext: bigint | boolean;
44
+ requesterArgData?: Hex | undefined;
45
+ backoffConfig?: Partial<BackoffConfig> | undefined;
46
+ ethClient: PublicClient<Transport, Chain>;
47
+ executorAddress: HexString;
48
+ reencryptPubKey?: Uint8Array | undefined;
49
+ reencryptKeypair?: XwingKeypair | undefined;
50
+ }
51
+ export declare function sessionKeyAttestedCompute<T extends SupportedTeeType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EncryptionScheme, SupportedTeeType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
52
+ export interface SessionKeyAttestedDecryptArgs {
53
+ chainId: SupportedChainId;
54
+ ephemeralAccount: PrivateKeyAccount;
55
+ kmsQuorumClient: KmsQuorumClient;
56
+ allowanceVoucherWithSig: AllowanceVoucherWithSig;
57
+ handles: HexString[];
58
+ requesterArgData?: Hex | undefined;
59
+ backoffConfig?: Partial<BackoffConfig> | undefined;
60
+ reencryptPubKey?: Uint8Array | undefined;
61
+ reencryptKeypair?: XwingKeypair | undefined;
62
+ ethClient: PublicClient<Transport, Chain>;
63
+ executorAddress: HexString;
64
+ }
65
+ /**
66
+ * Performs attested decrypts using a voucher-backed session key.
67
+ *
68
+ * @example Plaintext results
69
+ * ```ts
70
+ * const attestations = await sessionKeyAttestedDecrypt({
71
+ * chainId,
72
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
73
+ * allowanceVoucherWithSig: voucher,
74
+ * ephemeralAccount,
75
+ * handles,
76
+ * });
77
+ * console.log(attestations[0].plaintext.value);
78
+ * ```
79
+ *
80
+ * @example Encrypted results
81
+ * ```ts
82
+ * const encryptedResults = await sessionKeyAttestedDecrypt({
83
+ * chainId,
84
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
85
+ * allowanceVoucherWithSig: voucher,
86
+ * ephemeralAccount,
87
+ * handles,
88
+ * reencryptPubKey: recipientPubKey,
89
+ * });
90
+ * console.log(
91
+ * encryptedResults[0].encryptedPlaintext.ciphertext.value,
92
+ * );
93
+ * ```
94
+ */
95
+ export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
@@ -0,0 +1,367 @@
1
+ import { create } from '@bufbuild/protobuf';
2
+ import { bytesToHex, encodeAbiParameters, getContract, hexToBytes, toFunctionSelector, } from 'viem';
3
+ import { abiHelperAbi, advancedAccessControlAbi, incoLightningAbi, sessionVerifierAbi, } from '../generated/abis/lightning.js';
4
+ import { incoVerifierAbi } from '../generated/abis/verifier.js';
5
+ import { bigintToBytes32 } from '../index.js';
6
+ import { ATTESTED_COMPUTE_DOMAIN_NAME, ATTESTED_DECRYPT_DOMAIN_NAME, } from '../lite/index.js';
7
+ import { reencryptPublicKeysMatch } from '../lite/xwing.js';
8
+ import { createEIP712Payload } from '../reencryption/index.js';
9
+ import { AttestedComputeError, } from '../attestedcompute/types.js';
10
+ import { decryptEncryptedAttestations } from '../attesteddecrypt/attested-decrypt.js';
11
+ import { AttestedDecryptError } from '../attesteddecrypt/types.js';
12
+ import { fetchEip712DomainVersion } from '../eip712/eip712.js';
13
+ import { AttestedComputeRequestSchema, AttestedDecryptRequestSchema, } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
14
+ import { AllowanceProofSchema, AllowanceVoucherSchema, HandleWithProofSchema, IncoLiteAdvancedACLProofSchema, } from '../generated/es/inco/kms/lite/v1/types_pb.js';
15
+ // SessionKey is a special case of the SessionVerifier allowance, where the
16
+ // requester is an ephemeral keypair generated by the user, to use the same
17
+ // keypair for multiple reencryptions, expired after a certain time.
18
+ // Default warning message included in session vouchers. Displayed by wallets
19
+ // at signing time so users understand what they are granting access to.
20
+ export const SESSION_KEY_WARNING = 'Inco Warning: signing this message may leak your private data, including from unrelated apps. Sign only if you fully trust this app.';
21
+ // Given a sharer's wallet client, an incoLite contract address, and a
22
+ // (verifyingContract, callFunction, sharerArgData) tuple, this function
23
+ // creates an AllowanceVoucher. The warning is always SESSION_KEY_WARNING.
24
+ export async function createAllowanceVoucher(incoLiteAddress, sharerWalletClient, verifyingContract, callFunction, sharerArgData) {
25
+ const verifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
26
+ // The session nonce in the AllowanceVoucher must match the current active
27
+ // session nonce of the sharer on-chain.
28
+ const sessionNonce = await verifier.read.getActiveVouchersSessionNonce([
29
+ sharerWalletClient.account.address,
30
+ ]);
31
+ return {
32
+ sessionNonce,
33
+ verifyingContract,
34
+ callFunction,
35
+ sharerArgData,
36
+ warning: SESSION_KEY_WARNING,
37
+ };
38
+ }
39
+ // Let the sharer grant a session key to the requester.
40
+ // The session grants temporary access to ALL of the sharer's encrypted handles.
41
+ export async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }) {
42
+ // Validate that expiresAt is a valid Date object
43
+ if (!(expiresAt instanceof Date) || isNaN(expiresAt.getTime())) {
44
+ throw new Error('expiresAt must be a valid Date object');
45
+ }
46
+ const nowMs = Date.now();
47
+ const expiresAtMs = expiresAt.getTime();
48
+ // Validate that expiresAt is in the future
49
+ if (expiresAtMs < nowMs) {
50
+ throw new Error('expiresAt must be in the future');
51
+ }
52
+ const sharerArgData = encodeAbiParameters(getSessionAbi(), [
53
+ granteeAddress,
54
+ BigInt(Math.floor(expiresAtMs / 1000)),
55
+ ]);
56
+ const incoVerifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
57
+ // returned by read.eip712Domain():
58
+ // bytes1 fields,
59
+ // string memory name,
60
+ // string memory version,
61
+ // uint256 chainId,
62
+ // address verifyingContract,
63
+ // bytes32 salt,
64
+ // uint256[] memory extensions
65
+ const verifierDomain = await incoVerifier.read.eip712Domain();
66
+ const eip712DomainName = verifierDomain[1];
67
+ const eip712DomainVersion = verifierDomain[2];
68
+ const voucher = await createAllowanceVoucher(incoLiteAddress, sharerWalletClient,
69
+ // Careful that the verifying contract here is the SessionVerifier contract,
70
+ // not the incoLite contract.
71
+ sessionVerifierContractAddress, toFunctionSelector(getCanUseSessionAbi()), sharerArgData);
72
+ const eip712Payload = createEIP712Payload({
73
+ chainId,
74
+ primaryType: 'AllowanceVoucher',
75
+ primaryTypeFields: getAllowanceVoucherAbi(),
76
+ message: voucher,
77
+ // Related to comment above: careful that the verifying contract here is
78
+ // the incoVerifier contract (not the SessionVerifier contract).
79
+ verifyingContract: incoVerifier.address,
80
+ domainName: eip712DomainName,
81
+ domainVersion: eip712DomainVersion,
82
+ });
83
+ // Using browser extensions, this step will prompt the user to sign the
84
+ // payload.
85
+ const voucherSignature = await sharerWalletClient.signTypedData(eip712Payload);
86
+ return {
87
+ sharer: sharerWalletClient.account.address,
88
+ voucher,
89
+ voucherSignature,
90
+ };
91
+ }
92
+ export async function grantSessionKeyCustomVerifier({ chainId, incoLiteAddress, sessionVerifierContractAddress, sharerWalletClient, sharerArgData, }) {
93
+ const incoVerifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
94
+ // returned by read.eip712Domain():
95
+ // bytes1 fields,
96
+ // string memory name,
97
+ // string memory version,
98
+ // uint256 chainId,
99
+ // address verifyingContract,
100
+ // bytes32 salt,
101
+ // uint256[] memory extensions
102
+ const verifierDomain = await incoVerifier.read.eip712Domain();
103
+ const eip712DomainName = verifierDomain[1];
104
+ const eip712DomainVersion = verifierDomain[2];
105
+ const voucher = await createAllowanceVoucher(incoLiteAddress, sharerWalletClient,
106
+ // Careful that the verifying contract here is the SessionVerifier contract,
107
+ // not the incoLite contract.
108
+ sessionVerifierContractAddress, toFunctionSelector(getCanUseSessionAbi()), sharerArgData);
109
+ const eip712Payload = createEIP712Payload({
110
+ chainId,
111
+ primaryType: 'AllowanceVoucher',
112
+ primaryTypeFields: getAllowanceVoucherAbi(),
113
+ message: voucher,
114
+ // Related to comment above: careful that the verifying contract here is
115
+ // the incoVerifier contract (not the SessionVerifier contract).
116
+ verifyingContract: incoVerifier.address,
117
+ domainName: eip712DomainName,
118
+ domainVersion: eip712DomainVersion,
119
+ });
120
+ // Using browser extensions, this step will prompt the user to sign the
121
+ // payload.
122
+ const voucherSignature = await sharerWalletClient.signTypedData(eip712Payload);
123
+ return {
124
+ sharer: sharerWalletClient.account.address,
125
+ voucher,
126
+ voucherSignature,
127
+ };
128
+ }
129
+ export async function updateActiveVouchersSessionNonce(incoLiteAddress, sharerWalletClient) {
130
+ const verifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
131
+ const salt = bytesToHex(crypto.getRandomValues(new Uint8Array(32)));
132
+ const txHash = await verifier.write.updateActiveVouchersSessionNonce([salt]);
133
+ return txHash;
134
+ }
135
+ // The sessionKeyAttestedCompute function is a decryptor that uses a session key
136
+ // to compute on a handle.
137
+ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }) {
138
+ const requesterAccount = ephemeralAccount;
139
+ const rhsPlaintextBig = BigInt(rhsPlaintext);
140
+ if (reencryptPubKey &&
141
+ reencryptKeypair &&
142
+ !reencryptPublicKeysMatch(reencryptPubKey, reencryptKeypair)) {
143
+ throw new AttestedComputeError('reencryptPubKey does not match reencryptKeypair public key');
144
+ }
145
+ const eip712DomainVersion = await fetchEip712DomainVersion(executorAddress, ethClient);
146
+ // Sign the EIP712 attesting that the requester has access to the private key
147
+ // corresponding to the ephemeral public key.
148
+ const eip712Payload = createEIP712Payload({
149
+ chainId: BigInt(chainId),
150
+ primaryType: 'AttestedComputeRequest',
151
+ primaryTypeFields: [
152
+ { name: 'op', type: 'uint8' },
153
+ { name: 'lhsHandle', type: 'bytes32' },
154
+ { name: 'rhsPlaintext', type: 'bytes32' },
155
+ { name: 'publicKey', type: 'bytes' },
156
+ ],
157
+ message: {
158
+ op: op,
159
+ lhsHandle: lhsHandle,
160
+ rhsPlaintext: bigintToBytes32(rhsPlaintextBig),
161
+ publicKey: bytesToHex(reencryptPubKey ? reencryptPubKey : new Uint8Array()),
162
+ },
163
+ domainName: ATTESTED_COMPUTE_DOMAIN_NAME,
164
+ domainVersion: eip712DomainVersion,
165
+ });
166
+ // Since the account is an ephemeral keypair stored in memory (not in Metamask),
167
+ // this step will NOT prompt the user with a pop-up.
168
+ const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
169
+ const attestedComputeRequest = create(AttestedComputeRequestSchema, {
170
+ userAddress: requesterAccount.address,
171
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : new Uint8Array(),
172
+ op: op,
173
+ lhsHandle: lhsHandle,
174
+ rhsPlaintext: rhsPlaintextBig.toString(16),
175
+ eip712Signature: hexToBytes(eip712Signature),
176
+ aclProof: {
177
+ proof: {
178
+ case: 'incoLiteAdvancedAclProof',
179
+ value: create(IncoLiteAdvancedACLProofSchema, {
180
+ allowanceProof: create(AllowanceProofSchema, {
181
+ sharer: allowanceVoucherWithSig.sharer,
182
+ voucher: create(AllowanceVoucherSchema, {
183
+ sessionNonce: hexToBytes(allowanceVoucherWithSig.voucher.sessionNonce),
184
+ verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
185
+ callFunction: hexToBytes(allowanceVoucherWithSig.voucher.callFunction),
186
+ sharerArgData: hexToBytes(allowanceVoucherWithSig.voucher.sharerArgData),
187
+ warning: allowanceVoucherWithSig.voucher.warning,
188
+ }),
189
+ voucherSignature: hexToBytes(allowanceVoucherWithSig.voucherSignature),
190
+ // For DefaultSessionVerifier, the requesterArgData is empty.
191
+ requesterArgData: requesterArgData
192
+ ? hexToBytes(requesterArgData)
193
+ : new Uint8Array(),
194
+ }),
195
+ }),
196
+ },
197
+ },
198
+ });
199
+ let response = await kmsQuorumClient.attestedCompute(attestedComputeRequest, executorAddress, ethClient, backoffConfig, reencryptKeypair);
200
+ // If reencryptPubKey is provided with a keypair, decrypt the encrypted attestation
201
+ if (reencryptPubKey && reencryptKeypair) {
202
+ const [decryptedAttestation] = await decryptEncryptedAttestations([response], reencryptKeypair);
203
+ return decryptedAttestation;
204
+ }
205
+ return response;
206
+ }
207
+ /**
208
+ * Performs attested decrypts using a voucher-backed session key.
209
+ *
210
+ * @example Plaintext results
211
+ * ```ts
212
+ * const attestations = await sessionKeyAttestedDecrypt({
213
+ * chainId,
214
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
215
+ * allowanceVoucherWithSig: voucher,
216
+ * ephemeralAccount,
217
+ * handles,
218
+ * });
219
+ * console.log(attestations[0].plaintext.value);
220
+ * ```
221
+ *
222
+ * @example Encrypted results
223
+ * ```ts
224
+ * const encryptedResults = await sessionKeyAttestedDecrypt({
225
+ * chainId,
226
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
227
+ * allowanceVoucherWithSig: voucher,
228
+ * ephemeralAccount,
229
+ * handles,
230
+ * reencryptPubKey: recipientPubKey,
231
+ * });
232
+ * console.log(
233
+ * encryptedResults[0].encryptedPlaintext.ciphertext.value,
234
+ * );
235
+ * ```
236
+ */
237
+ export async function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }) {
238
+ const requesterAccount = ephemeralAccount;
239
+ if (reencryptPubKey &&
240
+ reencryptKeypair &&
241
+ !reencryptPublicKeysMatch(reencryptPubKey, reencryptKeypair)) {
242
+ throw new AttestedDecryptError('reencryptPubKey does not match reencryptKeypair public key');
243
+ }
244
+ const eip712DomainVersion = await fetchEip712DomainVersion(executorAddress, ethClient);
245
+ // Sign the EIP712 attesting that the requester has access to the private key
246
+ // corresponding to the ephemeral public key.
247
+ const eip712Payload = createEIP712Payload({
248
+ chainId: BigInt(chainId),
249
+ primaryType: 'AttestedDecryptRequest',
250
+ primaryTypeFields: [
251
+ { name: 'handles', type: 'bytes32[]' },
252
+ { name: 'publicKey', type: 'bytes' },
253
+ ],
254
+ message: {
255
+ handles: handles,
256
+ publicKey: bytesToHex(reencryptPubKey ? reencryptPubKey : Uint8Array.from([])),
257
+ },
258
+ domainName: ATTESTED_DECRYPT_DOMAIN_NAME,
259
+ domainVersion: eip712DomainVersion,
260
+ });
261
+ // Since the account is an ephemeral keypair stored in memory (not in Metamask),
262
+ // this step will NOT prompt the user with a pop-up.
263
+ const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
264
+ const handlesWithProofs = handles.map((handle) => {
265
+ return create(HandleWithProofSchema, {
266
+ handle: handle,
267
+ aclProof: {
268
+ proof: {
269
+ case: 'incoLiteAdvancedAclProof',
270
+ value: create(IncoLiteAdvancedACLProofSchema, {
271
+ allowanceProof: create(AllowanceProofSchema, {
272
+ sharer: allowanceVoucherWithSig.sharer,
273
+ voucher: create(AllowanceVoucherSchema, {
274
+ sessionNonce: hexToBytes(allowanceVoucherWithSig.voucher.sessionNonce),
275
+ verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
276
+ callFunction: hexToBytes(allowanceVoucherWithSig.voucher.callFunction),
277
+ sharerArgData: hexToBytes(allowanceVoucherWithSig.voucher.sharerArgData),
278
+ warning: allowanceVoucherWithSig.voucher.warning,
279
+ }),
280
+ voucherSignature: hexToBytes(allowanceVoucherWithSig.voucherSignature),
281
+ // For DefaultSessionVerifier, the requesterArgData is empty.
282
+ requesterArgData: requesterArgData
283
+ ? hexToBytes(requesterArgData)
284
+ : new Uint8Array(),
285
+ }),
286
+ }),
287
+ },
288
+ },
289
+ });
290
+ });
291
+ const attestedDecryptRequest = create(AttestedDecryptRequestSchema, {
292
+ userAddress: requesterAccount.address,
293
+ handlesWithProofs: handlesWithProofs,
294
+ eip712Signature: hexToBytes(eip712Signature),
295
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : Uint8Array.from([]),
296
+ });
297
+ let response = await kmsQuorumClient.attestedDecrypt(attestedDecryptRequest, executorAddress, ethClient, backoffConfig, reencryptKeypair);
298
+ // If reencryptPubKey is provided with a keypair, decrypt the encrypted attestations
299
+ if (reencryptPubKey !== undefined && reencryptKeypair) {
300
+ response = await decryptEncryptedAttestations(response, reencryptKeypair);
301
+ }
302
+ return response;
303
+ }
304
+ // Below are helpers to get ABIs of functions/structs from the SessionVerifier
305
+ // contract.
306
+ // Get the ABI of the `AllowanceVoucher` struct.
307
+ function getAllowanceVoucherAbi() {
308
+ // Find the `allowanceVoucherDigest` function, it takes an AllowanceVoucher
309
+ // as sole argument.
310
+ const allowanceVoucherDigest = advancedAccessControlAbi.find((item) => item.name === 'allowanceVoucherDigest');
311
+ if (!allowanceVoucherDigest) {
312
+ throw new Error('allowanceVoucherDigest not found');
313
+ }
314
+ // Get the input whose internalType is "struct AllowanceVoucher"
315
+ const allowanceVoucherInput = allowanceVoucherDigest.inputs.find((input) => input.internalType === 'struct AllowanceVoucher');
316
+ if (!allowanceVoucherInput) {
317
+ throw new Error('allowanceVoucherInput not found');
318
+ }
319
+ return allowanceVoucherInput.components;
320
+ }
321
+ // Get the ABI of the `Session` struct.
322
+ //
323
+ // We specifically created an ABIHelper.sol contract to export the Session
324
+ // struct from the SessionVerifier contract.
325
+ function getSessionAbi() {
326
+ const getSession = abiHelperAbi.find((item) => 'name' in item && item.name === 'getSession');
327
+ if (!getSession) {
328
+ throw new Error('getSession not found');
329
+ }
330
+ const session = getSession.outputs[0];
331
+ if (!session) {
332
+ throw new Error('session not found');
333
+ }
334
+ return session.components;
335
+ }
336
+ // Get the ABI of the `canUseSession` function.
337
+ function getCanUseSessionAbi() {
338
+ const canUseSession = sessionVerifierAbi.find((item) => 'name' in item && item.name === 'canUseSession');
339
+ if (!canUseSession) {
340
+ throw new Error('canUseSession not found');
341
+ }
342
+ return canUseSession;
343
+ }
344
+ function getAdvancedAcl(incoVerifierAddress, sharerWalletClient) {
345
+ return getContract({
346
+ address: incoVerifierAddress,
347
+ abi: advancedAccessControlAbi,
348
+ client: sharerWalletClient,
349
+ });
350
+ }
351
+ function getIncoLightning(incoLiteAddress, walletClient) {
352
+ return getContract({
353
+ address: incoLiteAddress,
354
+ abi: incoLightningAbi,
355
+ client: walletClient,
356
+ });
357
+ }
358
+ async function getIncoVerifier(incoLiteAddress, walletClient) {
359
+ const incoLite = getIncoLightning(incoLiteAddress, walletClient);
360
+ const incoVerifierAddress = await incoLite.read.incoVerifier();
361
+ return getContract({
362
+ address: incoVerifierAddress,
363
+ abi: incoVerifierAbi,
364
+ client: walletClient,
365
+ });
366
+ }
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBRVYsa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBV2QsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBTXpELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEdBQzdCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHdCQUF3QixFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSS9ELE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixHQUM3QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSw4Q0FBOEMsQ0FBQztB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
@@ -0,0 +1,16 @@
1
+ import { Address, Hex } from 'viem';
2
+ export type AllowanceVoucher = {
3
+ sessionNonce: Hex;
4
+ verifyingContract: Address;
5
+ callFunction: Hex;
6
+ sharerArgData: Hex;
7
+ warning: string;
8
+ };
9
+ export interface AllowanceVoucherWithSig {
10
+ sharer: Address;
11
+ voucher: AllowanceVoucher;
12
+ voucherSignature: Hex;
13
+ }
14
+ export interface AllowanceProof extends AllowanceVoucherWithSig {
15
+ requesterArgData: Uint8Array;
16
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,65 @@
1
+ import type { Account, Chain, Transport, WalletClient } from 'viem';
2
+ import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/types.js';
3
+ import { HexString } from '../binary.js';
4
+ import { SupportedChainId } from '../chain.js';
5
+ import type { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
6
+ import { KmsQuorumClient } from '../kms/quorumClient.js';
7
+ import { type XwingKeypair } from '../lite/xwing.js';
8
+ import type { BackoffConfig } from '../retry.js';
9
+ import { AttestedComputeOP } from './types.js';
10
+ export declare const ATTESTED_COMPUTE_DOMAIN_NAME = "IncoAttestedCompute";
11
+ /**
12
+ * Arguments for creating an attested compute.
13
+ */
14
+ export interface IncoLiteAttestedComputeArgs {
15
+ /** The wallet used to interact with the blockchain and sign the compute request */
16
+ walletClient: WalletClient<Transport, Chain, Account>;
17
+ /** The KMS quorum client instance */
18
+ kmsQuorumClient: KmsQuorumClient;
19
+ /** The chain ID to use */
20
+ chainId: SupportedChainId;
21
+ }
22
+ /**
23
+ * Creates an attested compute function that can decrypt handles with an attached attestation from the covalidator.
24
+ * @param args - The arguments for creating the attested compute function
25
+ * @returns A function that can perform binary operation on a handle and return an attestation
26
+ * @throws {AttestedComputeError} If the creation fails
27
+ *
28
+ * @todo Support multiple operations in a single request.
29
+ */
30
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, reencryptKeypair, }: {
31
+ executorAddress: HexString;
32
+ lhsHandle: HexString;
33
+ op: AttestedComputeOP;
34
+ rhsPlaintext: bigint | boolean;
35
+ backoffConfig?: Partial<BackoffConfig> | undefined;
36
+ walletClient: WalletClient<Transport, Chain, Account>;
37
+ kmsQuorumClient: KmsQuorumClient;
38
+ chainId: SupportedChainId;
39
+ reencryptPubKey: Uint8Array;
40
+ reencryptKeypair: XwingKeypair;
41
+ }): Promise<DecryptionAttestation<EncryptionScheme, T>>;
42
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, }: {
43
+ executorAddress: HexString;
44
+ lhsHandle: HexString;
45
+ op: AttestedComputeOP;
46
+ rhsPlaintext: bigint | boolean;
47
+ backoffConfig?: Partial<BackoffConfig> | undefined;
48
+ walletClient: WalletClient<Transport, Chain, Account>;
49
+ kmsQuorumClient: KmsQuorumClient;
50
+ chainId: SupportedChainId;
51
+ reencryptPubKey: Uint8Array;
52
+ reencryptKeypair?: never;
53
+ }): Promise<EncryptedDecryptionAttestation<EncryptionScheme, T>>;
54
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }: {
55
+ executorAddress: HexString;
56
+ lhsHandle: HexString;
57
+ op: AttestedComputeOP;
58
+ rhsPlaintext: bigint | boolean;
59
+ backoffConfig?: Partial<BackoffConfig> | undefined;
60
+ walletClient: WalletClient<Transport, Chain, Account>;
61
+ kmsQuorumClient: KmsQuorumClient;
62
+ chainId: SupportedChainId;
63
+ reencryptPubKey?: never;
64
+ reencryptKeypair?: never;
65
+ }): Promise<DecryptionAttestation<EncryptionScheme, T>>;