@maci-protocol/coordinator 0.0.0-ci.f1b8eb8 → 0.0.0-ci.f2b591f

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 (189) hide show
  1. package/README.md +4 -4
  2. package/build/hardhat.config.cjs +2 -3
  3. package/build/hardhat.config.cjs.map +1 -1
  4. package/build/hardhat.config.d.cts +2 -4
  5. package/build/scripts/generateKeypair.js +2 -2
  6. package/build/scripts/generateKeypair.js.map +1 -1
  7. package/build/tests/e2e.deploy.test.js +32 -21
  8. package/build/tests/e2e.deploy.test.js.map +1 -1
  9. package/build/tests/e2e.redis.test.d.ts +2 -0
  10. package/build/tests/e2e.redis.test.d.ts.map +1 -0
  11. package/build/tests/e2e.redis.test.js +118 -0
  12. package/build/tests/e2e.redis.test.js.map +1 -0
  13. package/build/tests/utils.d.ts.map +1 -1
  14. package/build/tests/utils.js +3 -3
  15. package/build/tests/utils.js.map +1 -1
  16. package/build/ts/app.module.d.ts.map +1 -1
  17. package/build/ts/app.module.js +6 -0
  18. package/build/ts/app.module.js.map +1 -1
  19. package/build/ts/common/__tests__/common.test.js +38 -38
  20. package/build/ts/common/__tests__/common.test.js.map +1 -1
  21. package/build/ts/common/accountAbstraction.d.ts +5 -5
  22. package/build/ts/common/accountAbstraction.d.ts.map +1 -1
  23. package/build/ts/common/accountAbstraction.js +8 -8
  24. package/build/ts/common/accountAbstraction.js.map +1 -1
  25. package/build/ts/common/chain.d.ts +3 -3
  26. package/build/ts/common/chain.d.ts.map +1 -1
  27. package/build/ts/common/chain.js +11 -10
  28. package/build/ts/common/chain.js.map +1 -1
  29. package/build/ts/common/errors.d.ts +15 -11
  30. package/build/ts/common/errors.d.ts.map +1 -1
  31. package/build/ts/common/errors.js +15 -11
  32. package/build/ts/common/errors.js.map +1 -1
  33. package/build/ts/common/index.d.ts +0 -1
  34. package/build/ts/common/index.d.ts.map +1 -1
  35. package/build/ts/common/index.js +0 -1
  36. package/build/ts/common/index.js.map +1 -1
  37. package/build/ts/common/networks.d.ts +2 -21
  38. package/build/ts/common/networks.d.ts.map +1 -1
  39. package/build/ts/common/networks.js +39 -48
  40. package/build/ts/common/networks.js.map +1 -1
  41. package/build/ts/deployer/__tests__/deployer.controller.test.js +23 -25
  42. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
  43. package/build/ts/deployer/__tests__/deployer.service.test.js +162 -80
  44. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
  45. package/build/ts/deployer/__tests__/utils.d.ts +0 -1
  46. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
  47. package/build/ts/deployer/__tests__/utils.js +4 -4
  48. package/build/ts/deployer/__tests__/utils.js.map +1 -1
  49. package/build/ts/deployer/deployer.service.d.ts +17 -8
  50. package/build/ts/deployer/deployer.service.d.ts.map +1 -1
  51. package/build/ts/deployer/deployer.service.js +209 -56
  52. package/build/ts/deployer/deployer.service.js.map +1 -1
  53. package/build/ts/deployer/dto.d.ts +3 -3
  54. package/build/ts/deployer/dto.d.ts.map +1 -1
  55. package/build/ts/deployer/dto.js +5 -5
  56. package/build/ts/deployer/dto.js.map +1 -1
  57. package/build/ts/deployer/types.d.ts +20 -14
  58. package/build/ts/deployer/types.d.ts.map +1 -1
  59. package/build/ts/file/file.service.d.ts.map +1 -1
  60. package/build/ts/file/file.service.js +4 -3
  61. package/build/ts/file/file.service.js.map +1 -1
  62. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  63. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  64. package/build/ts/health/__tests__/health.controller.test.js +52 -0
  65. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  66. package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
  67. package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
  68. package/build/ts/health/__tests__/health.service.test.js +101 -0
  69. package/build/ts/health/__tests__/health.service.test.js.map +1 -0
  70. package/build/ts/health/health.controller.d.ts +16 -0
  71. package/build/ts/health/health.controller.d.ts.map +1 -0
  72. package/build/ts/health/health.controller.js +43 -0
  73. package/build/ts/health/health.controller.js.map +1 -0
  74. package/build/ts/health/health.module.d.ts +3 -0
  75. package/build/ts/health/health.module.d.ts.map +1 -0
  76. package/build/ts/health/health.module.js +22 -0
  77. package/build/ts/health/health.module.js.map +1 -0
  78. package/build/ts/health/health.service.d.ts +42 -0
  79. package/build/ts/health/health.service.d.ts.map +1 -0
  80. package/build/ts/health/health.service.js +176 -0
  81. package/build/ts/health/health.service.js.map +1 -0
  82. package/build/ts/health/types.d.ts +87 -0
  83. package/build/ts/health/types.d.ts.map +1 -0
  84. package/build/ts/health/types.js +2 -0
  85. package/build/ts/health/types.js.map +1 -0
  86. package/build/ts/jest/__mocks__/@excubiae/contracts.d.ts +3 -0
  87. package/build/ts/jest/__mocks__/@excubiae/contracts.d.ts.map +1 -0
  88. package/build/ts/jest/__mocks__/@excubiae/contracts.js +4 -0
  89. package/build/ts/jest/__mocks__/@excubiae/contracts.js.map +1 -0
  90. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
  91. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
  92. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
  93. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
  94. package/build/ts/proof/__tests__/proof.controller.test.js +3 -4
  95. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
  96. package/build/ts/proof/__tests__/proof.gateway.test.js +2 -3
  97. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
  98. package/build/ts/proof/__tests__/proof.service.test.js +24 -55
  99. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
  100. package/build/ts/proof/dto.d.ts +4 -5
  101. package/build/ts/proof/dto.d.ts.map +1 -1
  102. package/build/ts/proof/dto.js +7 -8
  103. package/build/ts/proof/dto.js.map +1 -1
  104. package/build/ts/proof/proof.service.d.ts.map +1 -1
  105. package/build/ts/proof/proof.service.js.map +1 -1
  106. package/build/ts/proof/types.d.ts +4 -5
  107. package/build/ts/proof/types.d.ts.map +1 -1
  108. package/build/ts/proof/types.js.map +1 -1
  109. package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
  110. package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
  111. package/build/ts/redis/__tests__/redis.service.test.js +148 -0
  112. package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
  113. package/build/ts/redis/redis.module.d.ts +3 -0
  114. package/build/ts/redis/redis.module.d.ts.map +1 -0
  115. package/build/ts/redis/redis.module.js +18 -0
  116. package/build/ts/redis/redis.module.js.map +1 -0
  117. package/build/ts/redis/redis.service.d.ts +52 -0
  118. package/build/ts/redis/redis.service.d.ts.map +1 -0
  119. package/build/ts/redis/redis.service.js +97 -0
  120. package/build/ts/redis/redis.service.js.map +1 -0
  121. package/build/ts/redis/types.d.ts +53 -0
  122. package/build/ts/redis/types.d.ts.map +1 -0
  123. package/build/ts/redis/types.js +2 -0
  124. package/build/ts/redis/types.js.map +1 -0
  125. package/build/ts/redis/utils.d.ts +20 -0
  126. package/build/ts/redis/utils.d.ts.map +1 -0
  127. package/build/ts/redis/utils.js +27 -0
  128. package/build/ts/redis/utils.js.map +1 -0
  129. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
  130. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
  131. package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
  132. package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
  133. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
  134. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
  135. package/build/ts/scheduler/__tests__/scheduler.service.test.js +264 -0
  136. package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
  137. package/build/ts/scheduler/dto.d.ts +41 -0
  138. package/build/ts/scheduler/dto.d.ts.map +1 -0
  139. package/build/ts/scheduler/dto.js +115 -0
  140. package/build/ts/scheduler/dto.js.map +1 -0
  141. package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
  142. package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
  143. package/build/ts/scheduler/scheduler.controller.js +111 -0
  144. package/build/ts/scheduler/scheduler.controller.js.map +1 -0
  145. package/build/ts/scheduler/scheduler.module.d.ts +3 -0
  146. package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
  147. package/build/ts/scheduler/scheduler.module.js +23 -0
  148. package/build/ts/scheduler/scheduler.module.js.map +1 -0
  149. package/build/ts/scheduler/scheduler.service.d.ts +63 -0
  150. package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
  151. package/build/ts/scheduler/scheduler.service.js +239 -0
  152. package/build/ts/scheduler/scheduler.service.js.map +1 -0
  153. package/build/ts/scheduler/types.d.ts +61 -0
  154. package/build/ts/scheduler/types.d.ts.map +1 -0
  155. package/build/ts/scheduler/types.js +2 -0
  156. package/build/ts/scheduler/types.js.map +1 -0
  157. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
  158. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
  159. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +34 -19
  160. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
  161. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
  162. package/build/ts/sessionKeys/__tests__/utils.js +5 -6
  163. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
  164. package/build/ts/sessionKeys/sessionKeys.service.d.ts +4 -3
  165. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
  166. package/build/ts/sessionKeys/sessionKeys.service.js +1 -2
  167. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
  168. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +2 -2
  169. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -1
  170. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +2 -2
  171. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -1
  172. package/build/ts/subgraph/__tests__/subgraph.service.test.js +5 -5
  173. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
  174. package/build/ts/subgraph/dto.d.ts +2 -2
  175. package/build/ts/subgraph/dto.d.ts.map +1 -1
  176. package/build/ts/subgraph/dto.js +3 -3
  177. package/build/ts/subgraph/dto.js.map +1 -1
  178. package/build/ts/subgraph/subgraph.service.d.ts +4 -0
  179. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
  180. package/build/ts/subgraph/subgraph.service.js +19 -7
  181. package/build/ts/subgraph/subgraph.service.js.map +1 -1
  182. package/build/ts/subgraph/types.d.ts +2 -2
  183. package/build/ts/subgraph/types.d.ts.map +1 -1
  184. package/build/tsconfig.build.tsbuildinfo +1 -1
  185. package/package.json +40 -32
  186. package/build/tests/e2e.aa.test.d.ts +0 -2
  187. package/build/tests/e2e.aa.test.d.ts.map +0 -1
  188. package/build/tests/e2e.aa.test.js +0 -96
  189. package/build/tests/e2e.aa.test.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import { OnModuleInit } from "@nestjs/common";
