@maci-protocol/coordinator 0.0.0-ci.7e1bbc4 → 0.0.0-ci.7faea84

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 (224) hide show
  1. package/README.md +65 -11
  2. package/build/hardhat.config.cjs +14 -9
  3. package/build/hardhat.config.cjs.map +1 -1
  4. package/build/hardhat.config.d.cts +12 -12
  5. package/build/hardhat.config.d.cts.map +1 -1
  6. package/build/scripts/generateKeypair.js +2 -2
  7. package/build/scripts/generateKeypair.js.map +1 -1
  8. package/build/tests/constants.d.ts +3 -3
  9. package/build/tests/constants.d.ts.map +1 -1
  10. package/build/tests/constants.js +5 -3
  11. package/build/tests/constants.js.map +1 -1
  12. package/build/tests/e2e.deploy.test.js +47 -65
  13. package/build/tests/e2e.deploy.test.js.map +1 -1
  14. package/build/tests/e2e.redis.test.d.ts +2 -0
  15. package/build/tests/e2e.redis.test.d.ts.map +1 -0
  16. package/build/tests/e2e.redis.test.js +118 -0
  17. package/build/tests/e2e.redis.test.js.map +1 -0
  18. package/build/tests/utils.d.ts +1 -1
  19. package/build/tests/utils.d.ts.map +1 -1
  20. package/build/tests/utils.js +5 -3
  21. package/build/tests/utils.js.map +1 -1
  22. package/build/ts/app.module.d.ts.map +1 -1
  23. package/build/ts/app.module.js +6 -0
  24. package/build/ts/app.module.js.map +1 -1
  25. package/build/ts/common/__tests__/common.test.js +43 -41
  26. package/build/ts/common/__tests__/common.test.js.map +1 -1
  27. package/build/ts/common/accountAbstraction.d.ts +5 -5
  28. package/build/ts/common/accountAbstraction.d.ts.map +1 -1
  29. package/build/ts/common/accountAbstraction.js +11 -9
  30. package/build/ts/common/accountAbstraction.js.map +1 -1
  31. package/build/ts/common/chain.d.ts +12 -6
  32. package/build/ts/common/chain.d.ts.map +1 -1
  33. package/build/ts/common/chain.js +19 -17
  34. package/build/ts/common/chain.js.map +1 -1
  35. package/build/ts/common/coordinatorKeypair.d.ts +7 -0
  36. package/build/ts/common/coordinatorKeypair.d.ts.map +1 -0
  37. package/build/ts/common/coordinatorKeypair.js +14 -0
  38. package/build/ts/common/coordinatorKeypair.js.map +1 -0
  39. package/build/ts/common/errors.d.ts +16 -12
  40. package/build/ts/common/errors.d.ts.map +1 -1
  41. package/build/ts/common/errors.js +16 -12
  42. package/build/ts/common/errors.js.map +1 -1
  43. package/build/ts/common/http.d.ts +6 -0
  44. package/build/ts/common/http.d.ts.map +1 -0
  45. package/build/ts/common/http.js +49 -0
  46. package/build/ts/common/http.js.map +1 -0
  47. package/build/ts/common/index.d.ts +1 -1
  48. package/build/ts/common/index.d.ts.map +1 -1
  49. package/build/ts/common/index.js +1 -1
  50. package/build/ts/common/index.js.map +1 -1
  51. package/build/ts/common/networks.d.ts +2 -21
  52. package/build/ts/common/networks.d.ts.map +1 -1
  53. package/build/ts/common/networks.js +39 -48
  54. package/build/ts/common/networks.js.map +1 -1
  55. package/build/ts/common/types.d.ts +2 -2
  56. package/build/ts/common/types.d.ts.map +1 -1
  57. package/build/ts/deployer/__tests__/deployer.controller.test.js +23 -25
  58. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
  59. package/build/ts/deployer/__tests__/deployer.service.test.js +184 -80
  60. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
  61. package/build/ts/deployer/__tests__/utils.d.ts +10 -14
  62. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
  63. package/build/ts/deployer/__tests__/utils.js +15 -24
  64. package/build/ts/deployer/__tests__/utils.js.map +1 -1
  65. package/build/ts/deployer/deployer.controller.d.ts.map +1 -1
  66. package/build/ts/deployer/deployer.controller.js +19 -6
  67. package/build/ts/deployer/deployer.controller.js.map +1 -1
  68. package/build/ts/deployer/deployer.service.d.ts +17 -8
  69. package/build/ts/deployer/deployer.service.d.ts.map +1 -1
  70. package/build/ts/deployer/deployer.service.js +226 -60
  71. package/build/ts/deployer/deployer.service.js.map +1 -1
  72. package/build/ts/deployer/dto.d.ts +3 -3
  73. package/build/ts/deployer/dto.d.ts.map +1 -1
  74. package/build/ts/deployer/dto.js +5 -5
  75. package/build/ts/deployer/dto.js.map +1 -1
  76. package/build/ts/deployer/types.d.ts +41 -34
  77. package/build/ts/deployer/types.d.ts.map +1 -1
  78. package/build/ts/file/__tests__/file.service.test.js +12 -11
  79. package/build/ts/file/__tests__/file.service.test.js.map +1 -1
  80. package/build/ts/file/file.service.d.ts +4 -3
  81. package/build/ts/file/file.service.d.ts.map +1 -1
  82. package/build/ts/file/file.service.js +16 -10
  83. package/build/ts/file/file.service.js.map +1 -1
  84. package/build/ts/file/types.d.ts +2 -2
  85. package/build/ts/file/types.d.ts.map +1 -1
  86. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  87. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  88. package/build/ts/health/__tests__/health.controller.test.js +52 -0
  89. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  90. package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
  91. package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
  92. package/build/ts/health/__tests__/health.service.test.js +101 -0
  93. package/build/ts/health/__tests__/health.service.test.js.map +1 -0
  94. package/build/ts/health/health.controller.d.ts +16 -0
  95. package/build/ts/health/health.controller.d.ts.map +1 -0
  96. package/build/ts/health/health.controller.js +43 -0
  97. package/build/ts/health/health.controller.js.map +1 -0
  98. package/build/ts/health/health.module.d.ts +3 -0
  99. package/build/ts/health/health.module.d.ts.map +1 -0
  100. package/build/ts/health/health.module.js +22 -0
  101. package/build/ts/health/health.module.js.map +1 -0
  102. package/build/ts/health/health.service.d.ts +42 -0
  103. package/build/ts/health/health.service.d.ts.map +1 -0
  104. package/build/ts/health/health.service.js +176 -0
  105. package/build/ts/health/health.service.js.map +1 -0
  106. package/build/ts/health/types.d.ts +87 -0
  107. package/build/ts/health/types.d.ts.map +1 -0
  108. package/build/ts/health/types.js +2 -0
  109. package/build/ts/health/types.js.map +1 -0
  110. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
  111. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
  112. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
  113. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
  114. package/build/ts/main.js +1 -1
  115. package/build/ts/proof/__tests__/proof.controller.test.js +6 -7
  116. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
  117. package/build/ts/proof/__tests__/proof.gateway.test.js +3 -4
  118. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
  119. package/build/ts/proof/__tests__/proof.service.test.js +28 -74
  120. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
  121. package/build/ts/proof/dto.d.ts +6 -10
  122. package/build/ts/proof/dto.d.ts.map +1 -1
  123. package/build/ts/proof/dto.js +15 -30
  124. package/build/ts/proof/dto.js.map +1 -1
  125. package/build/ts/proof/proof.controller.d.ts.map +1 -1
  126. package/build/ts/proof/proof.controller.js +38 -15
  127. package/build/ts/proof/proof.controller.js.map +1 -1
  128. package/build/ts/proof/proof.module.d.ts.map +1 -1
  129. package/build/ts/proof/proof.module.js +1 -0
  130. package/build/ts/proof/proof.module.js.map +1 -1
  131. package/build/ts/proof/proof.service.d.ts +2 -4
  132. package/build/ts/proof/proof.service.d.ts.map +1 -1
  133. package/build/ts/proof/proof.service.js +26 -27
  134. package/build/ts/proof/proof.service.js.map +1 -1
  135. package/build/ts/proof/types.d.ts +6 -10
  136. package/build/ts/proof/types.d.ts.map +1 -1
  137. package/build/ts/proof/types.js.map +1 -1
  138. package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
  139. package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
  140. package/build/ts/redis/__tests__/redis.service.test.js +148 -0
  141. package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
  142. package/build/ts/redis/redis.module.d.ts +3 -0
  143. package/build/ts/redis/redis.module.d.ts.map +1 -0
  144. package/build/ts/redis/redis.module.js +18 -0
  145. package/build/ts/redis/redis.module.js.map +1 -0
  146. package/build/ts/redis/redis.service.d.ts +53 -0
  147. package/build/ts/redis/redis.service.d.ts.map +1 -0
  148. package/build/ts/redis/redis.service.js +99 -0
  149. package/build/ts/redis/redis.service.js.map +1 -0
  150. package/build/ts/redis/types.d.ts +66 -0
  151. package/build/ts/redis/types.d.ts.map +1 -0
  152. package/build/ts/redis/types.js +2 -0
  153. package/build/ts/redis/types.js.map +1 -0
  154. package/build/ts/redis/utils.d.ts +20 -0
  155. package/build/ts/redis/utils.d.ts.map +1 -0
  156. package/build/ts/redis/utils.js +27 -0
  157. package/build/ts/redis/utils.js.map +1 -0
  158. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
  159. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
  160. package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
  161. package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
  162. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
  163. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
  164. package/build/ts/scheduler/__tests__/scheduler.service.test.js +369 -0
  165. package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
  166. package/build/ts/scheduler/dto.d.ts +41 -0
  167. package/build/ts/scheduler/dto.d.ts.map +1 -0
  168. package/build/ts/scheduler/dto.js +115 -0
  169. package/build/ts/scheduler/dto.js.map +1 -0
  170. package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
  171. package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
  172. package/build/ts/scheduler/scheduler.controller.js +118 -0
  173. package/build/ts/scheduler/scheduler.controller.js.map +1 -0
  174. package/build/ts/scheduler/scheduler.module.d.ts +3 -0
  175. package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
  176. package/build/ts/scheduler/scheduler.module.js +24 -0
  177. package/build/ts/scheduler/scheduler.module.js.map +1 -0
  178. package/build/ts/scheduler/scheduler.service.d.ts +71 -0
  179. package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
  180. package/build/ts/scheduler/scheduler.service.js +297 -0
  181. package/build/ts/scheduler/scheduler.service.js.map +1 -0
  182. package/build/ts/scheduler/types.d.ts +65 -0
  183. package/build/ts/scheduler/types.d.ts.map +1 -0
  184. package/build/ts/scheduler/types.js +2 -0
  185. package/build/ts/scheduler/types.js.map +1 -0
  186. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
  187. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
  188. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +34 -19
  189. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
  190. package/build/ts/sessionKeys/__tests__/utils.d.ts +1 -1
  191. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
  192. package/build/ts/sessionKeys/__tests__/utils.js +7 -6
  193. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
  194. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +1 -1
  195. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -1
  196. package/build/ts/sessionKeys/sessionKeys.service.d.ts +4 -3
  197. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
  198. package/build/ts/sessionKeys/sessionKeys.service.js +1 -2
  199. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
  200. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +3 -3
  201. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -1
  202. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +2 -2
  203. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -1
  204. package/build/ts/subgraph/__tests__/subgraph.service.test.js +5 -5
  205. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
  206. package/build/ts/subgraph/dto.d.ts +2 -2
  207. package/build/ts/subgraph/dto.d.ts.map +1 -1
  208. package/build/ts/subgraph/dto.js +3 -3
  209. package/build/ts/subgraph/dto.js.map +1 -1
  210. package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -1
  211. package/build/ts/subgraph/subgraph.controller.js +8 -3
  212. package/build/ts/subgraph/subgraph.controller.js.map +1 -1
  213. package/build/ts/subgraph/subgraph.service.d.ts +4 -0
  214. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
  215. package/build/ts/subgraph/subgraph.service.js +23 -10
  216. package/build/ts/subgraph/subgraph.service.js.map +1 -1
  217. package/build/ts/subgraph/types.d.ts +2 -2
  218. package/build/ts/subgraph/types.d.ts.map +1 -1
  219. package/build/tsconfig.build.tsbuildinfo +1 -1
  220. package/package.json +45 -39
  221. package/build/tests/e2e.aa.test.d.ts +0 -2
  222. package/build/tests/e2e.aa.test.d.ts.map +0 -1
  223. package/build/tests/e2e.aa.test.js +0 -106
  224. package/build/tests/e2e.aa.test.js.map +0 -1
