@maci-protocol/coordinator 0.0.0-ci.00107eb

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 (345) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/LICENSE +21 -0
  3. package/README.md +103 -0
  4. package/build/hardhat.config.cjs +39 -0
  5. package/build/hardhat.config.cjs.map +1 -0
  6. package/build/hardhat.config.d.cts +27 -0
  7. package/build/hardhat.config.d.cts.map +1 -0
  8. package/build/scripts/generateKeypair.d.ts +2 -0
  9. package/build/scripts/generateKeypair.d.ts.map +1 -0
  10. package/build/scripts/generateKeypair.js +25 -0
  11. package/build/scripts/generateKeypair.js.map +1 -0
  12. package/build/scripts/generateMaciKeyPair.d.ts +2 -0
  13. package/build/scripts/generateMaciKeyPair.d.ts.map +1 -0
  14. package/build/scripts/generateMaciKeyPair.js +3 -0
  15. package/build/scripts/generateMaciKeyPair.js.map +1 -0
  16. package/build/scripts/getAuthHeader.d.ts +2 -0
  17. package/build/scripts/getAuthHeader.d.ts.map +1 -0
  18. package/build/scripts/getAuthHeader.js +31 -0
  19. package/build/scripts/getAuthHeader.js.map +1 -0
  20. package/build/tests/constants.d.ts +7 -0
  21. package/build/tests/constants.d.ts.map +1 -0
  22. package/build/tests/constants.js +11 -0
  23. package/build/tests/constants.js.map +1 -0
  24. package/build/tests/e2e.deploy.test.d.ts +2 -0
  25. package/build/tests/e2e.deploy.test.d.ts.map +1 -0
  26. package/build/tests/e2e.deploy.test.js +264 -0
  27. package/build/tests/e2e.deploy.test.js.map +1 -0
  28. package/build/tests/e2e.redis.test.d.ts +2 -0
  29. package/build/tests/e2e.redis.test.d.ts.map +1 -0
  30. package/build/tests/e2e.redis.test.js +118 -0
  31. package/build/tests/e2e.redis.test.js.map +1 -0
  32. package/build/tests/utils.d.ts +20 -0
  33. package/build/tests/utils.d.ts.map +1 -0
  34. package/build/tests/utils.js +55 -0
  35. package/build/tests/utils.js.map +1 -0
  36. package/build/ts/app.module.d.ts +3 -0
  37. package/build/ts/app.module.d.ts.map +1 -0
  38. package/build/ts/app.module.js +42 -0
  39. package/build/ts/app.module.js.map +1 -0
  40. package/build/ts/auth/AccountSignatureGuard.service.d.ts +44 -0
  41. package/build/ts/auth/AccountSignatureGuard.service.d.ts.map +1 -0
  42. package/build/ts/auth/AccountSignatureGuard.service.js +96 -0
  43. package/build/ts/auth/AccountSignatureGuard.service.js.map +1 -0
  44. package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts +2 -0
  45. package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts.map +1 -0
  46. package/build/ts/auth/__tests__/AccountSignatureGuard.test.js +113 -0
  47. package/build/ts/auth/__tests__/AccountSignatureGuard.test.js.map +1 -0
  48. package/build/ts/common/__tests__/common.test.d.ts +2 -0
  49. package/build/ts/common/__tests__/common.test.d.ts.map +1 -0
  50. package/build/ts/common/__tests__/common.test.js +77 -0
  51. package/build/ts/common/__tests__/common.test.js.map +1 -0
  52. package/build/ts/common/accountAbstraction.d.ts +38 -0
  53. package/build/ts/common/accountAbstraction.d.ts.map +1 -0
  54. package/build/ts/common/accountAbstraction.js +83 -0
  55. package/build/ts/common/accountAbstraction.js.map +1 -0
  56. package/build/ts/common/chain.d.ts +22 -0
  57. package/build/ts/common/chain.d.ts.map +1 -0
  58. package/build/ts/common/chain.js +37 -0
  59. package/build/ts/common/chain.js.map +1 -0
  60. package/build/ts/common/coordinatorKeypair.d.ts +7 -0
  61. package/build/ts/common/coordinatorKeypair.d.ts.map +1 -0
  62. package/build/ts/common/coordinatorKeypair.js +14 -0
  63. package/build/ts/common/coordinatorKeypair.js.map +1 -0
  64. package/build/ts/common/errors.d.ts +36 -0
  65. package/build/ts/common/errors.d.ts.map +1 -0
  66. package/build/ts/common/errors.js +37 -0
  67. package/build/ts/common/errors.js.map +1 -0
  68. package/build/ts/common/http.d.ts +6 -0
  69. package/build/ts/common/http.d.ts.map +1 -0
  70. package/build/ts/common/http.js +49 -0
  71. package/build/ts/common/http.js.map +1 -0
  72. package/build/ts/common/index.d.ts +6 -0
  73. package/build/ts/common/index.d.ts.map +1 -0
  74. package/build/ts/common/index.js +6 -0
  75. package/build/ts/common/index.js.map +1 -0
  76. package/build/ts/common/networks.d.ts +10 -0
  77. package/build/ts/common/networks.d.ts.map +1 -0
  78. package/build/ts/common/networks.js +61 -0
  79. package/build/ts/common/networks.js.map +1 -0
  80. package/build/ts/common/types.d.ts +8 -0
  81. package/build/ts/common/types.d.ts.map +1 -0
  82. package/build/ts/common/types.js +2 -0
  83. package/build/ts/common/types.js.map +1 -0
  84. package/build/ts/crypto/__tests__/crypto.service.test.d.ts +2 -0
  85. package/build/ts/crypto/__tests__/crypto.service.test.d.ts.map +1 -0
  86. package/build/ts/crypto/__tests__/crypto.service.test.js +26 -0
  87. package/build/ts/crypto/__tests__/crypto.service.test.js.map +1 -0
  88. package/build/ts/crypto/crypto.module.d.ts +3 -0
  89. package/build/ts/crypto/crypto.module.d.ts.map +1 -0
  90. package/build/ts/crypto/crypto.module.js +18 -0
  91. package/build/ts/crypto/crypto.module.js.map +1 -0
  92. package/build/ts/crypto/crypto.service.d.ts +31 -0
  93. package/build/ts/crypto/crypto.service.d.ts.map +1 -0
  94. package/build/ts/crypto/crypto.service.js +68 -0
  95. package/build/ts/crypto/crypto.service.js.map +1 -0
  96. package/build/ts/deployer/__tests__/deployer.controller.test.d.ts +2 -0
  97. package/build/ts/deployer/__tests__/deployer.controller.test.d.ts.map +1 -0
  98. package/build/ts/deployer/__tests__/deployer.controller.test.js +82 -0
  99. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -0
  100. package/build/ts/deployer/__tests__/deployer.service.test.d.ts +2 -0
  101. package/build/ts/deployer/__tests__/deployer.service.test.d.ts.map +1 -0
  102. package/build/ts/deployer/__tests__/deployer.service.test.js +272 -0
  103. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -0
  104. package/build/ts/deployer/__tests__/utils.d.ts +61 -0
  105. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -0
  106. package/build/ts/deployer/__tests__/utils.js +122 -0
  107. package/build/ts/deployer/__tests__/utils.js.map +1 -0
  108. package/build/ts/deployer/constants.d.ts +13 -0
  109. package/build/ts/deployer/constants.d.ts.map +1 -0
  110. package/build/ts/deployer/constants.js +13 -0
  111. package/build/ts/deployer/constants.js.map +1 -0
  112. package/build/ts/deployer/deployer.controller.d.ts +34 -0
  113. package/build/ts/deployer/deployer.controller.d.ts.map +1 -0
  114. package/build/ts/deployer/deployer.controller.js +102 -0
  115. package/build/ts/deployer/deployer.controller.js.map +1 -0
  116. package/build/ts/deployer/deployer.module.d.ts +3 -0
  117. package/build/ts/deployer/deployer.module.d.ts.map +1 -0
  118. package/build/ts/deployer/deployer.module.js +23 -0
  119. package/build/ts/deployer/deployer.module.js.map +1 -0
  120. package/build/ts/deployer/deployer.service.d.ts +85 -0
  121. package/build/ts/deployer/deployer.service.d.ts.map +1 -0
  122. package/build/ts/deployer/deployer.service.js +505 -0
  123. package/build/ts/deployer/deployer.service.js.map +1 -0
  124. package/build/ts/deployer/dto.d.ts +46 -0
  125. package/build/ts/deployer/dto.d.ts.map +1 -0
  126. package/build/ts/deployer/dto.js +125 -0
  127. package/build/ts/deployer/dto.js.map +1 -0
  128. package/build/ts/deployer/types.d.ts +351 -0
  129. package/build/ts/deployer/types.d.ts.map +1 -0
  130. package/build/ts/deployer/types.js +2 -0
  131. package/build/ts/deployer/types.js.map +1 -0
  132. package/build/ts/file/__tests__/file.service.test.d.ts +2 -0
  133. package/build/ts/file/__tests__/file.service.test.d.ts.map +1 -0
  134. package/build/ts/file/__tests__/file.service.test.js +77 -0
  135. package/build/ts/file/__tests__/file.service.test.js.map +1 -0
  136. package/build/ts/file/file.module.d.ts +3 -0
  137. package/build/ts/file/file.module.d.ts.map +1 -0
  138. package/build/ts/file/file.module.js +18 -0
  139. package/build/ts/file/file.module.js.map +1 -0
  140. package/build/ts/file/file.service.d.ts +63 -0
  141. package/build/ts/file/file.service.d.ts.map +1 -0
  142. package/build/ts/file/file.service.js +121 -0
  143. package/build/ts/file/file.service.js.map +1 -0
  144. package/build/ts/file/types.d.ts +36 -0
  145. package/build/ts/file/types.d.ts.map +1 -0
  146. package/build/ts/file/types.js +2 -0
  147. package/build/ts/file/types.js.map +1 -0
  148. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  149. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  150. package/build/ts/health/__tests__/health.controller.test.js +52 -0
  151. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  152. package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
  153. package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
  154. package/build/ts/health/__tests__/health.service.test.js +101 -0
  155. package/build/ts/health/__tests__/health.service.test.js.map +1 -0
  156. package/build/ts/health/health.controller.d.ts +16 -0
  157. package/build/ts/health/health.controller.d.ts.map +1 -0
  158. package/build/ts/health/health.controller.js +43 -0
  159. package/build/ts/health/health.controller.js.map +1 -0
  160. package/build/ts/health/health.module.d.ts +3 -0
  161. package/build/ts/health/health.module.d.ts.map +1 -0
  162. package/build/ts/health/health.module.js +22 -0
  163. package/build/ts/health/health.module.js.map +1 -0
  164. package/build/ts/health/health.service.d.ts +42 -0
  165. package/build/ts/health/health.service.d.ts.map +1 -0
  166. package/build/ts/health/health.service.js +176 -0
  167. package/build/ts/health/health.service.js.map +1 -0
  168. package/build/ts/health/types.d.ts +87 -0
  169. package/build/ts/health/types.d.ts.map +1 -0
  170. package/build/ts/health/types.js +2 -0
  171. package/build/ts/health/types.js.map +1 -0
  172. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
  173. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
  174. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
  175. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
  176. package/build/ts/jest/setup.d.ts +8 -0
  177. package/build/ts/jest/setup.d.ts.map +1 -0
  178. package/build/ts/jest/setup.js +2 -0
  179. package/build/ts/jest/setup.js.map +1 -0
  180. package/build/ts/jest/transform.d.ts +8 -0
  181. package/build/ts/jest/transform.d.ts.map +1 -0
  182. package/build/ts/jest/transform.js +10 -0
  183. package/build/ts/jest/transform.js.map +1 -0
  184. package/build/ts/main.d.ts +2 -0
  185. package/build/ts/main.d.ts.map +1 -0
  186. package/build/ts/main.js +46 -0
  187. package/build/ts/main.js.map +1 -0
  188. package/build/ts/proof/__tests__/proof.controller.test.d.ts +2 -0
  189. package/build/ts/proof/__tests__/proof.controller.test.d.ts.map +1 -0
  190. package/build/ts/proof/__tests__/proof.controller.test.js +90 -0
  191. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -0
  192. package/build/ts/proof/__tests__/proof.gateway.test.d.ts +2 -0
  193. package/build/ts/proof/__tests__/proof.gateway.test.d.ts.map +1 -0
  194. package/build/ts/proof/__tests__/proof.gateway.test.js +63 -0
  195. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -0
  196. package/build/ts/proof/__tests__/proof.service.test.d.ts +2 -0
  197. package/build/ts/proof/__tests__/proof.service.test.d.ts.map +1 -0
  198. package/build/ts/proof/__tests__/proof.service.test.js +84 -0
  199. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -0
  200. package/build/ts/proof/dto.d.ts +70 -0
  201. package/build/ts/proof/dto.d.ts.map +1 -0
  202. package/build/ts/proof/dto.js +261 -0
  203. package/build/ts/proof/dto.js.map +1 -0
  204. package/build/ts/proof/proof.controller.d.ts +47 -0
  205. package/build/ts/proof/proof.controller.d.ts.map +1 -0
  206. package/build/ts/proof/proof.controller.js +158 -0
  207. package/build/ts/proof/proof.controller.js.map +1 -0
  208. package/build/ts/proof/proof.gateway.d.ts +35 -0
  209. package/build/ts/proof/proof.gateway.d.ts.map +1 -0
  210. package/build/ts/proof/proof.gateway.js +93 -0
  211. package/build/ts/proof/proof.gateway.js.map +1 -0
  212. package/build/ts/proof/proof.module.d.ts +3 -0
  213. package/build/ts/proof/proof.module.d.ts.map +1 -0
  214. package/build/ts/proof/proof.module.js +25 -0
  215. package/build/ts/proof/proof.module.js.map +1 -0
  216. package/build/ts/proof/proof.service.d.ts +52 -0
  217. package/build/ts/proof/proof.service.d.ts.map +1 -0
  218. package/build/ts/proof/proof.service.js +164 -0
  219. package/build/ts/proof/proof.service.js.map +1 -0
  220. package/build/ts/proof/types.d.ts +144 -0
  221. package/build/ts/proof/types.d.ts.map +1 -0
  222. package/build/ts/proof/types.js +11 -0
  223. package/build/ts/proof/types.js.map +1 -0
  224. package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
  225. package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
  226. package/build/ts/redis/__tests__/redis.service.test.js +148 -0
  227. package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
  228. package/build/ts/redis/redis.module.d.ts +3 -0
  229. package/build/ts/redis/redis.module.d.ts.map +1 -0
  230. package/build/ts/redis/redis.module.js +18 -0
  231. package/build/ts/redis/redis.module.js.map +1 -0
  232. package/build/ts/redis/redis.service.d.ts +53 -0
  233. package/build/ts/redis/redis.service.d.ts.map +1 -0
  234. package/build/ts/redis/redis.service.js +99 -0
  235. package/build/ts/redis/redis.service.js.map +1 -0
  236. package/build/ts/redis/types.d.ts +66 -0
  237. package/build/ts/redis/types.d.ts.map +1 -0
  238. package/build/ts/redis/types.js +2 -0
  239. package/build/ts/redis/types.js.map +1 -0
  240. package/build/ts/redis/utils.d.ts +20 -0
  241. package/build/ts/redis/utils.d.ts.map +1 -0
  242. package/build/ts/redis/utils.js +27 -0
  243. package/build/ts/redis/utils.js.map +1 -0
  244. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
  245. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
  246. package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
  247. package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
  248. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
  249. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
  250. package/build/ts/scheduler/__tests__/scheduler.service.test.js +369 -0
  251. package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
  252. package/build/ts/scheduler/dto.d.ts +41 -0
  253. package/build/ts/scheduler/dto.d.ts.map +1 -0
  254. package/build/ts/scheduler/dto.js +115 -0
  255. package/build/ts/scheduler/dto.js.map +1 -0
  256. package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
  257. package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
  258. package/build/ts/scheduler/scheduler.controller.js +118 -0
  259. package/build/ts/scheduler/scheduler.controller.js.map +1 -0
  260. package/build/ts/scheduler/scheduler.module.d.ts +3 -0
  261. package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
  262. package/build/ts/scheduler/scheduler.module.js +24 -0
  263. package/build/ts/scheduler/scheduler.module.js.map +1 -0
  264. package/build/ts/scheduler/scheduler.service.d.ts +71 -0
  265. package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
  266. package/build/ts/scheduler/scheduler.service.js +297 -0
  267. package/build/ts/scheduler/scheduler.service.js.map +1 -0
  268. package/build/ts/scheduler/types.d.ts +65 -0
  269. package/build/ts/scheduler/types.d.ts.map +1 -0
  270. package/build/ts/scheduler/types.js +2 -0
  271. package/build/ts/scheduler/types.js.map +1 -0
  272. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts +2 -0
  273. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts.map +1 -0
  274. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +44 -0
  275. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -0
  276. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts +2 -0
  277. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts.map +1 -0
  278. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +76 -0
  279. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -0
  280. package/build/ts/sessionKeys/__tests__/utils.d.ts +25 -0
  281. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -0
  282. package/build/ts/sessionKeys/__tests__/utils.js +65 -0
  283. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -0
  284. package/build/ts/sessionKeys/dto.d.ts +11 -0
  285. package/build/ts/sessionKeys/dto.d.ts.map +1 -0
  286. package/build/ts/sessionKeys/dto.js +29 -0
  287. package/build/ts/sessionKeys/dto.js.map +1 -0
  288. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +53 -0
  289. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -0
  290. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js +105 -0
  291. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js.map +1 -0
  292. package/build/ts/sessionKeys/sessionKeys.controller.d.ts +26 -0
  293. package/build/ts/sessionKeys/sessionKeys.controller.d.ts.map +1 -0
  294. package/build/ts/sessionKeys/sessionKeys.controller.js +74 -0
  295. package/build/ts/sessionKeys/sessionKeys.controller.js.map +1 -0
  296. package/build/ts/sessionKeys/sessionKeys.module.d.ts +3 -0
  297. package/build/ts/sessionKeys/sessionKeys.module.d.ts.map +1 -0
  298. package/build/ts/sessionKeys/sessionKeys.module.js +23 -0
  299. package/build/ts/sessionKeys/sessionKeys.module.js.map +1 -0
  300. package/build/ts/sessionKeys/sessionKeys.service.d.ts +62 -0
  301. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -0
  302. package/build/ts/sessionKeys/sessionKeys.service.js +121 -0
  303. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -0
  304. package/build/ts/sessionKeys/types.d.ts +11 -0
  305. package/build/ts/sessionKeys/types.d.ts.map +1 -0
  306. package/build/ts/sessionKeys/types.js +2 -0
  307. package/build/ts/sessionKeys/types.js.map +1 -0
  308. package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts +2 -0
  309. package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts.map +1 -0
  310. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +50 -0
  311. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -0
  312. package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts +2 -0
  313. package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts.map +1 -0
  314. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +83 -0
  315. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -0
  316. package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts +2 -0
  317. package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts.map +1 -0
  318. package/build/ts/subgraph/__tests__/subgraph.service.test.js +58 -0
  319. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -0
  320. package/build/ts/subgraph/dto.d.ts +27 -0
  321. package/build/ts/subgraph/dto.d.ts.map +1 -0
  322. package/build/ts/subgraph/dto.js +83 -0
  323. package/build/ts/subgraph/dto.js.map +1 -0
  324. package/build/ts/subgraph/subgraph.controller.d.ts +24 -0
  325. package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -0
  326. package/build/ts/subgraph/subgraph.controller.js +71 -0
  327. package/build/ts/subgraph/subgraph.controller.js.map +1 -0
  328. package/build/ts/subgraph/subgraph.gateway.d.ts +35 -0
  329. package/build/ts/subgraph/subgraph.gateway.d.ts.map +1 -0
  330. package/build/ts/subgraph/subgraph.gateway.js +93 -0
  331. package/build/ts/subgraph/subgraph.gateway.js.map +1 -0
  332. package/build/ts/subgraph/subgraph.module.d.ts +3 -0
  333. package/build/ts/subgraph/subgraph.module.d.ts.map +1 -0
  334. package/build/ts/subgraph/subgraph.module.js +23 -0
  335. package/build/ts/subgraph/subgraph.module.js.map +1 -0
  336. package/build/ts/subgraph/subgraph.service.d.ts +24 -0
  337. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -0
  338. package/build/ts/subgraph/subgraph.service.js +119 -0
  339. package/build/ts/subgraph/subgraph.service.js.map +1 -0
  340. package/build/ts/subgraph/types.d.ts +93 -0
  341. package/build/ts/subgraph/types.d.ts.map +1 -0
  342. package/build/ts/subgraph/types.js +24 -0
  343. package/build/ts/subgraph/types.js.map +1 -0
  344. package/build/tsconfig.build.tsbuildinfo +1 -0
  345. package/package.json +131 -0