2
+ import { SchedulerRegistry } from "@nestjs/schedule";
3
+ import type { IIsPollScheduledResponse, IGetPollFinalizationData, IIdentityPollWithSignerArgs, ISchedulePollWithSignerArgs } from "./types";
4
+ import type { IIdentityScheduledPoll } from "../redis/types";
5
+ import { RedisService } from "../redis/redis.service";
6
+ import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
7
+ export declare class SchedulerService implements OnModuleInit {
8
+ private readonly sessionKeysService;
9
+ private readonly redisService;
10
+ private readonly schedulerRegistry;
11
+ /**
12
+ * Logger
13
+ */
14
+ private readonly logger;
15
+ /**
16
+ * Create a new scheduler service instance.
17
+ * @param sessionKeysService - session keys service to manage session keys
18
+ * @param redisService - redis service to interact with Redis database
19
+ * @param schedulerRegistry - scheduler registry to manage scheduled tasks
20
+ */
21
+ constructor(sessionKeysService: SessionKeysService, redisService: RedisService, schedulerRegistry: SchedulerRegistry);
22
+ /**
23
+ * Instantiate and schedule the saved polls in the database
24
+ * @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
25
+ * are injected and the module is fully initialized.
26
+ * This ensures your service is ready and all dependencies are available.
27
+ */
28
+ onModuleInit(): Promise<void>;
29
+ /**
30
+ * Check if poll is scheduled for finalization
31
+ * @param args - Arguments for checking poll finalization
32
+ * @returns true if poll is scheduled for finalization, false otherwise
33
+ */
34
+ isPollScheduled(scheduledPoll: IIdentityScheduledPoll): Promise<IIsPollScheduledResponse>;
35
+ /**
36
+ * Return the poll end date and whether it is tallied
37
+ * @param args - Arguments to retrieve poll data
38
+ */
39
+ getPollFinalizationData({ pollId, maciAddress, chain, sessionKeyAddress, approval, }: IIdentityPollWithSignerArgs): Promise<IGetPollFinalizationData>;
40
+ /**
41
+ * Store poll information and schedule its finalization.
42
+ * @param args - Arguments for storing and scheduling poll finalization
43
+ * @return delay in milliseconds until the poll is scheduled for finalization
44
+ */
45
+ private setupPollFinalization;
46
+ /**
47
+ * Schedule poll for finalization
48
+ * @param args - Arguments to register poll for finalization
49
+ * @returns Response object with isScheduled property indicating the poll is scheduled
50
+ */
51
+ registerPoll({ maciAddress, pollId, chain, mode, deploymentBlockNumber, sessionKeyAddress, approval, }: ISchedulePollWithSignerArgs): Promise<IIsPollScheduledResponse>;
52
+ /**
53
+ * Delete scheduled poll
54
+ * @param args - Arguments to identify the scheduled poll
55
+ * @returns Response object with isScheduled property indicating the poll is no longer scheduled
56
+ */
57
+ deleteScheduledPoll(scheduledPoll: IIdentityScheduledPoll): Promise<IIsPollScheduledResponse>;
58
+ /**
59
+ * Restore all scheduled timeouts from Redis
60
+ */
61
+ private restoreTimeouts;
62
+ }
63
+ //# sourceMappingURL=scheduler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAE5B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,sBAAsB,EAAkB,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAIxE,qBACa,gBAAiB,YAAW,YAAY;IAajD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAdpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBAEgB,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB;IAKvD;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;OAIG;IACG,eAAe,CAAC,aAAa,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiC/F;;;OAGG;IACG,uBAAuB,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,QAAQ,GACT,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAsBlE;;;;OAIG;YACW,qBAAqB;IA2CnC;;;;OAIG;IACG,YAAY,CAAC,EACjB,WAAW,EACX,MAAM,EACN,KAAK,EACL,IAAI,EACJ,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,GACT,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuClE;;;;OAIG;IACG,mBAAmB,CAAC,aAAa,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAcnG;;OAEG;YACW,eAAe;CAiD9B"}
@@ -0,0 +1,239 @@
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 { RedisService } from "../redis/redis.service";
16
+ import { getPollKeyFromObject } from "../redis/utils";
17
+ import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
18
+ const BUFFER_TIMEOUT = 10 * 1000; // 10 seconds buffer for poll finalization
19
+ let SchedulerService = SchedulerService_1 = class SchedulerService {
20
+ sessionKeysService;
21
+ redisService;
22
+ schedulerRegistry;
23
+ /**
24
+ * Logger
25
+ */
26
+ logger;
27
+ /**
28
+ * Create a new scheduler service instance.
29
+ * @param sessionKeysService - session keys service to manage session keys
30
+ * @param redisService - redis service to interact with Redis database
31
+ * @param schedulerRegistry - scheduler registry to manage scheduled tasks
32
+ */
33
+ constructor(sessionKeysService, redisService, schedulerRegistry) {
34
+ this.sessionKeysService = sessionKeysService;
35
+ this.redisService = redisService;
36
+ this.schedulerRegistry = schedulerRegistry;
37
+ this.logger = new Logger(SchedulerService_1.name);
38
+ }
39
+ /**
40
+ * Instantiate and schedule the saved polls in the database
41
+ * @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
42
+ * are injected and the module is fully initialized.
43
+ * This ensures your service is ready and all dependencies are available.
44
+ */
45
+ async onModuleInit() {
46
+ await this.restoreTimeouts();
47
+ }
48
+ /**
49
+ * Check if poll is scheduled for finalization
50
+ * @param args - Arguments for checking poll finalization
51
+ * @returns true if poll is scheduled for finalization, false otherwise
52
+ */
53
+ async isPollScheduled(scheduledPoll) {
54
+ const key = getPollKeyFromObject(scheduledPoll);
55
+ const { maciAddress, pollId, chain } = scheduledPoll;
56
+ const storedPoll = await this.redisService.get(key);
57
+ if (!storedPoll) {
58
+ return { isScheduled: false };
59
+ }
60
+ try {
61
+ this.schedulerRegistry.getTimeout(key);
62
+ }
63
+ catch (error) {
64
+ // delete redis data so user has to reschedule again
65
+ await this.redisService.delete(key);
66
+ return { isScheduled: false };
67
+ }
68
+ const { isPollTallied } = await this.getPollFinalizationData({
69
+ maciAddress,
70
+ pollId,
71
+ chain,
72
+ });
73
+ if (isPollTallied) {
74
+ this.deleteScheduledPoll({ maciAddress, pollId, chain });
75
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
76
+ throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
77
+ }
78
+ return { isScheduled: true };
79
+ }
80
+ /**
81
+ * Return the poll end date and whether it is tallied
82
+ * @param args - Arguments to retrieve poll data
83
+ */
84
+ async getPollFinalizationData({ pollId, maciAddress, chain, sessionKeyAddress, approval, }) {
85
+ const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
86
+ const [{ endDate, isMerged }, isPollTallied] = await Promise.all([
87
+ getPoll({
88
+ maciAddress,
89
+ pollId: BigInt(pollId),
90
+ signer,
91
+ }),
92
+ isTallied({
93
+ maciAddress,
94
+ pollId: String(pollId),
95
+ signer,
96
+ }),
97
+ ]);
98
+ return {
99
+ endDate: Number(endDate),
100
+ isPollTallied: isMerged ? isPollTallied : false,
101
+ };
102
+ }
103
+ /**
104
+ * Store poll information and schedule its finalization.
105
+ * @param args - Arguments for storing and scheduling poll finalization
106
+ * @return delay in milliseconds until the poll is scheduled for finalization
107
+ */
108
+ async setupPollFinalization({ maciAddress, pollId, mode, deploymentBlockNumber, chain, endDate, }) {
109
+ const key = getPollKeyFromObject({ maciAddress, pollId, chain });
110
+ await this.redisService.set(key, JSON.stringify({
111
+ maciAddress,
112
+ pollId,
113
+ mode,
114
+ deploymentBlockNumber,
115
+ chain,
116
+ endDate,
117
+ }));
118
+ const shouldBeExecutedIn = endDate * 1000 - Date.now();
119
+ const toBeExecutedIn = shouldBeExecutedIn > 0 ? shouldBeExecutedIn : 0;
120
+ const delay = toBeExecutedIn + BUFFER_TIMEOUT;
121
+ const timeout = setTimeout(() => {
122
+ // TODO: execute this.finalizePoll (implementing this in the next PR)
123
+ this.redisService.delete(key);
124
+ }, delay);
125
+ const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
126
+ if (isPollTimeoutScheduled) {
127
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
128
+ throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
129
+ }
130
+ this.schedulerRegistry.addTimeout(key, timeout);
131
+ return { delay };
132
+ }
133
+ /**
134
+ * Schedule poll for finalization
135
+ * @param args - Arguments to register poll for finalization
136
+ * @returns Response object with isScheduled property indicating the poll is scheduled
137
+ */
138
+ async registerPoll({ maciAddress, pollId, chain, mode, deploymentBlockNumber, sessionKeyAddress, approval, }) {
139
+ const { endDate, isPollTallied } = await this.getPollFinalizationData({
140
+ maciAddress,
141
+ pollId,
142
+ chain,
143
+ sessionKeyAddress,
144
+ approval,
145
+ });
146
+ if (isPollTallied) {
147
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
148
+ throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
149
+ }
150
+ const { isScheduled } = await this.isPollScheduled({
151
+ maciAddress,
152
+ pollId,
153
+ chain,
154
+ });
155
+ if (isScheduled) {
156
+ this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
157
+ throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
158
+ }
159
+ await this.setupPollFinalization({
160
+ maciAddress,
161
+ pollId,
162
+ chain,
163
+ deploymentBlockNumber,
164
+ mode,
165
+ endDate,
166
+ merged: false,
167
+ proofsGenerated: false,
168
+ });
169
+ return { isScheduled: true };
170
+ }
171
+ /**
172
+ * Delete scheduled poll
173
+ * @param args - Arguments to identify the scheduled poll
174
+ * @returns Response object with isScheduled property indicating the poll is no longer scheduled
175
+ */
176
+ async deleteScheduledPoll(scheduledPoll) {
177
+ const key = getPollKeyFromObject(scheduledPoll);
178
+ try {
179
+ this.schedulerRegistry.deleteTimeout(key);
180
+ }
181
+ catch (error) {
182
+ this.logger.error(`Failed to delete timeout for ${key}:`);
183
+ }
184
+ await this.redisService.delete(key);
185
+ return { isScheduled: false };
186
+ }
187
+ /**
188
+ * Restore all scheduled timeouts from Redis
189
+ */
190
+ async restoreTimeouts() {
191
+ const pollKeys = await this.redisService.getAll();
192
+ await Promise.all(pollKeys.map(async (key) => {
193
+ this.logger.log(`Restoring timeout for poll key: ${key}`);
194
+ try {
195
+ const value = await this.redisService.get(key);
196
+ if (!value) {
197
+ await this.redisService.delete(key);
198
+ return;
199
+ }
200
+ const poll = JSON.parse(value);
201
+ const { endDate, isPollTallied } = await this.getPollFinalizationData({
202
+ maciAddress: poll.maciAddress,
203
+ pollId: poll.pollId,
204
+ chain: poll.chain,
205
+ });
206
+ if (isPollTallied) {
207
+ await this.deleteScheduledPoll({
208
+ maciAddress: poll.maciAddress,
209
+ pollId: poll.pollId,
210
+ chain: poll.chain,
211
+ });
212
+ return;
213
+ }
214
+ const { delay } = await this.setupPollFinalization({
215
+ maciAddress: poll.maciAddress,
216
+ pollId: poll.pollId,
217
+ mode: poll.mode,
218
+ deploymentBlockNumber: poll.deploymentBlockNumber,
219
+ chain: poll.chain,
220
+ merged: poll.merged,
221
+ proofsGenerated: poll.proofsGenerated,
222
+ endDate,
223
+ });
224
+ this.logger.log(`poll ${value} to be executed at ${new Date(Date.now() + delay).toISOString()}`);
225
+ }
226
+ catch (error) {
227
+ this.logger.error(`Error restoring timeout for poll key: ${key}`, error);
228
+ }
229
+ }));
230
+ }
231
+ };
232
+ SchedulerService = SchedulerService_1 = __decorate([
233
+ Injectable(),
234
+ __metadata("design:paramtypes", [SessionKeysService,
235
+ RedisService,
236
+ SchedulerRegistry])
237
+ ], SchedulerService);
238
+ export { SchedulerService };
239
+ //# 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,61 @@
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
+ /**
43
+ * Is poll scheduled response
44
+ */
45
+ export interface IIsPollScheduledResponse {
46
+ /**
47
+ * Indicates if the poll is scheduled
48
+ *
49
+ */
50
+ isScheduled: boolean;
51
+ }
52
+ /**
53
+ * Setup poll finalization response
54
+ */
55
+ export interface ISetupPollFinalizationResponse {
56
+ /**
57
+ * delay in milliseconds until poll finalization is executed
58
+ */
59
+ delay: number;
60
+ }
61
+ //# 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;CACxB;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 +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,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAGzG,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAOhC,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,CA4BpG,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,7 +7,6 @@ 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
11
  dotenv.config();
