@gzeoneth/gov-tracker 0.1.2 → 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 (193) hide show
  1. package/README.md +3 -0
  2. package/dist/abis.d.ts +0 -32
  3. package/dist/abis.d.ts.map +1 -1
  4. package/dist/abis.js +17 -17
  5. package/dist/abis.js.map +1 -1
  6. package/dist/calldata/decoder.d.ts +12 -3
  7. package/dist/calldata/decoder.d.ts.map +1 -1
  8. package/dist/calldata/decoder.js +56 -9
  9. package/dist/calldata/decoder.js.map +1 -1
  10. package/dist/calldata/index.d.ts +4 -7
  11. package/dist/calldata/index.d.ts.map +1 -1
  12. package/dist/calldata/index.js +5 -19
  13. package/dist/calldata/index.js.map +1 -1
  14. package/dist/calldata/parameter-decoder.d.ts +11 -2
  15. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  16. package/dist/calldata/parameter-decoder.js +67 -8
  17. package/dist/calldata/parameter-decoder.js.map +1 -1
  18. package/dist/calldata/retryable-ticket.d.ts +1 -17
  19. package/dist/calldata/retryable-ticket.d.ts.map +1 -1
  20. package/dist/calldata/retryable-ticket.js +10 -17
  21. package/dist/calldata/retryable-ticket.js.map +1 -1
  22. package/dist/calldata/signature-lookup.d.ts +0 -11
  23. package/dist/calldata/signature-lookup.d.ts.map +1 -1
  24. package/dist/calldata/signature-lookup.js +0 -8
  25. package/dist/calldata/signature-lookup.js.map +1 -1
  26. package/dist/cli/lib/cli.d.ts +1 -3
  27. package/dist/cli/lib/cli.d.ts.map +1 -1
  28. package/dist/cli/lib/cli.js +12 -27
  29. package/dist/cli/lib/cli.js.map +1 -1
  30. package/dist/cli/lib/election-check.d.ts +2 -2
  31. package/dist/cli/lib/election-check.d.ts.map +1 -1
  32. package/dist/cli/lib/election-check.js.map +1 -1
  33. package/dist/cli/lib/json-state.d.ts +2 -29
  34. package/dist/cli/lib/json-state.d.ts.map +1 -1
  35. package/dist/cli/lib/json-state.js +12 -56
  36. package/dist/cli/lib/json-state.js.map +1 -1
  37. package/dist/cli/monitor.js +1 -2
  38. package/dist/cli/monitor.js.map +1 -1
  39. package/dist/constants.d.ts +41 -7
  40. package/dist/constants.d.ts.map +1 -1
  41. package/dist/constants.js +64 -4
  42. package/dist/constants.js.map +1 -1
  43. package/dist/discovery/timelock-discovery.js +1 -1
  44. package/dist/discovery/timelock-discovery.js.map +1 -1
  45. package/dist/election.d.ts.map +1 -1
  46. package/dist/election.js +7 -4
  47. package/dist/election.js.map +1 -1
  48. package/dist/index.d.ts +10 -8
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +35 -26
  51. package/dist/index.js.map +1 -1
  52. package/dist/simulation/index.d.ts +3 -4
  53. package/dist/simulation/index.d.ts.map +1 -1
  54. package/dist/simulation/index.js +3 -9
  55. package/dist/simulation/index.js.map +1 -1
  56. package/dist/simulation/simulation-data.d.ts +6 -31
  57. package/dist/simulation/simulation-data.d.ts.map +1 -1
  58. package/dist/simulation/simulation-data.js +25 -58
  59. package/dist/simulation/simulation-data.js.map +1 -1
  60. package/dist/stages/{stage-builder.d.ts → builder.d.ts} +14 -9
  61. package/dist/stages/builder.d.ts.map +1 -0
  62. package/dist/stages/{stage-builder.js → builder.js} +19 -5
  63. package/dist/stages/builder.js.map +1 -0
  64. package/dist/stages/l2-to-l1-message.d.ts +3 -3
  65. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  66. package/dist/stages/l2-to-l1-message.js +17 -17
  67. package/dist/stages/l2-to-l1-message.js.map +1 -1
  68. package/dist/stages/proposal-created.d.ts +2 -2
  69. package/dist/stages/proposal-created.d.ts.map +1 -1
  70. package/dist/stages/proposal-created.js +5 -5
  71. package/dist/stages/proposal-created.js.map +1 -1
  72. package/dist/stages/proposal-queued.d.ts +2 -2
  73. package/dist/stages/proposal-queued.d.ts.map +1 -1
  74. package/dist/stages/proposal-queued.js +11 -11
  75. package/dist/stages/proposal-queued.js.map +1 -1
  76. package/dist/stages/retryables.d.ts +7 -7
  77. package/dist/stages/retryables.d.ts.map +1 -1
  78. package/dist/stages/retryables.js +75 -61
  79. package/dist/stages/retryables.js.map +1 -1
  80. package/dist/stages/timelock.d.ts +3 -24
  81. package/dist/stages/timelock.d.ts.map +1 -1
  82. package/dist/stages/timelock.js +47 -39
  83. package/dist/stages/timelock.js.map +1 -1
  84. package/dist/stages/{base.d.ts → utils.d.ts} +78 -35
  85. package/dist/stages/utils.d.ts.map +1 -0
  86. package/dist/stages/{base.js → utils.js} +211 -63
  87. package/dist/stages/utils.js.map +1 -0
  88. package/dist/stages/voting.d.ts +2 -2
  89. package/dist/stages/voting.d.ts.map +1 -1
  90. package/dist/stages/voting.js +2 -2
  91. package/dist/stages/voting.js.map +1 -1
  92. package/dist/tracker/cache.d.ts +104 -0
  93. package/dist/tracker/cache.d.ts.map +1 -0
  94. package/dist/tracker/cache.js +287 -0
  95. package/dist/tracker/cache.js.map +1 -0
  96. package/dist/tracker/execute.js +9 -9
  97. package/dist/tracker/execute.js.map +1 -1
  98. package/dist/tracker/pipeline.d.ts +3 -32
  99. package/dist/tracker/pipeline.d.ts.map +1 -1
  100. package/dist/tracker/pipeline.js +40 -43
  101. package/dist/tracker/pipeline.js.map +1 -1
  102. package/dist/tracker/query.js +4 -4
  103. package/dist/tracker/query.js.map +1 -1
  104. package/dist/tracker/state.d.ts +88 -81
  105. package/dist/tracker/state.d.ts.map +1 -1
  106. package/dist/tracker/state.js +241 -264
  107. package/dist/tracker/state.js.map +1 -1
  108. package/dist/tracker.d.ts +4 -4
  109. package/dist/tracker.d.ts.map +1 -1
  110. package/dist/tracker.js +24 -22
  111. package/dist/tracker.js.map +1 -1
  112. package/dist/types/calldata.d.ts +4 -6
  113. package/dist/types/calldata.d.ts.map +1 -1
  114. package/dist/types/core.d.ts +36 -34
  115. package/dist/types/core.d.ts.map +1 -1
  116. package/dist/types/core.js +33 -0
  117. package/dist/types/core.js.map +1 -1
  118. package/dist/types/cross-chain.d.ts +5 -61
  119. package/dist/types/cross-chain.d.ts.map +1 -1
  120. package/dist/types/election.d.ts +3 -6
  121. package/dist/types/election.d.ts.map +1 -1
  122. package/dist/types/index.d.ts +7 -7
  123. package/dist/types/index.d.ts.map +1 -1
  124. package/dist/types/index.js +6 -2
  125. package/dist/types/index.js.map +1 -1
  126. package/dist/types/simulation.d.ts +5 -7
  127. package/dist/types/simulation.d.ts.map +1 -1
  128. package/dist/types/stages.d.ts +50 -32
  129. package/dist/types/stages.d.ts.map +1 -1
  130. package/dist/types/stages.js +10 -1
  131. package/dist/types/stages.js.map +1 -1
  132. package/dist/types/tracking.d.ts +3 -30
  133. package/dist/types/tracking.d.ts.map +1 -1
  134. package/dist/utils/chain.d.ts +7 -3
  135. package/dist/utils/chain.d.ts.map +1 -1
  136. package/dist/utils/chain.js +13 -9
  137. package/dist/utils/chain.js.map +1 -1
  138. package/dist/utils/logger.d.ts +9 -3
  139. package/dist/utils/logger.d.ts.map +1 -1
  140. package/dist/utils/logger.js +53 -19
  141. package/dist/utils/logger.js.map +1 -1
  142. package/dist/utils/rpc-utils.d.ts +7 -8
  143. package/dist/utils/rpc-utils.d.ts.map +1 -1
  144. package/dist/utils/rpc-utils.js +20 -2
  145. package/dist/utils/rpc-utils.js.map +1 -1
  146. package/dist/utils/salt-computation.d.ts.map +1 -1
  147. package/dist/utils/salt-computation.js +2 -3
  148. package/dist/utils/salt-computation.js.map +1 -1
  149. package/dist/utils/stage-metadata.d.ts +2 -2
  150. package/dist/utils/stage-metadata.d.ts.map +1 -1
  151. package/dist/utils/stage-metadata.js +5 -5
  152. package/dist/utils/stage-metadata.js.map +1 -1
  153. package/package.json +9 -5
  154. package/dist/calldata/address-utils.d.ts +0 -23
  155. package/dist/calldata/address-utils.d.ts.map +0 -1
  156. package/dist/calldata/address-utils.js +0 -84
  157. package/dist/calldata/address-utils.js.map +0 -1
  158. package/dist/calldata/extraction.d.ts +0 -17
  159. package/dist/calldata/extraction.d.ts.map +0 -1
  160. package/dist/calldata/extraction.js +0 -56
  161. package/dist/calldata/extraction.js.map +0 -1
  162. package/dist/stages/base.d.ts.map +0 -1
  163. package/dist/stages/base.js.map +0 -1
  164. package/dist/stages/stage-builder.d.ts.map +0 -1
  165. package/dist/stages/stage-builder.js.map +0 -1
  166. package/dist/tracker/context.d.ts +0 -111
  167. package/dist/tracker/context.d.ts.map +0 -1
  168. package/dist/tracker/context.js +0 -264
  169. package/dist/tracker/context.js.map +0 -1
  170. package/dist/tracker/index.d.ts +0 -18
  171. package/dist/tracker/index.d.ts.map +0 -1
  172. package/dist/tracker/index.js +0 -70
  173. package/dist/tracker/index.js.map +0 -1
  174. package/dist/types.d.ts +0 -6
  175. package/dist/types.d.ts.map +0 -1
  176. package/dist/types.js +0 -22
  177. package/dist/types.js.map +0 -1
  178. package/dist/utils/error-classification.d.ts +0 -13
  179. package/dist/utils/error-classification.d.ts.map +0 -1
  180. package/dist/utils/error-classification.js +0 -28
  181. package/dist/utils/error-classification.js.map +0 -1
  182. package/dist/utils/scoped-logger.d.ts +0 -43
  183. package/dist/utils/scoped-logger.d.ts.map +0 -1
  184. package/dist/utils/scoped-logger.js +0 -72
  185. package/dist/utils/scoped-logger.js.map +0 -1
  186. package/dist/utils/stage-helpers.d.ts +0 -51
  187. package/dist/utils/stage-helpers.d.ts.map +0 -1
  188. package/dist/utils/stage-helpers.js +0 -143
  189. package/dist/utils/stage-helpers.js.map +0 -1
  190. package/dist/utils/urls.d.ts +0 -28
  191. package/dist/utils/urls.d.ts.map +0 -1
  192. package/dist/utils/urls.js +0 -71
  193. package/dist/utils/urls.js.map +0 -1
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ /**
3
+ * Cache utilities for tracker state
4
+ *
5
+ * Provides cache implementations and utility functions.
6
+ * All other state management is handled directly in tracker.ts.
7
+ *
8
+ * Available cache adapters:
9
+ * - FileCache: File-based persistence (Node.js only)
10
+ * - LocalStorageCache: Browser localStorage (web only)
11
+ * - MemoryCache: In-memory, no persistence (universal)
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.MemoryCache = exports.LocalStorageCache = exports.FileCache = void 0;
48
+ exports.txHashCacheKey = txHashCacheKey;
49
+ exports.readCacheStatus = readCacheStatus;
50
+ const fs = __importStar(require("fs"));
51
+ const discovery_1 = require("./discovery");
52
+ /**
53
+ * File-based cache that persists to JSON file.
54
+ * Synchronously loads on construction, persists on every write.
55
+ * Uses a write queue to prevent race conditions from concurrent writes.
56
+ */
57
+ class FileCache {
58
+ constructor(path) {
59
+ this.writeQueue = Promise.resolve();
60
+ this.path = path;
61
+ this.cache = this.load();
62
+ }
63
+ load() {
64
+ try {
65
+ const data = JSON.parse(fs.readFileSync(this.path, "utf8"));
66
+ return new Map(Object.entries(data));
67
+ }
68
+ catch {
69
+ return new Map();
70
+ }
71
+ }
72
+ persistSync() {
73
+ const obj = Object.fromEntries(this.cache);
74
+ fs.writeFileSync(this.path, JSON.stringify(obj, null, 2));
75
+ }
76
+ async persist() {
77
+ // Chain writes to prevent race conditions
78
+ // Create the write promise that may reject on error
79
+ const writePromise = this.writeQueue.then(() => {
80
+ this.persistSync();
81
+ });
82
+ // Update the queue with error recovery to prevent getting stuck
83
+ // This ensures future writes can proceed even if this one fails
84
+ this.writeQueue = writePromise.catch(() => {
85
+ // Silently recover the queue - error is propagated via writePromise
86
+ });
87
+ // Return the original promise so errors propagate to caller
88
+ return writePromise;
89
+ }
90
+ async get(key) {
91
+ return this.cache.get(key) ?? null;
92
+ }
93
+ async set(key, value) {
94
+ this.cache.set(key, value);
95
+ await this.persist();
96
+ }
97
+ async delete(key) {
98
+ this.cache.delete(key);
99
+ await this.persist();
100
+ }
101
+ async clear() {
102
+ this.cache.clear();
103
+ await this.persist();
104
+ }
105
+ async has(key) {
106
+ return this.cache.has(key);
107
+ }
108
+ keys() {
109
+ return this.cache.keys();
110
+ }
111
+ }
112
+ exports.FileCache = FileCache;
113
+ /**
114
+ * Get localStorage if available (browser environment)
115
+ */
116
+ function getLocalStorage() {
117
+ // Check for browser environment with localStorage
118
+ if (typeof globalThis !== "undefined") {
119
+ const global = globalThis;
120
+ if (typeof global.localStorage !== "undefined") {
121
+ return global.localStorage;
122
+ }
123
+ }
124
+ return null;
125
+ }
126
+ /**
127
+ * Browser localStorage-based cache adapter.
128
+ * Persists to localStorage with a configurable key prefix.
129
+ *
130
+ * Limitations:
131
+ * - 5MB storage limit (varies by browser)
132
+ * - Synchronous API (blocks main thread, usually negligible)
133
+ * - String-only storage (JSON serialization handled internally)
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * import { createTracker, LocalStorageCache } from "@gzeoneth/gov-tracker";
138
+ *
139
+ * const tracker = createTracker({
140
+ * l2Provider,
141
+ * l1Provider,
142
+ * cache: new LocalStorageCache("arb-gov:"),
143
+ * });
144
+ * ```
145
+ */
146
+ class LocalStorageCache {
147
+ constructor(prefix = "tracker:") {
148
+ this.prefix = prefix;
149
+ }
150
+ fullKey(key) {
151
+ return `${this.prefix}${key}`;
152
+ }
153
+ async get(key) {
154
+ const storage = getLocalStorage();
155
+ if (!storage)
156
+ return null;
157
+ const data = storage.getItem(this.fullKey(key));
158
+ if (data === null)
159
+ return null;
160
+ try {
161
+ return JSON.parse(data);
162
+ }
163
+ catch {
164
+ return null;
165
+ }
166
+ }
167
+ async set(key, value) {
168
+ const storage = getLocalStorage();
169
+ if (!storage)
170
+ return;
171
+ storage.setItem(this.fullKey(key), JSON.stringify(value));
172
+ }
173
+ async delete(key) {
174
+ const storage = getLocalStorage();
175
+ if (!storage)
176
+ return;
177
+ storage.removeItem(this.fullKey(key));
178
+ }
179
+ async clear() {
180
+ const storage = getLocalStorage();
181
+ if (!storage)
182
+ return;
183
+ const keysToRemove = [];
184
+ for (let i = 0; i < storage.length; i++) {
185
+ const key = storage.key(i);
186
+ if (key?.startsWith(this.prefix)) {
187
+ keysToRemove.push(key);
188
+ }
189
+ }
190
+ keysToRemove.forEach((k) => storage.removeItem(k));
191
+ }
192
+ async has(key) {
193
+ const storage = getLocalStorage();
194
+ if (!storage)
195
+ return false;
196
+ return storage.getItem(this.fullKey(key)) !== null;
197
+ }
198
+ async keys(prefix) {
199
+ const storage = getLocalStorage();
200
+ if (!storage)
201
+ return [];
202
+ const result = [];
203
+ for (let i = 0; i < storage.length; i++) {
204
+ const fullKey = storage.key(i);
205
+ if (fullKey?.startsWith(this.prefix)) {
206
+ const key = fullKey.slice(this.prefix.length);
207
+ if (!prefix || key.startsWith(prefix)) {
208
+ result.push(key);
209
+ }
210
+ }
211
+ }
212
+ return result;
213
+ }
214
+ }
215
+ exports.LocalStorageCache = LocalStorageCache;
216
+ /**
217
+ * In-memory cache adapter with no persistence.
218
+ * Useful for testing, short-lived sessions, or as a fallback.
219
+ *
220
+ * Data is lost when the page is refreshed or the process exits.
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * import { createTracker, MemoryCache } from "@gzeoneth/gov-tracker";
225
+ *
226
+ * const tracker = createTracker({
227
+ * l2Provider,
228
+ * l1Provider,
229
+ * cache: new MemoryCache(),
230
+ * });
231
+ * ```
232
+ */
233
+ class MemoryCache {
234
+ constructor() {
235
+ this.cache = new Map();
236
+ }
237
+ async get(key) {
238
+ return this.cache.get(key) ?? null;
239
+ }
240
+ async set(key, value) {
241
+ this.cache.set(key, value);
242
+ }
243
+ async delete(key) {
244
+ this.cache.delete(key);
245
+ }
246
+ async clear() {
247
+ this.cache.clear();
248
+ }
249
+ async has(key) {
250
+ return this.cache.has(key);
251
+ }
252
+ keys() {
253
+ return this.cache.keys();
254
+ }
255
+ }
256
+ exports.MemoryCache = MemoryCache;
257
+ /**
258
+ * Generate cache key from transaction hash (primary cache key format)
259
+ */
260
+ function txHashCacheKey(txHash) {
261
+ return `tx:${txHash.toLowerCase()}`;
262
+ }
263
+ /**
264
+ * Read all cache data without requiring RPC providers.
265
+ * Use this for status/dashboard views that only need cached data.
266
+ *
267
+ * @param cachePath - Path to the cache file
268
+ */
269
+ async function readCacheStatus(cachePath) {
270
+ const cache = new FileCache(cachePath);
271
+ // Load watermarks from discovery checkpoint (unified format)
272
+ const discoveryCheckpoint = await cache.get(discovery_1.WATERMARKS_KEY);
273
+ const watermarks = discoveryCheckpoint?.cachedData.discoveryWatermarks ?? {};
274
+ const checkpoints = new Map();
275
+ const allKeys = cache.keys();
276
+ const keys = Array.from(allKeys);
277
+ for (const key of keys) {
278
+ if (key.startsWith("tx:")) {
279
+ const checkpoint = await cache.get(key);
280
+ if (checkpoint) {
281
+ checkpoints.set(key, checkpoint);
282
+ }
283
+ }
284
+ }
285
+ return { watermarks, checkpoints };
286
+ }
287
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tracker/cache.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ const proposal_queued_1 = require("../stages/proposal-queued");
13
13
  const timelock_1 = require("../stages/timelock");
