@gzeoneth/gov-tracker 0.4.0-beta.18db0de → 0.4.0-beta.225fa70

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 (250) hide show
  1. package/README.md +18 -10
  2. package/dist/abis-json.d.ts +2290 -0
  3. package/dist/abis-json.d.ts.map +1 -0
  4. package/dist/abis-json.js +3174 -0
  5. package/dist/abis-json.js.map +1 -0
  6. package/dist/abis.d.ts +11 -7
  7. package/dist/abis.d.ts.map +1 -1
  8. package/dist/abis.js +29 -1
  9. package/dist/abis.js.map +1 -1
  10. package/dist/calldata/decoder.d.ts.map +1 -1
  11. package/dist/calldata/decoder.js +33 -28
  12. package/dist/calldata/decoder.js.map +1 -1
  13. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  14. package/dist/calldata/parameter-decoder.js +19 -25
  15. package/dist/calldata/parameter-decoder.js.map +1 -1
  16. package/dist/calldata/retryable-ticket.d.ts +2 -2
  17. package/dist/calldata/retryable-ticket.d.ts.map +1 -1
  18. package/dist/calldata/retryable-ticket.js +17 -12
  19. package/dist/calldata/retryable-ticket.js.map +1 -1
  20. package/dist/calldata/signature-lookup.js +5 -4
  21. package/dist/calldata/signature-lookup.js.map +1 -1
  22. package/dist/cli/cli.js +41 -20
  23. package/dist/cli/cli.js.map +1 -1
  24. package/dist/cli/lib/cli.d.ts +4 -2
  25. package/dist/cli/lib/cli.d.ts.map +1 -1
  26. package/dist/cli/lib/cli.js +34 -18
  27. package/dist/cli/lib/cli.js.map +1 -1
  28. package/dist/cli/lib/election-check.d.ts.map +1 -1
  29. package/dist/cli/lib/election-check.js +2 -1
  30. package/dist/cli/lib/election-check.js.map +1 -1
  31. package/dist/cli/lib/json-state.js +1 -1
  32. package/dist/cli/lib/json-state.js.map +1 -1
  33. package/dist/cli/tui/components/StageProgress.js +1 -1
  34. package/dist/cli/tui/components/StageProgress.js.map +1 -1
  35. package/dist/cli/tui/components/StageRow.d.ts.map +1 -1
  36. package/dist/cli/tui/components/StageRow.js +15 -20
  37. package/dist/cli/tui/components/StageRow.js.map +1 -1
  38. package/dist/cli/tui/components/VotingStats.d.ts.map +1 -1
  39. package/dist/cli/tui/components/VotingStats.js +2 -1
  40. package/dist/cli/tui/components/VotingStats.js.map +1 -1
  41. package/dist/cli/tui/hooks/useCache.d.ts.map +1 -1
  42. package/dist/cli/tui/hooks/useCache.js +2 -1
  43. package/dist/cli/tui/hooks/useCache.js.map +1 -1
  44. package/dist/cli/tui/hooks/useElectionData.d.ts.map +1 -1
  45. package/dist/cli/tui/hooks/useElectionData.js +3 -2
  46. package/dist/cli/tui/hooks/useElectionData.js.map +1 -1
  47. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
  48. package/dist/cli/tui/hooks/useNavigation.js +2 -3
  49. package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
  50. package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -1
  51. package/dist/cli/tui/hooks/useProposals.js +26 -36
  52. package/dist/cli/tui/hooks/useProposals.js.map +1 -1
  53. package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -1
  54. package/dist/cli/tui/hooks/useStageCalldata.js +2 -1
  55. package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -1
  56. package/dist/cli/tui/utils/index.d.ts +7 -7
  57. package/dist/cli/tui/utils/index.d.ts.map +1 -1
  58. package/dist/cli/tui/utils/index.js +18 -13
  59. package/dist/cli/tui/utils/index.js.map +1 -1
  60. package/dist/cli/tui/utils/markdown-parser.d.ts +5 -0
  61. package/dist/cli/tui/utils/markdown-parser.d.ts.map +1 -1
  62. package/dist/cli/tui/utils/markdown-parser.js +16 -0
  63. package/dist/cli/tui/utils/markdown-parser.js.map +1 -1
  64. package/dist/cli/tui/utils/navigation.d.ts +1 -0
  65. package/dist/cli/tui/utils/navigation.d.ts.map +1 -1
  66. package/dist/cli/tui/utils/navigation.js +9 -5
  67. package/dist/cli/tui/utils/navigation.js.map +1 -1
  68. package/dist/cli/tui/utils/proposal-detail-helpers.js +6 -6
  69. package/dist/cli/tui/utils/proposal-detail-helpers.js.map +1 -1
  70. package/dist/cli/tui/utils/stage-status.d.ts +4 -0
  71. package/dist/cli/tui/utils/stage-status.d.ts.map +1 -1
  72. package/dist/cli/tui/utils/stage-status.js +47 -1
  73. package/dist/cli/tui/utils/stage-status.js.map +1 -1
  74. package/dist/cli/tui/utils/time.d.ts +4 -4
  75. package/dist/cli/tui/utils/time.d.ts.map +1 -1
  76. package/dist/cli/tui/utils/time.js +13 -11
  77. package/dist/cli/tui/utils/time.js.map +1 -1
  78. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
  79. package/dist/cli/tui/views/CalldataView.js +3 -2
  80. package/dist/cli/tui/views/CalldataView.js.map +1 -1
  81. package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -1
  82. package/dist/cli/tui/views/DescriptionView.js +4 -2
  83. package/dist/cli/tui/views/DescriptionView.js.map +1 -1
  84. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
  85. package/dist/cli/tui/views/ElectionView.js +4 -9
  86. package/dist/cli/tui/views/ElectionView.js.map +1 -1
  87. package/dist/constants.d.ts +47 -23
  88. package/dist/constants.d.ts.map +1 -1
  89. package/dist/constants.js +67 -21
  90. package/dist/constants.js.map +1 -1
  91. package/dist/data/bundled-cache.json +352 -20
  92. package/dist/deduplication.d.ts.map +1 -1
  93. package/dist/deduplication.js +34 -54
  94. package/dist/deduplication.js.map +1 -1
  95. package/dist/discovery/governor-discovery.d.ts +21 -1
  96. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  97. package/dist/discovery/governor-discovery.js +47 -13
  98. package/dist/discovery/governor-discovery.js.map +1 -1
  99. package/dist/discovery/timelock-discovery.d.ts.map +1 -1
  100. package/dist/discovery/timelock-discovery.js +27 -30
  101. package/dist/discovery/timelock-discovery.js.map +1 -1
  102. package/dist/election/contracts.d.ts.map +1 -1
  103. package/dist/election/contracts.js +4 -1
  104. package/dist/election/contracts.js.map +1 -1
  105. package/dist/election/details.d.ts.map +1 -1
  106. package/dist/election/details.js +7 -3
  107. package/dist/election/details.js.map +1 -1
  108. package/dist/election/index.d.ts +3 -1
  109. package/dist/election/index.d.ts.map +1 -1
  110. package/dist/election/index.js +12 -1
  111. package/dist/election/index.js.map +1 -1
  112. package/dist/election/params.d.ts.map +1 -1
  113. package/dist/election/params.js +14 -28
  114. package/dist/election/params.js.map +1 -1
  115. package/dist/election/participants.d.ts.map +1 -1
  116. package/dist/election/participants.js +21 -26
  117. package/dist/election/participants.js.map +1 -1
  118. package/dist/election/proposal-ids.js +19 -22
  119. package/dist/election/proposal-ids.js.map +1 -1
  120. package/dist/election/status.d.ts +28 -1
  121. package/dist/election/status.d.ts.map +1 -1
  122. package/dist/election/status.js +113 -0
  123. package/dist/election/status.js.map +1 -1
  124. package/dist/election/write.d.ts +132 -0
  125. package/dist/election/write.d.ts.map +1 -0
  126. package/dist/election/write.js +184 -0
  127. package/dist/election/write.js.map +1 -0
  128. package/dist/governance/index.d.ts +5 -0
  129. package/dist/governance/index.d.ts.map +1 -0
  130. package/dist/governance/index.js +28 -0
  131. package/dist/governance/index.js.map +1 -0
  132. package/dist/governance/read.d.ts +50 -0
  133. package/dist/governance/read.d.ts.map +1 -0
  134. package/dist/governance/read.js +194 -0
  135. package/dist/governance/read.js.map +1 -0
  136. package/dist/governance/write.d.ts +54 -0
  137. package/dist/governance/write.d.ts.map +1 -0
  138. package/dist/governance/write.js +132 -0
  139. package/dist/governance/write.js.map +1 -0
  140. package/dist/index.d.ts +36 -21
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +122 -15
  143. package/dist/index.js.map +1 -1
  144. package/dist/simulation/index.d.ts +4 -1
  145. package/dist/simulation/index.d.ts.map +1 -1
  146. package/dist/simulation/index.js +5 -1
  147. package/dist/simulation/index.js.map +1 -1
  148. package/dist/simulation/simulation-data.d.ts +33 -2
  149. package/dist/simulation/simulation-data.d.ts.map +1 -1
  150. package/dist/simulation/simulation-data.js +68 -24
  151. package/dist/simulation/simulation-data.js.map +1 -1
  152. package/dist/simulation/tenderly-payloads.d.ts +107 -0
  153. package/dist/simulation/tenderly-payloads.d.ts.map +1 -0
  154. package/dist/simulation/tenderly-payloads.js +103 -0
  155. package/dist/simulation/tenderly-payloads.js.map +1 -0
  156. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  157. package/dist/stages/l2-to-l1-message.js +43 -63
  158. package/dist/stages/l2-to-l1-message.js.map +1 -1
  159. package/dist/stages/proposal-queued.js.map +1 -1
  160. package/dist/stages/retryables.d.ts.map +1 -1
  161. package/dist/stages/retryables.js +10 -9
  162. package/dist/stages/retryables.js.map +1 -1
  163. package/dist/stages/timelock.d.ts +43 -3
  164. package/dist/stages/timelock.d.ts.map +1 -1
  165. package/dist/stages/timelock.js +170 -53
  166. package/dist/stages/timelock.js.map +1 -1
  167. package/dist/stages/utils.d.ts +56 -1
  168. package/dist/stages/utils.d.ts.map +1 -1
  169. package/dist/stages/utils.js +146 -30
  170. package/dist/stages/utils.js.map +1 -1
  171. package/dist/tracker/bundled-cache.d.ts +136 -0
  172. package/dist/tracker/bundled-cache.d.ts.map +1 -0
  173. package/dist/tracker/bundled-cache.js +207 -0
  174. package/dist/tracker/bundled-cache.js.map +1 -0
  175. package/dist/tracker/checkpoint-helpers.d.ts +20 -1
  176. package/dist/tracker/checkpoint-helpers.d.ts.map +1 -1
  177. package/dist/tracker/checkpoint-helpers.js +41 -7
  178. package/dist/tracker/checkpoint-helpers.js.map +1 -1
  179. package/dist/tracker/discovery.d.ts +3 -0
  180. package/dist/tracker/discovery.d.ts.map +1 -1
  181. package/dist/tracker/discovery.js +59 -34
  182. package/dist/tracker/discovery.js.map +1 -1
  183. package/dist/tracker/pipeline.d.ts +3 -10
  184. package/dist/tracker/pipeline.d.ts.map +1 -1
  185. package/dist/tracker/pipeline.js +18 -32
  186. package/dist/tracker/pipeline.js.map +1 -1
  187. package/dist/tracker/query.d.ts +1 -0
  188. package/dist/tracker/query.d.ts.map +1 -1
  189. package/dist/tracker/query.js +28 -36
  190. package/dist/tracker/query.js.map +1 -1
  191. package/dist/tracker/state.d.ts +3 -2
  192. package/dist/tracker/state.d.ts.map +1 -1
  193. package/dist/tracker/state.js +5 -4
  194. package/dist/tracker/state.js.map +1 -1
  195. package/dist/tracker.d.ts +33 -11
  196. package/dist/tracker.d.ts.map +1 -1
  197. package/dist/tracker.js +76 -43
  198. package/dist/tracker.js.map +1 -1
  199. package/dist/types/config.d.ts +39 -3
  200. package/dist/types/config.d.ts.map +1 -1
  201. package/dist/types/election.d.ts +23 -0
  202. package/dist/types/election.d.ts.map +1 -1
  203. package/dist/types/index.d.ts +2 -2
  204. package/dist/types/index.d.ts.map +1 -1
  205. package/dist/types/index.js.map +1 -1
  206. package/dist/types/simulation.d.ts +2 -2
  207. package/dist/types/simulation.d.ts.map +1 -1
  208. package/dist/types/tracking.d.ts +2 -2
  209. package/dist/types/tracking.d.ts.map +1 -1
  210. package/dist/utils/chain.d.ts +5 -1
  211. package/dist/utils/chain.d.ts.map +1 -1
  212. package/dist/utils/chain.js +7 -0
  213. package/dist/utils/chain.js.map +1 -1
  214. package/dist/utils/formatters.d.ts +2 -6
  215. package/dist/utils/formatters.d.ts.map +1 -1
  216. package/dist/utils/formatters.js +9 -12
  217. package/dist/utils/formatters.js.map +1 -1
  218. package/dist/utils/log-filters.js +1 -1
  219. package/dist/utils/log-filters.js.map +1 -1
  220. package/dist/utils/logger.d.ts +1 -0
  221. package/dist/utils/logger.d.ts.map +1 -1
  222. package/dist/utils/logger.js +1 -0
  223. package/dist/utils/logger.js.map +1 -1
  224. package/dist/utils/multicall.d.ts +0 -1
  225. package/dist/utils/multicall.d.ts.map +1 -1
  226. package/dist/utils/rpc-utils.d.ts +5 -0
  227. package/dist/utils/rpc-utils.d.ts.map +1 -1
  228. package/dist/utils/rpc-utils.js +9 -1
  229. package/dist/utils/rpc-utils.js.map +1 -1
  230. package/dist/utils/stage-metadata.d.ts +19 -0
  231. package/dist/utils/stage-metadata.d.ts.map +1 -1
  232. package/dist/utils/stage-metadata.js +44 -0
  233. package/dist/utils/stage-metadata.js.map +1 -1
  234. package/dist/utils/timing.d.ts +3 -10
  235. package/dist/utils/timing.d.ts.map +1 -1
  236. package/dist/utils/timing.js +9 -22
  237. package/dist/utils/timing.js.map +1 -1
  238. package/package.json +3 -2
  239. package/dist/cli/tui/utils/calldata-formatter.d.ts +0 -7
  240. package/dist/cli/tui/utils/calldata-formatter.d.ts.map +0 -1
  241. package/dist/cli/tui/utils/calldata-formatter.js +0 -14
  242. package/dist/cli/tui/utils/calldata-formatter.js.map +0 -1
  243. package/dist/cli/tui/utils/stage-formatter.d.ts +0 -7
  244. package/dist/cli/tui/utils/stage-formatter.d.ts.map +0 -1
  245. package/dist/cli/tui/utils/stage-formatter.js +0 -13
  246. package/dist/cli/tui/utils/stage-formatter.js.map +0 -1
  247. package/dist/cli/tui/utils/text.d.ts +0 -7
  248. package/dist/cli/tui/utils/text.d.ts.map +0 -1
  249. package/dist/cli/tui/utils/text.js +0 -12
  250. package/dist/cli/tui/utils/text.js.map +0 -1
