@gzeoneth/gov-tracker 0.2.1-beta.ec7d8a7 → 0.2.1-beta.f5af747

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 (187) hide show
  1. package/README.md +126 -80
  2. package/dist/abis.d.ts +3 -0
  3. package/dist/abis.d.ts.map +1 -1
  4. package/dist/abis.js +30 -2
  5. package/dist/abis.js.map +1 -1
  6. package/dist/calldata/index.d.ts +1 -1
  7. package/dist/calldata/index.d.ts.map +1 -1
  8. package/dist/calldata/index.js.map +1 -1
  9. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  10. package/dist/calldata/parameter-decoder.js +8 -1
  11. package/dist/calldata/parameter-decoder.js.map +1 -1
  12. package/dist/calldata/signature-lookup.d.ts +17 -2
  13. package/dist/calldata/signature-lookup.d.ts.map +1 -1
  14. package/dist/calldata/signature-lookup.js +20 -2
  15. package/dist/calldata/signature-lookup.js.map +1 -1
  16. package/dist/cli/cli.js +266 -27
  17. package/dist/cli/cli.js.map +1 -1
  18. package/dist/cli/lib/cli.d.ts +50 -2
  19. package/dist/cli/lib/cli.d.ts.map +1 -1
  20. package/dist/cli/lib/cli.js +378 -66
  21. package/dist/cli/lib/cli.js.map +1 -1
  22. package/dist/cli/lib/json-state.d.ts +23 -0
  23. package/dist/cli/lib/json-state.d.ts.map +1 -1
  24. package/dist/cli/lib/json-state.js +51 -4
  25. package/dist/cli/lib/json-state.js.map +1 -1
  26. package/dist/constants.d.ts +9 -1
  27. package/dist/constants.d.ts.map +1 -1
  28. package/dist/constants.js +16 -1
  29. package/dist/constants.js.map +1 -1
  30. package/dist/data/bundled-cache.json +3720 -1240
  31. package/dist/deduplication.d.ts +132 -0
  32. package/dist/deduplication.d.ts.map +1 -0
  33. package/dist/deduplication.js +270 -0
  34. package/dist/deduplication.js.map +1 -0
  35. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  36. package/dist/discovery/governor-discovery.js +50 -35
  37. package/dist/discovery/governor-discovery.js.map +1 -1
  38. package/dist/discovery/timelock-discovery.d.ts +15 -6
  39. package/dist/discovery/timelock-discovery.d.ts.map +1 -1
  40. package/dist/discovery/timelock-discovery.js +27 -11
  41. package/dist/discovery/timelock-discovery.js.map +1 -1
  42. package/dist/election/contracts.d.ts +8 -0
  43. package/dist/election/contracts.d.ts.map +1 -0
  44. package/dist/election/contracts.js +28 -0
  45. package/dist/election/contracts.js.map +1 -0
  46. package/dist/election/details.d.ts +5 -0
  47. package/dist/election/details.d.ts.map +1 -0
  48. package/dist/election/details.js +95 -0
  49. package/dist/election/details.js.map +1 -0
  50. package/dist/election/index.d.ts +11 -0
  51. package/dist/election/index.d.ts.map +1 -0
  52. package/dist/election/index.js +45 -0
  53. package/dist/election/index.js.map +1 -0
  54. package/dist/election/params.d.ts +13 -0
  55. package/dist/election/params.d.ts.map +1 -0
  56. package/dist/election/params.js +93 -0
  57. package/dist/election/params.js.map +1 -0
  58. package/dist/election/participants.d.ts +6 -0
  59. package/dist/election/participants.d.ts.map +1 -0
  60. package/dist/election/participants.js +102 -0
  61. package/dist/election/participants.js.map +1 -0
  62. package/dist/election/prepare.d.ts +10 -0
  63. package/dist/election/prepare.d.ts.map +1 -0
  64. package/dist/election/prepare.js +52 -0
  65. package/dist/election/prepare.js.map +1 -0
  66. package/dist/election/proposal-ids.d.ts +18 -0
  67. package/dist/election/proposal-ids.d.ts.map +1 -0
  68. package/dist/election/proposal-ids.js +77 -0
  69. package/dist/election/proposal-ids.js.map +1 -0
  70. package/dist/election/status.d.ts +6 -0
  71. package/dist/election/status.d.ts.map +1 -0
  72. package/dist/election/status.js +86 -0
  73. package/dist/election/status.js.map +1 -0
  74. package/dist/election/tracking.d.ts +28 -0
  75. package/dist/election/tracking.d.ts.map +1 -0
  76. package/dist/election/tracking.js +412 -0
  77. package/dist/election/tracking.js.map +1 -0
  78. package/dist/index.d.ts +29 -7
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +81 -8
  81. package/dist/index.js.map +1 -1
  82. package/dist/stages/builder.d.ts +4 -0
  83. package/dist/stages/builder.d.ts.map +1 -1
  84. package/dist/stages/builder.js +7 -0
  85. package/dist/stages/builder.js.map +1 -1
  86. package/dist/stages/l2-to-l1-message.d.ts +3 -1
  87. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  88. package/dist/stages/l2-to-l1-message.js +6 -6
  89. package/dist/stages/l2-to-l1-message.js.map +1 -1
  90. package/dist/stages/proposal-created.d.ts +1 -0
  91. package/dist/stages/proposal-created.d.ts.map +1 -1
  92. package/dist/stages/proposal-created.js +1 -0
  93. package/dist/stages/proposal-created.js.map +1 -1
  94. package/dist/stages/proposal-queued.d.ts +1 -0
  95. package/dist/stages/proposal-queued.d.ts.map +1 -1
  96. package/dist/stages/proposal-queued.js +3 -1
  97. package/dist/stages/proposal-queued.js.map +1 -1
  98. package/dist/stages/retryables.js +2 -2
  99. package/dist/stages/retryables.js.map +1 -1
  100. package/dist/stages/timelock.d.ts +3 -1
  101. package/dist/stages/timelock.d.ts.map +1 -1
  102. package/dist/stages/timelock.js +11 -7
  103. package/dist/stages/timelock.js.map +1 -1
  104. package/dist/stages/utils.d.ts +4 -7
  105. package/dist/stages/utils.d.ts.map +1 -1
  106. package/dist/stages/utils.js +31 -22
  107. package/dist/stages/utils.js.map +1 -1
  108. package/dist/stages/voting.d.ts.map +1 -1
  109. package/dist/stages/voting.js +5 -4
  110. package/dist/stages/voting.js.map +1 -1
  111. package/dist/tracker/cache.d.ts +10 -6
  112. package/dist/tracker/cache.d.ts.map +1 -1
  113. package/dist/tracker/cache.js +36 -13
  114. package/dist/tracker/cache.js.map +1 -1
  115. package/dist/tracker/checkpoint-helpers.d.ts +63 -0
  116. package/dist/tracker/checkpoint-helpers.d.ts.map +1 -0
  117. package/dist/tracker/checkpoint-helpers.js +176 -0
  118. package/dist/tracker/checkpoint-helpers.js.map +1 -0
  119. package/dist/tracker/discovery.d.ts +40 -9
  120. package/dist/tracker/discovery.d.ts.map +1 -1
  121. package/dist/tracker/discovery.js +152 -15
  122. package/dist/tracker/discovery.js.map +1 -1
  123. package/dist/tracker/execute.d.ts.map +1 -1
  124. package/dist/tracker/execute.js +1 -25
  125. package/dist/tracker/execute.js.map +1 -1
  126. package/dist/tracker/pipeline.d.ts.map +1 -1
  127. package/dist/tracker/pipeline.js +26 -11
  128. package/dist/tracker/pipeline.js.map +1 -1
  129. package/dist/tracker/query.d.ts +1 -0
  130. package/dist/tracker/query.d.ts.map +1 -1
  131. package/dist/tracker/query.js +14 -61
  132. package/dist/tracker/query.js.map +1 -1
  133. package/dist/tracker/state.d.ts +0 -10
  134. package/dist/tracker/state.d.ts.map +1 -1
  135. package/dist/tracker/state.js +1 -28
  136. package/dist/tracker/state.js.map +1 -1
  137. package/dist/tracker.d.ts +69 -4
  138. package/dist/tracker.d.ts.map +1 -1
  139. package/dist/tracker.js +274 -13
  140. package/dist/tracker.js.map +1 -1
  141. package/dist/types/config.d.ts +49 -0
  142. package/dist/types/config.d.ts.map +1 -1
  143. package/dist/types/core.d.ts +4 -2
  144. package/dist/types/core.d.ts.map +1 -1
  145. package/dist/types/election.d.ts +91 -0
  146. package/dist/types/election.d.ts.map +1 -1
  147. package/dist/types/index.d.ts +5 -7
  148. package/dist/types/index.d.ts.map +1 -1
  149. package/dist/types/index.js +2 -3
  150. package/dist/types/index.js.map +1 -1
  151. package/dist/types/stages.d.ts +70 -1
  152. package/dist/types/stages.d.ts.map +1 -1
  153. package/dist/types/stages.js.map +1 -1
  154. package/dist/types/tracking.d.ts +30 -4
  155. package/dist/types/tracking.d.ts.map +1 -1
  156. package/dist/utils/block-cache.d.ts +50 -0
  157. package/dist/utils/block-cache.d.ts.map +1 -0
  158. package/dist/utils/block-cache.js +80 -0
  159. package/dist/utils/block-cache.js.map +1 -0
  160. package/dist/utils/formatters.d.ts +91 -0
  161. package/dist/utils/formatters.d.ts.map +1 -0
  162. package/dist/utils/formatters.js +327 -0
  163. package/dist/utils/formatters.js.map +1 -0
  164. package/dist/utils/multicall.d.ts +52 -0
  165. package/dist/utils/multicall.d.ts.map +1 -0
  166. package/dist/utils/multicall.js +75 -0
  167. package/dist/utils/multicall.js.map +1 -0
  168. package/dist/utils/salt-computation.d.ts.map +1 -1
  169. package/dist/utils/salt-computation.js +33 -7
  170. package/dist/utils/salt-computation.js.map +1 -1
  171. package/dist/utils/stage-metadata.d.ts +0 -20
  172. package/dist/utils/stage-metadata.d.ts.map +1 -1
  173. package/dist/utils/stage-metadata.js +29 -44
  174. package/dist/utils/stage-metadata.js.map +1 -1
  175. package/dist/utils/timing.d.ts +13 -0
  176. package/dist/utils/timing.d.ts.map +1 -1
  177. package/dist/utils/timing.js +37 -1
  178. package/dist/utils/timing.js.map +1 -1
  179. package/package.json +10 -2
  180. package/dist/election.d.ts +0 -172
  181. package/dist/election.d.ts.map +0 -1
  182. package/dist/election.js +0 -467
  183. package/dist/election.js.map +0 -1
  184. package/dist/types/cross-chain.d.ts +0 -24
  185. package/dist/types/cross-chain.d.ts.map +0 -1
  186. package/dist/types/cross-chain.js +0 -6
  187. package/dist/types/cross-chain.js.map +0 -1
