@gzeoneth/gov-tracker 0.2.0-0 → 0.2.0-1

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 (88) hide show
  1. package/README.md +3 -0
  2. package/dist/calldata/decoder.d.ts.map +1 -1
  3. package/dist/calldata/decoder.js +8 -2
  4. package/dist/calldata/decoder.js.map +1 -1
  5. package/dist/calldata/parameter-decoder.js +6 -6
  6. package/dist/calldata/parameter-decoder.js.map +1 -1
  7. package/dist/cli/lib/cli.d.ts.map +1 -1
  8. package/dist/cli/lib/cli.js +5 -6
  9. package/dist/cli/lib/cli.js.map +1 -1
  10. package/dist/cli/lib/json-state.d.ts.map +1 -1
  11. package/dist/cli/lib/json-state.js +12 -11
  12. package/dist/cli/lib/json-state.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +18 -18
  16. package/dist/index.js.map +1 -1
  17. package/dist/stages/{stage-builder.d.ts → builder.d.ts} +11 -7
  18. package/dist/stages/builder.d.ts.map +1 -0
  19. package/dist/stages/{stage-builder.js → builder.js} +12 -3
  20. package/dist/stages/builder.js.map +1 -0
  21. package/dist/stages/l2-to-l1-message.d.ts +3 -3
  22. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  23. package/dist/stages/l2-to-l1-message.js +11 -12
  24. package/dist/stages/l2-to-l1-message.js.map +1 -1
  25. package/dist/stages/proposal-created.d.ts +2 -2
  26. package/dist/stages/proposal-created.d.ts.map +1 -1
  27. package/dist/stages/proposal-created.js +4 -4
  28. package/dist/stages/proposal-created.js.map +1 -1
  29. package/dist/stages/proposal-queued.d.ts +2 -2
  30. package/dist/stages/proposal-queued.d.ts.map +1 -1
  31. package/dist/stages/proposal-queued.js +8 -9
  32. package/dist/stages/proposal-queued.js.map +1 -1
  33. package/dist/stages/retryables.d.ts +3 -3
  34. package/dist/stages/retryables.d.ts.map +1 -1
  35. package/dist/stages/retryables.js +14 -15
  36. package/dist/stages/retryables.js.map +1 -1
  37. package/dist/stages/timelock.d.ts +3 -3
  38. package/dist/stages/timelock.d.ts.map +1 -1
  39. package/dist/stages/timelock.js +32 -32
  40. package/dist/stages/timelock.js.map +1 -1
  41. package/dist/stages/{base.d.ts → utils.d.ts} +78 -35
  42. package/dist/stages/utils.d.ts.map +1 -0
  43. package/dist/stages/{base.js → utils.js} +208 -63
  44. package/dist/stages/utils.js.map +1 -0
  45. package/dist/stages/voting.d.ts +2 -2
  46. package/dist/stages/voting.d.ts.map +1 -1
  47. package/dist/stages/voting.js +2 -2
  48. package/dist/stages/voting.js.map +1 -1
  49. package/dist/tracker/cache.d.ts +104 -0
  50. package/dist/tracker/cache.d.ts.map +1 -0
  51. package/dist/tracker/cache.js +287 -0
  52. package/dist/tracker/cache.js.map +1 -0
  53. package/dist/tracker/execute.js +8 -8
  54. package/dist/tracker/execute.js.map +1 -1
  55. package/dist/tracker/pipeline.d.ts +3 -3
  56. package/dist/tracker/pipeline.d.ts.map +1 -1
  57. package/dist/tracker/pipeline.js +38 -35
  58. package/dist/tracker/pipeline.js.map +1 -1
  59. package/dist/tracker/query.js +3 -3
  60. package/dist/tracker/query.js.map +1 -1
  61. package/dist/tracker/state.d.ts +88 -81
  62. package/dist/tracker/state.d.ts.map +1 -1
  63. package/dist/tracker/state.js +241 -264
  64. package/dist/tracker/state.js.map +1 -1
  65. package/dist/tracker.d.ts +4 -4
  66. package/dist/tracker.d.ts.map +1 -1
  67. package/dist/tracker.js +22 -20
  68. package/dist/tracker.js.map +1 -1
  69. package/dist/types/index.d.ts +1 -1
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/index.js.map +1 -1
  72. package/dist/types/stages.d.ts +32 -17
  73. package/dist/types/stages.d.ts.map +1 -1
  74. package/dist/types/stages.js +2 -0
  75. package/dist/types/stages.js.map +1 -1
  76. package/package.json +2 -1
  77. package/dist/stages/base.d.ts.map +0 -1
  78. package/dist/stages/base.js.map +0 -1
  79. package/dist/stages/stage-builder.d.ts.map +0 -1
  80. package/dist/stages/stage-builder.js.map +0 -1
  81. package/dist/tracker/context.d.ts +0 -111
  82. package/dist/tracker/context.d.ts.map +0 -1
  83. package/dist/tracker/context.js +0 -264
  84. package/dist/tracker/context.js.map +0 -1
  85. package/dist/utils/stage-helpers.d.ts +0 -50
  86. package/dist/utils/stage-helpers.d.ts.map +0 -1
  87. package/dist/utils/stage-helpers.js +0 -135
  88. package/dist/utils/stage-helpers.js.map +0 -1