@@ -11,44 +11,30 @@ const rpc_utils_1 = require("../utils/rpc-utils");
11
11
  const abis_1 = require("../abis");
12
12
  const salt_computation_1 = require("../utils/salt-computation");
13
13
  const logger_1 = require("../utils/logger");
14
+ const governor_discovery_1 = require("../discovery/governor-discovery");
14
15
  const contracts_1 = require("./contracts");
15
16
  const proposal_ids_1 = require("./proposal-ids");
16
17
  const log = logger_1.loggers.election;
17
18
  async function findProposalCreatedParams(proposalId, governorAddress, governor, provider) {
18
19
  const topic = abis_1.proposalCreatedInterface.getEventTopic("ProposalCreated");
19
- let startBlock;
20
- try {
21
- const snapshot = await (0, rpc_utils_1.queryWithRetry)(() => governor.proposalSnapshot(proposalId));
22
- startBlock = Math.max(0, snapshot.toNumber() - 1000);
23
- }
24
- catch {
25
- const currentBlock = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlockNumber());
26
- startBlock = Math.max(0, currentBlock - 10000);
27
- }
28
- const currentBlock = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlockNumber());
20
+ const { fromBlock, toBlock } = await (0, contracts_1.getLogQueryBlockRange)(governor, proposalId, provider);
29
21
  const logs = await (0, rpc_utils_1.queryWithRetry)(() => provider.getLogs({
30
22
  address: governorAddress,
31
23
  topics: [topic],
32
- fromBlock: startBlock,
33
- toBlock: currentBlock,
24
+ fromBlock,
25
+ toBlock,
34
26
  }));