package/dist/tracker.d.ts CHANGED
@@ -12,7 +12,9 @@
12
12
  * - tracker/execute.ts: Transaction preparation
13
13
  */
14
14
  import { ethers } from "ethers";
15
- import { TrackerOptions, TrackingResult, TrackedStage, TrackingCheckpoint, TrackerStats, ChunkingConfig, DiscoveryWatermarks, DiscoveryTargets, PrepareResult, PrepareOptions, ElectionCheckResult, TimelockLink } from "./types";
15
+ import { TrackerOptions, TrackingResult, TrackedStage, TrackingCheckpoint, TrackerStats, ChunkingConfig, DiscoveryWatermarks, DiscoveryTargets, PrepareResult, PrepareOptions, ElectionCheckResult, ElectionProposalStatus, TimelockLink } from "./types";
16
+ import { LoadedWatermarks } from "./tracker/discovery";
17
+ import { WatermarkHashes } from "./types";
16
18
  import { DiscoveredProposal, DiscoveredTimelockOp } from "./tracker/discovery";
17
19
  /**
18
20
  * Extract TimelockLink from stages if PROPOSAL_QUEUED is completed
@@ -66,19 +68,41 @@ export declare class ProposalStageTracker {
66
68
  static readCacheStatus(cachePath: string): Promise<{
67
69
  watermarks: DiscoveryWatermarks;
68
70
  checkpoints: Map<string, TrackingCheckpoint>;
71
+ elections: Map<number, TrackingCheckpoint>;
69
72
  }>;
73
+ /**
74
+ * Clear a specific cache entry. Used by --force to ensure fresh tracking.
75
+ */
76
+ clearCacheEntry(key: string): Promise<void>;
70
77
  /**
71
78
  * Load discovery watermarks from cache.
72
79
  * Watermarks are stored as a TrackingCheckpoint for unified cache format.
73
80
  * Returns empty object if no watermarks are cached.
74
81
  */