@@ -1,38 +1,51 @@
1
1
  "use strict";
2
2
  /**
3
- * Shared utilities for stage tracking
3
+ * Stage Utilities
4
4
  *
5
- * Common patterns and helpers used across all stage modules
5
+ * Consolidated utilities for stage tracking, serialization, and timelock operations.
6
+ * Previously split between stages/base.ts and utils/stage-helpers.ts.
6
7
  */
7
8
  Object.defineProperty(exports, "__esModule", { value: true });
8
9
  exports.TIMELOCK_STAGE_TYPES = exports.deserializeCallScheduledDataArray = exports.serializeCallScheduledDataArray = exports.deserializeCallScheduledData = exports.serializeCallScheduledData = void 0;
9
10
  exports.serialize = serialize;
10
11
  exports.deserialize = deserialize;
11
- exports.calculateEtaFromScheduledData = calculateEtaFromScheduledData;
12
- exports.isConstitutional = isConstitutional;
13
12
  exports.getStagesForPath = getStagesForPath;
14
13
  exports.initializeStagesForPath = initializeStagesForPath;
15
14
  exports.findStage = findStage;
16
15
  exports.updateStageInList = updateStageInList;
17
16
  exports.getCurrentStage = getCurrentStage;
18
17
  exports.areAllStagesComplete = areAllStagesComplete;
19
- exports.getBlockTimestamp = getBlockTimestamp;
20
18
  exports.findExecutableStage = findExecutableStage;
21
- exports.isTimelockStage = isTimelockStage;
22
19
  exports.findAllExecutableStages = findAllExecutableStages;
23
20
  exports.needsAction = needsAction;
24
21
  exports.getTrackingStatusSummary = getTrackingStatusSummary;
25
22
  exports.extractOperationId = extractOperationId;
23
+ exports.isConstitutional = isConstitutional;
24
+ exports.isTimelockStage = isTimelockStage;
25
+ exports.getBlockTimestamp = getBlockTimestamp;
26
+ exports.calculateEtaFromScheduledData = calculateEtaFromScheduledData;
26
27
  exports.failPrepare = failPrepare;
27
28
  exports.checkOperationReady = checkOperationReady;
29
+ exports.createTimelockStageData = createTimelockStageData;
30
+ exports.collectAllScheduledData = collectAllScheduledData;
31
+ exports.calculateTimelockEta = calculateTimelockEta;
32
+ exports.buildExecutionPayloadData = buildExecutionPayloadData;
33
+ exports.validateStageForPrepare = validateStageForPrepare;
34
+ exports.bulkPrepareError = bulkPrepareError;
35
+ exports.simpleBulkError = simpleBulkError;
36
+ exports.validateStageForBulkPrepare = validateStageForBulkPrepare;
37
+ exports.validateStageForSimpleBulk = validateStageForSimpleBulk;
38
+ exports.searchAndCompleteTimelockExecution = searchAndCompleteTimelockExecution;
28
39
  const ethers_1 = require("ethers");
29
40
  const types_1 = require("../types");
30
41
  const abis_1 = require("../abis");