@@ -0,0 +1,96 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var AccountSignatureGuard_1;
11
+ import { Logger, Injectable, SetMetadata, } from "@nestjs/common";
12
+ import { Reflector } from "@nestjs/core";
13
+ import { ethers } from "ethers";
14
+ import fs from "fs";
15
+ import path from "path";
16
+ import { CryptoService } from "../crypto/crypto.service";
17
+ /**
18
+ * Public metadata key
19
+ */
20
+ export const PUBLIC_METADATA_KEY = "isPublic";
21
+ /**
22
+ * Public decorator to by-pass auth checks
23
+ *
24
+ * @returns public decorator
25
+ */
26
+ export const Public = () => SetMetadata(PUBLIC_METADATA_KEY, true);
27
+ /**
28
+ * AccountSignatureGuard is responsible for protecting calling controller and websocket gateway functions.
29
+ * If account address is not added to .env file, you will not be allowed to call any API methods.
30
+ * Make sure you send `Authorization: Bearer encrypt({signature}:{digest})` header where:
31
+ * 1. encrypt - RSA public encryption.
32
+ * 2. signature - eth wallet signature for any message
33
+ * 3. digest - hex representation of message digest
34
+ *
35
+ * ```
36
+ * const signature = await signer.signMessage("message");
37
+ * const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
38
+ * ```
39
+ * See tests for more details about authorization.
40
+ */
41
+ let AccountSignatureGuard = AccountSignatureGuard_1 = class AccountSignatureGuard {
42
+ cryptoService;
43
+ reflector;
44
+ /**
45
+ * Logger
46
+ */
47
+ logger;
48
+ constructor(cryptoService, reflector) {
49
+ this.cryptoService = cryptoService;
50
+ this.reflector = reflector;
51
+ this.logger = new Logger(AccountSignatureGuard_1.name);
52
+ }
53
+ /**
54
+ * This function should return a boolean, indicating whether the request is allowed or not based on message signature and digest.
55
+ *
56
+ * @param ctx - execution context
57
+ * @returns whether the request is allowed or not
58
+ */
59
+ async canActivate(ctx) {
60
+ try {
61
+ const isPublic = this.reflector.get(PUBLIC_METADATA_KEY, ctx.getHandler());
62
+ if (isPublic) {
63
+ return true;
64
+ }
65
+ const request = ctx.switchToHttp().getRequest();
66
+ const socket = ctx.switchToWs().getClient();
67
+ const encryptedHeader = socket.handshake?.headers.authorization || request.headers?.authorization;
68
+ if (!encryptedHeader) {
69
+ this.logger.warn("No authorization header");
70
+ return false;
71
+ }
72
+ const privateKey = await fs.promises.readFile(path.resolve(process.env.COORDINATOR_PRIVATE_KEY_PATH));
73
+ const [signature, digest] = this.cryptoService
74
+ .decrypt(privateKey, encryptedHeader.replace("Bearer", "").trim())
75
+ .split(":");
76
+ if (!signature || !digest) {
77
+ this.logger.warn("No signature or digest");
78
+ return false;
79
+ }
80
+ const address = ethers.recoverAddress(Buffer.from(digest, "hex"), signature).toLowerCase();
81
+ const coordinatorAddress = process.env.COORDINATOR_ADDRESSES?.split(",").map((value) => value.toLowerCase()) ?? [];
82
+ return coordinatorAddress.includes(address);
83
+ }
84
+ catch (error) {
85
+ this.logger.error("Error", error);
86
+ return false;
87
+ }
88
+ }
89
+ };
90
+ AccountSignatureGuard = AccountSignatureGuard_1 = __decorate([
91
+ Injectable(),
92
+ __metadata("design:paramtypes", [CryptoService,
93
+ Reflector])
94
+ ], AccountSignatureGuard);
95
+ export { AccountSignatureGuard };
96
+ //# sourceMappingURL=AccountSignatureGuard.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountSignatureGuard.service.js","sourceRoot":"","sources":["../../../ts/auth/AccountSignatureGuard.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AccountSignatureGuard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountSignatureGuard.test.d.ts","sourceRoot":"","sources":["../../../../ts/auth/__tests__/AccountSignatureGuard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import dotenv from "dotenv";
2
+ import { getBytes, hashMessage } from "ethers";
3
+ import hardhat from "hardhat";
4
+ import { AccountSignatureGuard, PUBLIC_METADATA_KEY, Public } from "../AccountSignatureGuard.service";
5
+ dotenv.config();
6
+ jest.mock("../../crypto/crypto.service", () => ({
7
+ CryptoService: {
8
+ getInstance: jest.fn(),
9
+ },
10
+ }));
11
+ describe("AccountSignatureGuard", () => {
12
+ const mockRequest = {
13
+ headers: { authorization: "data" },
14
+ };
15
+ const mockContext = {
16
+ getHandler: jest.fn(),
17
+ switchToHttp: jest.fn().mockReturnValue({
18
+ getRequest: jest.fn(() => mockRequest),
19
+ }),
20
+ switchToWs: jest.fn().mockReturnValue({
21
+ getClient: jest.fn(() => ({ handshake: mockRequest })),
22
+ }),
23
+ };
24
+ const mockSignature = "0xc0436b6fbd5ff883fe88367f081d0780706b5c29fbfde8db2c1d607510f9095a73b3bc9b94a1588d561eaf49d195b134e3f92c36449c017ecf92c5e4d84a32131c";
25
+ const mockDigest = "7f6c0e5c497ded52462ec18daeb1c94cefa11cd6949ebdb7074b2a32cac13fba";
26
+ const mockCryptoService = {
27
+ decrypt: jest.fn(),
28
+ };
29
+ const reflector = {
30
+ get: jest.fn(),
31
+ };
32
+ beforeEach(() => {
33
+ mockCryptoService.decrypt = jest.fn(() => `${mockSignature}:${mockDigest}`);
34
+ reflector.get.mockReturnValue(false);
35
+ });
36
+ afterEach(() => {
37
+ jest.clearAllMocks();
38
+ });
39
+ test("should create public decorator properly", () => {
40
+ const decorator = Public();
41
+ expect(decorator.KEY).toBe(PUBLIC_METADATA_KEY);
42
+ });
43
+ test("should return false if there is no Authorization header", async () => {
44
+ const ctx = {
45
+ getHandler: jest.fn(),
46
+ switchToHttp: jest.fn().mockReturnValue({
47
+ getRequest: jest.fn(() => ({
48
+ headers: { authorization: "" },
49
+ })),
50
+ }),
51
+ switchToWs: jest.fn().mockReturnValue({
52
+ getClient: jest.fn(() => ({ handshake: { headers: { authorization: "" } } })),
53
+ }),
54
+ };
55
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
56
+ const result = await guard.canActivate(ctx);
57
+ expect(result).toBe(false);
58
+ });
59
+ test("should return false if there is no signature", async () => {
60
+ mockCryptoService.decrypt.mockReturnValue(`:${mockDigest}`);
61
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
62
+ const result = await guard.canActivate(mockContext);
63
+ expect(result).toBe(false);
64
+ });
65
+ test("should return false if there is no digest", async () => {
66
+ mockCryptoService.decrypt.mockReturnValue(mockSignature);
67
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
68
+ const result = await guard.canActivate(mockContext);
69
+ expect(result).toBe(false);
70
+ });
71
+ test("should return false if signature or digest are invalid", async () => {
72
+ mockCryptoService.decrypt.mockReturnValue(`signature:digest`);
73
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
74
+ const result = await guard.canActivate(mockContext);
75
+ expect(result).toBe(false);
76
+ });
77
+ test("should return false if signer is different", async () => {
78
+ const [, signer] = await hardhat.ethers.getSigners();
79
+ const signature = await signer.signMessage("message");
80
+ const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
81
+ mockCryptoService.decrypt.mockReturnValue(`${signature}:${digest}`);
82
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
83
+ const result = await guard.canActivate(mockContext);
84
+ expect(result).toBe(false);
85
+ });
86
+ test("should return true if authorization is passed properly", async () => {
87
+ const [signer] = await hardhat.ethers.getSigners();
88
+ process.env.COORDINATOR_ADDRESSES = await signer.getAddress();
89
+ const signature = await signer.signMessage("message");
90
+ const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
91
+ mockCryptoService.decrypt.mockReturnValue(`${signature}:${digest}`);
92
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
93
+ const result = await guard.canActivate(mockContext);
94
+ expect(result).toBe(true);
95
+ });
96
+ test("should return false if there is no COORDINATOR_ADDRESSES env", async () => {
97
+ const [signer] = await hardhat.ethers.getSigners();
98
+ process.env.COORDINATOR_ADDRESSES = undefined;
99
+ const signature = await signer.signMessage("message");
100
+ const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
101
+ mockCryptoService.decrypt.mockReturnValue(`${signature}:${digest}`);
102
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
103
+ const result = await guard.canActivate(mockContext);
104
+ expect(result).toBe(false);
105
+ });
106
+ test("should return true if can skip authorization", async () => {
107
+ reflector.get.mockReturnValue(true);
108
+ const guard = new AccountSignatureGuard(mockCryptoService, reflector);
109
+ const result = await guard.canActivate(mockContext);
110
+ expect(result).toBe(true);
111
+ });
112
+ });
113
+ //# sourceMappingURL=AccountSignatureGuard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountSignatureGuard.test.js","sourceRoot":"","sources":["../../../../ts/auth/__tests__/AccountSignatureGuard.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.test.d.ts","sourceRoot":"","sources":["../../../../ts/common/__tests__/common.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { mainnet, sepolia, arbitrum, localhost, arbitrumSepolia, baseSepolia, lineaSepolia, scrollSepolia, scroll, base, linea, gnosis, polygon, optimism, optimismSepolia, hardhat, polygonAmoy, polygonZkEvm, polygonZkEvmCardona, zksyncSepoliaTestnet, zksync, gnosisChiado, } from "viem/chains";
3
+ import { getBundlerClient, getPublicClient, getZeroDevBundlerRPCUrl } from "../accountAbstraction";
4
+ import { getRpcUrl } from "../chain";
5
+ import { ErrorCodes } from "../errors";
6
+ import { viemChain } from "../networks";
7
+ describe("common", () => {
8
+ describe("getPublicClient", () => {
9
+ test("should return a public client", async () => {
10
+ const publicClient = await getPublicClient(ESupportedChains.Sepolia);
11
+ expect(publicClient).toBeDefined();
12
+ });
13
+ test("should throw when given an unsupported network", async () => {
14
+ await expect(() => getPublicClient("Unsupported")).rejects.toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
15
+ });
16
+ });
17
+ describe("getZeroDevBundlerRPCUrl", () => {
18
+ test("should throw when the network is not supported", () => {
19
+ expect(() => getZeroDevBundlerRPCUrl("Unsupported")).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
20
+ });
21
+ test("should return an RPCUrl for a supported network", () => {
22
+ const rpcUrlOPS = getZeroDevBundlerRPCUrl(ESupportedChains.OptimismSepolia);
23
+ expect(rpcUrlOPS).toBeDefined();
24
+ const rpcUrlSepolia = getZeroDevBundlerRPCUrl(ESupportedChains.Sepolia);
25
+ expect(rpcUrlSepolia).toBeDefined();
26
+ const rpcUrlOP = getZeroDevBundlerRPCUrl(ESupportedChains.Optimism);
27
+ expect(rpcUrlOP).toBeDefined();
28
+ });
29
+ test("should throw when a unsupported zero dev network is given", () => {
30
+ expect(() => getZeroDevBundlerRPCUrl(ESupportedChains.Base)).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
31
+ });
32
+ });
33
+ describe("getBundlerClient", () => {
34
+ test("should throw when the network is not supported", () => {
35
+ expect(() => getBundlerClient("Unsupported")).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
36
+ });
37
+ });
38
+ describe("getRpcUrl", () => {
39
+ test("should throw when given an unsupported network", async () => {
40
+ await expect(() => getRpcUrl("Unsupported")).rejects.toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
41
+ });
42
+ test("should throw when COORDINATOR_RPC_URL is not set", async () => {
43
+ delete process.env.COORDINATOR_RPC_URL;
44
+ await expect(() => getRpcUrl(ESupportedChains.OptimismSepolia)).rejects.toThrow(ErrorCodes.COORDINATOR_RPC_URL_NOT_SET.toString());
45
+ });
46
+ });
47
+ describe("viemChain", () => {
48
+ test("should return correct chain for all supported networks", () => {
49
+ expect(viemChain(ESupportedChains.Mainnet)).toBe(mainnet);
50
+ expect(viemChain(ESupportedChains.Sepolia)).toBe(sepolia);
51
+ expect(viemChain(ESupportedChains.Optimism)).toBe(optimism);
52
+ expect(viemChain(ESupportedChains.OptimismSepolia)).toBe(optimismSepolia);
53
+ expect(viemChain(ESupportedChains.Scroll)).toBe(scroll);
54
+ expect(viemChain(ESupportedChains.ScrollSepolia)).toBe(scrollSepolia);
55
+ expect(viemChain(ESupportedChains.Arbitrum)).toBe(arbitrum);
56
+ expect(viemChain(ESupportedChains.ArbitrumSepolia)).toBe(arbitrumSepolia);
57
+ expect(viemChain(ESupportedChains.Base)).toBe(base);
58
+ expect(viemChain(ESupportedChains.BaseSepolia)).toBe(baseSepolia);
59
+ expect(viemChain(ESupportedChains.Gnosis)).toBe(gnosis);
60
+ expect(viemChain(ESupportedChains.GnosisChiado)).toBe(gnosisChiado);
61
+ expect(viemChain(ESupportedChains.Polygon)).toBe(polygon);
62
+ expect(viemChain(ESupportedChains.PolygonAmoy)).toBe(polygonAmoy);
63
+ expect(viemChain(ESupportedChains.Linea)).toBe(linea);
64
+ expect(viemChain(ESupportedChains.LineaSepolia)).toBe(lineaSepolia);
65
+ expect(viemChain(ESupportedChains.ZkSyncEra)).toBe(zksync);
66
+ expect(viemChain(ESupportedChains.ZkSyncSepolia)).toBe(zksyncSepoliaTestnet);
67
+ expect(viemChain(ESupportedChains.PolygonZkEvm)).toBe(polygonZkEvm);
68
+ expect(viemChain(ESupportedChains.PolygonCardonaZkEvm)).toBe(polygonZkEvmCardona);
69
+ expect(viemChain(ESupportedChains.Hardhat)).toBe(hardhat);
70
+ expect(viemChain(ESupportedChains.Localhost)).toBe(localhost);
71
+ });
72
+ test("should throw error for unsupported network", () => {
73
+ expect(() => viemChain("UNSUPPORTED_NETWORK")).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
74
+ });
75
+ });
76
+ });
77
+ //# sourceMappingURL=common.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../../ts/common/__tests__/common.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { type Hex } from "viem";
3
+ import type { BundlerClientType, KernelClientType, PublicClientHTTPType } from "./types";
4
+ /**
5
+ * Get a public client
6
+ *
7
+ * @param chainName - the name of the chain to use
8
+ * @returns the public client
9
+ */
10
+ export declare const getPublicClient: (chainName: ESupportedChains) => Promise<PublicClientHTTPType>;
11
+ /**
12
+ * Get the ZeroDev bundler RPC URL based on the network
13
+ *
14
+ * @param network - the network we are on
15
+ * @returns the ZeroDev bundler RPC URL
16
+ */
17
+ export declare const getZeroDevBundlerRPCUrl: (network: ESupportedChains) => string;
18
+ /**
19
+ * Get a bundler client
20
+ *
21
+ * @param chainName - the chain name
22
+ * @returns the bundler client
23
+ */
24
+ export declare const getBundlerClient: (chainName: ESupportedChains) => BundlerClientType;
25
+ /**
26
+ * The offset for the address in the contract creation event
27
+ */
28
+ export declare const addressOffset = 26;
29
+ /**
30
+ * Get a Kernel account handle given a session key
31
+ *
32
+ * @param sessionKey - the session key to use
33
+ * @param approval - the approval to the session key
34
+ * @param chain - the chain to use
35
+ * @returns the kernel client
36
+ */
37
+ export declare const getKernelClient: (sessionKey: Hex, approval: string, chain: ESupportedChains) => Promise<KernelClientType>;
38
+ //# sourceMappingURL=accountAbstraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountAbstraction.d.ts","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,OAAO,EAA4B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAI1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQzF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,WAAW,gBAAgB,KAAG,OAAO,CAAC,oBAAoB,CAI5F,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,gBAAgB,KAAG,MAWnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,gBAAgB,KAAG,iBAI3D,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,YAAY,GAAG,EACf,UAAU,MAAM,EAChB,OAAO,gBAAgB,KACtB,OAAO,CAAC,gBAAgB,CA0B1B,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { deserializePermissionAccount } from "@zerodev/permissions";
3
+ import { toECDSASigner } from "@zerodev/permissions/signers";
4
+ import { createKernelAccountClient } from "@zerodev/sdk";
5
+ import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants";
6
+ import dotenv from "dotenv";
7
+ import { createPublicClient, http } from "viem";
8
+ import { createBundlerClient } from "viem/account-abstraction";
9
+ import { privateKeyToAccount } from "viem/accounts";
10
+ import { getRpcUrl } from "./chain";
11
+ import { ErrorCodes } from "./errors";
12
+ import { viemChain } from "./networks";
13
+ dotenv.config();
14
+ /**
15
+ * Get a public client
16
+ *
17
+ * @param chainName - the name of the chain to use
18
+ * @returns the public client
19
+ */
20
+ export const getPublicClient = async (chainName) => createPublicClient({
21
+ transport: http(await getRpcUrl(chainName)),
22
+ chain: viemChain(chainName),
23
+ });
24
+ /**
25
+ * Get the ZeroDev bundler RPC URL based on the network
26
+ *
27
+ * @param network - the network we are on
28
+ * @returns the ZeroDev bundler RPC URL
29
+ */
30
+ export const getZeroDevBundlerRPCUrl = (network) => {
31
+ switch (network) {
32
+ case ESupportedChains.OptimismSepolia:
33
+ return process.env.ZERODEV_BUNDLER_RPC_OP_SEPOLIA || "";
34
+ case ESupportedChains.Optimism:
35
+ return process.env.ZERODEV_BUNDLER_RPC_OP || "";
36
+ case ESupportedChains.Sepolia:
37
+ return process.env.ZERODEV_BUNDLER_RPC_SEPOLIA || "";
38
+ default:
39
+ throw new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString());
40
+ }
41
+ };
42
+ /**
43
+ * Get a bundler client
44
+ *
45
+ * @param chainName - the chain name
46
+ * @returns the bundler client
47
+ */
48
+ export const getBundlerClient = (chainName) => createBundlerClient({
49
+ transport: http(getZeroDevBundlerRPCUrl(chainName)),
50
+ chain: viemChain(chainName),
51
+ });
52
+ /**
53
+ * The offset for the address in the contract creation event
54
+ */
55
+ export const addressOffset = 26;
56
+ /**
57
+ * Get a Kernel account handle given a session key
58
+ *
59
+ * @param sessionKey - the session key to use
60
+ * @param approval - the approval to the session key
61
+ * @param chain - the chain to use
62
+ * @returns the kernel client
63
+ */
64
+ export const getKernelClient = async (sessionKey, approval, chain) => {
65
+ const bundlerUrl = getZeroDevBundlerRPCUrl(chain);
66
+ const publicClient = await getPublicClient(chain);
67
+ // Using a stored private key
68
+ const sessionKeySigner = await toECDSASigner({
69
+ signer: privateKeyToAccount(sessionKey),
70
+ });
71
+ try {
72
+ const sessionKeyAccount = await deserializePermissionAccount(publicClient, getEntryPoint("0.7"), KERNEL_V3_1, approval, sessionKeySigner);
73
+ return createKernelAccountClient({
74
+ bundlerTransport: http(bundlerUrl),
75
+ account: sessionKeyAccount,
76
+ chain: viemChain(chain),
77
+ });
78
+ }
79
+ catch (error) {
80
+ throw new Error(ErrorCodes.INVALID_APPROVAL.toString());
81
+ }
82
+ };
83
+ //# sourceMappingURL=accountAbstraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountAbstraction.js","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { type HDNodeWallet, type Signer, Wallet } from "ethers";
3
+ /**
4
+ * Get the RPC url for the chain we need to interact with
5
+ *
6
+ * @param network - the network we want to interact with
7
+ * @returns the RPC url for the network
8
+ */
9
+ export declare const getRpcUrl: (network: ESupportedChains) => Promise<string>;
10
+ /**
11
+ * Get wallet from private key or mnemonic env variable
12
+ *
13
+ * @returns wallet
14
+ */
15
+ export declare const getWallet: () => Wallet | HDNodeWallet;
16
+ /**
17
+ * Get a Ethers Signer given a chain and private key
18
+ * @param chain
19
+ * @returns
20
+ */
21
+ export declare const getSigner: (chain: ESupportedChains) => Promise<Signer>;
22
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../ts/common/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIjF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,SAAS,gBAAgB,KAAG,OAAO,CAAC,MAAM,CAYzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,QAAO,MAAM,GAAG,YACoE,CAAC;AAE3G;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAU,OAAO,gBAAgB,KAAG,OAAO,CAAC,MAAM,CAOvE,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { JsonRpcProvider, Wallet } from "ethers";
3
+ import { ErrorCodes } from "./errors";
4
+ /**
5
+ * Get the RPC url for the chain we need to interact with
6
+ *
7
+ * @param network - the network we want to interact with
8
+ * @returns the RPC url for the network
9
+ */
10
+ export const getRpcUrl = async (network) => {
11
+ const rpcUrl = process.env.COORDINATOR_RPC_URL;
12
+ if (!rpcUrl) {
13
+ return Promise.reject(new Error(ErrorCodes.COORDINATOR_RPC_URL_NOT_SET.toString()));
14
+ }
15
+ if (!Object.values(ESupportedChains).includes(network)) {
16
+ return Promise.reject(new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString()));
17
+ }
18
+ return Promise.resolve(rpcUrl);
19
+ };
20
+ /**
21
+ * Get wallet from private key or mnemonic env variable
22
+ *
23
+ * @returns wallet
24
+ */
25
+ export const getWallet = () => process.env.PRIVATE_KEY ? new Wallet(process.env.PRIVATE_KEY) : Wallet.fromPhrase(process.env.MNEMONIC);
26
+ /**
27
+ * Get a Ethers Signer given a chain and private key
28
+ * @param chain
29
+ * @returns
30
+ */
31
+ export const getSigner = async (chain) => {
32
+ const wallet = getWallet();
33
+ const alchemyRpcUrl = await getRpcUrl(chain);
34
+ const provider = new JsonRpcProvider(alchemyRpcUrl);
35
+ return wallet.connect(provider);
36
+ };
37
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../ts/common/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAkC,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAAyB,EAAmB,EAAE;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAA0B,EAAE,CACnD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;AAE3G;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,KAAuB,EAAmB,EAAE;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Keypair } from "@maci-protocol/domainobjs";
2
+ /**
3
+ * Instantiate the MACI Coordinator keypair.
4
+ * @returns {Keypair} - The MACI Coordinator keypair.
5
+ */
6
+ export declare const getCoordinatorKeypair: () => Keypair;
7
+ //# sourceMappingURL=coordinatorKeypair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinatorKeypair.d.ts","sourceRoot":"","sources":["../../../ts/common/coordinatorKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,OAUxC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Keypair, PrivateKey } from "@maci-protocol/domainobjs";
2
+ /**
3
+ * Instantiate the MACI Coordinator keypair.
4
+ * @returns {Keypair} - The MACI Coordinator keypair.
5
+ */
6
+ export const getCoordinatorKeypair = () => {
7
+ const privateKey = String(process.env.COORDINATOR_MACI_PRIVATE_KEY);
8
+ if (!privateKey) {
9
+ throw new Error("COORDINATOR_MACI_PRIVATE_KEY environment variable is not set.");
10
+ }
11
+ const maciPrivateKey = PrivateKey.deserialize(privateKey);
12
+ return new Keypair(maciPrivateKey);
13
+ };
14
+ //# sourceMappingURL=coordinatorKeypair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinatorKeypair.js","sourceRoot":"","sources":["../../../ts/common/coordinatorKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAY,EAAE;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE1D,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Error codes that are used for api responses
3
+ */
4
+ export declare enum ErrorCodes {
5
+ NOT_MERGED_STATE_TREE = 0,
6
+ PRIVATE_KEY_MISMATCH = 1,
7
+ POLL_NOT_FOUND = 2,
8
+ DECRYPTION = 3,
9
+ ENCRYPTION = 4,
10
+ FILE_NOT_FOUND = 5,
11
+ SUBGRAPH_DEPLOY = 6,
12
+ SUBGRAPH_DEPLOY_KEY_NOT_FOUND = 7,
13
+ SESSION_KEY_NOT_FOUND = 8,
14
+ INVALID_APPROVAL = 9,
15
+ UNSUPPORTED_NETWORK = 10,
16
+ COORDINATOR_RPC_URL_NOT_SET = 11,
17
+ FAILED_TO_MERGE_STATE_TREE = 12,
18
+ FAILED_TO_MERGE_MESSAGE_SUBTREES = 13,
19
+ FAILED_TO_MERGE_MESSAGE_TREE = 14,
20
+ UNSUPPORTED_VOICE_CREDIT_PROXY_FACTORY = 15,
21
+ UNSUPPORTED_VOICE_CREDIT_PROXY = 16,
22
+ UNSUPPORTED_POLICY = 17,
23
+ FAILED_TO_DEPLOY_CONTRACT = 18,
24
+ FAILED_TO_SET_MACI_INSTANCE_ON_POLICY = 19,
25
+ MACI_NOT_DEPLOYED = 20,
26
+ VERIFIER_NOT_DEPLOYED = 21,
27
+ VERIFYING_KEYS_REGISTRY_NOT_DEPLOYED = 22,
28
+ FAILED_TO_SET_VERIFYING_KEYS = 23,
29
+ FAILED_TO_DEPLOY_MACI = 24,
30
+ FAILED_TO_DEPLOY_POLL = 25,
31
+ NOT_MERGED_MESSAGE_TREE = 26,
32
+ FAILED_TO_UPDATE_SCHEDULED_POLL = 27,
33
+ POLL_ALREADY_SCHEDULED = 28,
34
+ POLL_ALREADY_TALLIED = 29
35
+ }
36
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../ts/common/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,UAAU;IACpB,qBAAqB,IAAA;IACrB,oBAAoB,IAAA;IACpB,cAAc,IAAA;IACd,UAAU,IAAA;IACV,UAAU,IAAA;IACV,cAAc,IAAA;IACd,eAAe,IAAA;IACf,6BAA6B,IAAA;IAC7B,qBAAqB,IAAA;IACrB,gBAAgB,IAAA;IAChB,mBAAmB,KAAA;IACnB,2BAA2B,KAAA;IAC3B,0BAA0B,KAAA;IAC1B,gCAAgC,KAAA;IAChC,4BAA4B,KAAA;IAC5B,sCAAsC,KAAA;IACtC,8BAA8B,KAAA;IAC9B,kBAAkB,KAAA;IAClB,yBAAyB,KAAA;IACzB,qCAAqC,KAAA;IACrC,iBAAiB,KAAA;IACjB,qBAAqB,KAAA;IACrB,oCAAoC,KAAA;IACpC,4BAA4B,KAAA;IAC5B,qBAAqB,KAAA;IACrB,qBAAqB,KAAA;IACrB,uBAAuB,KAAA;IACvB,+BAA+B,KAAA;IAC/B,sBAAsB,KAAA;IACtB,oBAAoB,KAAA;CACrB"}