14
14
  const l2_to_l1_message_1 = require("../stages/l2-to-l1-message");
15
15
  const retryables_1 = require("../stages/retryables");
16
- const base_1 = require("../stages/base");
16
+ const utils_1 = require("../stages/utils");
17
17
  const logger_1 = require("../utils/logger");
18
18
  const log = logger_1.loggers.execution;
19
19
  /**
@@ -50,11 +50,11 @@ async function prepareTransaction(stage, context, options = {}) {
50
50
  // Queue a proposal on the governor (calls governor.queue())
51
51
  const queueData = (0, types_1.getStageData)(stage, "PROPOSAL_QUEUED");
52
52
  if (!queueData) {
53
- return (0, base_1.failPrepare)("Stage is not a PROPOSAL_QUEUED stage");
53
+ return (0, utils_1.failPrepare)("Stage is not a PROPOSAL_QUEUED stage");
54
54
  }
55
55
  const { governorAddress, proposalId, targets, values, calldatas, description } = queueData;
56
56
  if (!governorAddress || !proposalId || !targets || !values || !calldatas || !description) {
57
- return (0, base_1.failPrepare)("Missing proposal queue params in stage data");
57
+ return (0, utils_1.failPrepare)("Missing proposal queue params in stage data");
58
58
  }
59
59
  return (0, proposal_queued_1.prepareGovernorQueue)(governorAddress, proposalId, {
60
60
  targets,
@@ -74,7 +74,7 @@ async function prepareTransaction(stage, context, options = {}) {
74
74
  prepareCompleted: options.prepareCompleted,
75
75
  });
76
76
  if (results.length === 0) {
77
- return (0, base_1.failPrepare)("No messages to prepare");
77
+ return (0, utils_1.failPrepare)("No messages to prepare");
78
78
  }
79
79
  // Find first successful result
80
80
  const successResult = results.find((r) => r.success);
@@ -100,17 +100,17 @@ async function prepareTransaction(stage, context, options = {}) {
100
100
  const targetChain = retryableData?.targetChains?.[0];
101
101
  // Validate target chain exists before selecting provider
102
102
  if (!targetChain) {
103
- return (0, base_1.failPrepare)("No target chain found in retryable stage data");
103
+ return (0, utils_1.failPrepare)("No target chain found in retryable stage data");
104
104
  }
105
- const targetProvider = targetChain === "Nova" ? novaProvider : l2Provider;
105
+ const targetProvider = targetChain === "nova" ? novaProvider : l2Provider;
106
106
  if (!targetProvider) {
107
- return (0, base_1.failPrepare)("Target chain provider not available");
107
+ return (0, utils_1.failPrepare)("Target chain provider not available");
108
108
  }
109
109
  const { total, results } = await (0, retryables_1.prepareRetryableStage)(stage, l1Provider, targetProvider, {
110
110
  prepareCompleted: options.prepareCompleted,
111
111
  });
112
112
  if (results.length === 0) {
113
- return (0, base_1.failPrepare)("No tickets to prepare");
113
+ return (0, utils_1.failPrepare)("No tickets to prepare");
114
114
  }
115
115
  // Find first successful result
116
116
  const successResult = results.find((r) => r.success);
@@ -132,7 +132,7 @@ async function prepareTransaction(stage, context, options = {}) {
132
132
  return results[0];
133
133
  }
134
134
  default:
135
- return (0, base_1.failPrepare)(`Preparation not supported for stage type: ${stage.type}`);
135
+ return (0, utils_1.failPrepare)(`Preparation not supported for stage type: ${stage.type}`);
136
136
  }
137
137
  }
138
138
  //# sourceMappingURL=execute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tracker/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tracker/execute.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgDH,gDAgHC;AA9JD,mCAAgC;AAChC,oCAAqF;AACrF,+DAAiE;AACjE,iDAA0D;AAC1D,iEAAuE;AACvE,qDAA6D;AAC7D,2CAA8C;AAC9C,4CAA0C;AAE1C,MAAM,GAAG,GAAG,gBAAO,CAAC,SAAS,CAAC;AAW9B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAAmB,EACnB,OAAuB,EACvB,UAA0B,EAAE;IAE5B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACzD,GAAG,CAAC,sCAAsC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,4DAA4D;YAC5D,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,IAAA,mBAAW,EAAC,sCAAsC,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YAE3F,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzF,OAAO,IAAA,mBAAW,EAAC,6CAA6C,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,IAAA,sCAAoB,EACzB,eAAe,EACf,UAAU,EACV;gBACE,OAAO;gBACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnD,SAAS;gBACT,eAAe,EAAE,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;aAC9C,EACD,UAAU,CACX,CAAC;QACJ,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,OAAO,IAAA,+BAAoB,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,OAAO,IAAA,+BAAoB,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,4CAAyB,EAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;gBACxF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAA,mBAAW,EAAC,wBAAwB,CAAC,CAAC;YAC/C,CAAC;YACD,+BAA+B;YAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,aAAa,EAAE,CAAC;gBAClB,4EAA4E;gBAC5E,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,OAAO;wBACL,GAAG,aAAa;wBAChB,QAAQ,EAAE;4BACR,GAAG,aAAa,CAAC,QAAQ;4BACzB,WAAW,EACT,aAAa,CAAC,QAAQ,CAAC,WAAW;gCAClC,OAAO,KAAK,sDAAsD;yBACrE;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,kCAAkC;YAClC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,yDAAyD;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAA,mBAAW,EAAC,+CAA+C,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,cAAc,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1E,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,IAAA,mBAAW,EAAC,qCAAqC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,kCAAqB,EAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE;gBACxF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAA,mBAAW,EAAC,uBAAuB,CAAC,CAAC;YAC9C,CAAC;YACD,+BAA+B;YAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,aAAa,EAAE,CAAC;gBAClB,iDAAiD;gBACjD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,OAAO;wBACL,GAAG,aAAa;wBAChB,QAAQ,EAAE;4BACR,GAAG,aAAa,CAAC,QAAQ;4BACzB,WAAW,EACT,aAAa,CAAC,QAAQ,CAAC,WAAW;gCAClC,OAAO,KAAK,iDAAiD;yBAChE;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,kCAAkC;YAClC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED;YACE,OAAO,IAAA,mBAAW,EAAC,6CAA6C,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
@@ -4,44 +4,15 @@
4
4
  * Pure functions that track stages and return updated state.
5
5
  * Each function reads from state, performs tracking, and returns new state.
6
6
  */