31
42
  const constants_1 = require("../constants");
32
43
  const chain_1 = require("../utils/chain");
33
44
  const rpc_utils_1 = require("../utils/rpc-utils");
45
+ const builder_1 = require("./builder");
46
+ const timelock_discovery_1 = require("../discovery/timelock-discovery");
34
47
  // ============================================================================
35
- // Serialization Utilities
48
+ // Section 1: Serialization Utilities
36
49
  // ============================================================================
37
50
  const CALL_SCHEDULED_BIGNUM_FIELDS = ["index", "value", "delay"];
38
51
  /** Generic serializer: converts BigNumber fields to strings for JSON storage. */
@@ -71,13 +84,16 @@ exports.serializeCallScheduledDataArray = serializeCallScheduledDataArray;
71
84
  const deserializeCallScheduledDataArray = (data) => data.map(exports.deserializeCallScheduledData);
72
85
  exports.deserializeCallScheduledDataArray = deserializeCallScheduledDataArray;
73
86
  // ============================================================================
74
- // Stage Creation and Management
87
+ // Section 2: Stage Creation and Management
75
88
  // ============================================================================
76
89
  /**
77
- * Create a new tracked stage with default values
90
+ * Create a new tracked stage with default values.
91
+ * Used for initializing placeholder stages that will be filled in later.
78
92
  */
