@inco/js 0.9.0-devnet-test-10 → 0.10.0-devnet-2

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 (226) hide show
  1. package/README.md +503 -47
  2. package/dist/cjs/advancedacl/session-key.d.ts +5 -5
  3. package/dist/cjs/advancedacl/session-key.js +33 -9
  4. package/dist/cjs/attestedcompute/attested-compute.d.ts +1 -2
  5. package/dist/cjs/attestedcompute/attested-compute.js +15 -7
  6. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +5 -43
  7. package/dist/cjs/attesteddecrypt/attested-decrypt.js +33 -96
  8. package/dist/cjs/attestedreveal/attested-reveal.d.ts +21 -0
  9. package/dist/cjs/attestedreveal/attested-reveal.js +31 -0
  10. package/dist/cjs/attestedreveal/index.d.ts +2 -0
  11. package/dist/cjs/attestedreveal/index.js +21 -0
  12. package/dist/cjs/attestedreveal/types.d.ts +4 -0
  13. package/dist/cjs/attestedreveal/types.js +13 -0
  14. package/dist/cjs/binary.d.ts +82 -0
  15. package/dist/cjs/binary.js +87 -5
  16. package/dist/cjs/chain.d.ts +29 -4
  17. package/dist/cjs/chain.js +34 -6
  18. package/dist/cjs/eip712/eip712.d.ts +18 -0
  19. package/dist/cjs/eip712/eip712.js +51 -0
  20. package/dist/cjs/eip712/index.d.ts +1 -0
  21. package/dist/cjs/eip712/index.js +8 -0
  22. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  23. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.js +94 -0
  24. package/dist/cjs/elistattesteddecrypt/index.d.ts +2 -0
  25. package/dist/cjs/elistattesteddecrypt/index.js +22 -0
  26. package/dist/cjs/elistattesteddecrypt/types.d.ts +31 -0
  27. package/dist/cjs/elistattesteddecrypt/types.js +16 -0
  28. package/dist/cjs/encryption/encryption.d.ts +115 -0
  29. package/dist/cjs/encryption/encryption.js +98 -7
  30. package/dist/cjs/encryption/index.d.ts +1 -1
  31. package/dist/cjs/encryption/index.js +17 -16
  32. package/dist/cjs/generated/abis/lightning.d.ts +1119 -107
  33. package/dist/cjs/generated/abis/lightning.js +762 -52
  34. package/dist/cjs/generated/abis/test-elist.d.ts +20 -2
  35. package/dist/cjs/generated/abis/test-elist.js +16 -3
  36. package/dist/cjs/generated/abis/verifier.d.ts +118 -15
  37. package/dist/cjs/generated/abis/verifier.js +71 -19
  38. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
  39. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +36 -41
  40. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  41. package/dist/cjs/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +1 -1
  42. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
  43. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +3 -3
  44. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +1 -1
  45. package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
  46. package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +3 -3
  47. package/dist/cjs/generated/lightning.d.ts +150 -0
  48. package/dist/cjs/generated/lightning.js +157 -1
  49. package/dist/cjs/generated/local-node.d.ts +9 -9
  50. package/dist/cjs/generated/local-node.js +37 -10
  51. package/dist/cjs/handle.d.ts +72 -0
  52. package/dist/cjs/handle.js +113 -9
  53. package/dist/cjs/index.d.ts +1 -1
  54. package/dist/cjs/index.js +11 -2
  55. package/dist/cjs/kms/client.d.ts +1 -1
  56. package/dist/cjs/kms/client.js +4 -3
  57. package/dist/cjs/kms/quorumClient.d.ts +18 -12
  58. package/dist/cjs/kms/quorumClient.js +212 -231
  59. package/dist/cjs/kms/quorumConsistency.d.ts +82 -0
  60. package/dist/cjs/kms/quorumConsistency.js +269 -0
  61. package/dist/cjs/kms/signatureVerification.d.ts +35 -0
  62. package/dist/cjs/kms/signatureVerification.js +88 -0
  63. package/dist/cjs/kms/thresholdPromises.d.ts +4 -3
  64. package/dist/cjs/kms/thresholdPromises.js +25 -15
  65. package/dist/cjs/lite/attested-compute.d.ts +2 -2
  66. package/dist/cjs/lite/attested-compute.js +2 -3
  67. package/dist/cjs/lite/attested-decrypt.d.ts +2 -2
  68. package/dist/cjs/lite/attested-decrypt.js +2 -3
  69. package/dist/cjs/lite/hadu.d.ts +1 -1
  70. package/dist/cjs/lite/hadu.js +3 -3
  71. package/dist/cjs/lite/index.d.ts +6 -2
  72. package/dist/cjs/lite/index.js +8 -14
  73. package/dist/cjs/lite/lightning.d.ts +96 -47
  74. package/dist/cjs/lite/lightning.js +221 -267
  75. package/dist/cjs/lite/types.d.ts +47 -0
  76. package/dist/cjs/lite/types.js +3 -0
  77. package/dist/cjs/lite/xwing.d.ts +33 -2
  78. package/dist/cjs/lite/xwing.js +62 -7
  79. package/dist/cjs/local/local-node.d.ts +18 -0
  80. package/dist/cjs/local/local-node.js +18 -3
  81. package/dist/cjs/reencryption/eip712.d.ts +27 -0
  82. package/dist/cjs/reencryption/eip712.js +20 -7
  83. package/dist/cjs/reencryption/types.d.ts +24 -0
  84. package/dist/cjs/retry.d.ts +14 -0
  85. package/dist/cjs/retry.js +58 -2
  86. package/dist/cjs/test/mocks.d.ts +6 -1
  87. package/dist/cjs/test/mocks.js +31 -6
  88. package/dist/cjs/viem.d.ts +361 -1
  89. package/dist/cjs/viem.js +14 -1
  90. package/dist/esm/advancedacl/session-key.d.ts +5 -5
  91. package/dist/esm/advancedacl/session-key.js +33 -9
  92. package/dist/esm/attestedcompute/attested-compute.d.ts +1 -2
  93. package/dist/esm/attestedcompute/attested-compute.js +13 -5
  94. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +5 -43
  95. package/dist/esm/attesteddecrypt/attested-decrypt.js +34 -96
  96. package/dist/esm/attestedreveal/attested-reveal.d.ts +21 -0
  97. package/dist/esm/attestedreveal/attested-reveal.js +28 -0
  98. package/dist/esm/attestedreveal/index.d.ts +2 -0
  99. package/dist/esm/attestedreveal/index.js +3 -0
  100. package/dist/esm/attestedreveal/types.d.ts +4 -0
  101. package/dist/esm/attestedreveal/types.js +9 -0
  102. package/dist/esm/binary.d.ts +82 -0
  103. package/dist/esm/binary.js +87 -5
  104. package/dist/esm/chain.d.ts +29 -4
  105. package/dist/esm/chain.js +33 -5
  106. package/dist/esm/eip712/eip712.d.ts +18 -0
  107. package/dist/esm/eip712/eip712.js +46 -0
  108. package/dist/esm/eip712/index.d.ts +1 -0
  109. package/dist/esm/eip712/index.js +2 -0
  110. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  111. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.js +89 -0
  112. package/dist/esm/elistattesteddecrypt/index.d.ts +2 -0
  113. package/dist/esm/elistattesteddecrypt/index.js +3 -0
  114. package/dist/esm/elistattesteddecrypt/types.d.ts +31 -0
  115. package/dist/esm/elistattesteddecrypt/types.js +12 -0
  116. package/dist/esm/encryption/encryption.d.ts +115 -0
  117. package/dist/esm/encryption/encryption.js +98 -7
  118. package/dist/esm/encryption/index.d.ts +1 -1
  119. package/dist/esm/encryption/index.js +2 -2
  120. package/dist/esm/generated/abis/lightning.d.ts +1119 -107
  121. package/dist/esm/generated/abis/lightning.js +761 -51
  122. package/dist/esm/generated/abis/test-elist.d.ts +20 -2
  123. package/dist/esm/generated/abis/test-elist.js +16 -3
  124. package/dist/esm/generated/abis/verifier.d.ts +118 -15
  125. package/dist/esm/generated/abis/verifier.js +71 -19
  126. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
  127. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +35 -40
  128. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  129. package/dist/esm/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +1 -1
  130. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
  131. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +3 -3
  132. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +1 -1
  133. package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
  134. package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +3 -3
  135. package/dist/esm/generated/lightning.d.ts +150 -0
  136. package/dist/esm/generated/lightning.js +157 -1
  137. package/dist/esm/generated/local-node.d.ts +9 -9
  138. package/dist/esm/generated/local-node.js +37 -10
  139. package/dist/esm/handle.d.ts +72 -0
  140. package/dist/esm/handle.js +110 -8
  141. package/dist/esm/index.d.ts +1 -1
  142. package/dist/esm/index.js +2 -2
  143. package/dist/esm/kms/client.d.ts +1 -1
  144. package/dist/esm/kms/client.js +3 -2
  145. package/dist/esm/kms/quorumClient.d.ts +18 -12
  146. package/dist/esm/kms/quorumClient.js +213 -232
  147. package/dist/esm/kms/quorumConsistency.d.ts +82 -0
  148. package/dist/esm/kms/quorumConsistency.js +260 -0
  149. package/dist/esm/kms/signatureVerification.d.ts +35 -0
  150. package/dist/esm/kms/signatureVerification.js +84 -0
  151. package/dist/esm/kms/thresholdPromises.d.ts +4 -3
  152. package/dist/esm/kms/thresholdPromises.js +25 -15
  153. package/dist/esm/lite/attested-compute.d.ts +2 -2
  154. package/dist/esm/lite/attested-compute.js +3 -3
  155. package/dist/esm/lite/attested-decrypt.d.ts +2 -2
  156. package/dist/esm/lite/attested-decrypt.js +3 -3
  157. package/dist/esm/lite/hadu.d.ts +1 -1
  158. package/dist/esm/lite/hadu.js +2 -2
  159. package/dist/esm/lite/index.d.ts +6 -2
  160. package/dist/esm/lite/index.js +5 -3
  161. package/dist/esm/lite/lightning.d.ts +96 -47
  162. package/dist/esm/lite/lightning.js +217 -263
  163. package/dist/esm/lite/types.d.ts +47 -0
  164. package/dist/esm/lite/types.js +2 -0
  165. package/dist/esm/lite/xwing.d.ts +33 -2
  166. package/dist/esm/lite/xwing.js +59 -7
  167. package/dist/esm/local/local-node.d.ts +18 -0
  168. package/dist/esm/local/local-node.js +18 -3
  169. package/dist/esm/reencryption/eip712.d.ts +27 -0
  170. package/dist/esm/reencryption/eip712.js +20 -7
  171. package/dist/esm/reencryption/types.d.ts +24 -0
  172. package/dist/esm/retry.d.ts +14 -0
  173. package/dist/esm/retry.js +56 -2
  174. package/dist/esm/test/mocks.d.ts +6 -1
  175. package/dist/esm/test/mocks.js +31 -8
  176. package/dist/esm/viem.d.ts +361 -1
  177. package/dist/esm/viem.js +15 -2
  178. package/dist/types/advancedacl/session-key.d.ts +5 -5
  179. package/dist/types/attestedcompute/attested-compute.d.ts +1 -2
  180. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +5 -43
  181. package/dist/types/attestedreveal/attested-reveal.d.ts +21 -0
  182. package/dist/types/attestedreveal/index.d.ts +2 -0
  183. package/dist/types/attestedreveal/types.d.ts +4 -0
  184. package/dist/types/binary.d.ts +82 -0
  185. package/dist/types/chain.d.ts +29 -4
  186. package/dist/types/eip712/eip712.d.ts +18 -0
  187. package/dist/types/eip712/index.d.ts +1 -0
  188. package/dist/types/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  189. package/dist/types/elistattesteddecrypt/index.d.ts +2 -0
  190. package/dist/types/elistattesteddecrypt/types.d.ts +31 -0
  191. package/dist/types/encryption/encryption.d.ts +115 -0
  192. package/dist/types/encryption/index.d.ts +1 -1
  193. package/dist/types/generated/abis/lightning.d.ts +1119 -107
  194. package/dist/types/generated/abis/test-elist.d.ts +20 -2
  195. package/dist/types/generated/abis/verifier.d.ts +118 -15
  196. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
  197. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
  198. package/dist/types/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
  199. package/dist/types/generated/lightning.d.ts +150 -0
  200. package/dist/types/generated/local-node.d.ts +9 -9
  201. package/dist/types/handle.d.ts +72 -0
  202. package/dist/types/index.d.ts +1 -1
  203. package/dist/types/kms/client.d.ts +1 -1
  204. package/dist/types/kms/quorumClient.d.ts +18 -12
  205. package/dist/types/kms/quorumConsistency.d.ts +82 -0
  206. package/dist/types/kms/signatureVerification.d.ts +35 -0
  207. package/dist/types/kms/thresholdPromises.d.ts +4 -3
  208. package/dist/types/lite/attested-compute.d.ts +2 -2
  209. package/dist/types/lite/attested-decrypt.d.ts +2 -2
  210. package/dist/types/lite/hadu.d.ts +1 -1
  211. package/dist/types/lite/index.d.ts +6 -2
  212. package/dist/types/lite/lightning.d.ts +96 -47
  213. package/dist/types/lite/types.d.ts +47 -0
  214. package/dist/types/lite/xwing.d.ts +33 -2
  215. package/dist/types/local/local-node.d.ts +18 -0
  216. package/dist/types/reencryption/eip712.d.ts +27 -0
  217. package/dist/types/reencryption/types.d.ts +24 -0
  218. package/dist/types/retry.d.ts +14 -0
  219. package/dist/types/test/mocks.d.ts +6 -1
  220. package/dist/types/viem.d.ts +361 -1
  221. package/package.json +19 -21
  222. package/dist/cjs/generated/abis/lightning-preview.d.ts +0 -1385
  223. package/dist/cjs/generated/abis/lightning-preview.js +0 -857
  224. package/dist/esm/generated/abis/lightning-preview.d.ts +0 -1385
  225. package/dist/esm/generated/abis/lightning-preview.js +0 -854
  226. package/dist/types/generated/abis/lightning-preview.d.ts +0 -1385