7
- import { TrackingContext } from "./context";
8
- export declare function pipelineTrackProposalCreated(state: TrackingContext): Promise<{
9
- state: TrackingContext;
10
- found: boolean;
11
- }>;
12
- export declare function pipelineTrackVoting(state: TrackingContext): Promise<{
13
- state: TrackingContext;
14
- complete: boolean;
15
- }>;
16
- export declare function pipelineTrackProposalQueued(state: TrackingContext): Promise<{
17
- state: TrackingContext;
18
- queued: boolean;
19
- }>;
20
- export declare function pipelineTrackL2Timelock(state: TrackingContext): Promise<{
21
- state: TrackingContext;
22
- executed: boolean;
23
- }>;
24
- export declare function pipelineTrackL2ToL1Message(state: TrackingContext): Promise<{
25
- state: TrackingContext;
26
- executed: boolean;
27
- needsL1: boolean;
28
- }>;
29
- export declare function pipelineTrackL1Timelock(state: TrackingContext): Promise<{
30
- state: TrackingContext;
31
- executed: boolean;
32
- }>;
33
- export declare function pipelineTrackRetryables(state: TrackingContext): Promise<{
34
- state: TrackingContext;
35
- redeemed: boolean;
36
- }>;
7
+ import { TrackingState } from "./state";
37
8
  /**
38
9
  * Track full governor proposal pipeline.
39
10
  * Returns final state after tracking all stages.
40
11
  */