79
93
  function createStage(type, chain, status = "NOT_STARTED") {
80
- const chainId = (0, types_1.chainToChainId)(chain) ?? 0; // Default to 0 for unknown chains
94
+ const chainId = (0, types_1.chainToChainId)(chain) ?? 0;
95
+ // Assertion needed: we create placeholder stages with empty data that get
96
+ // replaced by properly-built stages. TypeScript can't track this flow.
81
97
  return {
82
98
  type,
83
99
  status,
@@ -88,35 +104,6 @@ function createStage(type, chain, status = "NOT_STARTED") {
88
104
  executable: false,
89
105
  };
90
106
  }
91
- /**
92
- * Calculate ETA from CallScheduled event data
93
- *
94
- * ETA = block timestamp + delay seconds
95
- * This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
96
- */
97
- async function calculateEtaFromScheduledData(blockNumber, delaySeconds, provider) {
98
- const timestamp = await getBlockTimestamp(blockNumber, provider);
99
- return timestamp + delaySeconds;
100
- }
101
- /**
102
- * Check if a proposal is Constitutional (requires L1 round-trip).
103
- *
104
- * Constitutional proposals (from Constitutional Governor) go through:
105
- * L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
106
- *
107
- * Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
108
- * L2 Timelock (3 days) → L2 Execution
109
- *
110
- * Also works with timelock addresses for direct timelock entry.
111
- *
112
- * @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
113
- */
114
- function isConstitutional(governorOrTimelockAddress) {
115
- return (0, chain_1.isAddressIn)(governorOrTimelockAddress, [
116
- constants_1.ADDRESSES.CONSTITUTIONAL_GOVERNOR,
117
- constants_1.ADDRESSES.L2_CONSTITUTIONAL_TIMELOCK,
118
- ]);
119
- }
120
107
  /**
121
108
  * Get all stages for a governor path
122
109
  *
@@ -161,6 +148,9 @@ function findStage(stages, type) {
161
148
  function updateStageInList(stages, updatedStage) {
162
149
  return stages.map((s) => (s.type === updatedStage.type ? updatedStage : s));
163
150
  }
151
+ // ============================================================================
152
+ // Section 3: Stage Querying and Status
153
+ // ============================================================================
164
154
  /**
165
155
  * Get the current active stage (first non-completed stage)
166
156
  */
@@ -178,30 +168,12 @@ function getCurrentStage(stages) {
178
168
  function areAllStagesComplete(stages) {
179
169
  return stages.every((s) => s.status === "COMPLETED" || s.status === "SKIPPED" || s.status === "FAILED");
180
170
  }
181
- /**
182
- * Get block timestamp from provider
183
- */
184
- async function getBlockTimestamp(blockNumber, provider) {
185
- const block = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlock(blockNumber));
186
- if (!block) {
187
- throw new Error(`Block ${blockNumber} not found`);
188
- }
189
- return block.timestamp;
190
- }
191
171
  /**
192
172
  * Find first READY stage that's executable
193
173
  */
194
174
  function findExecutableStage(stages) {
195
175
  return stages.find((s) => s.status === "READY" && s.executable === true) ?? null;
196
176
  }
197
- /** Timelock stage types (consolidated stages that require execution) */
198
- exports.TIMELOCK_STAGE_TYPES = ["L2_TIMELOCK", "L1_TIMELOCK"];
199
- /**
200
- * Check if a stage type is a timelock stage
201
- */
202
- function isTimelockStage(type) {
203
- return exports.TIMELOCK_STAGE_TYPES.includes(type);
204
- }
205
177
  /**
206
178
  * Find all READY executable stages
207
179
  */
@@ -247,17 +219,80 @@ function getTrackingStatusSummary(stages) {
247
219
  * @returns The operationId if found, undefined otherwise
248
220
  */
249
221
  function extractOperationId(stages) {
250
- // Check stages that contain operationId (in order of likelihood)
251
- const stageTypes = ["PROPOSAL_QUEUED", "L2_TIMELOCK"];
252
- for (const type of stageTypes) {
253
- const stage = stages.find((s) => s.type === type);
254
- const opId = stage?.data?.operationId;
222
+ // Check PROPOSAL_QUEUED first (most common)
223
+ const queuedStage = stages.find((s) => s.type === "PROPOSAL_QUEUED");
224
+ if (queuedStage?.type === "PROPOSAL_QUEUED") {
225
+ const opId = queuedStage.data.operationId;
226
+ if (typeof opId === "string" && opId.length > 0) {
227
+ return opId;
228
+ }
229
+ }
230
+ // Fallback to L2_TIMELOCK
231
+ const l2TimelockStage = stages.find((s) => s.type === "L2_TIMELOCK");
232
+ if (l2TimelockStage?.type === "L2_TIMELOCK") {
233
+ const opId = l2TimelockStage.data.operationId;
255
234
  if (typeof opId === "string" && opId.length > 0) {
256
235
  return opId;
257
236
  }
258
237
  }
259
238
  return undefined;
260
239
  }
240
+ // ============================================================================
241
+ // Section 4: Governance Logic
242
+ // ============================================================================
243
+ /**
244
+ * Check if a proposal is Constitutional (requires L1 round-trip).
245
+ *
246
+ * Constitutional proposals (from Constitutional Governor) go through:
247
+ * L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
248
+ *
249
+ * Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
250
+ * L2 Timelock (3 days) → L2 Execution
251
+ *
252
+ * Also works with timelock addresses for direct timelock entry.
253
+ *
254
+ * @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
255
+ */
256
+ function isConstitutional(governorOrTimelockAddress) {
257
+ return (0, chain_1.isAddressIn)(governorOrTimelockAddress, [
258
+ constants_1.ADDRESSES.CONSTITUTIONAL_GOVERNOR,
259
+ constants_1.ADDRESSES.L2_CONSTITUTIONAL_TIMELOCK,
260
+ ]);
261
+ }
262
+ /** Timelock stage types (consolidated stages that require execution) */
263
+ exports.TIMELOCK_STAGE_TYPES = ["L2_TIMELOCK", "L1_TIMELOCK"];
264
+ /**
265
+ * Check if a stage type is a timelock stage
266
+ */
267
+ function isTimelockStage(type) {
268
+ return exports.TIMELOCK_STAGE_TYPES.includes(type);
269
+ }
270
+ // ============================================================================
271
+ // Section 5: Block & Timing Utilities
272
+ // ============================================================================
273
+ /**
274
+ * Get block timestamp from provider
275
+ */
276
+ async function getBlockTimestamp(blockNumber, provider) {
277
+ const block = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlock(blockNumber));
278
+ if (!block) {
279
+ throw new Error(`Block ${blockNumber} not found`);
280
+ }
281
+ return block.timestamp;
282
+ }
283
+ /**
284
+ * Calculate ETA from CallScheduled event data
285
+ *
286
+ * ETA = block timestamp + delay seconds
287
+ * This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
288
+ */
289
+ async function calculateEtaFromScheduledData(blockNumber, delaySeconds, provider) {
290
+ const timestamp = await getBlockTimestamp(blockNumber, provider);
291
+ return timestamp + delaySeconds;
292
+ }
293
+ // ============================================================================
294
+ // Section 6: Preparation Helpers
295
+ // ============================================================================
261
296
  /**
262
297
  * Create a failed PrepareResult with an error message.
263
298
  * Reduces boilerplate for the common pattern: { success: false, error: "..." }
@@ -280,4 +315,114 @@ async function checkOperationReady(timelockAddress, operationId, provider) {
280
315
  }
281
316
  return failPrepare("Operation is not ready for execution");
282
317
  }
283
- //# sourceMappingURL=base.js.map
318
+ /** Extract timelock execution payload from a stage. */
319
+ function createTimelockStageData(stage) {
320
+ let stageData = null;
321
+ for (const stageType of exports.TIMELOCK_STAGE_TYPES) {
322
+ stageData = (0, types_1.getStageData)(stage, stageType);
323
+ if (stageData)
324
+ break;
325
+ }
326
+ if (!stageData?.timelockAddress ||
327
+ !stageData?.operationId ||
328
+ !stageData?.callScheduledData?.length) {
329
+ return null;
330
+ }
331
+ const payload = {
332
+ timelockAddress: stageData.timelockAddress,
333
+ operationId: stageData.operationId,
334
+ callScheduledData: (0, exports.deserializeCallScheduledDataArray)(stageData.callScheduledData),
335
+ };
336
+ if (stageData.isSecurityCouncilOperation) {
337
+ payload.isSecurityCouncilOperation = true;
338
+ payload.securityCouncilMembers = stageData.securityCouncilMembers;
339
+ payload.securityCouncilNonce = stageData.securityCouncilNonce;
340
+ }
341
+ return payload;
342
+ }
343
+ /** Collect all CallScheduledData from a timelock state. */
344
+ function collectAllScheduledData(timelockState) {
345
+ return (timelockState.allScheduledData ??
346
+ (timelockState.scheduledData ? [timelockState.scheduledData] : []));
347
+ }
348
+ /** Calculate ETA for a timelock operation. */
349
+ async function calculateTimelockEta(timelockState, operationState, provider) {
350
+ if (timelockState.scheduledData) {
351
+ return calculateEtaFromScheduledData(timelockState.scheduledData.blockNumber, timelockState.scheduledData.delay.toNumber(), provider);
352
+ }
353
+ const contractTimestamp = operationState.timestamp.toNumber();
354
+ return !operationState.isDone && contractTimestamp > 1 ? contractTimestamp : undefined;
355
+ }
356
+ /** Build serialized execution payload data for stage storage. */
357
+ function buildExecutionPayloadData(timelockAddress, operationId, allScheduledData) {
358
+ const payload = { timelockAddress, operationId };
359
+ if (allScheduledData.length > 0) {
360
+ payload.callScheduledData = (0, exports.serializeCallScheduledDataArray)(allScheduledData);
361
+ }
362
+ return payload;
363
+ }
364
+ /** Validate stage for preparation. Returns error or null if valid. */
365
+ function validateStageForPrepare(stage, options = {}) {
366
+ if (!options.prepareCompleted && stage.status !== "READY") {
367
+ return failPrepare(`Stage is not ready. Current status: ${stage.status}`);
368
+ }
369
+ if (options.expectedTypes?.length && !options.expectedTypes.includes(stage.type)) {
370
+ return failPrepare(`Unexpected stage type: ${stage.type}. Expected: ${options.expectedTypes.join(", ")}`);
371
+ }
372
+ return null;
373
+ }
374
+ function bulkPrepareError(error, targetChain) {
375
+ return { total: 0, results: [{ success: false, error }], targetChain };
376
+ }
377
+ function simpleBulkError(error) {
378
+ return { total: 0, results: [{ success: false, error }] };
379
+ }
380
+ function validateStageForBulkPrepare(stage, targetChain, options = {}) {
381
+ const error = validateStageForPrepare(stage, options);
382
+ return error ? { total: 0, results: [error], targetChain } : null;
383
+ }
384
+ function validateStageForSimpleBulk(stage, options = {}) {
385
+ const error = validateStageForPrepare(stage, options);
386
+ return error ? { total: 0, results: [error] } : null;
387
+ }
388
+ // ============================================================================
389
+ // Section 9: Execution Search Helper
390
+ // ============================================================================
391
+ /** Search for timelock execution event and complete stage. */
392
+ async function searchAndCompleteTimelockExecution(stage, timelockAddress, operationId, provider, chain, fromBlock, toBlock, queueTimestamp) {
393
+ const event = await (0, timelock_discovery_1.findCallExecutedEvent)(timelockAddress, operationId, provider, {
394
+ startBlock: fromBlock,
395
+ endBlock: toBlock,
396
+ });
397
+ const builder = new builder_1.StageBuilder(stage.type, stage.chain)
398
+ .data(stage.data)
399
+ .transactions(stage.transactions);
400
+ if (stage.timing)
401
+ builder.timing(stage.timing);
402
+ if (event) {
403
+ const execTimestamp = await getBlockTimestamp(event.blockNumber, provider);
404
+ const chainId = (0, types_1.chainToChainId)(chain) ?? 0;
405
+ builder
406
+ .status("COMPLETED")
407
+ .tx(event.txHash, event.blockNumber, chain, chainId, {
408
+ timestamp: execTimestamp,
409
+ description: "executed",
410
+ })
411
+ .timing({ startedAt: queueTimestamp ?? execTimestamp })
412
+ .data({ operationId });
413
+ return {
414
+ stage: builder.build(),
415
+ executionTxHash: event.txHash,
416
+ executionBlock: event.blockNumber,
417
+ };
418
+ }
419
+ return {
420
+ stage: builder
421
+ .status("COMPLETED")
422
+ .data({ operationId, note: "Execution confirmed by state, event not found" })
423
+ .build(),
424
+ executionTxHash: null,
425
+ executionBlock: null,
426
+ };
427
+ }
428
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/stages/utils.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,12 @@
7
7
  * When calculating ETA for vetting period, we must use L1 block time.
8
8
  */
9
9
  import { ethers } from "ethers";
10
- import { ProposalData, TrackedStage, VotingData } from "../types";
10
+ import { ProposalData, TypedTrackedStage, VotingData } from "../types";
11
11
  /**
12
12
  * Track voting stage for a proposal
13
13
  */
14
14
  export declare function trackVotingStage(governorAddress: string, proposalId: string, proposalData: ProposalData, provider: ethers.providers.Provider): Promise<{
15
- stage: TrackedStage;
15
+ stage: TypedTrackedStage<"VOTING_ACTIVE">;
16
16
  votingData: VotingData | null;
17
17
  }>;
18
18
  //# sourceMappingURL=voting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAelE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC;IACT,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,CAAC,CA8HD"}
1
+ {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAevE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC;IACT,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC1C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,CAAC,CA8HD"}
@@ -12,14 +12,14 @@ exports.trackVotingStage = trackVotingStage;
12
12
  const ethers_1 = require("ethers");
13
13
  const governor_discovery_1 = require("../discovery/governor-discovery");
14
14
  const security_council_1 = require("../discovery/security-council");
15
- const stage_builder_1 = require("./stage-builder");
15
+ const builder_1 = require("./builder");
16
16
  const timing_1 = require("../utils/timing");
17
17
  const constants_1 = require("../constants");
18
18
  /**
19
19
  * Track voting stage for a proposal
20
20
  */
21
21
  async function trackVotingStage(governorAddress, proposalId, proposalData, provider) {
22
- const builder = new stage_builder_1.StageBuilder("VOTING_ACTIVE", "arb1");
22
+ const builder = new builder_1.StageBuilder("VOTING_ACTIVE", "arb1");
23
23
  // Get current block info
24
24
  const { blockNumber: currentBlock, timestamp: currentTimestamp } = await (0, timing_1.getCurrentBlockInfo)(provider);
25
25
  // Check if voting has started
@@ -1 +1 @@
1
- {"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Cache utilities for tracker state
3
+ *
4
+ * Provides cache implementations and utility functions.
5
+ * All other state management is handled directly in tracker.ts.
6
+ *
7
+ * Available cache adapters:
8
+ * - FileCache: File-based persistence (Node.js only)
9
+ * - LocalStorageCache: Browser localStorage (web only)
10
+ * - MemoryCache: In-memory, no persistence (universal)
11
+ */
12
+ import { TrackingCheckpoint, DiscoveryWatermarks, CacheAdapter } from "../types";
13
+ /**
14
+ * File-based cache that persists to JSON file.
15
+ * Synchronously loads on construction, persists on every write.
16
+ * Uses a write queue to prevent race conditions from concurrent writes.
17
+ */
18
+ export declare class FileCache implements CacheAdapter {
19
+ private readonly path;
20
+ private cache;
21
+ private writeQueue;
22
+ constructor(path: string);
23
+ private load;
24
+ private persistSync;
25
+ private persist;
26
+ get<T>(key: string): Promise<T | null>;
27
+ set<T>(key: string, value: T): Promise<void>;
28
+ delete(key: string): Promise<void>;
29
+ clear(): Promise<void>;
30
+ has(key: string): Promise<boolean>;
31
+ keys(): IterableIterator<string>;
32
+ }
33
+ /**
34
+ * Browser localStorage-based cache adapter.
35
+ * Persists to localStorage with a configurable key prefix.
36
+ *
37
+ * Limitations:
38
+ * - 5MB storage limit (varies by browser)
39
+ * - Synchronous API (blocks main thread, usually negligible)
40
+ * - String-only storage (JSON serialization handled internally)
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * import { createTracker, LocalStorageCache } from "@gzeoneth/gov-tracker";
45
+ *
46
+ * const tracker = createTracker({
47
+ * l2Provider,
48
+ * l1Provider,
49
+ * cache: new LocalStorageCache("arb-gov:"),
50
+ * });
51
+ * ```
52
+ */
53
+ export declare class LocalStorageCache implements CacheAdapter {
54
+ private readonly prefix;
55
+ constructor(prefix?: string);
56
+ private fullKey;
57
+ get<T>(key: string): Promise<T | null>;
58
+ set<T>(key: string, value: T): Promise<void>;
59
+ delete(key: string): Promise<void>;
60
+ clear(): Promise<void>;
61
+ has(key: string): Promise<boolean>;
62
+ keys(prefix?: string): Promise<string[]>;
63
+ }
64
+ /**
65
+ * In-memory cache adapter with no persistence.
66
+ * Useful for testing, short-lived sessions, or as a fallback.
67
+ *
68
+ * Data is lost when the page is refreshed or the process exits.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * import { createTracker, MemoryCache } from "@gzeoneth/gov-tracker";
73
+ *
74
+ * const tracker = createTracker({
75
+ * l2Provider,
76
+ * l1Provider,
77
+ * cache: new MemoryCache(),
78
+ * });
79
+ * ```
80
+ */
81
+ export declare class MemoryCache implements CacheAdapter {
82
+ private cache;
83
+ get<T>(key: string): Promise<T | null>;
84
+ set<T>(key: string, value: T): Promise<void>;
85
+ delete(key: string): Promise<void>;
86
+ clear(): Promise<void>;
87
+ has(key: string): Promise<boolean>;
88
+ keys(): IterableIterator<string>;
89
+ }
90
+ /**
91
+ * Generate cache key from transaction hash (primary cache key format)
92
+ */
93
+ export declare function txHashCacheKey(txHash: string): string;
94
+ /**
95
+ * Read all cache data without requiring RPC providers.
96
+ * Use this for status/dashboard views that only need cached data.
97
+ *
98
+ * @param cachePath - Path to the cache file
99
+ */
100
+ export declare function readCacheStatus(cachePath: string): Promise<{
101
+ watermarks: DiscoveryWatermarks;
102
+ checkpoints: Map<string, TrackingCheckpoint>;
103
+ }>;
104
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tracker/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGjF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,YAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAoC;gBAE1C,IAAI,EAAE,MAAM;IAKxB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,WAAW;YAKL,OAAO;IAiBf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,MAAmB;IAIvC,OAAO,CAAC,OAAO;IAIT,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAYtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAe/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,KAAK,CAAmC;IAE1C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,UAAU,EAAE,mBAAmB,CAAC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C,CAAC,CAqBD"}