75
- loadWatermarks(): Promise<DiscoveryWatermarks>;
82
+ loadWatermarks(): Promise<LoadedWatermarks>;
76
83
  /**
77
84
  * Save discovery watermarks to cache.
78
85
  * Watermarks are stored as TrackingCheckpoint with proper metadata,
79
86
  * following the same pattern as proposal/timelock checkpoints.
87
+ *
88
+ * @param watermarks - Block numbers per discovery key
89
+ * @param hashes - Block hashes per discovery key (for reorg detection)
90
+ */
91
+ saveWatermarks(watermarks: DiscoveryWatermarks, hashes?: WatermarkHashes): Promise<void>;
92
+ /**
93
+ * Save an election checkpoint to cache.
94
+ * Elections are stored with key format: `election:{electionIndex}`
95
+ *
96
+ * @param electionStatus - Election status from trackElectionProposal
80
97
  */
81
- saveWatermarks(watermarks: DiscoveryWatermarks): Promise<void>;
98
+ saveElectionCheckpoint(electionStatus: ElectionProposalStatus): Promise<void>;
99
+ /**
100
+ * Get an election checkpoint from cache.
101
+ *
102
+ * @param electionIndex - Election index
103
+ * @returns Election status or null if not cached
104
+ */
105
+ getElectionCheckpoint(electionIndex: number): Promise<ElectionProposalStatus | null>;
82
106
  /**
83
107
  * Discover proposals from a governor in a block range.
84
108
  *
@@ -101,9 +125,10 @@ export declare class ProposalStageTracker {
101
125
  * Discover all proposals and timelock operations with auto-watermark management.
102
126
  *
103
127
  * This is the unified discovery API that handles everything internally:
128
+ * - Verifies watermark hashes to detect chain reorgs (rolls back if mismatch)
104
129
  * - Loads watermarks from cache (or uses provided fromWatermarks)
105
130
  * - Discovers from all enabled targets in parallel
106
- * - Auto-saves updated watermarks to cache
131
+ * - Auto-saves updated watermarks and hashes to cache
107
132
  *
108
133
  * @param targets - Which governors/timelocks to scan
109
134
  * @param toBlock - End block for discovery
@@ -244,6 +269,46 @@ export declare class ProposalStageTracker {
244
269
  l2: ethers.providers.Provider;
245
270
  nova?: ethers.providers.Provider;
246
271
  };
272
+ /**
273
+ * Track election status for a given proposal ID.
274
+ *
275
+ * Searches through elections to find the one containing this proposal,
276
+ * then tracks the full election lifecycle.
277
+ */
278
+ private trackElectionStatus;
279
+ /**
280
+ * Track an election by its index.
281
+ *
282
+ * This method provides direct election tracking when you have the election index.
283
+ * For tracking via tx hash, use trackByTxHash() which auto-detects elections.
284
+ *
285
+ * Caching behavior:
286
+ * - COMPLETED elections: Returns cached data immediately (0 RPC calls)
287
+ * - Incomplete elections: Makes fresh RPC calls and updates cache
288
+ * - No cache: Always makes fresh RPC calls
289
+ *
290
+ * @param electionIndex - Election index (0-based)
291
+ * @param options.force - Force fresh tracking even for completed elections
292
+ * @returns Election status
293
+ */
294
+ trackElection(electionIndex: number, options?: {
295
+ force?: boolean;
296
+ }): Promise<ElectionProposalStatus>;
297
+ /**
298
+ * Track all elections with caching.
299
+ *
300
+ * Caching behavior:
301
+ * - COMPLETED elections: Returns cached data immediately (0 RPC calls)
302
+ * - Incomplete elections: Makes fresh RPC calls and updates cache
303
+ *
304
+ * @param options.includeNext - Include the "next" election slot (default: true)
305
+ * @param options.force - Force fresh tracking for all elections
306
+ * @returns Array of election statuses
307
+ */
308
+ trackAllElections(options?: {
309
+ includeNext?: boolean;
310
+ force?: boolean;
311
+ }): Promise<ElectionProposalStatus[]>;
247
312
  /**
248
313
  * Check Security Council election status and prepare available actions
249
314
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
package/dist/tracker.js CHANGED
@@ -19,12 +19,50 @@ exports.createTracker = createTracker;
19
19
  const ethers_1 = require("ethers");
20
20
  const logger_1 = require("./utils/logger");
21
21
  const rpc_utils_1 = require("./utils/rpc-utils");
22
+ const timing_1 = require("./utils/timing");
23
+ const checkpoint_helpers_1 = require("./tracker/checkpoint-helpers");
22
24
  const constants_1 = require("./constants");
23
25
  const election_1 = require("./election");
24
26
  const governor_discovery_1 = require("./discovery/governor-discovery");
25
27
  const timelock_discovery_1 = require("./discovery/timelock-discovery");
26
28
  const utils_1 = require("./stages/utils");
27
29
  const { tracker: logTracker, discovery: logDiscovery } = logger_1.loggers;
30
+ /**
31
+ * Build a TrackingContext with current block numbers and timestamp.
32
+ * Called once at the start of a tracking session for consistent state.
33
+ */
34
+ async function buildTrackingContext(options) {
35
+ const { l2Provider, l1Provider, novaProvider, chunkSize, skipCache } = options;
36
+ const l2BlockInfo = await (0, timing_1.getCurrentBlockInfo)(l2Provider);
37
+ const context = {
38
+ l2BlockNumber: l2BlockInfo.blockNumber,
39
+ timestamp: l2BlockInfo.timestamp,
40
+ chunkSize,
41
+ skipCache,
42
+ };
43
+ logTracker("buildTrackingContext: l2Block=%d timestamp=%d", context.l2BlockNumber, context.timestamp);
44
+ if (l1Provider) {
45
+ try {
46
+ const l1Block = await (0, timing_1.getL1BlockNumberFromL2)(l2Provider);
47
+ context.l1BlockNumber = l1Block.toNumber();
48
+ logTracker("buildTrackingContext: l1Block=%d", context.l1BlockNumber);
49
+ }
50
+ catch (err) {
51
+ logTracker("buildTrackingContext: failed to get L1 block: %s", err.message);
52
+ }
53
+ }
54
+ if (novaProvider) {
55
+ try {
56
+ const novaBlockInfo = await (0, timing_1.getCurrentBlockInfo)(novaProvider);
57
+ context.novaBlockNumber = novaBlockInfo.blockNumber;
58
+ logTracker("buildTrackingContext: novaBlock=%d", context.novaBlockNumber);
59
+ }
60
+ catch (err) {
61
+ logTracker("buildTrackingContext: failed to get Nova block: %s", err.message);
62
+ }
63
+ }
64
+ return context;
65
+ }
28
66
  // Import context and pipeline from tracker modules