41
- export declare function trackGovernorPipeline(state: TrackingContext): Promise<TrackingContext>;
12
+ export declare function trackGovernorPipeline(state: TrackingState): Promise<TrackingState>;
42
13
  /**
43
14
  * Track timelock pipeline (stages 4-7).
44
15
  * Used by governor pipeline and direct timelock tracking.
45
16
  */
46
- export declare function trackTimelockPipeline(state: TrackingContext): Promise<TrackingContext>;
17
+ export declare function trackTimelockPipeline(state: TrackingState): Promise<TrackingState>;
47
18
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/tracker/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,eAAe,EAiBhB,MAAM,WAAW,CAAC;AAuEnB,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAwBrD;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBxD;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAoDtD;AAID,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CA+BxD;AAaD,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuD1E;AAID,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBxD;AAID,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAoBxD;AAgBD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB5F;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B5F"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/tracker/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,aAAa,EAiBd,MAAM,SAAS,CAAC;AAuWjB;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAwBxF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA8BxF"}
@@ -6,18 +6,11 @@
6
6
  * Each function reads from state, performs tracking, and returns new state.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.pipelineTrackProposalCreated = pipelineTrackProposalCreated;
10
- exports.pipelineTrackVoting = pipelineTrackVoting;
11
- exports.pipelineTrackProposalQueued = pipelineTrackProposalQueued;
12
- exports.pipelineTrackL2Timelock = pipelineTrackL2Timelock;
13
- exports.pipelineTrackL2ToL1Message = pipelineTrackL2ToL1Message;
14
- exports.pipelineTrackL1Timelock = pipelineTrackL1Timelock;
15
- exports.pipelineTrackRetryables = pipelineTrackRetryables;
16
9
  exports.trackGovernorPipeline = trackGovernorPipeline;