@@ -1,7 +1,134 @@
1
1
  export declare const lightningDeployments: readonly [{
2
+ readonly name: "incoLightning_10_0_0__266391127";
3
+ readonly majorVersion: 10;
4
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
5
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
6
+ readonly pepper: "devnet";
7
+ readonly executorAddress: "0x9C6b74dff47644956e712B301aa3701b3141fF9C";
8
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc0012dea2b242c4d3b620c657";
9
+ readonly chainId: 84532;
10
+ readonly chainName: "Base Sepolia";
11
+ readonly version: {
12
+ readonly major: 10;
13
+ readonly minor: 0;
14
+ readonly patch: 0;
15
+ readonly shortSalt: "266391127";
16
+ };
17
+ readonly blockNumber: 40291413;
18
+ readonly deployDate: "2026-04-16T14:51:55.586Z";
19
+ readonly commit: "v0.8.0-devnet-32-6-ge1e857cf0-dirty";
20
+ readonly active: true;
21
+ readonly includesPreviewFeatures: false;
22
+ }, {
23
+ readonly name: "incoLightning_9_0_0__269218568";
24
+ readonly majorVersion: 9;
25
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
26
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
27
+ readonly pepper: "devnet";
28
+ readonly executorAddress: "0x6c9132D324231D2F68a1491686b0d4c10ee7d257";
29
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc007202d6e9ea2805def71308";
30
+ readonly chainId: 84532;
31
+ readonly chainName: "Base Sepolia";
32
+ readonly version: {
33
+ readonly major: 9;
34
+ readonly minor: 0;
35
+ readonly patch: 0;
36
+ readonly shortSalt: "269218568";
37
+ };
38
+ readonly blockNumber: 39033718;
39
+ readonly deployDate: "2026-03-18T12:08:48.915Z";
40
+ readonly commit: "v0.8.0-devnet-13-40-gc1ceef103-dirty";
41
+ readonly active: true;
42
+ readonly includesPreviewFeatures: false;
43
+ }, {
44
+ readonly name: "incoLightning_8_0_0__985328058";
45
+ readonly majorVersion: 8;
46
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
47
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
48
+ readonly pepper: "devnet";
49
+ readonly executorAddress: "0x43119Ad1F673E998CE4f3BB305bB92Bd5ab97E3B";
50
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc009045f766b38e5a773da9ba";
51
+ readonly chainId: 84532;
52
+ readonly chainName: "Base Sepolia";
53
+ readonly version: {
54
+ readonly major: 8;
55
+ readonly minor: 0;
56
+ readonly patch: 0;
57
+ readonly shortSalt: "985328058";
58
+ };
59
+ readonly blockNumber: 39028741;
60
+ readonly deployDate: "2026-03-18T09:22:53.919Z";
61
+ readonly commit: "v0.8.0-devnet-13-40-gc1ceef103-dirty";
62
+ readonly active: true;
63
+ readonly includesPreviewFeatures: false;
64
+ }, {
65
+ readonly name: "incoLightning_7_0_0__24560427";
66
+ readonly majorVersion: 7;
67
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
68
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
69
+ readonly pepper: "devnet";
70
+ readonly executorAddress: "0xA2275E60cCEd081fFD7373593c44ebc30E6Efe66";
71
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc0057b7694d1492d2775d132b";
72
+ readonly chainId: 84532;
73
+ readonly chainName: "Base Sepolia";
74
+ readonly version: {
75
+ readonly major: 7;
76
+ readonly minor: 0;
77
+ readonly patch: 0;
78
+ readonly shortSalt: "24560427";
79
+ };
80
+ readonly blockNumber: 38991058;
81
+ readonly deployDate: "2026-03-17T12:26:47.504Z";
82
+ readonly commit: "v0.8.0-devnet-13-38-g52b1dfef3";
83
+ readonly active: true;
84
+ readonly includesPreviewFeatures: false;
85
+ }, {
86
+ readonly name: "incoLightning_6_0_0__281949651";
87
+ readonly majorVersion: 6;
88
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
89
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
90
+ readonly pepper: "devnet";
91
+ readonly executorAddress: "0xDF3830489208461f72Df6E45D0e6cbF9DBB74fe1";
92
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc009531587de02194b1b7a9d3";
93
+ readonly chainId: 84532;
94
+ readonly chainName: "Base Sepolia";
95
+ readonly version: {
96
+ readonly major: 6;
97
+ readonly minor: 0;
98
+ readonly patch: 0;
99
+ readonly shortSalt: "281949651";
100
+ };
101
+ readonly blockNumber: 37516200;
102
+ readonly deployDate: "2026-02-11T09:04:51.931Z";
103
+ readonly commit: "v0.8.0-devnet-9-13-ge2ba2377";
104
+ readonly active: true;
105
+ readonly includesPreviewFeatures: false;
106
+ }, {
107
+ readonly name: "incoLightningPreview_5_0_0__203964628";
108
+ readonly majorVersion: 5;
109
+ readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
110
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
111
+ readonly pepper: "devnet";
112
+ readonly executorAddress: "0x8D5D75CC00E2Fc84ec4dE085aE1708223591c6b6";
113
+ readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00c573fb2bf617e75b6210d4";
114
+ readonly chainId: 84532;
115
+ readonly chainName: "Base Sepolia";
116
+ readonly version: {
117
+ readonly major: 5;
118
+ readonly minor: 0;
119
+ readonly patch: 0;
120
+ readonly shortSalt: "203964628";
121
+ };
122
+ readonly blockNumber: 37431152;
123
+ readonly deployDate: "2026-02-09T09:49:55.326Z";
124
+ readonly commit: "v0.8.0-devnet-8-8-ge2e37e00";
125
+ readonly active: true;
126
+ readonly includesPreviewFeatures: true;
127
+ }, {
2
128
  readonly name: "incoLightningPreview_4_0_0__409204766";
3
129
  readonly majorVersion: 4;
4
130
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
131
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
5
132
  readonly pepper: "devnet";
6
133
  readonly executorAddress: "0x4046b737B454b0430FBF29cea070e3337AdE95aD";
7
134
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc003b3f2c4caeb6f787dcce1e";
@@ -22,6 +149,7 @@ export declare const lightningDeployments: readonly [{
22
149
  readonly name: "incoLightningPreview_3_0_0__976859633";
23
150
  readonly majorVersion: 3;
24
151
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
152
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
25
153
  readonly pepper: "devnet";
26
154
  readonly executorAddress: "0x4732520194584a04Cac0224e067658619F4086bD";
27
155
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00ef1fab551c72a93b0637f1";
@@ -42,6 +170,7 @@ export declare const lightningDeployments: readonly [{
42
170
  readonly name: "incoLightningPreview_2_0_0__889158349";
43
171
  readonly majorVersion: 2;
44
172
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
173
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
45
174
  readonly pepper: "testnet";
46
175
  readonly executorAddress: "0x168FDc3Ae19A5d5b03614578C58974FF30FCBe92";
47
176
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc005e0f44aac1a914b715cecd";
@@ -62,6 +191,7 @@ export declare const lightningDeployments: readonly [{
62
191
  readonly name: "incoLightningPreview_2_0_0__467437523";
63
192
  readonly majorVersion: 2;
64
193
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
194
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
65
195
  readonly pepper: "demonet";
66
196
  readonly executorAddress: "0xA95EAbCE575f5f1e52605358Ee893F6536166378";
67
197
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc0071f74686446f14c7b469d3";
@@ -82,6 +212,7 @@ export declare const lightningDeployments: readonly [{
82
212
  readonly name: "incoLightningPreview_2_0_0__976644394";
83
213
  readonly majorVersion: 2;
84
214
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
215
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
85
216
  readonly pepper: "alphanet";
86
217
  readonly executorAddress: "0xc0d693DeEF0A91CE39208676b6da09B822abd199";
87
218
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc000822f11f6e30f933e76d2a";
@@ -102,6 +233,7 @@ export declare const lightningDeployments: readonly [{
102
233
  readonly name: "incoLightningPreview_2_0_0__295237520";
103
234
  readonly majorVersion: 2;
104
235
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
236
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
105
237
  readonly pepper: "devnet";
106
238
  readonly executorAddress: "0xC64BB070D6F5aa796e79fA19c1008647ffF736ED";
107
239
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc008d5a963bd519d8493f5190";
@@ -122,6 +254,7 @@ export declare const lightningDeployments: readonly [{
122
254
  readonly name: "incoLightningPreview_2_0_0__295237520";
123
255
  readonly majorVersion: 2;
124
256
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
257
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
125
258
  readonly pepper: "devnet";
126
259
  readonly executorAddress: "0xC64BB070D6F5aa796e79fA19c1008647ffF736ED";
127
260
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc008d5a963bd519d8493f5190";
@@ -142,6 +275,7 @@ export declare const lightningDeployments: readonly [{
142
275
  readonly name: "incoLightningPreview_1_1_0__725458969";
143
276
  readonly majorVersion: 1;
144
277
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
278
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
145
279
  readonly pepper: "alphanet";
146
280
  readonly executorAddress: "0x28676Cd3b10b03b2FDF105Ba280425b45a674F2A";
147
281
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc004dfbe338c6966a22bcca19";
@@ -162,6 +296,7 @@ export declare const lightningDeployments: readonly [{
162
296
  readonly name: "incoLightningPreview_1_0_2__725458969";
163
297
  readonly majorVersion: 1;
164
298
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
299
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
165
300
  readonly pepper: "alphanet";
166
301
  readonly executorAddress: "0x28676Cd3b10b03b2FDF105Ba280425b45a674F2A";
167
302
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc004dfbe338c6966a22bcca19";
@@ -181,6 +316,7 @@ export declare const lightningDeployments: readonly [{
181
316
  readonly name: "incoLightningPreview_1_0_2__904635675";
182
317
  readonly majorVersion: 1;
183
318
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
319
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
184
320
  readonly pepper: "devnet";
185
321
  readonly executorAddress: "0x3473820DcAa71Af8157b93C7f2bf1c676A2A39A6";
186
322
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc007d63c0fdca6698ac7cc51b";
@@ -200,6 +336,7 @@ export declare const lightningDeployments: readonly [{
200
336
  readonly name: "incoLightningPreview_1_0_0__904635675";
201
337
  readonly majorVersion: 1;
202
338
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
339
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
203
340
  readonly pepper: "devnet";
204
341
  readonly executorAddress: "0x3473820DcAa71Af8157b93C7f2bf1c676A2A39A6";
205
342
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc007d63c0fdca6698ac7cc51b";
@@ -219,6 +356,7 @@ export declare const lightningDeployments: readonly [{
219
356
  readonly name: "incoLightning_0_2_0__183408998";
220
357
  readonly majorVersion: 0;
221
358
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
359
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
222
360
  readonly pepper: "testnet";
223
361
  readonly executorAddress: "0x63D8135aF4D393B1dB43B649010c8D3EE19FC9fd";
224
362
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00d75ffa0caf0797c3f12d66";
@@ -238,6 +376,7 @@ export declare const lightningDeployments: readonly [{
238
376
  readonly name: "incoLightning_0_1_29__183408998";
239
377
  readonly majorVersion: 0;
240
378
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
379
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
241
380
  readonly pepper: "testnet";
242
381
  readonly executorAddress: "0x63D8135aF4D393B1dB43B649010c8D3EE19FC9fd";
243
382
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00d75ffa0caf0797c3f12d66";
@@ -257,6 +396,7 @@ export declare const lightningDeployments: readonly [{
257
396
  readonly name: "incoLightning_0_1_29__183408998";
258
397
  readonly majorVersion: 0;
259
398
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
399
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
260
400
  readonly pepper: "testnet";
261
401
  readonly executorAddress: "0x63D8135aF4D393B1dB43B649010c8D3EE19FC9fd";
262
402
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00d75ffa0caf0797c3f12d66";
@@ -276,6 +416,7 @@ export declare const lightningDeployments: readonly [{
276
416
  readonly name: "incoLightning_0_2_0__863421733";
277
417
  readonly majorVersion: 0;
278
418
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
419
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
279
420
  readonly pepper: "demonet";
280
421
  readonly executorAddress: "0xeBAFF6D578733E4603b99CBdbb221482F29a78E1";
281
422
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00834654f6d289ccc7e5ab25";
@@ -295,6 +436,7 @@ export declare const lightningDeployments: readonly [{
295
436
  readonly name: "incoLightning_0_1_29__863421733";
296
437
  readonly majorVersion: 0;
297
438
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
439
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
298
440
  readonly pepper: "demonet";
299
441
  readonly executorAddress: "0xeBAFF6D578733E4603b99CBdbb221482F29a78E1";
300
442
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00834654f6d289ccc7e5ab25";
@@ -314,6 +456,7 @@ export declare const lightningDeployments: readonly [{
314
456
  readonly name: "incoLightningPreview_0_2_1__297966649";
315
457
  readonly majorVersion: 0;
316
458
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
459
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
317
460
  readonly pepper: "alphanet";
318
461
  readonly executorAddress: "0x4651DfD7729aE5568092E7351fAaD872266d4CBd";
319
462
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc0023f7798f470fdf5e9da639";
@@ -333,6 +476,7 @@ export declare const lightningDeployments: readonly [{
333
476
  readonly name: "incoLightningPreview_0_2_0__297966649";
334
477
  readonly majorVersion: 0;
335
478
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
479
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
336
480
  readonly pepper: "alphanet";
337
481
  readonly executorAddress: "0x4651DfD7729aE5568092E7351fAaD872266d4CBd";
338
482
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc0023f7798f470fdf5e9da639";
@@ -352,6 +496,7 @@ export declare const lightningDeployments: readonly [{
352
496
  readonly name: "incoLightningPreview_0_2_1__340846814";
353
497
  readonly majorVersion: 0;
354
498
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
499
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
355
500
  readonly pepper: "devnet";
356
501
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
357
502
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -371,6 +516,7 @@ export declare const lightningDeployments: readonly [{
371
516
  readonly name: "incoLightning_0_2_1__340846814";
372
517
  readonly majorVersion: 0;
373
518
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
519
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
374
520
  readonly pepper: "devnet";
375
521
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
376
522
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -390,6 +536,7 @@ export declare const lightningDeployments: readonly [{
390
536
  readonly name: "incoLightningPreview_0_2_1__340846814";
391
537
  readonly majorVersion: 0;
392
538
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
539
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
393
540
  readonly pepper: "devnet";
394
541
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
395
542
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -409,6 +556,7 @@ export declare const lightningDeployments: readonly [{
409
556
  readonly name: "incoLightning_0_2_0__340846814";
410
557
  readonly majorVersion: 0;
411
558
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
559
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
412
560
  readonly pepper: "devnet";
413
561
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
414
562
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -428,6 +576,7 @@ export declare const lightningDeployments: readonly [{
428
576
  readonly name: "incoLightning_0_1_29__340846814";
429
577
  readonly majorVersion: 0;
430
578
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
579
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
431
580
  readonly pepper: "devnet";
432
581
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
433
582
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -447,6 +596,7 @@ export declare const lightningDeployments: readonly [{
447
596
  readonly name: "incoLightning_0_1_29__340846814";
448
597
  readonly majorVersion: 0;
449
598
  readonly deployer: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
599
+ readonly owner: "0x8202D2D747784Cb7D48868E44C42C4bf162a70BC";
450
600
  readonly pepper: "devnet";
451
601
  readonly executorAddress: "0x3B22be60Ae699933959CA3cE147C96caa88Ccd3D";
452
602
  readonly salt: "0x8202d2d747784cb7d48868e44c42c4bf162a70bc00b001d6742fded0dd599ede";
@@ -4,7 +4,7 @@ export declare const localNodeLightningConfig: {
4
4
  readonly chainId: 31337;
5
5
  readonly covalidatorUrls: readonly ["http://localhost:50055"];
6
6
  readonly signers: readonly ["0xa3968E59A2659F33CB8deFEFa713512C800fbc77"];
7
- readonly hostChainRpcUrl: "http://localhost:8545";
7
+ readonly hostChainRpcUrls: readonly ["http://localhost:8545"];
8
8
  readonly senderPrivateKey: "0xde4526e9059cddb3eb8511fcefc2daa1dcaf2475ec76ff6ae63bfc7eb3405a1b";
9
9
  };
10
10
  readonly testnet: {
@@ -12,31 +12,31 @@ export declare const localNodeLightningConfig: {
12
12
  readonly chainId: 31337;
13
13
  readonly covalidatorUrls: readonly ["http://localhost:50055"];
14
14
  readonly signers: readonly ["0x8586714c02340Dc28935977d8E864f1F8E1c30B2"];
15
- readonly hostChainRpcUrl: "http://localhost:8545";
15
+ readonly hostChainRpcUrls: readonly ["http://localhost:8545"];
16
16
  readonly senderPrivateKey: "0x3ff395b755c4dc09837d0672dd421915e9b9835a4733edf63d8fd12b3fe4475c";
17
17
  };
18
18
  readonly devnet: {
19
- readonly executorAddress: "0x4046b737B454b0430FBF29cea070e3337AdE95aD";
19
+ readonly executorAddress: "0x9C6b74dff47644956e712B301aa3701b3141fF9C";
20
20
  readonly chainId: 31337;
21
21
  readonly covalidatorUrls: readonly ["http://localhost:50055"];
22
- readonly signers: readonly ["0x9463C02Da6EAAd8E2916d42BEE46a16a54833623"];
23
- readonly hostChainRpcUrl: "http://localhost:8545";
24
- readonly senderPrivateKey: "0xf852e519594d8f6e9202adafa3354c196d77332d0f2214ff598e8ff14549f59c";
22
+ readonly signers: readonly ["0x2fFD118c19d5Fc7F43e6F1d6ac248A0EE4B25A88"];
23
+ readonly hostChainRpcUrls: readonly ["http://localhost:8545"];
24
+ readonly senderPrivateKey: "0x55af0e32c902cfece090ee14715775cc1636d4c1e9ccae11d200f0d5fe7bfcb0";
25
25
  };
26
26
  readonly alphanet: {
27
27
  readonly executorAddress: "0xc0d693DeEF0A91CE39208676b6da09B822abd199";
28
28
  readonly chainId: 31337;
29
29
  readonly covalidatorUrls: readonly ["http://localhost:50055"];
30
30
  readonly signers: readonly ["0x8E873085348a3406A07907E5d1465B9824bA07cd"];
31
- readonly hostChainRpcUrl: "http://localhost:8545";
31
+ readonly hostChainRpcUrls: readonly ["http://localhost:8545"];
32
32
  readonly senderPrivateKey: "0x279c172cf3638a79642daa5f7666c600befde318550d7579cf96280920e318b6";
33
33
  };
34
34
  readonly scratch: {
35
- readonly executorAddress: "0x1123128730a0b046F3FB4E02c4B9e06A69da110e";
35
+ readonly executorAddress: "0xFaaaAddc5fbE664AFC44Ae7bfe62D7a0F4FF8FB8";
36
36
  readonly chainId: 31337;
37
37
  readonly covalidatorUrls: readonly ["http://localhost:50055"];
38
38
  readonly signers: readonly ["0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"];
39
- readonly hostChainRpcUrl: "http://127.0.0.1:8567";
39
+ readonly hostChainRpcUrls: readonly ["http://127.0.0.1:8567"];
40
40
  readonly senderPrivateKey: "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
41
41
  };
42
42
  };
@@ -1,6 +1,26 @@
1
1
  import { Schema } from 'effect';
2
2
  import { HexString } from './binary.js';
3
+ /** Current handle version byte, appended as the last byte of every handle. */
3
4
  export declare const HANDLE_VERSION = 0;
5
+ /**
6
+ * Domain separators for handle derivation. Must be kept in sync with Solidity
7
+ * (contracts/lightning/src/Types.sol) and Go (pkg/fhe/handle.go). Prefixing every
8
+ * keccak256 preimage with a unique constant string makes cross-derivation-path
9
+ * collision resistance structural rather than incidental.
10
+ */
11
+ export declare const SEP_INPUT_PREHANDLE = "inco/handle/input-prehandle";
12
+ export declare const SEP_INPUT_HANDLE = "inco/handle/input-handle";
13
+ export declare const SEP_INPUT_CONTEXT = "inco/handle/input-context";
14
+ export declare const SEP_OP_RESULT = "inco/handle/op-result";
15
+ export declare const SEP_ELIST_OP_RESULT = "inco/handle/elist-result";
16
+ export declare const BYTE_ELIST_ELEMENT_TYPE_INDEX = 29;
17
+ /**
18
+ * Map of ENCRYPTION type names to their integer identifiers (matching tfhe-rs `FheType`).
19
+ *
20
+ * Keys provide a semantic interpretation over the underlying integral type.
21
+ * For example, `ebool` interprets a `uint16` as a boolean, `ebytes64` interprets
22
+ * a `uint512` as a 64-byte array, etc.
23
+ */
4
24
  export declare const handleTypes: Readonly<{
5
25
  ebool: 0;
6
26
  euint4: 1;
@@ -15,11 +35,21 @@ export declare const handleTypes: Readonly<{
15
35
  ebytes128: 10;
16
36
  ebytes256: 11;
17
37
  }>;
38
+ /** Schema that validates a string is one of the known ENCRYPTION type names (e.g. `"ebool"`, `"euint256"`). */
18
39
  export declare const HandleTypeName: Schema.SchemaClass<"ebool" | "euint4" | "euint8" | "euint16" | "euint32" | "euint64" | "euint128" | "euint160" | "euint256" | "ebytes64" | "ebytes128" | "ebytes256", "ebool" | "euint4" | "euint8" | "euint16" | "euint32" | "euint64" | "euint128" | "euint160" | "euint256" | "ebytes64" | "ebytes128" | "ebytes256", never>;
40
+ /** A valid ENCRYPTION type name string (e.g. `"ebool"`, `"euint32"`, `"ebytes64"`). */
19
41
  export type HandleTypeName = typeof HandleTypeName.Type;
42
+ /** The typeof {@link handleTypes} — mapping from ENCRYPTION type names to integer IDs. */
20
43
  export type HandleTypes = typeof handleTypes;
44
+ /** Integer identifier of an ENCRYPTION type (0–11), corresponding to a {@link HandleTypeName}. */
21
45
  export type FheType = HandleTypes[keyof HandleTypes];
46
+ /**
47
+ * Type guard that checks whether a number is a valid {@link FheType} identifier.
48
+ * @param value - The number to check.
49
+ * @returns `true` if `value` is a known ENCRYPTION type integer (0–11).
50
+ */
22
51
  export declare function isFheType(value: number): value is FheType;
52
+ /** Schema for the context required to compute a deterministic ENCRYPTION handle from a prehandle. */
23
53
  export declare const InputContext: Schema.Struct<{
24
54
  hostChainId: typeof Schema.BigInt;
25
55
  aclAddress: Schema.TemplateLiteral<`0x${string}`>;
@@ -27,9 +57,43 @@ export declare const InputContext: Schema.Struct<{
27
57
  contractAddress: Schema.TemplateLiteral<`0x${string}`>;
28
58
  version: typeof Schema.Number;
29
59
  }>;
60
+ /** Context fields (chain ID, ACL address, user/contract addresses, version) used to derive a deterministic handle. */
30
61
  export type InputContext = typeof InputContext.Type;
62
+ /**
63
+ * A 32-byte hex string representing an ENCRYPTION ciphertext handle.
64
+ *
65
+ * Format: `keccak_hash[0:29] || index_handle || handle_type || handle_version`
66
+ *
67
+ * @see {@link https://github.com/Inco-fhevm/inco-monorepo/blob/636756f512ae16535bdcb9a43df76bf14fbd6ba7/pkg/fhe/handle.md Handle format spec}
68
+ */
31
69
  export type Handle = HexString;
70
+ /**
71
+ * Expected length of a handle in bytes.
72
+ * Handle format: 29 bytes hash + 1 byte index + 1 byte type + 1 byte version = 32 bytes
73
+ */
74
+ export declare const HANDLE_LENGTH_BYTES = 32;
75
+ /**
76
+ * Validates handle integrity by checking format, length, and version.
77
+ * Matches the validation in Go's HandleFromBytes (pkg/fhe/handle.go).
78
+ * @param handle - The handle to validate
79
+ * @throws Error if handle is malformed (wrong format, length, or unsupported version)
80
+ */
81
+ export declare function validateHandle(handle: HexString): void;
82
+ /**
83
+ * Extracts the {@link FheType} from byte 30 of a validated handle.
84
+ * @param handle - A 32-byte hex handle string.
85
+ * @returns The ENCRYPTION type identifier stored in the handle.
86
+ * @throws If the handle is malformed or contains an invalid ENCRYPTION type.
87
+ * @see {@link https://github.com/Inco-fhevm/inco-monorepo/blob/636756f512ae16535bdcb9a43df76bf14fbd6ba7/pkg/fhe/handle.md Handle format spec}
88
+ */
32
89
  export declare function getHandleType(handle: HexString): FheType;
90
+ /**
91
+ * Extracts the elist element {@link FheType} from byte 29 of a validated handle.
92
+ * @param handle - A 32-byte hex handle string for an elist.
93
+ * @returns The ENCRYPTION type identifier of the elist elements.
94
+ * @throws If the handle is malformed or contains an invalid ENCRYPTION type at byte 29.
95
+ */
96
+ export declare function getEListElementType(handle: HexString): FheType;
33
97
  /**
34
98
  * Computes the prehandle hash for an input based on the ciphertext
35
99
  *
@@ -55,4 +119,12 @@ export declare function computeHandle({ prehandle, context, }: {
55
119
  prehandle: Uint8Array;
56
120
  context: InputContext;
57
121
  }): Buffer;
122
+ /**
123
+ * Computes the Keccak-256 hash of an ABI-packed {@link InputContext}.
124
+ *
125
+ * The context is packed as: `SEP_INPUT_CONTEXT || "evm/" || chainId || aclAddress || userAddress || contractAddress || version`.
126
+ *
127
+ * @param context - The input context to hash.
128
+ * @returns A 32-byte `Buffer` containing the Keccak-256 digest.
129
+ */
58
130
  export declare function hashInputContext(context: InputContext): Buffer;
@@ -1,5 +1,5 @@
1
1
  export * from './binary.js';
2
2
  export * from './chain.js';
3
- export * from './handle.js';
3
+ export { HANDLE_LENGTH_BYTES, HANDLE_VERSION, HandleTypeName, InputContext, getHandleType, handleTypes, isFheType, validateHandle, type FheType, type Handle, type HandleTypes, } from './handle.js';
4
4
  export * from './schema.js';
5
5
  export * from './viem.js';
@@ -2,7 +2,7 @@ import { type Client } from '@connectrpc/connect';
2
2
  import type { Address } from 'viem';
3
3
  import type { SupportedChain } from '../chain.js';
4
4
  import { KmsService } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
5
- export declare const DEFAULT_COVALIDATOR_SIGNER: Address;
5
+ export declare const TEST_DEFAULT_COVALIDATOR_SIGNER: Address;
6
6
  export type KmsClient = Client<typeof KmsService> & {
7
7
  signerAddress: Address;
8
8
  };
@@ -1,10 +1,12 @@
1
- import type { Address } from 'viem';
1
+ import { type Address } from 'viem';
2
2
  import type { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/types.js';
3
+ import { type EListDecryptionAttestation, type EncryptedEListDecryptionAttestation } from '../elistattesteddecrypt/types.js';
3
4
  import type { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
4
- import type { AttestedComputeRequest, AttestedDecryptRequest, AttestedRevealRequest } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
5
- import type { XwingKeypair } from '../lite/index.js';
5
+ import type { AttestedComputeRequest, AttestedDecryptRequest, AttestedRevealRequest, EListAttestedDecryptRequest, EListAttestedRevealRequest } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
6
+ import { type XwingKeypair } from '../lite/xwing.js';
6
7
  import type { BackoffConfig } from '../retry.js';
7
8
  import { type KmsClient } from './client.js';
9
+ import type { ViemClient } from '../viem.js';
8
10
  export declare class KmsQuorumClient {
9
11
  private readonly kmss;
10
12
  private readonly threshold;
@@ -29,9 +31,11 @@ export declare class KmsQuorumClient {
29
31
  * @throws {Error} If KMS clients array is empty or threshold is invalid
30
32
  */
31
33
  static fromKmsClients(kmsClients: KmsClient[], threshold: number): KmsQuorumClient;
32
- attestedDecrypt(request: AttestedDecryptRequest, backoffConfig?: Partial<BackoffConfig>, reencryptKeypair?: XwingKeypair): Promise<(DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>)[]>;
33
- attestedCompute(request: AttestedComputeRequest, backoffConfig?: Partial<BackoffConfig>, reencryptKeypair?: XwingKeypair): Promise<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
34
- attestedReveal(request: AttestedRevealRequest, backoffConfig?: Partial<BackoffConfig>): Promise<(DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>)[]>;
34
+ attestedDecrypt(request: AttestedDecryptRequest, backoffConfig?: Partial<BackoffConfig>, reencryptKeypair?: XwingKeypair, executorAddress?: Address, client?: ViemClient): Promise<(DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>)[]>;
35
+ attestedCompute(request: AttestedComputeRequest, backoffConfig?: Partial<BackoffConfig>, reencryptKeypair?: XwingKeypair, executorAddress?: Address, client?: ViemClient): Promise<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
36
+ attestedReveal(request: AttestedRevealRequest, backoffConfig?: Partial<BackoffConfig>, executorAddress?: Address, client?: ViemClient): Promise<(DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>)[]>;
37
+ eListAttestedDecrypt(request: EListAttestedDecryptRequest, backoffConfig?: Partial<BackoffConfig>, reencryptKeypair?: XwingKeypair, executorAddress?: Address, client?: ViemClient): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedEListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
38
+ eListAttestedReveal(request: EListAttestedRevealRequest, backoffConfig?: Partial<BackoffConfig>, executorAddress?: Address, client?: ViemClient): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
35
39
  /**
36
40
  * Generic method to execute a KMS operation across all clients with retry and threshold logic.
37
41
  * Returns results with both the response and signer address.
@@ -48,12 +52,14 @@ export declare class KmsQuorumClient {
48
52
  private buildPlaintextAttestation;
49
53
  private buildAggregatedAttestations;
50
54
  private buildAggregatedComputeAttestation;
51
- private verifyResponseConsistency;
52
- private verifyComputeResponseConsistency;
55
+ private buildAggregatedEListAttestation;
53
56
  /**
54
- * Verifies that two plaintext byte arrays are identical.
57
+ * Verifies proof hashes at two levels:
58
+ * 1. Aggregate: keccak256(concat(proofHashes)) must equal the attested commitmentProof
59
+ * 2. Per-element:
60
+ * - For plaintext (reveal): proofHash[i] = keccak256(value[i])
61
+ * - For reencryption (decrypt): proofHash[i] = keccak256(commitment[i] || plaintext[i])
62
+ * — requires reencryptKeypair to decrypt the ciphertext first.
55
63
  */
56
- private verifyPlaintextBytesConsistency;
57
- private verifyPlaintextConsistency;
58
- private verifyCiphertextConsistency;
64
+ private verifyElementProofHashes;
59
65
  }
@@ -0,0 +1,82 @@
1
+ import type { Address } from 'viem';
2
+ import type { AttestedComputeRequest, AttestedComputeResponse, AttestedDecryptResponse, AttestedRevealResponse, EListAttestedDecryptResponse, EListAttestedRevealResponse, DecryptionAttestation as ProtoDecryptionAttestation } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
3
+ import type { XwingKeypair } from '../lite/xwing.js';
4
+ /**
5
+ * Computes a canonical key for a single attestation.
6
+ * For plaintext/reencryption+keypair, the key is handle:hex(value).
7
+ * For reencryption without a keypair (XWing ciphertexts are non-deterministic),
8
+ * falls back to handle:op-type as a structural stand-in.
9
+ */
10
+ export declare function computeAttestationKey(att: ProtoDecryptionAttestation, reencryptKeypair?: XwingKeypair): Promise<string>;
11
+ /**
12
+ * Validates that all responses in a winning bucket have the same attestation
13
+ * count and types as the quorum-elected reference (bucket[0]).
14
+ */
15
+ export declare function validateDecryptResponseStructure<T extends AttestedDecryptResponse | AttestedRevealResponse>(bucket: Array<{
16
+ response: T;
17
+ signer: Address;
18
+ }>): void;
19
+ /**
20
+ * Validates that all responses in a winning bucket have a decryption
21
+ * attestation with the same case as the quorum-elected reference (bucket[0]),
22
+ * and that the case is consistent with the request's reencryptPubKey.
23
+ */
24
+ export declare function validateComputeResponseStructure(bucket: Array<{
25
+ response: AttestedComputeResponse;
26
+ signer: Address;
27
+ }>, request?: AttestedComputeRequest): void;
28
+ /**
29
+ * Verifies decrypt/reveal response consistency using hash-bucket voting.
30
+ * Collects all N responses, buckets them by content key, and returns the
31
+ * winning bucket (the first one with >= threshold votes).
32
+ *
33
+ * This is robust against a faulty first-responding node: even if responses[0]
34
+ * disagrees, a quorum of agreeing responses will form a winning bucket.
35
+ */
36
+ export declare function verifyDecryptResponseConsistency<T extends AttestedDecryptResponse | AttestedRevealResponse>(allResults: Array<{
37
+ response: T;
38
+ signer: Address;
39
+ }>, threshold: number, reencryptKeypair?: XwingKeypair): Promise<{
40
+ reference: T;
41
+ winningResults: Array<{
42
+ response: T;
43
+ signer: Address;
44
+ }>;
45
+ }>;
46
+ type EListResponse = EListAttestedDecryptResponse | EListAttestedRevealResponse;
47
+ /**
48
+ * Validates that all elist responses in a winning bucket have the same
49
+ * number of values and matching indices.
50
+ */
51
+ export declare function validateEListResponseStructure<T extends EListResponse>(bucket: Array<{
52
+ response: T;
53
+ signer: Address;
54
+ }>): void;
55
+ /**
56
+ * Verifies elist response consistency using hash-bucket voting.
57
+ * Works for both EListAttestedDecryptResponse and EListAttestedRevealResponse.
58
+ */
59
+ export declare function verifyEListResponseConsistency<T extends EListResponse>(allResults: Array<{
60
+ response: T;
61
+ signer: Address;
62
+ }>, threshold: number, reencryptKeypair?: XwingKeypair): Promise<{
63
+ reference: T;
64
+ winningResults: Array<{
65
+ response: T;
66
+ signer: Address;
67
+ }>;
68
+ }>;
69
+ /**
70
+ * Verifies compute response consistency using hash-bucket voting.
71
+ */
72
+ export declare function verifyComputeResponseConsistency(allResults: Array<{
73
+ response: AttestedComputeResponse;
74
+ signer: Address;
75
+ }>, threshold: number, request?: AttestedComputeRequest, reencryptKeypair?: XwingKeypair): Promise<{
76
+ reference: AttestedComputeResponse;
77
+ winningResults: Array<{
78
+ response: AttestedComputeResponse;
79
+ signer: Address;
80
+ }>;
81
+ }>;
82
+ export {};
@@ -0,0 +1,35 @@
1
+ import type { Address } from 'viem';
2
+ import { ViemClient } from '../viem.js';
3
+ /**
4
+ * Verifies covalidator signatures for a plaintext DecryptionAttestation
5
+ * by calling `isValidDecryptionAttestation` on the IncoVerifier contract.
6
+ *
7
+ * This delegates all verification logic (EIP-712 digest computation,
8
+ * ECDSA recovery, signer authorization, threshold check) to the contract,
9
+ * ensuring exact parity with on-chain verification.
10
+ *
11
+ * @param handle - The handle hex string (bytes32)
12
+ * @param rawValueBytes - The raw plaintext value bytes (will be left-padded to 32 bytes)
13
+ * @param signatures - The covalidator ECDSA signatures to verify
14
+ * @param executorAddress - The Lightning contract address (executor)
15
+ * @param client - A viem client capable of reading contract state
16
+ * @throws If the contract returns false (insufficient valid signatures)
17
+ */
18
+ export declare function verifyPlaintextAttestationSignatures(handle: string, rawValueBytes: Uint8Array, signatures: Uint8Array[], executorAddress: Address, client: ViemClient): Promise<void>;
19
+ /**
20
+ * Verifies covalidator envelope signatures for reencryption attestations
21
+ * by calling `isValidReencryptionAttestation` on the IncoVerifier contract.
22
+ *
23
+ * Each covalidator signs over its own unique (userCiphertext, handle, encryptedSignature)
24
+ * tuple, so all three per-covalidator arrays must be aligned by index and sorted
25
+ * by signer address in ascending order.
26
+ *
27
+ * @param handle - The handle hex string (bytes32)
28
+ * @param userCiphertexts - Per-covalidator ciphertexts (sorted by signer address)
29
+ * @param encryptedSignatures - Per-covalidator encrypted inner signatures (sorted by signer address)
30
+ * @param envelopeSignatures - Per-covalidator envelope signatures (sorted by signer address)
31
+ * @param executorAddress - The Lightning contract address (executor)
32
+ * @param client - A viem client capable of reading contract state
33
+ * @throws If the contract returns false (insufficient valid signatures)
34
+ */
35
+ export declare function verifyReencryptionAttestationSignatures(handle: string, userCiphertexts: Uint8Array[], encryptedSignatures: Uint8Array[], envelopeSignatures: Uint8Array[], executorAddress: Address, client: ViemClient): Promise<void>;