35
27
  for (const eventLog of logs) {
36
- try {
37
- const parsed = abis_1.proposalCreatedInterface.parseLog(eventLog);
38
- const args = parsed.args;
39
- if (args.proposalId.toString() === proposalId) {
40
- log("Found ProposalCreated event for proposal %s", proposalId);
41
- return {
42
- targets: args.targets,
43
- values: parsed.args[3], // `values` collides with ethers.js internals
44
- calldatas: args.calldatas,
45
- description: args.description,
46
- descriptionHash: (0, salt_computation_1.saltFromDescription)(args.description),
47
- };
48
- }
49
- }
50
- catch {
51
- continue;
28
+ const parsed = (0, governor_discovery_1.parseProposalCreatedRaw)(eventLog);
29
+ if (parsed && parsed.proposalId === proposalId) {
30
+ log("Found ProposalCreated event for proposal %s", proposalId);
31
+ return {
32
+ targets: parsed.targets,
33
+ values: parsed.values,
34
+ calldatas: parsed.calldatas,
35
+ description: parsed.description,
36
+ descriptionHash: (0, salt_computation_1.saltFromDescription)(parsed.description),
37
+ };
52
38
  }
53
39
  }
54
40
  log("ProposalCreated event not found for proposal %s", proposalId);
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/election/params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/election/params.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"participants.d.ts","sourceRoot":"","sources":["../../src/election/participants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAK3C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAsB9D,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2B9B;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAmC5B;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAiD5B"}
1
+ {"version":3,"file":"participants.d.ts","sourceRoot":"","sources":["../../src/election/participants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAK3C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO9D,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8B9B;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAmC5B;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,eAAe,EAAE,CAAC,CAoD5B"}
@@ -10,19 +10,8 @@ const abis_1 = require("../abis");
10
10
  const logger_1 = require("../utils/logger");
11
11
  const multicall_1 = require("../utils/multicall");
12
12
  const contracts_1 = require("./contracts");
13
+ const log_filters_1 = require("../utils/log-filters");
13
14
  const log = logger_1.loggers.election;
14
- /** Parse logs safely, returning mapped results for successfully parsed logs only */
15
- function parseLogsWithMapper(logs, iface, mapper) {
16
- return logs.flatMap((eventLog) => {
17
- try {
18
- const parsed = iface.parseLog(eventLog);
19
- return [mapper(parsed, eventLog)];
20
- }
21
- catch {
22
- return [];
23
- }
24
- });
25
- }
26
15
  async function getContenders(proposalId, provider, nomineeGovernorAddress = constants_1.ADDRESSES.ELECTION_NOMINEE_GOVERNOR) {
27
16
  log("getContenders for proposal %s", proposalId);
28
17
  const governor = (0, contracts_1.getNomineeGovernor)(nomineeGovernorAddress, provider);
@@ -37,11 +26,14 @@ async function getContenders(proposalId, provider, nomineeGovernorAddress = cons
37
26
  fromBlock,
38
27
  toBlock,
39
28
  }));
40
- const contenders = parseLogsWithMapper(logs, iface, (parsed, eventLog) => ({
41
- address: parsed.args.contender.toLowerCase(),
42
- registeredAtBlock: eventLog.blockNumber,
43
- registrationTxHash: eventLog.transactionHash,
44
- }));
29
+ const contenders = (0, log_filters_1.parseLogsSafe)(logs, (eventLog) => {
30
+ const parsed = iface.parseLog(eventLog);
31
+ return {
32
+ address: parsed.args.contender.toLowerCase(),
33
+ registeredAtBlock: eventLog.blockNumber,
34
+ registrationTxHash: eventLog.transactionHash,
35
+ };
36
+ });
45
37
  log("Found %d contenders for proposal %s", contenders.length, proposalId);
46
38
  return contenders;
47
39
  }