12
12
  export const ENTRY_POINT = getEntryPoint("0.7");
@@ -27,8 +27,8 @@ export const generateTimestampPolicy = (endTime, start) => toTimestampPolicy({
27
27
  * @returns - the kernel account
28
28
  */
29
29
  export const getKernelAccount = async (sessionKeyAddress) => {
30
- const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
31
- const sessionKeySigner = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
30
+ const publicClient = await getPublicClient(ESupportedChains.OptimismSepolia);
31
+ const sessionKeySigner = privateKeyToAccount(process.env.PRIVATE_KEY);
32
32
  const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
33
33
  signer: sessionKeySigner,
34
34
  entryPoint: ENTRY_POINT,
@@ -42,7 +42,7 @@ export const getKernelAccount = async (sessionKeyAddress) => {
42
42
  signer: emptySessionKeySigner,
43
43
  policies: [toSudoPolicy({})],
44
44
  });
45
- const sessionKeyAccount = await createKernelAccount(publicClient, {
45
+ return await createKernelAccount(publicClient, {
46
46
  entryPoint: ENTRY_POINT,
47
47
  kernelVersion: KERNEL_VERSION,
48
48
  plugins: {
@@ -50,7 +50,6 @@ export const getKernelAccount = async (sessionKeyAddress) => {
50
50
  regular: permissionPlugin,
51
51
  },
52
52
  });
53
- return sessionKeyAccount;
54
53
  };
55
54
  /**
56
55
  * Generate an approval for a session key
@@ -59,6 +58,6 @@ export const getKernelAccount = async (sessionKeyAddress) => {
59
58
  */
60
59
  export const generateApproval = async (sessionKeyAddress) => {
61
60
  const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
62
- return serializePermissionAccount(sessionKeyAccount);
61
+ return await serializePermissionAccount(sessionKeyAccount);
63
62
  };
64
63
  //# 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,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,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,MAAM,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAE7E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAmB,CAAC,CAAC;IAC9E,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,7 +1,8 @@
1
1
  import { Signer } from "ethers";
2
2
  import type { AASigner } from "@maci-protocol/contracts";
3
+ import type { ESupportedChains } from "@maci-protocol/sdk";
3
4
  import type { Hex } from "viem";
4
- import { ESupportedNetworks, KernelClientType } from "../common";
5
+ import { KernelClientType } from "../common";
5
6
  import { FileService } from "../file/file.service";
6
7
  import { IGenerateSessionKeyReturn } from "./types";
7
8
  /**
@@ -33,7 +34,7 @@ export declare class SessionKeysService {
33
34
  * @param chain - the chain to use
34
35
  * @returns a KernelAccountClient
35
36
  */
36
- generateClientFromSessionKey(sessionKeyAddress: Hex, approval: string, chain: ESupportedNetworks): Promise<KernelClientType>;
37
+ generateClientFromSessionKey(sessionKeyAddress: Hex, approval: string, chain: ESupportedChains): Promise<KernelClientType>;
37
38
  /**
38
39
  * Get a signer from a kernel client (that could be generated from a session key)
39
40
  *
@@ -50,7 +51,7 @@ export declare class SessionKeysService {
50
51
  * @param approval - the approval string. Defaults to normal signer if not provided
51
52
  * @returns a signer
52
53
  */
53
- getCoordinatorSigner(chain: ESupportedNetworks, sessionKeyAddress?: Hex, approval?: string): Promise<AASigner | Signer>;
54
+ getCoordinatorSigner(chain: ESupportedChains, sessionKeyAddress?: Hex, approval?: string): Promise<AASigner | Signer>;
54
55
  /**
55
56
  * Deactivate a session key
56
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sessionKeys.service.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAc,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,qBACa,kBAAkB;IAWjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAVxC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;OAIG;gBAC0B,WAAW,EAAE,WAAW;IAIrD;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAiB9D;;;;;;;OAOG;IACG,4BAA4B,CAChC,iBAAiB,EAAE,GAAG,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B;;;;;OAKG;IACG,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU9E;;;;;;;;OAQG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,EACzB,iBAAiB,CAAC,EAAE,GAAG,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAS7B;;;;OAIG;IACH,oBAAoB,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI;CAGnD"}
1
+ {"version":3,"file":"sessionKeys.service.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAyB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,qBACa,kBAAkB;IAWjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAVxC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;OAIG;gBAC0B,WAAW,EAAE,WAAW;IAIrD;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAiB9D;;;;;;;OAOG;IACG,4BAA4B,CAChC,iBAAiB,EAAE,GAAG,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAiB5B;;;;;OAKG;IACG,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU9E;;;;;;;;OAQG;IACG,oBAAoB,CACxB,KAAK,EAAE,gBAAgB,EACvB,iBAAiB,CAAC,EAAE,GAAG,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAS7B;;;;OAIG;IACH,oBAAoB,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI;CAGnD"}
@@ -67,8 +67,7 @@ let SessionKeysService = SessionKeysService_1 = class SessionKeysService {
67
67
  throw new Error(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
68
68
  }
69
69
  try {
70
- const kernelClient = getKernelClient(sessionKey, approval, chain);
71
- return kernelClient;
70
+ return await getKernelClient(sessionKey, approval, chain);
72
71
  }
73
72
  catch (error) {
74
73
  this.logger.error("Error:", error);