29
67
  const state_1 = require("./tracker/state");
30
68
  const pipeline_1 = require("./tracker/pipeline");
@@ -118,6 +156,15 @@ class ProposalStageTracker {
118
156
  static async readCacheStatus(cachePath) {
119
157
  return (0, cache_1.readCacheStatus)(cachePath);
120
158
  }
159
+ /**
160
+ * Clear a specific cache entry. Used by --force to ensure fresh tracking.
161
+ */
162
+ async clearCacheEntry(key) {
163
+ if (this.cache) {
164
+ await this.cache.delete(key);
165
+ logTracker("cleared cache entry: %s", key);
166
+ }
167
+ }
121
168
  // Watermark Management
122
169
  /**
123
170
  * Load discovery watermarks from cache.
@@ -131,9 +178,47 @@ class ProposalStageTracker {
131
178
  * Save discovery watermarks to cache.
132
179
  * Watermarks are stored as TrackingCheckpoint with proper metadata,
133
180
  * following the same pattern as proposal/timelock checkpoints.
181
+ *
182
+ * @param watermarks - Block numbers per discovery key
183
+ * @param hashes - Block hashes per discovery key (for reorg detection)
184
+ */
185
+ async saveWatermarks(watermarks, hashes = {}) {
186
+ return (0, discovery_1.saveWatermarks)(watermarks, hashes, this.cache);
187
+ }
188
+ /**
189
+ * Save an election checkpoint to cache.
190
+ * Elections are stored with key format: `election:{electionIndex}`
191
+ *
192
+ * @param electionStatus - Election status from trackElectionProposal
193
+ */
194
+ async saveElectionCheckpoint(electionStatus) {
195
+ if (!this.cache)
196
+ return;
197
+ const key = `election:${electionStatus.electionIndex}`;
198
+ const now = Date.now();
199
+ await this.cache.set(key, {
200
+ version: 1,
201
+ createdAt: now,
202
+ input: { type: "election", electionIndex: electionStatus.electionIndex },
203
+ lastProcessedStage: null,
204
+ lastProcessedBlock: { l1: 0, l2: 0 },
205
+ cachedData: { electionStatus },
206
+ metadata: { errorCount: 0, lastTrackedAt: now },
207
+ });
208
+ logTracker("saved election checkpoint: %s (phase: %s)", key, electionStatus.phase);
209
+ }
210
+ /**
211
+ * Get an election checkpoint from cache.
212
+ *
213
+ * @param electionIndex - Election index
214
+ * @returns Election status or null if not cached
134
215
  */
135
- async saveWatermarks(watermarks) {
136
- return (0, discovery_1.saveWatermarks)(watermarks, this.cache);
216
+ async getElectionCheckpoint(electionIndex) {
217
+ if (!this.cache)
218
+ return null;
219
+ const key = `election:${electionIndex}`;
220
+ const checkpoint = await this.cache.get(key);
221
+ return checkpoint?.cachedData?.electionStatus ?? null;
137
222
  }
138
223
  // Discovery API
139
224
  /**
@@ -162,9 +247,10 @@ class ProposalStageTracker {
162
247
  * Discover all proposals and timelock operations with auto-watermark management.
163
248
  *
164
249
  * This is the unified discovery API that handles everything internally:
250
+ * - Verifies watermark hashes to detect chain reorgs (rolls back if mismatch)
165
251
  * - Loads watermarks from cache (or uses provided fromWatermarks)
166
252
  * - Discovers from all enabled targets in parallel
167
- * - Auto-saves updated watermarks to cache
253
+ * - Auto-saves updated watermarks and hashes to cache
168
254
  *
169
255
  * @param targets - Which governors/timelocks to scan
170
256
  * @param toBlock - End block for discovery
@@ -172,11 +258,13 @@ class ProposalStageTracker {
172
258
  * @returns Discovered proposals, timelock ops, and updated watermarks
173
259
  */
174
260
  async discoverAll(targets, toBlock, fromWatermarks) {
175
- // Load watermarks from cache (or use provided override)
176
- const watermarks = fromWatermarks ?? (await this.loadWatermarks());
177
- const result = await (0, discovery_2.discoverAll)(targets, toBlock, this.l2Provider, this.cache, watermarks, { chunkSize: this.chunkingConfig.l2ChunkSize });
178
- // Auto-save updated watermarks
179
- await this.saveWatermarks(result.watermarks);
261
+ // Load watermarks and hashes from cache (or use provided override)
262
+ const loaded = await this.loadWatermarks();
263
+ const watermarks = fromWatermarks ?? loaded.watermarks;
264
+ const hashes = fromWatermarks ? {} : loaded.hashes; // Only use cached hashes if using cached watermarks
265
+ const result = await (0, discovery_2.discoverAll)(targets, toBlock, this.l2Provider, this.cache, watermarks, hashes, { chunkSize: this.chunkingConfig.l2ChunkSize });
266
+ // Auto-save updated watermarks and hashes
267
+ await this.saveWatermarks(result.watermarks, result.hashes);
180
268
  return result;
181
269
  }
182
270
  // Checkpoint Query API
@@ -240,7 +328,7 @@ class ProposalStageTracker {
240
328
  async trackByTxHash(txHash) {
241
329
  logTracker("trackByTxHash %s", txHash);
242
330
  // Cache key for this transaction
243
- const cacheKey = (0, cache_1.txHashCacheKey)(txHash);
331
+ const cacheKey = (0, checkpoint_helpers_1.txHashCacheKey)(txHash);
244
332
  // Load checkpoint from cache for resume
245
333
  let checkpoint;
246
334
  if (this.cache) {
@@ -263,8 +351,8 @@ class ProposalStageTracker {
263
351
  creationTxHash: txHash,
264
352
  };
265
353
  const prevErrorCount = checkpoint?.metadata?.errorCount ?? 0;
354
+ const newErrorCount = (0, checkpoint_helpers_1.incrementErrorCount)(prevErrorCount, error);
266
355
  const isGasError = (0, rpc_utils_1.isGasEstimationError)(error);
267
- const newErrorCount = isGasError ? prevErrorCount : prevErrorCount + 1;
268
356
  const errorCheckpoint = checkpoint ?? {
269
357
  version: 1,
270
358
  createdAt: Date.now(),
@@ -273,7 +361,7 @@ class ProposalStageTracker {
273
361
  lastProcessedBlock: { l1: 0, l2: 0 },
274
362
  cachedData: {},
275
363
  };
276
- errorCheckpoint.metadata = { errorCount: newErrorCount, lastTrackedAt: Date.now() };
364
+ errorCheckpoint.metadata = (0, checkpoint_helpers_1.createCheckpointMetadata)(newErrorCount);
277
365
  await this.cache.set(cacheKey, errorCheckpoint);
278
366
  logTracker("saved checkpoint on error: %s (errorCount=%d%s)", cacheKey, newErrorCount, isGasError ? " - gas error, not incrementing" : "");
279
367
  }
@@ -353,7 +441,23 @@ class ProposalStageTracker {
353
441
  const finalState = await (0, pipeline_1.trackGovernorPipeline)(initialState);
354
442
  // Build result from state
355
443
  const result = this.buildResultFromState(finalState);
356
- // Save checkpoint to cache
444
+ // Track election status if this is an election governor proposal
445
+ if (result.isElection) {
446
+ const electionStatus = await this.trackElectionStatus(proposalId);
447
+ if (electionStatus) {
448
+ result.electionStatus = electionStatus;
449
+ await this.saveElectionCheckpoint(electionStatus);
450
+ // Elections are fully tracked via election checkpoints, remove tx:* checkpoint
451
+ if (this.cache && cacheKey) {
452
+ await this.cache.delete(cacheKey);
453
+ logTracker("election tracked via election checkpoint, removed tx:* checkpoint: %s", cacheKey);
454
+ }
455
+ return result;
456
+ }
457
+ // If election tracking failed, fall through to save tx:* checkpoint for retry
458
+ logTracker("election tracking failed, saving tx:* checkpoint for retry");
459
+ }
460
+ // Save checkpoint to cache (non-elections and failed election tracking)
357
461
  if (this.cache && cacheKey) {
358
462
  result.checkpoint.metadata = { errorCount: 0, lastTrackedAt: Date.now() };
359
463
  await this.cache.set(cacheKey, result.checkpoint);
@@ -517,6 +621,154 @@ class ProposalStageTracker {
517
621
  nova: this.novaProvider,
518
622
  };
519
623
  }
624
+ // Election Tracking
625
+ /**
626
+ * Track election status for a given proposal ID.
627
+ *
628
+ * Searches through elections to find the one containing this proposal,
629
+ * then tracks the full election lifecycle.
630
+ */
631
+ async trackElectionStatus(proposalId) {
632
+ logTracker("trackElectionStatus for proposal %s", proposalId);
633
+ try {
634
+ // Get current L2 block for block-scoped caching
635
+ const { blockNumber: l2BlockNumber } = await (0, timing_1.getCurrentBlockInfo)(this.l2Provider);
636
+ const electionIndex = await (0, election_1.getElectionIndexForProposalId)(proposalId, this.l2Provider, this.l1Provider, { novaProvider: this.novaProvider, blockNumber: l2BlockNumber });
637
+ if (electionIndex === null) {
638
+ logTracker("no election found for proposal %s", proposalId);
639
+ return null;
640
+ }
641
+ logTracker("found election index %d for proposal %s", electionIndex, proposalId);
642
+ return (0, election_1.trackElectionProposal)(electionIndex, this.l2Provider, this.l1Provider, {
643
+ novaProvider: this.novaProvider,
644
+ });
645
+ }
646
+ catch (error) {
647
+ // Election tracking is non-critical - log and return null
648
+ // The proposal stages are already tracked successfully
649
+ logTracker("election tracking failed for proposal %s: %O", proposalId, error);
650
+ return null;
651
+ }
652
+ }
653
+ /**
654
+ * Track an election by its index.
655
+ *
656
+ * This method provides direct election tracking when you have the election index.
657
+ * For tracking via tx hash, use trackByTxHash() which auto-detects elections.
658
+ *
659
+ * Caching behavior:
660
+ * - COMPLETED elections: Returns cached data immediately (0 RPC calls)
661
+ * - Incomplete elections: Makes fresh RPC calls and updates cache
662
+ * - No cache: Always makes fresh RPC calls
663
+ *
664
+ * @param electionIndex - Election index (0-based)
665
+ * @param options.force - Force fresh tracking even for completed elections
666
+ * @returns Election status
667
+ */
668
+ async trackElection(electionIndex, options = {}) {
669
+ logTracker("trackElection for index %d (force=%s)", electionIndex, options.force ?? false);
670
+ // Check cache first for completed elections (skip RPC calls)
671
+ if (this.cache && !options.force) {
672
+ const cached = await this.getElectionCheckpoint(electionIndex);
673
+ if (cached && cached.phase === "COMPLETED") {
674
+ logTracker("returning cached COMPLETED election %d (0 RPC calls)", electionIndex);
675
+ return cached;
676
+ }
677
+ }
678
+ // Build full tracking context for consistent state across all calls
679
+ const context = await buildTrackingContext({
680
+ l2Provider: this.l2Provider,
681
+ l1Provider: this.l1Provider,
682
+ novaProvider: this.novaProvider,
683
+ skipCache: options.force,
684
+ });
685
+ // Track fresh for incomplete elections or cache miss
686
+ const status = await (0, election_1.trackElectionProposal)(electionIndex, this.l2Provider, this.l1Provider, {
687
+ novaProvider: this.novaProvider,
688
+ l2BlockNumber: context.l2BlockNumber,
689
+ timestamp: context.timestamp,
690
+ skipCache: context.skipCache,
691
+ });
692
+ if (this.cache) {
693
+ await this.saveElectionCheckpoint(status);
694
+ }
695
+ return status;
696
+ }
697
+ /**
698
+ * Track all elections with caching.
699
+ *
700
+ * Caching behavior:
701
+ * - COMPLETED elections: Returns cached data immediately (0 RPC calls)
702
+ * - Incomplete elections: Makes fresh RPC calls and updates cache
703
+ *
704
+ * @param options.includeNext - Include the "next" election slot (default: true)
705
+ * @param options.force - Force fresh tracking for all elections
706
+ * @returns Array of election statuses
707
+ */
708
+ async trackAllElections(options = {}) {
709
+ logTracker("trackAllElections (includeNext=%s, force=%s)", options.includeNext ?? true, options.force ?? false);
710
+ // Build context once at the start for consistent state across all elections
711
+ const context = await buildTrackingContext({
712
+ l2Provider: this.l2Provider,
713
+ l1Provider: this.l1Provider,
714
+ novaProvider: this.novaProvider,
715
+ skipCache: options.force,
716
+ });
717
+ const status = await (0, election_1.checkElectionStatus)(this.l2Provider, this.l1Provider);
718
+ const electionCount = status.electionCount;
719
+ const results = [];
720
+ // Track existing elections (indices 0 to electionCount-1)
721
+ for (let i = 0; i < electionCount; i++) {
722
+ try {
723
+ // Check cache first for completed elections (skip RPC calls)
724
+ if (this.cache && !options.force) {
725
+ const cached = await this.getElectionCheckpoint(i);
726
+ if (cached && cached.phase === "COMPLETED") {
727
+ logTracker("returning cached COMPLETED election %d (0 RPC calls)", i);
728
+ results.push(cached);
729
+ continue;
730
+ }
731
+ }
732
+ // Track with shared context
733
+ const electionStatus = await (0, election_1.trackElectionProposal)(i, this.l2Provider, this.l1Provider, {
734
+ novaProvider: this.novaProvider,
735
+ l2BlockNumber: context.l2BlockNumber,
736
+ timestamp: context.timestamp,
737
+ skipCache: context.skipCache,
738
+ });
739
+ results.push(electionStatus);
740
+ if (this.cache) {
741
+ await this.saveElectionCheckpoint(electionStatus);
742
+ }
743
+ }
744
+ catch (err) {
745
+ logTracker("Failed to track election %d: %s", i, err);
746
+ }
747
+ }
748
+ // Optionally track the next election (not yet created) for createElection preparation
749
+ if (options.includeNext ?? true) {
750
+ try {
751
+ // Next election always needs fresh RPC calls since it doesn't exist yet
752
+ const nextElectionStatus = await (0, election_1.trackElectionProposal)(electionCount, this.l2Provider, this.l1Provider, {
753
+ novaProvider: this.novaProvider,
754
+ l2BlockNumber: context.l2BlockNumber,
755
+ timestamp: context.timestamp,
756
+ });
757
+ results.push({
758
+ ...nextElectionStatus,
759
+ canCreateElection: status.canCreateElection,
760
+ secondsUntilElection: status.secondsUntilElection,
761
+ timeUntilElection: status.timeUntilElection,
762
+ });
763
+ // Don't cache the "next" election since it doesn't exist yet
764
+ }
765
+ catch (err) {
766
+ logTracker("Failed to track next election %d: %s", electionCount, err);
767
+ }
768
+ }
769
+ logTracker("Tracked %d elections", results.length);
770
+ return results;
771
+ }
520
772
  // Election Support
521
773
  /**
522
774
  * Check Security Council election status and prepare available actions
@@ -532,6 +784,7 @@ class ProposalStageTracker {
532
784
  status,
533
785
  canCreate: status.canCreateElection,
534
786
  canTriggerMember: false,
787
+ canExecuteMember: false,
535
788
  prepared: {},
536
789
  };
537
790
  if (status.canCreateElection) {
@@ -540,15 +793,23 @@ class ProposalStageTracker {
540
793
  }
541
794
  if (status.electionCount > 0) {
542
795
  const currentElectionIndex = status.electionCount - 1;
543
- const electionStatus = await (0, election_1.trackElectionProposal)(currentElectionIndex, this.l2Provider, this.l1Provider);
796
+ // Use cached tracking for the current election
797
+ const electionStatus = await this.trackElection(currentElectionIndex);
544
798
  result.currentElection = electionStatus;
545
799
  result.canTriggerMember = electionStatus.canProceedToMemberPhase;
800
+ result.canExecuteMember = electionStatus.canExecuteMember;
546
801
  if (electionStatus.canProceedToMemberPhase) {
547
802
  const memberTx = await (0, election_1.prepareMemberElectionTrigger)(electionStatus, this.l2Provider);
548
803
  if (memberTx) {
549
804
  result.prepared.triggerMember = memberTx;
550
805
  }
551
806
  }
807
+ if (electionStatus.canExecuteMember) {
808
+ const executeTx = await (0, election_1.prepareMemberElectionExecution)(electionStatus, this.l2Provider);
809
+ if (executeTx) {
810
+ result.prepared.executeMember = executeTx;
811
+ }
812
+ }
552
813
  }
553
814
  return result;
554
815
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,54 @@
3
3
  */
4
4
  import { ethers } from "ethers";
5
5
  import { TrackedStage } from "./stages";
6
+ /**
7
+ * Tracking context for block-scoped caching and consistent state reads.
8
+ *
9
+ * When block numbers are provided:
10
+ * - RPC calls use these blocks for state queries (immutable historical state)
11
+ * - Results are cached keyed by block number
12
+ * - Consistent results across multiple function calls in the same tracking session
13
+ *
14
+ * When block numbers are not provided:
15
+ * - RPC calls query "latest" state (mutable)
16
+ * - Results are only cached if they are known to be immutable (via isImmutable predicate)
17
+ *
18
+ * The context should be created once at the start of a tracking session and passed
19
+ * through all function calls for consistency.
20
+ */
21
+ export interface TrackingContext {
22
+ /**
23
+ * L2 (Arbitrum One) block number for block-scoped caching.
24
+ * When provided, enables immutable historical state caching for L2 operations.
25
+ */
26
+ l2BlockNumber?: number;
27
+ /**
28
+ * L1 (Ethereum mainnet) block number for block-scoped caching.
29
+ * When provided, enables immutable historical state caching for L1 operations.
30
+ */
31
+ l1BlockNumber?: number;
32
+ /**
33
+ * Nova block number for block-scoped caching.
34
+ * When provided, enables immutable historical state caching for Nova operations.
35
+ */
36
+ novaBlockNumber?: number;
37
+ /**
38
+ * Unix timestamp (seconds) for consistent time-based calculations.
39
+ * Used for ETA calculations, delay checks, and timing displays.
40
+ * When provided, avoids repeated getBlock() calls to fetch current time.
41
+ */
42
+ timestamp?: number;
43
+ /**
44
+ * Override chunk size for log searches.
45
+ * When provided, overrides the default chunk sizes from ChunkingConfig.
46
+ */
47
+ chunkSize?: number;
48
+ /**
49
+ * Skip cache lookups and force fresh RPC queries.
50
+ * Useful for debugging or when cache might be stale.
51
+ */
52
+ skipCache?: boolean;
53
+ }
6
54
  /**
7
55
  * Chunking configuration for log searches
8
56
  */
@@ -77,5 +125,6 @@ export interface CacheAdapter {
77
125
  clear(): Promise<void>;
78
126
  has(key: string): Promise<boolean>;
79
127
  keys(prefix?: string): Promise<string[]> | string[] | IterableIterator<string>;
128
+ flush?(): Promise<void>;
80
129
  }
81
130
  //# sourceMappingURL=config.d.ts.map