@@ -79,21 +71,24 @@ async function getExcludedNominees(proposalId, provider, nomineeGovernorAddress
79
71
  fromBlock,
80
72
  toBlock,
81
73
  }));
82
- const parsedLogs = parseLogsWithMapper(logs, iface, (parsed, eventLog) => ({
83
- eventLog,
84
- nominee: parsed.args.nominee,
85
- }));
74
+ const parsedLogs = (0, log_filters_1.parseLogsSafe)(logs, (eventLog) => {
75
+ const parsed = iface.parseLog(eventLog);
76
+ return {
77
+ eventLog,
78
+ nominee: parsed.args.nominee,
79
+ };
80
+ });
86
81
  if (parsedLogs.length === 0) {
87
82
  return [];
88
83
  }
89
- const calls = parsedLogs.map(({ nominee }) => (0, multicall_1.buildCallInput)(nomineeGovernorAddress, abis_1.nomineeElectionGovernorInterface, "votesReceived", [proposalId, nominee]));
84
+ const calls = parsedLogs.map((item) => (0, multicall_1.buildCallInput)(nomineeGovernorAddress, abis_1.nomineeElectionGovernorInterface, "votesReceived", [proposalId, item.nominee]));
90
85
  const results = await (0, multicall_1.multicall)(provider, calls);