17
10
  exports.trackTimelockPipeline = trackTimelockPipeline;
18
11
  const logger_1 = require("../utils/logger");
19
- const context_1 = require("./context");
20
- const base_1 = require("../stages/base");
12
+ const state_1 = require("./state");
13
+ const utils_1 = require("../stages/utils");
21
14
  const proposal_created_1 = require("../stages/proposal-created");
22
15
  const voting_1 = require("../stages/voting");
23
16
  const proposal_queued_1 = require("../stages/proposal-queued");
@@ -33,19 +26,22 @@ const { pipeline: log, tracker: logTracker } = logger_1.loggers;
33
26
  // L1_TIMELOCK is the only L1 stage; RETRYABLE_EXECUTED runs on L2 (Arb1/Nova)
34
27
  const L1_STAGES = new Set(["L1_TIMELOCK"]);
35
28
  // Helper: create placeholder stage
36
- const placeholder = (type, status, reason) => ({
29
+ const placeholder = (type, status, reason) =>
30
+ // Assertion needed: placeholder stages have partial data that gets filled later
31
+ ({
37
32
  type,
38
33
  status,
39
- chain: L1_STAGES.has(type) ? "L1" : "L2",
34
+ chain: L1_STAGES.has(type) ? "ethereum" : "arb1",
35
+ chainId: L1_STAGES.has(type) ? 1 : 42161,
40
36
  transactions: [],
41
37
  data: { reason },
42
38
  });
43
39
  // Helper: track with cache check
44
40
  async function withCache(state, stageType, key, onCached, onTrack) {
45
- const cached = (0, context_1.getCompletedStage)(state, stageType);
41
+ const cached = (0, state_1.getCompletedStage)(state, stageType);
46
42
  if (cached) {
47
43
  log("%s: using cached stage", stageType);
48
- return { state: await (0, context_1.addStage)(state, cached), [key]: onCached(cached) };
44
+ return { state: await (0, state_1.addStage)(state, cached), [key]: onCached(cached) };
49
45
  }
50
46
  return onTrack();
51
47
  }
@@ -53,7 +49,7 @@ async function withCache(state, stageType, key, onCached, onTrack) {
53
49
  async function track(state, stageType, key, tracker) {
54
50
  try {
55
51
  const { stage, result } = await tracker();
56
- return { state: await (0, context_1.addStage)(state, stage), [key]: result };
52
+ return { state: await (0, state_1.addStage)(state, stage), [key]: result };
57
53
  }
58
54
  catch (error) {
59
55
  throw new Error(`Failed to track ${stageType}: ${error instanceof Error ? error.message : String(error)}`);
@@ -61,11 +57,11 @@ async function track(state, stageType, key, tracker) {
61
57
  }
62
58
  // Governor Stages (1-3)
63
59
  async function pipelineTrackProposalCreated(state) {
64
- const governorAddress = (0, context_1.getGovernorAddress)(state);
65
- const proposalId = (0, context_1.getProposalId)(state);
60
+ const governorAddress = (0, state_1.getGovernorAddress)(state);
61
+ const proposalId = (0, state_1.getProposalId)(state);
66
62
  if (!governorAddress || !proposalId)
67
63
  return { state, found: false };
68
- if ((0, context_1.getIsElection)(state))
64
+ if ((0, state_1.getIsElection)(state))
69
65
  return { state, found: false };
70
66
  return withCache(state, "PROPOSAL_CREATED", "found", () => true, async () => {
71
67
  log("PROPOSAL_CREATED: tracking");
@@ -79,9 +75,9 @@ async function pipelineTrackProposalCreated(state) {
79
75
  });
80
76
  }
81
77
  async function pipelineTrackVoting(state) {
82
- const governorAddress = (0, context_1.getGovernorAddress)(state);
83
- const proposalId = (0, context_1.getProposalId)(state);
84
- const proposalData = (0, context_1.getProposalData)(state);
78
+ const governorAddress = (0, state_1.getGovernorAddress)(state);
79
+ const proposalId = (0, state_1.getProposalId)(state);
80
+ const proposalData = (0, state_1.getProposalData)(state);
85
81
  if (!governorAddress || !proposalId || !proposalData)
86
82
  return { state, complete: false };
87
83
  return withCache(state, "VOTING_ACTIVE", "complete", (c) => c.status === "COMPLETED", async () => {
@@ -93,9 +89,9 @@ async function pipelineTrackVoting(state) {
93
89
  });
94
90
  }
95
91
  async function pipelineTrackProposalQueued(state) {
96
- const governorAddress = (0, context_1.getGovernorAddress)(state);
97
- const proposalId = (0, context_1.getProposalId)(state);
98
- const proposalData = (0, context_1.getProposalData)(state);
92
+ const governorAddress = (0, state_1.getGovernorAddress)(state);
93
+ const proposalId = (0, state_1.getProposalId)(state);
94
+ const proposalData = (0, state_1.getProposalData)(state);
99
95
  if (!governorAddress || !proposalId)
100
96
  return { state, queued: false };
101
97
  return withCache(state, "PROPOSAL_QUEUED", "queued", () => true, async () => {
@@ -103,7 +99,7 @@ async function pipelineTrackProposalQueued(state) {
103
99
  return track(state, "PROPOSAL_QUEUED", "queued", async () => {
104
100
  // Voting deadline is L1 block number - convert to L2 for searching
105
101
  // Use bounds to speed up binary search: min=creation block, max=creation+7M (~20 days)
106
- const votingDeadlineL1 = (0, context_1.getVotingEndBlock)(state);
102
+ const votingDeadlineL1 = (0, state_1.getVotingEndBlock)(state);
107
103
  let votingEndBlock;
108
104
  if (votingDeadlineL1) {
109
105
  const creationBlock = proposalData?.creationBlock ?? 0;
@@ -116,7 +112,8 @@ async function pipelineTrackProposalQueued(state) {
116
112
  }
117
113
  const r = await (0, proposal_queued_1.trackProposalQueued)(governorAddress, proposalId, state.providers.l2, proposalData?.creationBlock ?? 0, { votingEndBlock });
118
114
  let stage = r.stage;
119
- if (stage.status === "READY" && proposalData) {
115
+ if (stage.type === "PROPOSAL_QUEUED" && stage.status === "READY" && proposalData) {
116
+ // Enrich stage data with proposal info for READY state
120
117
  stage = {
121
118
  ...stage,
122
119
  data: {
@@ -134,16 +131,16 @@ async function pipelineTrackProposalQueued(state) {
134
131
  }
135
132
  // Timelock Stage (4)
136
133
  async function pipelineTrackL2Timelock(state) {
137
- const timelockAddress = (0, context_1.getTimelockAddress)(state);
138
- const operationId = (0, context_1.getOperationId)(state);
139
- const firstCallScheduledData = (0, context_1.getFirstCallScheduledData)(state);
134
+ const timelockAddress = (0, state_1.getTimelockAddress)(state);
135
+ const operationId = (0, state_1.getOperationId)(state);
136
+ const firstCallScheduledData = (0, state_1.getFirstCallScheduledData)(state);
140
137
  if (!timelockAddress || !operationId || !firstCallScheduledData)
141
138
  return { state, executed: false };
142
139
  return withCache(state, "L2_TIMELOCK", "executed", (c) => c.status === "COMPLETED", async () => {
143
140
  log("L2_TIMELOCK: tracking");
144
141
  return track(state, "L2_TIMELOCK", "executed", async () => {
145
- const r = await (0, timelock_1.trackL2Timelock)(timelockAddress, operationId, state.providers.l2, (0, context_1.getQueueBlockNumber)(state) ?? 0, firstCallScheduledData, {
146
- cachedExecutionTxHash: (0, context_1.getL2ExecutionTxHash)(state),
142
+ const r = await (0, timelock_1.trackL2Timelock)(timelockAddress, operationId, state.providers.l2, (0, state_1.getQueueBlockNumber)(state) ?? 0, firstCallScheduledData, {
143
+ cachedExecutionTxHash: (0, state_1.getL2ExecutionTxHash)(state),
147
144
  allStages: state.stages,
148
145
  });
149
146
  return { stage: r.stage, result: r.executionTxHash !== null };
@@ -155,13 +152,13 @@ const L1_ROUNDTRIP_STAGES = ["L2_TO_L1_MESSAGE", "L1_TIMELOCK", "RETRYABLE_EXECU
155
152
  async function addSkippedL1Stages(state) {
156
153
  let s = state;
157
154
  for (const type of L1_ROUNDTRIP_STAGES)
158
- s = await (0, context_1.addStage)(s, placeholder(type, "SKIPPED", "L2-only path"));
155
+ s = await (0, state_1.addStage)(s, placeholder(type, "SKIPPED", "L2-only path"));
159
156
  return s;
160
157
  }
161
158
  async function pipelineTrackL2ToL1Message(state) {
162
- const l2ExecutionTxHash = (0, context_1.getL2ExecutionTxHash)(state);
163
- const addressForPath = (0, context_1.getGovernorAddress)(state) ?? (0, context_1.getTimelockAddress)(state);
164
- const needsL1 = addressForPath ? (0, base_1.isConstitutional)(addressForPath) : true;
159
+ const l2ExecutionTxHash = (0, state_1.getL2ExecutionTxHash)(state);
160
+ const addressForPath = (0, state_1.getGovernorAddress)(state) ?? (0, state_1.getTimelockAddress)(state);
161
+ const needsL1 = addressForPath ? (0, utils_1.isConstitutional)(addressForPath) : true;
165
162
  if (!needsL1) {
166
163
  log("L2_TO_L1_MESSAGE: L2-only path, skipping L1 stages");
167
164
  return { state: await addSkippedL1Stages(state), executed: false, needsL1: false };
@@ -169,14 +166,14 @@ async function pipelineTrackL2ToL1Message(state) {
169
166
  if (!l2ExecutionTxHash)
170
167
  return { state, executed: false, needsL1: true };
171
168
  // Check completed cache
172
- const cached = (0, context_1.getCompletedStage)(state, "L2_TO_L1_MESSAGE");
169
+ const cached = (0, state_1.getCompletedStage)(state, "L2_TO_L1_MESSAGE");
173
170
  if (cached) {
174
171
  log("L2_TO_L1_MESSAGE: using cached stage");
175
- return { state: await (0, context_1.addStage)(state, cached), executed: true, needsL1: true };
172
+ return { state: await (0, state_1.addStage)(state, cached), executed: true, needsL1: true };
176
173
  }
177
174
  // Fast-path for pending (still in challenge period)
178
- const pending = (0, context_1.getCachedStage)(state, "L2_TO_L1_MESSAGE");
179
- if (pending?.status === "PENDING") {
175
+ const pending = (0, state_1.getCachedStage)(state, "L2_TO_L1_MESSAGE");
176
+ if (pending?.type === "L2_TO_L1_MESSAGE" && pending.status === "PENDING") {
180
177
  const firstExec = pending.data.firstExecutableBlock;
181
178
  if (firstExec) {
182
179
  const { blockNumber: currentL1Block, timestamp } = await (0, timing_2.getCurrentBlockInfo)(state.providers.l1);
@@ -191,7 +188,7 @@ async function pipelineTrackL2ToL1Message(state) {
191
188
  delaySeconds: remainingSeconds,
192
189
  },
193
190
  };
194
- return { state: await (0, context_1.addStage)(state, updated), executed: false, needsL1: true };
191
+ return { state: await (0, state_1.addStage)(state, updated), executed: false, needsL1: true };
195
192
  }
196
193
  }
197
194
  }
@@ -209,8 +206,8 @@ async function pipelineTrackL1Timelock(state) {
209
206
  log("L1_TIMELOCK: tracking");
210
207
  return track(state, "L1_TIMELOCK", "executed", async () => {
211
208
  const r = await (0, timelock_1.trackL1Timelock)(state.providers.l1, {
212
- outboxExecutionTx: (0, context_1.getOutboxExecutionTx)(state),
213
- fromBlock: (0, context_1.getFirstExecutableBlock)(state),
209
+ outboxExecutionTx: (0, state_1.getOutboxExecutionTx)(state),
210
+ fromBlock: (0, state_1.getFirstExecutableBlock)(state),
214
211
  allStages: state.stages,
215
212
  });
216
213
  return { stage: r.stage, result: r.executionTxHash !== null };
@@ -219,7 +216,7 @@ async function pipelineTrackL1Timelock(state) {
219
216
  }
220
217
  // Retryable Stage (7)
221
218
  async function pipelineTrackRetryables(state) {
222
- const l1ExecutionTxHash = (0, context_1.getL1ExecutionTxHash)(state);
219
+ const l1ExecutionTxHash = (0, state_1.getL1ExecutionTxHash)(state);
223
220
  if (!l1ExecutionTxHash)
224
221
  return { state, redeemed: false };
225
222
  return withCache(state, "RETRYABLE_EXECUTED", "redeemed", (c) => c.status === "COMPLETED", async () => {
@@ -237,7 +234,7 @@ async function pipelineTrackRetryables(state) {
237
234
  async function addPlaceholders(state, types, reason) {
238
235
  let s = state;
239
236
  for (const type of types)
240
- s = await (0, context_1.addStage)(s, placeholder(type, "NOT_STARTED", reason));
237
+ s = await (0, state_1.addStage)(s, placeholder(type, "NOT_STARTED", reason));
241
238
  return s;
242
239
  }
243
240
  const RETRYABLE_STAGES = ["RETRYABLE_EXECUTED"];