@@ -0,0 +1,297 @@
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 SchedulerService_1;
11
+ import { getPoll, isTallied } from "@maci-protocol/sdk";
12
+ import { Injectable, Logger } from "@nestjs/common";
13
+ import { SchedulerRegistry } from "@nestjs/schedule";
14
+ import { ErrorCodes } from "../common";
15
+ import { ProofGeneratorService } from "../proof/proof.service";
16
+ import { RedisService } from "../redis/redis.service";
17
+ import { getPollKeyFromObject } from "../redis/utils";
18
+ import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
19
+ const BUFFER_TIMEOUT = 15 * 1000; // 15 seconds buffer for poll finalization
20
+ let SchedulerService = SchedulerService_1 = class SchedulerService {
21
+ sessionKeysService;
22
+ redisService;
23
+ schedulerRegistry;
24
+ proofService;
25
+ /**
26
+ * Logger
27
+ */
28
+ logger;
29
+ /**
30
+ * Create a new scheduler service instance.
31
+ * @param sessionKeysService - session keys service to manage session keys
32
+ * @param redisService - redis service to interact with Redis database
33
+ * @param schedulerRegistry - scheduler registry to manage scheduled tasks
34
+ */
35
+ constructor(sessionKeysService, redisService, schedulerRegistry, proofService) {
36
+ this.sessionKeysService = sessionKeysService;
37
+ this.redisService = redisService;
38
+ this.schedulerRegistry = schedulerRegistry;
39
+ this.proofService = proofService;
40
+ this.logger = new Logger(SchedulerService_1.name);
41
+ }
42
+ /**
43
+ * Instantiate and schedule the saved polls in the database
44
+ * @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
45
+ * are injected and the module is fully initialized.
46
+ * This ensures your service is ready and all dependencies are available.
47
+ */
48
+ async onModuleInit() {
49
+ await this.restoreTimeouts();
50
+ }
51
+ /**
52
+ * Check if poll is scheduled for finalization
53
+ * @param args - Arguments for checking poll finalization
54
+ * @returns true if poll is scheduled for finalization, false otherwise
55
+ */
56
+ async isPollScheduled(scheduledPoll) {
57
+ const key = getPollKeyFromObject(scheduledPoll);
58
+ const { maciAddress, pollId, chain } = scheduledPoll;
59
+ const { isPollTallied } = await this.getPollFinalizationData({
60
+ maciAddress,
61
+ pollId,
62
+ chain,
63
+ });
64
+ if (isPollTallied) {
65
+ this.deleteScheduledPoll({ maciAddress, pollId, chain });
66
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
67
+ throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
68
+ }
69
+ const storedPoll = await this.redisService.get(key);
70
+ if (!storedPoll) {
71
+ return { isScheduled: false };
72
+ }
73
+ const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
74
+ if (!isPollTimeoutScheduled) {
75
+ // delete redis data so user has to reschedule again
76
+ await this.redisService.delete(key);
77
+ return { isScheduled: false };
78
+ }
79
+ return { isScheduled: true };
80
+ }
81
+ /**
82
+ * Return the poll end date and whether it is tallied
83
+ * @param args - Arguments to retrieve poll data
84
+ */
85
+ async getPollFinalizationData({ pollId, maciAddress, chain, sessionKeyAddress, approval, }) {
86
+ const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
87
+ const [{ endDate, isMerged: isPollMerged }, isPollTallied] = await Promise.all([
88
+ getPoll({
89
+ maciAddress,
90
+ pollId: BigInt(pollId),
91
+ signer,
92
+ }),
93
+ isTallied({
94
+ maciAddress,
95
+ pollId: String(pollId),
96
+ signer,
97
+ }),
98
+ ]);
99
+ return {
100
+ endDate: Number(endDate),
101
+ isPollTallied,
102
+ isPollMerged,
103
+ };
104
+ }
105
+ /**
106
+ * Finalize poll starting from any step
107
+ *
108
+ * @param args - generate proofs arguments
109
+ */
110
+ async finalizePoll(poll) {
111
+ const { maciAddress, pollId, chain, deploymentBlockNumber, mode, merged, proofsGenerated } = poll;
112
+ const key = getPollKeyFromObject({ maciAddress, pollId, chain });
113
+ const { endDate, isPollMerged } = await this.getPollFinalizationData({
114
+ maciAddress,
115
+ pollId,
116
+ chain,
117
+ });
118
+ if (endDate * 1000 > Date.now()) {
119
+ this.logger.error(`Error finalizing poll ${pollId}: voting period is not over.`);
120
+ await this.deleteScheduledPoll({ maciAddress, pollId, chain });
121
+ await this.setupPollFinalization(poll);
122
+ return;
123
+ }
124
+ if (isPollMerged !== merged) {
125
+ this.logger.error(`Error finalizing poll ${pollId}: is poll merged mismatch. Updating database.`);
126
+ await this.deleteScheduledPoll({ maciAddress, pollId, chain });
127
+ await this.setupPollFinalization({ ...poll, merged: isPollMerged });
128
+ return;
129
+ }
130
+ try {
131
+ if (!merged) {
132
+ await this.proofService
133
+ .merge({
134
+ maciContractAddress: maciAddress,
135
+ pollId: Number(pollId),
136
+ chain,
137
+ })
138
+ .then(() => this.redisService.set(key, JSON.stringify({ ...poll, merged: true })))
139
+ .catch(async (error) => {
140
+ await this.deleteScheduledPoll({ maciAddress, pollId, chain });
141
+ await this.setupPollFinalization(poll);
142
+ throw new Error(`Error merging poll ${pollId}: ${error.message}`);
143
+ });
144
+ }
145
+ if (!proofsGenerated) {
146
+ await this.proofService
147
+ .generate({
148
+ maciContractAddress: maciAddress,
149
+ poll: Number(pollId),
150
+ chain,
151
+ mode,
152
+ startBlock: deploymentBlockNumber,
153
+ blocksPerBatch: Number(process.env.COORDINATOR_BLOCK_BATCH_SIZE || 1000),
154
+ })
155
+ .then(() => this.redisService.set(key, JSON.stringify({ ...poll, merged: true, proofsGenerated: true })))
156
+ .catch(async (error) => {
157
+ await this.deleteScheduledPoll({ maciAddress, pollId, chain });
158
+ await this.setupPollFinalization({ ...poll, merged: true });
159
+ throw new Error(`Error generating proofs for poll ${pollId}: ${error.message}`);
160
+ });
161
+ }
162
+ await this.proofService
163
+ .submit({
164
+ maciContractAddress: maciAddress,
165
+ pollId: Number(pollId),
166
+ chain,
167
+ })
168
+ .then(() => this.deleteScheduledPoll({ maciAddress, pollId, chain }))
169
+ .catch(async (error) => {
170
+ await this.deleteScheduledPoll({ maciAddress, pollId, chain });
171
+ await this.setupPollFinalization({ ...poll, merged: true, proofsGenerated: true });
172
+ throw new Error(`Error submitting proofs for poll ${pollId}: ${error.message}`);
173
+ });
174
+ }
175
+ catch (error) {
176
+ this.logger.error(`Error finalizing poll ${pollId}: ${error.message}`);
177
+ }
178
+ }
179
+ /**
180
+ * Store poll information and schedule its finalization.
181
+ * @param args - Arguments for storing and scheduling poll finalization
182
+ * @return delay in milliseconds until the poll is scheduled for finalization
183
+ */
184
+ async setupPollFinalization(poll) {
185
+ const { maciAddress, pollId, chain, endDate } = poll;
186
+ const key = getPollKeyFromObject({ maciAddress, pollId, chain });
187
+ await this.redisService.set(key, JSON.stringify(poll));
188
+ const shouldBeExecutedIn = endDate * 1000 - Date.now();
189
+ const toBeExecutedIn = shouldBeExecutedIn > 0 ? shouldBeExecutedIn : 0;
190
+ const delay = toBeExecutedIn + BUFFER_TIMEOUT;
191
+ const timeout = setTimeout(async () => {
192
+ await this.finalizePoll(poll);
193
+ }, delay);
194
+ const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
195
+ if (isPollTimeoutScheduled) {
196
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
197
+ throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
198
+ }
199
+ this.schedulerRegistry.addTimeout(key, timeout);
200
+ return { delay };
201
+ }
202
+ /**
203
+ * Schedule poll for finalization
204
+ * @param args - Arguments to register poll for finalization
205
+ * @returns Response object with isScheduled property indicating the poll is scheduled
206
+ */
207
+ async registerPoll({ maciAddress, pollId, chain, mode, deploymentBlockNumber, sessionKeyAddress, approval, }) {
208
+ const { endDate, isPollTallied } = await this.getPollFinalizationData({
209
+ maciAddress,
210
+ pollId,
211
+ chain,
212
+ sessionKeyAddress,
213
+ approval,
214
+ });
215
+ if (isPollTallied) {
216
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
217
+ throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
218
+ }
219
+ const { isScheduled } = await this.isPollScheduled({
220
+ maciAddress,
221
+ pollId,
222
+ chain,
223
+ });
224
+ if (isScheduled) {
225
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
226
+ throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
227
+ }
228
+ await this.setupPollFinalization({
229
+ maciAddress,
230
+ pollId,
231
+ chain,
232
+ deploymentBlockNumber,
233
+ mode,
234
+ endDate,
235
+ merged: false,
236
+ proofsGenerated: false,
237
+ });
238
+ return { isScheduled: true };
239
+ }
240
+ /**
241
+ * Delete scheduled poll
242
+ * @param args - Arguments to identify the scheduled poll
243
+ * @returns Response object with isScheduled property indicating the poll is no longer scheduled
244
+ */
245
+ async deleteScheduledPoll(scheduledPoll) {
246
+ const key = getPollKeyFromObject(scheduledPoll);
247
+ const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
248
+ if (isPollTimeoutScheduled) {
249
+ this.schedulerRegistry.deleteTimeout(key);
250
+ }
251
+ await this.redisService.delete(key);
252
+ return { isScheduled: false };
253
+ }
254
+ /**
255
+ * Restore all scheduled timeouts from Redis
256
+ */
257
+ async restoreTimeouts() {
258
+ const polls = await this.redisService.getAll();
259
+ await Promise.all(polls.map(async ({ key, value }) => {
260
+ this.logger.log(`Restoring timeout for poll key: ${key}`);
261
+ try {
262
+ if (!value) {
263
+ await this.redisService.delete(key);
264
+ return;
265
+ }
266
+ const poll = JSON.parse(value);
267
+ const { endDate, isPollTallied } = await this.getPollFinalizationData({
268
+ maciAddress: poll.maciAddress,
269
+ pollId: poll.pollId,
270
+ chain: poll.chain,
271
+ });
272
+ if (isPollTallied) {
273
+ await this.deleteScheduledPoll({
274
+ maciAddress: poll.maciAddress,
275
+ pollId: poll.pollId,
276
+ chain: poll.chain,
277
+ });
278
+ return;
279
+ }
280
+ const { delay } = await this.setupPollFinalization({ ...poll, endDate });
281
+ this.logger.log(`poll ${value} to be finalized at ${new Date(Date.now() + delay).toISOString()}`);
282
+ }
283
+ catch (error) {
284
+ this.logger.error(`Error restoring timeout for poll key: ${key}`, error);
285
+ }
286
+ }));
287
+ }
288
+ };
289
+ SchedulerService = SchedulerService_1 = __decorate([
290
+ Injectable(),
291
+ __metadata("design:paramtypes", [SessionKeysService,
292
+ RedisService,
293
+ SchedulerRegistry,
294
+ ProofGeneratorService])
295
+ ], SchedulerService);
296
+ export { SchedulerService };
297
+ //# sourceMappingURL=scheduler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { IIdentityScheduledPoll, IScheduledPoll } from "../redis/types";
2
+ import type { Hex } from "viem";
3
+ /**
4
+ * Identity scheduled poll arguments with required arguments for signer
5
+ */
6
+ export interface IIdentityPollWithSignerArgs extends IIdentityScheduledPoll {
7
+ /**
8
+ * Approval for the session key
9
+ */
10
+ approval?: string;
11
+ /**
12
+ * Session key address
13
+ */
14
+ sessionKeyAddress?: Hex;
15
+ }
16
+ /**
17
+ * Scheduled poll arguments with required arguments for signer
18
+ */
19
+ export interface ISchedulePollWithSignerArgs extends IScheduledPoll {
20
+ /**
21
+ * Approval for the session key
22
+ */
23
+ approval?: string;
24
+ /**
25
+ * Session key address
26
+ */
27
+ sessionKeyAddress?: Hex;
28
+ }
29
+ /**
30
+ * poll end date and is tallied response
31
+ */
32
+ export interface IGetPollFinalizationData {
33
+ /**
34
+ * End date of the poll
35
+ */
36
+ endDate: number;
37
+ /**
38
+ * Indicates if the poll is tallied
39
+ */
40
+ isPollTallied: boolean;
41
+ /**
42
+ * Indicates if the poll has been merged
43
+ */
44
+ isPollMerged: boolean;
45
+ }
46
+ /**
47
+ * Is poll scheduled response
48
+ */
49
+ export interface IIsPollScheduledResponse {
50
+ /**
51
+ * Indicates if the poll is scheduled
52
+ *
53
+ */
54
+ isScheduled: boolean;
55
+ }
56
+ /**
57
+ * Setup poll finalization response
58
+ */
59
+ export interface ISetupPollFinalizationResponse {
60
+ /**
61
+ * delay in milliseconds until poll finalization is executed
62
+ */
63
+ delay: number;
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/scheduler/types.ts"],"names":[],"mappings":""}
@@ -29,8 +29,8 @@ describe("SessionKeysController", () => {
29
29
  jest.clearAllMocks();
30
30
  });
31
31
  describe("v1/session-keys/generate", () => {
32
- test("should return a session key address", () => {
33
- const data = sessionKeysController.generateSessionKey();
32
+ test("should return a session key address", async () => {
33
+ const data = await sessionKeysController.generateSessionKey();
34
34
  expect(data).toStrictEqual(defaultGenerateSessionKeyReturn);
35
35
  });
36
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sessionKeys.controller.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAC;IAEjD,MAAM,sBAAsB,GAAG;QAC7B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KAChC,CAAC;IAEF,MAAM,+BAA+B,GAA8B;QACjE,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,qBAAqB,CAAC;SACrC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBACjC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;gBAC7F,OAAO,sBAAsB,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAwB,qBAAqB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sessionKeys.controller.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAC;IAEjD,MAAM,sBAAsB,GAAG;QAC7B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KAChC,CAAC;IAEF,MAAM,+BAA+B,GAA8B;QACjE,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,qBAAqB,CAAC;SACrC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBACjC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;gBAC7F,OAAO,sBAAsB,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAwB,qBAAqB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,18 +1,36 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
2
+ import { createKernelAccount, createKernelAccountClient } from "@zerodev/sdk";
1
3
  import dotenv from "dotenv";
2
4
  import { zeroAddress } from "viem";
3
- import { ErrorCodes, ESupportedNetworks } from "../../common";
5
+ import { ErrorCodes } from "../../common";
4
6
  import { FileService } from "../../file/file.service";
5
7
  import { SessionKeysService } from "../sessionKeys.service";
6
8
  import { generateApproval } from "./utils";
7
9
  dotenv.config();
10
+ jest.mock("@zerodev/sdk", () => ({
11
+ ...jest.requireActual("@zerodev/sdk"),
12
+ createKernelAccount: jest.fn(),
13
+ createKernelAccountClient: jest.fn(),
14
+ }));
15
+ jest.mock("@zerodev/permissions", () => ({
16
+ ...jest.requireActual("@zerodev/permissions"),
17
+ serializePermissionAccount: jest.fn().mockResolvedValue("approval"),
18
+ deserializePermissionAccount: jest.fn().mockResolvedValue({}),
19
+ }));
8
20
  describe("SessionKeysService", () => {
9
21
  const fileService = new FileService();
10
- let sessionKeysService;
11
- beforeAll(() => {
12
- sessionKeysService = new SessionKeysService(fileService);
22
+ const mockedKernelAccount = { mockedAccount: true };
23
+ const mockedKernelAccountClient = { mockedAccountClient: true };
24
+ beforeEach(() => {
25
+ createKernelAccount.mockResolvedValue(mockedKernelAccount);
26
+ createKernelAccountClient.mockResolvedValue(mockedKernelAccountClient);
27
+ });
28
+ afterEach(() => {
29
+ jest.clearAllMocks();
13
30
  });
14
31
  describe("generateSessionKey", () => {
15
32
  test("should generate and store a session key", async () => {
33
+ const sessionKeysService = new SessionKeysService(fileService);
16
34
  const sessionKeyAddress = await sessionKeysService.generateSessionKey();
17
35
  expect(sessionKeyAddress).toBeDefined();
18
36
  expect(sessionKeyAddress).not.toEqual(zeroAddress);
@@ -22,6 +40,7 @@ describe("SessionKeysService", () => {
22
40
  });
23
41
  describe("deactivateSessionKey", () => {
24
42
  test("should delete a session key", async () => {
43
+ const sessionKeysService = new SessionKeysService(fileService);
25
44
  const sessionKeyAddress = await sessionKeysService.generateSessionKey();
26
45
  expect(sessionKeyAddress).toBeDefined();
27
46
  expect(sessionKeyAddress).not.toEqual(zeroAddress);
@@ -34,27 +53,23 @@ describe("SessionKeysService", () => {
34
53
  });
35
54
  describe("generateClientFromSessionKey", () => {
36
55
  test("should fail to generate a client with an invalid approval", async () => {
56
+ createKernelAccountClient.mockRejectedValue(new Error());
57
+ const sessionKeysService = new SessionKeysService(fileService);
37
58
  const sessionKeyAddress = await sessionKeysService.generateSessionKey();
38
- await expect(sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, "0xinvalid", ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.INVALID_APPROVAL.toString());
59
+ await expect(sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, "0xinvalid", ESupportedChains.OptimismSepolia)).rejects.toThrow(ErrorCodes.INVALID_APPROVAL.toString());
39
60
  });
40
61
  test("should throw when given a non existent session key address", async () => {
62
+ const sessionKeysService = new SessionKeysService(fileService);
41
63
  const approval = await generateApproval(zeroAddress);
42
- await expect(sessionKeysService.generateClientFromSessionKey(zeroAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
64
+ await expect(sessionKeysService.generateClientFromSessionKey(zeroAddress, approval, ESupportedChains.OptimismSepolia)).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
43
65
  });
44
66
  test("should generate a client from a session key", async () => {
45
- jest.mock("@zerodev/sdk", () => ({
46
- ...jest.requireActual("@zerodev/sdk"),
47
- createKernelAccountClient: jest.fn().mockReturnValue({ mockedKernelClient: true }),
48
- }));
49
- const mockGenerateClientFromSessionKey = jest.fn().mockResolvedValue({ mockedClient: true });
50
- jest
51
- .spyOn(SessionKeysService.prototype, "generateClientFromSessionKey")
52
- .mockImplementation(mockGenerateClientFromSessionKey);
53
- const sessionKeyAddress = await sessionKeysService.generateSessionKey();
54
- const approval = await generateApproval(sessionKeyAddress.sessionKeyAddress);
55
- const client = await sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
56
- expect(mockGenerateClientFromSessionKey).toHaveBeenCalledWith(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
57
- expect(client).toEqual({ mockedClient: true });
67
+ const sessionKeysService = new SessionKeysService(fileService);
68
+ const { sessionKeyAddress } = await sessionKeysService.generateSessionKey();
69
+ const approval = await generateApproval(sessionKeyAddress);
70
+ const client = await sessionKeysService.generateClientFromSessionKey(sessionKeyAddress, approval, ESupportedChains.OptimismSepolia);
71
+ expect(createKernelAccountClient).toHaveBeenCalledTimes(1);
72
+ expect(client).toEqual(mockedKernelAccountClient);
58
73
  });
59
74
  });
60
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sessionKeys.service.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionKeys.service.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Policy } from "@zerodev/permissions";
2
- import { CreateKernelAccountReturnType } from "@zerodev/sdk";
2
+ import { type CreateKernelAccountReturnType } from "@zerodev/sdk";
3
3
  import { type Hex } from "viem";
4
4
  export declare const ENTRY_POINT: import("@zerodev/sdk/types").EntryPointType<"0.7">;
5
5
  export declare const KERNEL_VERSION: import("@zerodev/sdk/types").KERNEL_V3_VERSION_TYPE;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,sBAAsB,CAAC;AAGtG,OAAO,EAA8C,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAGzG,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAQhC,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,qDAAc,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,6BAA6B,CA6BpG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAG7E,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,sBAAsB,CAAC;AAGtG,OAAO,EAA8C,KAAK,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAG9G,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAQhC,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,qDAAc,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,6BAA6B,CA6BpG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAG7E,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
1
2
  import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator";
2
3
  import { serializePermissionAccount, toPermissionValidator } from "@zerodev/permissions";
3
4
  import { toSudoPolicy, toTimestampPolicy } from "@zerodev/permissions/policies";
@@ -6,8 +7,8 @@ import { addressToEmptyAccount, createKernelAccount } from "@zerodev/sdk";
6
7
  import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants";
7
8
  import dotenv from "dotenv";
8
9
  import { privateKeyToAccount } from "viem/accounts";
9
- import { ESupportedNetworks } from "../../common";
10
10
  import { getPublicClient } from "../../common/accountAbstraction";
11
+ import { getWallet } from "../../common/chain";
11
12
  dotenv.config();
12
13
  export const ENTRY_POINT = getEntryPoint("0.7");
13
14
  export const KERNEL_VERSION = KERNEL_V3_1;
@@ -27,8 +28,9 @@ export const generateTimestampPolicy = (endTime, start) => toTimestampPolicy({
27
28
  * @returns - the kernel account
28
29
  */
29
30
  export const getKernelAccount = async (sessionKeyAddress) => {
30
- const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
31
- const sessionKeySigner = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
31
+ const publicClient = await getPublicClient(ESupportedChains.Localhost);
32
+ const wallet = getWallet();
33
+ const sessionKeySigner = privateKeyToAccount(wallet.privateKey);
32
34
  const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
33
35
  signer: sessionKeySigner,
34
36
  entryPoint: ENTRY_POINT,
@@ -42,7 +44,7 @@ export const getKernelAccount = async (sessionKeyAddress) => {
42
44
  signer: emptySessionKeySigner,
43
45
  policies: [toSudoPolicy({})],
44
46
  });
45
- const sessionKeyAccount = await createKernelAccount(publicClient, {
47
+ return await createKernelAccount(publicClient, {
46
48
  entryPoint: ENTRY_POINT,
47
49
  kernelVersion: KERNEL_VERSION,
48
50
  plugins: {
@@ -50,7 +52,6 @@ export const getKernelAccount = async (sessionKeyAddress) => {
50
52
  regular: permissionPlugin,
51
53
  },
52
54
  });
53
- return sessionKeyAccount;
54
55
  };
55
56
  /**
56
57
  * Generate an approval for a session key
@@ -59,6 +60,6 @@ export const getKernelAccount = async (sessionKeyAddress) => {
59
60
  */
60
61
  export const generateApproval = async (sessionKeyAddress) => {
61
62
  const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
62
- return serializePermissionAccount(sessionKeyAccount);
63
+ return await serializePermissionAccount(sessionKeyAccount);
63
64
  };
64
65
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAe,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAiC,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,KAAc,EAAU,EAAE,CACjF,iBAAiB,CAAC;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,OAAO;CACpB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAA0C,EAAE;IACvG,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE;QAChE,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,qBAAqB,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;QACjE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE;QAChE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,gBAAgB;SAC1B;KACF,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAAmB,EAAE;IAChF,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAe,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAsC,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,KAAc,EAAU,EAAE,CACjF,iBAAiB,CAAC;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,OAAO;CACpB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAA0C,EAAE;IACvG,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAiB,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE;QAChE,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,qBAAqB,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;QACjE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;IAEH,OAAO,MAAM,mBAAmB,CAAC,YAAY,EAAE;QAC7C,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,gBAAgB;SAC1B;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAAmB,EAAE;IAChF,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,MAAM,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AAC7D,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { KernelAccountClient } from "@zerodev/sdk";
1
+ import { type KernelAccountClient } from "@zerodev/sdk";
2
2
  import { encodeFunctionData } from "viem";
3
3
  import { EventEmitter } from "events";
4
4
  import type { EIP1193Parameters, EIP1193RequestFn, Hex } from "viem";
@@ -1 +1 @@
1
- {"version":3,"file":"KernelEIP1193Provider.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/provider/KernelEIP1193Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAY,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAQ,GAAG,EAA8C,MAAM,MAAM,CAAC;AAEvH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAC;AAEH,KAAK,6BAA6B,GAAG,UAAU,CAC7C,OAAO,kBAAkB,CAAC,OAAO,iBAAiB,EAAE,eAAe,CAAC,CACrE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEb,eAAO,MAAM,oBAAoB,GAAI,MAAM,6BAA6B,KAAG,GAKvE,CAAC;AAEL,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,YAAY,CAAsB;gBAE9B,YAAY,EAAE,mBAAmB;IAKvC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAW,EAAE,EAAE,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAoBvF,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,iBAAiB;YAQX,wBAAwB;YAexB,aAAa;YAiBb,kBAAkB;YAiBlB,wBAAwB;CA0BvC"}
1
+ {"version":3,"file":"KernelEIP1193Provider.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/provider/KernelEIP1193Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAY,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAQ,GAAG,EAA8C,MAAM,MAAM,CAAC;AAEvH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAC;AAEH,KAAK,6BAA6B,GAAG,UAAU,CAC7C,OAAO,kBAAkB,CAAC,OAAO,iBAAiB,EAAE,eAAe,CAAC,CACrE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEb,eAAO,MAAM,oBAAoB,GAAI,MAAM,6BAA6B,KAAG,GAKvE,CAAC;AAEL,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,YAAY,CAAsB;gBAE9B,YAAY,EAAE,mBAAmB;IAKvC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAW,EAAE,EAAE,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAoBvF,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,iBAAiB;YAQX,wBAAwB;YAexB,aAAa;YAiBb,kBAAkB;YAiBlB,wBAAwB;CA0BvC"}