91
- const excluded = parsedLogs.map(({ eventLog, nominee }, i) => ({
92
- address: nominee.toLowerCase(),
86
+ const excluded = parsedLogs.map((item, i) => ({
87
+ address: item.nominee.toLowerCase(),
93
88
  votesReceived: results[i] ?? ethers_1.BigNumber.from(0),
94
89
  isExcluded: true,
95
- excludedAtBlock: eventLog.blockNumber,
96
- exclusionTxHash: eventLog.transactionHash,
90
+ excludedAtBlock: item.eventLog.blockNumber,
91
+ exclusionTxHash: item.eventLog.transactionHash,
97
92
  }));
98
93
  log("Found %d excluded nominees for proposal %s", excluded.length, proposalId);
99
94
  return excluded;
@@ -1 +1 @@
1
- {"version":3,"file":"participants.js","sourceRoot":"","sources":["../../src/election/participants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"participants.js","sourceRoot":"","sources":["../../src/election/participants.ts"],"names":[],"mappings":"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"}
@@ -70,8 +70,8 @@ async function getElectionProposalIds(electionIndex, provider, options = {}) {
70
70
  ]),
71
71
  ]);
72
72
  const result = {
73
- nomineeProposalId: nomineeState !== null ? nomineeProposalId : null,
74
- memberProposalId: memberState !== null ? computedMemberProposalId : null,
73
+ nomineeProposalId: nomineeState != null ? nomineeProposalId : null,
74
+ memberProposalId: memberState != null ? computedMemberProposalId : null,
75
75
  };
76
76
  electionProposalIdsCache.set(electionIndex, result, blockNumber);
77
77
  return result;
@@ -87,29 +87,26 @@ async function getElectionIndexForProposalId(proposalId, l2Provider, l1Provider,
87
87
  log("getElectionIndexForProposalId: searching for proposal %s", proposalId);
88
88
  const status = await (0, status_1.checkElectionStatus)(l2Provider, l1Provider);
89
89
  const electionCount = status.electionCount;
90
+ // Fetch all election proposal IDs in parallel
91
+ const electionIndices = Array.from({ length: electionCount }, (_, i) => i);
92
+ const results = await Promise.allSettled(electionIndices.map((i) => getElectionProposalIds(i, l2Provider, { blockNumber })));
93
+ // Search from newest to oldest for a match
90
94
  for (let i = electionCount - 1; i >= 0; i--) {
91
- log("checking election %d", i);
92
- try {
93
- const { nomineeProposalId, memberProposalId } = await getElectionProposalIds(i, l2Provider, {
94
- blockNumber,
95
- });
96
- log("got election %d proposal IDs", i);
97
- const nomMatch = nomineeProposalId === proposalId;
98
- const memMatch = memberProposalId === proposalId;
99
- log("election %d: nomId=%s nomMatch=%s", i, nomineeProposalId, nomMatch);
100
- if (nomMatch) {
101
- log("Found proposal %s as nominee proposal for election %d", proposalId, i);
102
- return i;
103
- }
104
- if (memMatch) {
105
- log("Found proposal %s as member proposal for election %d", proposalId, i);
106
- return i;
107
- }
108
- }
109
- catch (err) {
110
- log(" -> error: %s", err.message);
95
+ const result = results[i];
96
+ if (result.status === "rejected") {
97
+ log("election %d: error - %s", i, (0, rpc_utils_1.getErrorMessage)(result.reason));
111
98
  continue;
112
99
  }
100
+ const { nomineeProposalId, memberProposalId } = result.value;
101
+ log("election %d: nomId=%s memId=%s", i, nomineeProposalId, memberProposalId);
102
+ if (nomineeProposalId === proposalId) {
103
+ log("Found proposal %s as nominee proposal for election %d", proposalId, i);
104
+ return i;
105
+ }
106
+ if (memberProposalId === proposalId) {
107
+ log("Found proposal %s as member proposal for election %d", proposalId, i);
108
+ return i;
109
+ }
113
110
  }
114
111
  log("Proposal %s not found in any election", proposalId);
115
112
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"proposal-ids.js","sourceRoot":"","sources":["../../src/election/proposal-ids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposal-ids.js","sourceRoot":"","sources":["../../src/election/proposal-ids.ts"],"names":[],"mappings":";;AA+BA,sEAEC;AAED,gDAEC;AAED,8DAmBC;AAED,sDAcC;AAED,kEAOC;AAED,wDAwCC;AAQD,sEAyCC;AA9KD,mCAA2C;AAC3C,4CAAyC;AACzC,kDAAqE;AACrE,kCAA4C;AAC5C,kDAA+D;AAC/D,gEAAgE;AAChE,sDAAwD;AACxD,4CAA0C;AAC1C,2CAAoE;AACpE,qCAA+C;AAE/C,MAAM,GAAG,GAAG,gBAAO,CAAC,QAAQ,CAAC;AAc7B,MAAM,wBAAwB,GAAG,IAAI,8BAAgB,CAA8B;IACjF,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,OAAO,MAAM,CAAC,iBAAiB,KAAK,IAAI,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,CAAC;IAC/E,CAAC;CACF,CAAC,CAAC;AAEH,SAAgB,6BAA6B;IAC3C,wBAAwB,CAAC,KAAK,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB;IAChC,6BAA6B,EAAE,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,aAAqB,EACrB,QAAyB;IAEzB,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAKtF,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC;IAC9D,MAAM,eAAe,GAAG,IAAA,sCAAmB,EAAC,WAAW,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,CAC3C,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CACnE,CAAC;IAEF,OAAO,kBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,aAAqB,EACrB,QAAmC,EACnC,yBAAiC,qBAAS,CAAC,yBAAyB;IAEpE,MAAM,QAAQ,GAAG,IAAA,8BAAkB,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAC/C,aAAqB,EACrB,QAAmC,EACnC,wBAAgC,qBAAS,CAAC,wBAAwB;IAElE,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACpE,OAAO,yBAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,aAAqB,EACrB,QAAmC,EACnC,UAAyC,EAAE;IAE3C,MAAM,EACJ,sBAAsB,GAAG,qBAAS,CAAC,yBAAyB,EAC5D,qBAAqB,GAAG,qBAAS,CAAC,wBAAwB,EAC1D,WAAW,EACX,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,IAAA,6BAAiB,EAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAE1E,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtE,yBAAyB,CAAC,aAAa,EAAE,eAAe,CAAC;QACzD,yBAAyB,CAAC,aAAa,EAAE,cAAc,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,IAAA,qBAAS,EAAC,QAAQ,EAAE;QAC5D,IAAA,0BAAc,EAAS,sBAAsB,EAAE,wBAAiB,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC/F,IAAA,0BAAc,EAAS,qBAAqB,EAAE,wBAAiB,EAAE,OAAO,EAAE;YACxE,wBAAwB;SACzB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,MAAM,GAAwB;QAClC,iBAAiB,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;QAClE,gBAAgB,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI;KACxE,CAAC;IAEF,wBAAwB,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,6BAA6B,CACjD,UAAkB,EAClB,UAAqC,EACrC,UAAqC,EACrC,UAA8E,EAAE;IAEhF,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,GAAG,CAAC,0DAA0D,EAAE,UAAU,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAmB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE3C,8CAA8C;IAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CACnF,CAAC;IAEF,2CAA2C;IAC3C,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,GAAG,CAAC,yBAAyB,EAAE,CAAC,EAAE,IAAA,2BAAe,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7D,GAAG,CAAC,gCAAgC,EAAE,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAE9E,IAAI,iBAAiB,KAAK,UAAU,EAAE,CAAC;YACrC,GAAG,CAAC,uDAAuD,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACpC,GAAG,CAAC,sDAAsD,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,GAAG,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { ethers } from "ethers";
2
- import { ElectionPhase, ElectionStatus, ProposalState } from "../types";
2
+ import { ElectionConfig, ElectionPhase, ElectionProposalStatus, ElectionStatus, ProposalState } from "../types";
3
3
  /**
4
4
  * Get the current election count without fetching full status.
5
5
  * This is a lightweight call that only fetches the count (single multicall).
@@ -12,4 +12,31 @@ export declare function getElectionCount(l2Provider: ethers.providers.Provider,
12
12
  export declare function determineElectionPhase(nomineeProposalState: ProposalState | null, memberProposalId: string | null, memberProposalState: ProposalState | null, isInVettingPeriod: boolean): ElectionPhase;
13
13
  export declare function checkElectionStatus(l2Provider: ethers.providers.Provider, l1Provider: ethers.providers.Provider, nomineeGovernorAddress?: string): Promise<ElectionStatus>;
14
14
  export declare function hasVettingPeriod(governorAddress: string, provider: ethers.providers.Provider): Promise<boolean>;
15
+ /**
16
+ * Full status + phase lookup for a specific election.
17
+ *
18
+ * Returns a complete `ElectionProposalStatus` with all fields populated from
19
+ * on-chain data: proposal states, compliant nominee count, vetting deadline,
20
+ * cohort, and derived phase. Replaces the pattern of calling multiple SDK
21
+ * functions and manually assembling the result.
22
+ *
23
+ * The returned `ElectionProposalStatus.stages` field is not populated (use
24
+ * the full tracking pipeline via `ProposalStageTracker.trackElection()` for
25
+ * stage-level tracking).
26
+ *
27
+ * @param l2Provider - L2 provider (also used for L1 block number via ArbSys)
28
+ * @param electionIndex - The election index to check (0-based)
29
+ * @param config - Deployment config with contract addresses (defaults to mainnet)
30
+ */
31
+ export declare function getElectionStatus(l2Provider: ethers.providers.Provider, electionIndex: number, config?: ElectionConfig): Promise<ElectionProposalStatus>;
32
+ /**
33
+ * Batch fetch status for all elections.
34
+ *
35
+ * Fetches the election count once, then queries each election in parallel
36
+ * via `getElectionStatus`. Individual failures are logged and skipped.
37
+ *
38
+ * @param l2Provider - L2 provider
39
+ * @param config - Deployment config (defaults to mainnet)
40
+ */
41
+ export declare function getAllElectionStatuses(l2Provider: ethers.providers.Provider, config?: ElectionConfig): Promise<ElectionProposalStatus[]>;
15
42
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/election/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAI3C,OAAO,EAAc,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASpF;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,sBAAsB,CACpC,oBAAoB,EAAE,aAAa,GAAG,IAAI,EAC1C,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,mBAAmB,EAAE,aAAa,GAAG,IAAI,EACzC,iBAAiB,EAAE,OAAO,GACzB,aAAa,CA0Bf;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,cAAc,CAAC,CAkEzB;AAED,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC,OAAO,CAAC,CASlB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/election/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAI3C,OAAO,EAEL,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAWlB;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,sBAAsB,CACpC,oBAAoB,EAAE,aAAa,GAAG,IAAI,EAC1C,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,mBAAmB,EAAE,aAAa,GAAG,IAAI,EACzC,iBAAiB,EAAE,OAAO,GACzB,aAAa,CA0Bf;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,sBAAsB,GAAE,MAA4C,GACnE,OAAO,CAAC,cAAc,CAAC,CAwEzB;AAED,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,cAAwC,GAC/C,OAAO,CAAC,sBAAsB,CAAC,CAwFjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,MAAM,GAAE,cAAwC,GAC/C,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAanC"}
@@ -4,14 +4,19 @@ exports.getElectionCount = getElectionCount;
4
4
  exports.determineElectionPhase = determineElectionPhase;
5
5
  exports.checkElectionStatus = checkElectionStatus;
6
6
  exports.hasVettingPeriod = hasVettingPeriod;
7
+ exports.getElectionStatus = getElectionStatus;
8
+ exports.getAllElectionStatuses = getAllElectionStatuses;
9
+ const ethers_1 = require("ethers");
7
10
  const constants_1 = require("../constants");
8
11
  const formatters_1 = require("../utils/formatters");
9
12
  const rpc_utils_1 = require("../utils/rpc-utils");
13
+ const constants_2 = require("../constants");
10
14
  const timing_1 = require("../utils/timing");
11
15
  const logger_1 = require("../utils/logger");
12
16
  const abis_1 = require("../abis");
13
17
  const contracts_1 = require("./contracts");
14
18
  const multicall_1 = require("../utils/multicall");
19
+ const proposal_ids_1 = require("./proposal-ids");
15
20
  const log = logger_1.loggers.election;
16
21
  /**
17
22
  * Get the current election count without fetching full status.
@@ -64,6 +69,9 @@ async function checkElectionStatus(l2Provider, l1Provider, nomineeGovernorAddres
64
69
  ]),
65
70
  ]);
66
71
  const electionCount = electionCountResult[0];
72
+ if (!electionCount) {
73
+ throw new Error("Failed to fetch election count from nominee governor");
74
+ }
67
75
  log("L1 block number from L2: %s", l1BlockNumber.toString());
68
76
  const l1Block = await (0, rpc_utils_1.queryWithRetry)(() => l1Provider.getBlock(l1BlockNumber.toNumber()));
69
77
  if (!l1Block) {
@@ -78,6 +86,9 @@ async function checkElectionStatus(l2Provider, l1Provider, nomineeGovernorAddres
78
86
  ]);
79
87
  const nextElectionTimestamp = electionResults[0];
80
88
  const cohort = electionResults[1];
89
+ if (!nextElectionTimestamp || cohort === undefined) {
90
+ throw new Error("Failed to fetch election details from nominee governor");
91
+ }
81
92
  log("electionCount=%s nextTimestamp=%s cohort=%d", electionCount.toString(), nextElectionTimestamp.toString(), cohort);
82
93
  const secondsUntilElection = Math.max(0, nextElectionTimestamp.toNumber() - currentL1Timestamp);
83
94
  const canCreateElection = secondsUntilElection === 0;
@@ -102,4 +113,106 @@ async function hasVettingPeriod(governorAddress, provider) {
102
113
  return false;
103
114
  }
104
115
  }
116
+ /**
117
+ * Full status + phase lookup for a specific election.
118
+ *
119
+ * Returns a complete `ElectionProposalStatus` with all fields populated from
120
+ * on-chain data: proposal states, compliant nominee count, vetting deadline,
121
+ * cohort, and derived phase. Replaces the pattern of calling multiple SDK
122
+ * functions and manually assembling the result.
123
+ *
124
+ * The returned `ElectionProposalStatus.stages` field is not populated (use
125
+ * the full tracking pipeline via `ProposalStageTracker.trackElection()` for
126
+ * stage-level tracking).
127
+ *
128
+ * @param l2Provider - L2 provider (also used for L1 block number via ArbSys)
129
+ * @param electionIndex - The election index to check (0-based)
130
+ * @param config - Deployment config with contract addresses (defaults to mainnet)
131
+ */
132
+ async function getElectionStatus(l2Provider, electionIndex, config = constants_1.MAINNET_ELECTION_CONFIG) {
133
+ const { nomineeGovernorAddress, memberGovernorAddress } = config;
134
+ const nominee = (0, contracts_1.getNomineeGovernor)(nomineeGovernorAddress, l2Provider);
135
+ const [proposalIds, cohortRaw] = await Promise.all([
136
+ (0, proposal_ids_1.getElectionProposalIds)(electionIndex, l2Provider, {
137
+ nomineeGovernorAddress,
138
+ memberGovernorAddress,
139
+ }),
140
+ (0, rpc_utils_1.queryWithRetry)(() => nominee.electionIndexToCohort(electionIndex)),
141
+ ]);
142
+ const { nomineeProposalId } = proposalIds;
143
+ let { memberProposalId } = proposalIds;
144
+ const cohort = cohortRaw;
145
+ let nomineeProposalState = null;
146
+ let memberProposalState = null;
147
+ let isInVettingPeriod = false;
148
+ let vettingDeadline = null;
149
+ let compliantNomineeCount = 0;
150
+ if (nomineeProposalId) {
151
+ const [stateNum, compliantCount] = await Promise.all([
152
+ (0, rpc_utils_1.queryWithRetry)(() => nominee.state(nomineeProposalId)),
153
+ (0, rpc_utils_1.queryWithRetry)(() => nominee.compliantNomineeCount(nomineeProposalId)).catch(() => ethers_1.BigNumber.from(0)),
154
+ ]);
155
+ nomineeProposalState = (0, constants_1.proposalStateToString)(stateNum);
156
+ compliantNomineeCount = compliantCount.toNumber();
157
+ if (nomineeProposalState === "Succeeded") {
158
+ try {
159
+ const deadline = await (0, rpc_utils_1.queryWithRetry)(() => nominee.proposalVettingDeadline(nomineeProposalId));
160
+ vettingDeadline = deadline.toNumber();
161
+ const l1BlockNumber = await (0, timing_1.getL1BlockNumberFromL2)(l2Provider);
162
+ isInVettingPeriod = l1BlockNumber.lte(deadline);
163
+ }
164
+ catch {
165
+ // No vetting period on this governor
166
+ }
167
+ }
168
+ }
169
+ if (memberProposalId) {
170
+ const member = (0, contracts_1.getMemberGovernor)(memberGovernorAddress, l2Provider);
171
+ try {
172
+ const stateNum = await (0, rpc_utils_1.queryWithRetry)(() => member.state(memberProposalId));
173
+ memberProposalState = (0, constants_1.proposalStateToString)(stateNum);
174
+ }
175
+ catch {
176
+ memberProposalId = null;
177
+ }
178
+ }
179
+ const phase = determineElectionPhase(nomineeProposalState, memberProposalId, memberProposalState, isInVettingPeriod);
180
+ const canProceedToMemberPhase = nomineeProposalState === "Succeeded" &&
181
+ !isInVettingPeriod &&
182
+ compliantNomineeCount >= constants_2.TIMING.SECURITY_COUNCIL_TARGET_NOMINEES &&
183
+ !memberProposalId;
184
+ const canExecuteMember = memberProposalState === "Succeeded" || memberProposalState === "Queued";
185
+ return {
186
+ electionIndex,
187
+ phase,
188
+ cohort,
189
+ nomineeProposalId,
190
+ memberProposalId,
191
+ nomineeProposalState,
192
+ memberProposalState,
193
+ compliantNomineeCount,
194
+ targetNomineeCount: constants_2.TIMING.SECURITY_COUNCIL_TARGET_NOMINEES,
195
+ vettingDeadline,
196
+ isInVettingPeriod,
197
+ canProceedToMemberPhase,
198
+ canExecuteMember,
199
+ };
200
+ }
201
+ /**
202
+ * Batch fetch status for all elections.
203
+ *
204
+ * Fetches the election count once, then queries each election in parallel
205
+ * via `getElectionStatus`. Individual failures are logged and skipped.
206
+ *
207
+ * @param l2Provider - L2 provider
208
+ * @param config - Deployment config (defaults to mainnet)
209
+ */
210
+ async function getAllElectionStatuses(l2Provider, config = constants_1.MAINNET_ELECTION_CONFIG) {
211
+ const count = await getElectionCount(l2Provider, config.nomineeGovernorAddress);
212
+ const results = await Promise.all(Array.from({ length: count }, (_, i) => getElectionStatus(l2Provider, i, config).catch((err) => {
213
+ log("Failed to fetch election %d: %s", i, err instanceof Error ? err.message : err);
214
+ return null;
215
+ })));
216
+ return results.filter((r) => r !== null);
217
+ }
105
218
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/election/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/election/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Election write action preparation
3
+ *
4
+ * Prepares transactions and typed data for election participation:
5
+ * - Contender registration (EIP-712 sign → addContender)
6
+ * - Vote casting (castVoteWithReasonAndParams with encoded params)
7
+ *
8
+ * Following the SDK's prepare-only philosophy: this module builds
9
+ * transaction data and typed data structures, but never executes.
10
+ */
11
+ import { BigNumber } from "ethers";
12
+ import { PreparedTransaction } from "../types";
13
+ /**
14
+ * EIP-712 typed data for wallet signing (framework-agnostic)
15
+ *
16
+ * Compatible with:
17
+ * - ethers v5: signer._signTypedData(domain, types, message)
18
+ * - ethers v6: signer.signTypedData(domain, types, message)
19
+ * - wagmi v2: useSignTypedData({ domain, types, primaryType, message })
20
+ * - viem: signTypedData(client, { domain, types, primaryType, message })
21
+ */
22
+ export interface AddContenderTypedData {
23
+ domain: {
24
+ name: string;
25
+ version: string;
26
+ chainId: number;
27
+ verifyingContract: `0x${string}`;
28
+ };
29
+ types: {
30
+ AddContenderMessage: Array<{
31
+ name: string;
32
+ type: string;
33
+ }>;
34
+ };
35
+ primaryType: "AddContenderMessage";
36
+ message: {
37
+ proposalId: bigint;
38
+ };
39
+ }
40
+ /**
41
+ * Result of preparing a contender registration.
42
+ * The caller must first get the user's signature using the typedData,
43
+ * then submit the transaction.
44
+ */
45
+ export interface PreparedContenderRegistration {
46
+ typedData: AddContenderTypedData;
47
+ buildTransaction: (signature: string) => PreparedTransaction;
48
+ }
49
+ /**
50
+ * Encode vote parameters for election castVoteWithReasonAndParams.
51
+ *
52
+ * Both NomineeElectionGovernor and MemberElectionGovernor use the same
53
+ * param encoding: abi.encode(address target, uint256 votes).
54
+ *
55
+ * @param target - Address of the contender/nominee to vote for
56
+ * @param votes - Vote amount in wei (full 18-decimal precision)
57
+ * @returns ABI-encoded bytes string
58
+ */
59
+ export declare function encodeElectionVoteParams(target: string, votes: string | BigNumber): string;
60
+ /**
61
+ * Decode vote parameters from election castVoteWithReasonAndParams.
62
+ *
63
+ * @param params - ABI-encoded bytes from castVoteWithReasonAndParams
64
+ * @returns Decoded target address and vote amount
65
+ */
66
+ export declare function decodeElectionVoteParams(params: string): {
67
+ target: string;
68
+ votes: BigNumber;
69
+ };
70
+ /**
71
+ * Build EIP-712 typed data for contender registration signing.
72
+ *
73
+ * The nominee election governor requires an EIP-712 signature of
74
+ * AddContenderMessage(uint256 proposalId) to register as a contender.
75
+ *
76
+ * @param governorName - The name() of the nominee election governor
77
+ * @param proposalId - The nominee election proposal ID
78
+ * @param governorAddress - NomineeElectionGovernor contract address
79
+ * @param chainId - Chain ID (default: 42161 for Arbitrum One)
80
+ */
81
+ export declare function getAddContenderTypedData(governorName: string, proposalId: string, governorAddress?: string, chainId?: number): AddContenderTypedData;
82
+ /**
83
+ * Prepare the addContender transaction.
84
+ *
85
+ * @param proposalId - The nominee election proposal ID
86
+ * @param signature - The EIP-712 signature bytes
87
+ * @param governorAddress - NomineeElectionGovernor contract address
88
+ * @param chainId - Chain ID (default: 42161 for Arbitrum One)
89
+ */
90
+ export declare function prepareAddContender(proposalId: string, signature: string, governorAddress?: string, chainId?: number): PreparedTransaction;
91
+ /**
92
+ * Prepare contender registration with both typed data and transaction builder.
93
+ *
94
+ * Usage:
95
+ * 1. Get governorName from the contract (e.g., via provider)
96
+ * 2. Call prepareContenderRegistration(governorName, proposalId)
97
+ * 3. Have the user sign the typedData
98
+ * 4. Call result.buildTransaction(signature) to get the PreparedTransaction
99
+ *
100
+ * @param governorName - The name() of the nominee election governor
101
+ * @param proposalId - The nominee election proposal ID
102
+ * @param governorAddress - NomineeElectionGovernor contract address
103
+ * @param chainId - Chain ID (default: 42161 for Arbitrum One)
104
+ */
105
+ export declare function prepareContenderRegistration(governorName: string, proposalId: string, governorAddress?: string, chainId?: number): PreparedContenderRegistration;
106
+ /**
107
+ * Prepare a castVoteWithReasonAndParams transaction for a nominee election.
108
+ *
109
+ * Used during NOMINEE_SELECTION phase to vote for contenders.
110
+ *
111
+ * @param proposalId - The nominee election proposal ID
112
+ * @param target - Address of the contender to vote for
113
+ * @param votes - Vote amount in wei
114
+ * @param reason - Optional vote reason (default: "")
115
+ * @param governorAddress - NomineeElectionGovernor contract address
116
+ * @param chainId - Chain ID (default: 42161)
117
+ */
118
+ export declare function prepareNomineeElectionVote(proposalId: string, target: string, votes: string | BigNumber, reason?: string, governorAddress?: string, chainId?: number): PreparedTransaction;
119
+ /**
120
+ * Prepare a castVoteWithReasonAndParams transaction for a member election.
121
+ *
122
+ * Used during MEMBER_ELECTION phase to vote for nominees.
123
+ *
124
+ * @param proposalId - The member election proposal ID
125
+ * @param target - Address of the nominee to vote for
126
+ * @param votes - Vote amount in wei
127
+ * @param reason - Optional vote reason (default: "")
128
+ * @param governorAddress - MemberElectionGovernor contract address
129
+ * @param chainId - Chain ID (default: 42161)
130
+ */
131
+ export declare function prepareMemberElectionVote(proposalId: string, target: string, votes: string | BigNumber, reason?: string, governorAddress?: string, chainId?: number): PreparedTransaction;
132
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/election/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAU,SAAS,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,EAAE,mBAAmB,EAAkB,MAAM,UAAU,CAAC;AAS/D;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,KAAK,MAAM,EAAE,CAAC;KAClC,CAAC;IACF,KAAK,EAAE;QACL,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D,CAAC;IACF,WAAW,EAAE,qBAAqB,CAAC;IACnC,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,qBAAqB,CAAC;IACjC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,mBAAmB,CAAC;CAC9D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM1F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;CAClB,CAGA;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,GAAE,MAA4C,EAC7D,OAAO,GAAE,MAA0B,GAClC,qBAAqB,CAgBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAA4C,EAC7D,OAAO,GAAE,MAA0B,GAClC,mBAAmB,CAgBrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,GAAE,MAA4C,EAC7D,OAAO,GAAE,MAA0B,GAClC,6BAA6B,CAQ/B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,GAAE,MAAW,EACnB,eAAe,GAAE,MAA4C,EAC7D,OAAO,GAAE,MAA0B,GAClC,mBAAmB,CAiBrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,GAAE,MAAW,EACnB,eAAe,GAAE,MAA2C,EAC5D,OAAO,GAAE,MAA0B,GAClC,mBAAmB,CAiBrB"}