@gzeoneth/gov-tracker 0.2.1-alpha.perf-sendroot.fa5e981 → 0.2.1-beta.33b5291

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 (188) 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 +39 -1
  27. package/dist/constants.d.ts.map +1 -1
  28. package/dist/constants.js +47 -2
  29. package/dist/constants.js.map +1 -1
  30. package/dist/data/bundled-cache.json +11807 -2559
  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 +52 -36
  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 +15 -0
  47. package/dist/election/details.d.ts.map +1 -0
  48. package/dist/election/details.js +157 -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 +48 -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 +15 -0
  71. package/dist/election/status.d.ts.map +1 -0
  72. package/dist/election/status.js +102 -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 +30 -7
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +94 -9
  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 +10 -4
  103. package/dist/stages/timelock.js.map +1 -1
  104. package/dist/stages/utils.d.ts +7 -8
  105. package/dist/stages/utils.d.ts.map +1 -1
  106. package/dist/stages/utils.js +40 -27
  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 +39 -15
  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/pipeline.d.ts.map +1 -1
  124. package/dist/tracker/pipeline.js +26 -11
  125. package/dist/tracker/pipeline.js.map +1 -1
  126. package/dist/tracker/query.d.ts +1 -0
  127. package/dist/tracker/query.d.ts.map +1 -1
  128. package/dist/tracker/query.js +14 -61
  129. package/dist/tracker/query.js.map +1 -1
  130. package/dist/tracker/state.d.ts +0 -10
  131. package/dist/tracker/state.d.ts.map +1 -1
  132. package/dist/tracker/state.js +1 -28
  133. package/dist/tracker/state.js.map +1 -1
  134. package/dist/tracker.d.ts +78 -4
  135. package/dist/tracker.d.ts.map +1 -1
  136. package/dist/tracker.js +300 -13
  137. package/dist/tracker.js.map +1 -1
  138. package/dist/types/config.d.ts +49 -0
  139. package/dist/types/config.d.ts.map +1 -1
  140. package/dist/types/core.d.ts +4 -2
  141. package/dist/types/core.d.ts.map +1 -1
  142. package/dist/types/election.d.ts +143 -0
  143. package/dist/types/election.d.ts.map +1 -1
  144. package/dist/types/index.d.ts +5 -7
  145. package/dist/types/index.d.ts.map +1 -1
  146. package/dist/types/index.js +2 -3
  147. package/dist/types/index.js.map +1 -1
  148. package/dist/types/stages.d.ts +70 -1
  149. package/dist/types/stages.d.ts.map +1 -1
  150. package/dist/types/stages.js.map +1 -1
  151. package/dist/types/tracking.d.ts +34 -4
  152. package/dist/types/tracking.d.ts.map +1 -1
  153. package/dist/utils/block-cache.d.ts +50 -0
  154. package/dist/utils/block-cache.d.ts.map +1 -0
  155. package/dist/utils/block-cache.js +80 -0
  156. package/dist/utils/block-cache.js.map +1 -0
  157. package/dist/utils/formatters.d.ts +91 -0
  158. package/dist/utils/formatters.d.ts.map +1 -0
  159. package/dist/utils/formatters.js +327 -0
  160. package/dist/utils/formatters.js.map +1 -0
  161. package/dist/utils/multicall.d.ts +52 -0
  162. package/dist/utils/multicall.d.ts.map +1 -0
  163. package/dist/utils/multicall.js +75 -0
  164. package/dist/utils/multicall.js.map +1 -0
  165. package/dist/utils/salt-computation.d.ts.map +1 -1
  166. package/dist/utils/salt-computation.js +33 -7
  167. package/dist/utils/salt-computation.js.map +1 -1
  168. package/dist/utils/sanitize.d.ts +28 -0
  169. package/dist/utils/sanitize.d.ts.map +1 -0
  170. package/dist/utils/sanitize.js +52 -0
  171. package/dist/utils/sanitize.js.map +1 -0
  172. package/dist/utils/stage-metadata.d.ts +0 -20
  173. package/dist/utils/stage-metadata.d.ts.map +1 -1
  174. package/dist/utils/stage-metadata.js +29 -44
  175. package/dist/utils/stage-metadata.js.map +1 -1
  176. package/dist/utils/timing.d.ts +13 -0
  177. package/dist/utils/timing.d.ts.map +1 -1
  178. package/dist/utils/timing.js +37 -1
  179. package/dist/utils/timing.js.map +1 -1
  180. package/package.json +10 -2
  181. package/dist/election.d.ts +0 -172
  182. package/dist/election.d.ts.map +0 -1
  183. package/dist/election.js +0 -467
  184. package/dist/election.js.map +0 -1
  185. package/dist/types/cross-chain.d.ts +0 -24
  186. package/dist/types/cross-chain.d.ts.map +0 -1
  187. package/dist/types/cross-chain.js +0 -6
  188. package/dist/types/cross-chain.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/types/tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/types/tracking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Block-scoped cache for RPC results
3
+ *
4
+ * Caches results that are immutable at a specific block number.
5
+ * Does NOT cache results queried at "latest" (mutable).
6
+ */
7
+ export interface BlockCacheOptions<T> {
8
+ /** Optional predicate to determine if result should be cached even without blockNumber */
9
+ isImmutable?: (value: T) => boolean;
10
+ }
11
+ /**
12
+ * A cache that stores values scoped by block number.
13
+ * Only caches when blockNumber is provided (immutable historical state),
14
+ * OR when the value passes the isImmutable predicate.
15
+ */
16
+ export declare class BlockScopedCache<K, V> {
17
+ private cache;
18
+ private isImmutable?;
19
+ constructor(options?: BlockCacheOptions<V>);
20
+ private makeKey;
21
+ /**
22
+ * Get a cached value.
23
+ * @param key - The cache key
24
+ * @param blockNumber - If provided, looks up block-scoped entry. If not, looks up "latest" entry.
25
+ * @param options.skipCache - If true, always returns undefined (forces fresh fetch)
26
+ */
27
+ get(key: K, blockNumber?: number, options?: {
28
+ skipCache?: boolean;
29
+ }): V | undefined;
30
+ /**
31
+ * Set a cached value.
32
+ * @param key - The cache key
33
+ * @param value - The value to cache
34
+ * @param blockNumber - If provided, caches as immutable block-scoped entry
35
+ */
36
+ set(key: K, value: V, blockNumber?: number): void;
37
+ /**
38
+ * Check if a value exists in cache.
39
+ */
40
+ has(key: K, blockNumber?: number): boolean;
41
+ /**
42
+ * Clear all cached entries.
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Get the number of cached entries.
47
+ */
48
+ get size(): number;
49
+ }
50
+ //# sourceMappingURL=block-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-cache.d.ts","sourceRoot":"","sources":["../../src/utils/block-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB,CAAC,CAAC,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAwB;gBAEhC,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAM;IAI9C,OAAO,CAAC,OAAO;IAKf;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS;IAgBnF;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAWjD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAI1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Block-scoped cache for RPC results
4
+ *
5
+ * Caches results that are immutable at a specific block number.
6
+ * Does NOT cache results queried at "latest" (mutable).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.BlockScopedCache = void 0;
10
+ /**
11
+ * A cache that stores values scoped by block number.
12
+ * Only caches when blockNumber is provided (immutable historical state),
13
+ * OR when the value passes the isImmutable predicate.
14
+ */
15
+ class BlockScopedCache {
16
+ constructor(options = {}) {
17
+ this.cache = new Map();
18
+ this.isImmutable = options.isImmutable;
19
+ }
20
+ makeKey(key, blockNumber) {
21
+ const keyStr = typeof key === "string" ? key : JSON.stringify(key);
22
+ return blockNumber !== undefined ? `${keyStr}:${blockNumber}` : keyStr;
23
+ }
24
+ /**
25
+ * Get a cached value.
26
+ * @param key - The cache key
27
+ * @param blockNumber - If provided, looks up block-scoped entry. If not, looks up "latest" entry.
28
+ * @param options.skipCache - If true, always returns undefined (forces fresh fetch)
29
+ */
30
+ get(key, blockNumber, options) {
31
+ // Skip cache if requested
32
+ if (options?.skipCache) {
33
+ return undefined;
34
+ }
35
+ // When blockNumber is provided, only check block-scoped cache
36
+ if (blockNumber !== undefined) {
37
+ return this.cache.get(this.makeKey(key, blockNumber));
38
+ }
39
+ // When no blockNumber, check if we have an immutable "latest" entry
40
+ const latestKey = this.makeKey(key);
41
+ return this.cache.get(latestKey);
42
+ }
43
+ /**
44
+ * Set a cached value.
45
+ * @param key - The cache key
46
+ * @param value - The value to cache
47
+ * @param blockNumber - If provided, caches as immutable block-scoped entry
48
+ */
49
+ set(key, value, blockNumber) {
50
+ if (blockNumber !== undefined) {
51
+ // Block-scoped: always cache (immutable historical state)
52
+ this.cache.set(this.makeKey(key, blockNumber), value);
53
+ }
54
+ else if (this.isImmutable?.(value)) {
55
+ // No blockNumber but value is immutable: cache as "latest"
56
+ this.cache.set(this.makeKey(key), value);
57
+ }
58
+ // Otherwise: don't cache (mutable state queried at "latest")
59
+ }
60
+ /**
61
+ * Check if a value exists in cache.
62
+ */
63
+ has(key, blockNumber) {
64
+ return this.cache.has(this.makeKey(key, blockNumber));
65
+ }
66
+ /**
67
+ * Clear all cached entries.
68
+ */
69
+ clear() {
70
+ this.cache.clear();
71
+ }
72
+ /**
73
+ * Get the number of cached entries.
74
+ */
75
+ get size() {
76
+ return this.cache.size;
77
+ }
78
+ }
79
+ exports.BlockScopedCache = BlockScopedCache;
80
+ //# sourceMappingURL=block-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-cache.js","sourceRoot":"","sources":["../../src/utils/block-cache.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAOH;;;;GAIG;AACH,MAAa,gBAAgB;IAI3B,YAAY,UAAgC,EAAE;QAHtC,UAAK,GAAG,IAAI,GAAG,EAAa,CAAC;QAInC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAEO,OAAO,CAAC,GAAM,EAAE,WAAoB;QAC1C,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM,EAAE,WAAoB,EAAE,OAAiC;QACjE,0BAA0B;QAC1B,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,8DAA8D;QAC9D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,oEAAoE;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM,EAAE,KAAQ,EAAE,WAAoB;QACxC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,0DAA0D;YAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,2DAA2D;YAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,6DAA6D;IAC/D,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAM,EAAE,WAAoB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAxED,4CAwEC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Pure formatting utilities for display and logging
3
+ *
4
+ * These functions have no React/Ink dependencies and can be used
5
+ * by both the SDK and TUI.
6
+ */
7
+ import type { TrackedStage, TrackingInput, DecodedCalldata } from "../types/index.js";
8
+ import type { Chain } from "../types/index.js";
9
+ /**
10
+ * Wrap text to fit within a given width, breaking at character boundaries
11
+ */
12
+ export declare function wrapText(text: string, width: number): string[];
13
+ /**
14
+ * Truncate text with ellipsis if it exceeds maxLen
15
+ */
16
+ export declare function truncate(str: string, maxLen: number): string;
17
+ /**
18
+ * Safely stringify a value, returning a fallback for complex objects
19
+ */
20
+ export declare function safeStringify(value: unknown): string;
21
+ /**
22
+ * Format an unknown value for display
23
+ */
24
+ export declare function formatValue(value: unknown): string;
25
+ /**
26
+ * Format a Unix timestamp to locale string
27
+ */
28
+ export declare function formatDate(timestamp: number | null): string;
29
+ /**
30
+ * Chain to chain ID mapping
31
+ */
32
+ export declare const CHAIN_TO_CHAIN_ID: Record<Chain, number>;
33
+ /**
34
+ * A formatted stage data item
35
+ */
36
+ export interface StageDataItem {
37
+ label: string;
38
+ value: string;
39
+ }
40
+ /**
41
+ * Format stage data for display, prioritizing important fields
42
+ */
43
+ export declare function formatStageData(stage: TrackedStage): StageDataItem[];
44
+ /**
45
+ * Extract transaction hash from tracking input
46
+ */
47
+ export declare function getTxHash(input: TrackingInput): string;
48
+ /**
49
+ * Get display-friendly proposal or operation ID from tracking input
50
+ */
51
+ export declare function getProposalIdDisplay(input: TrackingInput): string;
52
+ /**
53
+ * A formatted line for calldata display
54
+ */
55
+ export interface FormattedLine {
56
+ text: string;
57
+ indent: number;
58
+ foldable: boolean;
59
+ foldKey?: string;
60
+ foldedLineCount?: number;
61
+ isFoldedContent?: boolean;
62
+ }
63
+ /**
64
+ * Format decoded calldata into displayable lines
65
+ */
66
+ export declare function formatDecodedCalldata(decoded: DecodedCalldata, indent?: number, keyPrefix?: string): FormattedLine[];
67
+ /**
68
+ * Filter lines based on expanded fold keys
69
+ */
70
+ export declare function filterVisibleLines(allLines: FormattedLine[], expandedKeys: Set<string>): FormattedLine[];
71
+ /**
72
+ * Get all foldable keys from lines
73
+ */
74
+ export declare function getAllFoldableKeys(lines: FormattedLine[]): string[];
75
+ /**
76
+ * Toggle a fold key in the expanded set
77
+ */
78
+ export declare function toggleFoldKey(expandedKeys: Set<string>, foldKey: string): Set<string>;
79
+ /**
80
+ * Format duration in seconds to human-readable string
81
+ *
82
+ * Displays the two most significant time units (e.g., "2d 3h" or "5m 30s").
83
+ * Returns "now" for zero or negative values.
84
+ *
85
+ * @example
86
+ * formatDuration(90061) // => "1d 1h"
87
+ * formatDuration(3661) // => "1h 1m"
88
+ * formatDuration(65) // => "1m 5s"
89
+ */
90
+ export declare function formatDuration(seconds: number): string;
91
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM/C;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO9D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI5D;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYlD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG3D;AAMD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAKnD,CAAC;AAoCF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,CA6BpE;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAUtD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAWjE;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAuDD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,MAAM,SAAI,EACV,SAAS,SAAS,GACjB,aAAa,EAAE,CAoBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,aAAa,EAAE,CAKjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAEnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQrF;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBtD"}
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ /**
3
+ * Pure formatting utilities for display and logging
4
+ *
5
+ * These functions have no React/Ink dependencies and can be used
6
+ * by both the SDK and TUI.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CHAIN_TO_CHAIN_ID = void 0;
10
+ exports.wrapText = wrapText;
11
+ exports.truncate = truncate;
12
+ exports.safeStringify = safeStringify;
13
+ exports.formatValue = formatValue;
14
+ exports.formatDate = formatDate;
15
+ exports.formatStageData = formatStageData;
16
+ exports.getTxHash = getTxHash;
17
+ exports.getProposalIdDisplay = getProposalIdDisplay;
18
+ exports.formatDecodedCalldata = formatDecodedCalldata;
19
+ exports.filterVisibleLines = filterVisibleLines;
20
+ exports.getAllFoldableKeys = getAllFoldableKeys;
21
+ exports.toggleFoldKey = toggleFoldKey;
22
+ exports.formatDuration = formatDuration;
23
+ const constants_js_1 = require("../constants.js");
24
+ // ============================================================================
25
+ // Text Utilities
26
+ // ============================================================================
27
+ /**
28
+ * Wrap text to fit within a given width, breaking at character boundaries
29
+ */
30
+ function wrapText(text, width) {
31
+ if (text.length <= width)
32
+ return [text];
33
+ const lines = [];
34
+ for (let i = 0; i < text.length; i += width) {
35
+ lines.push(text.slice(i, i + width));
36
+ }
37
+ return lines;
38
+ }
39
+ /**
40
+ * Truncate text with ellipsis if it exceeds maxLen
41
+ */
42
+ function truncate(str, maxLen) {
43
+ if (maxLen <= 1)
44
+ return str.length > 0 ? "..." : "";
45
+ if (str.length <= maxLen)
46
+ return str;
47
+ return str.slice(0, maxLen - 1) + "...";
48
+ }
49
+ // ============================================================================
50
+ // Value Formatting
51
+ // ============================================================================
52
+ /**
53
+ * Safely stringify a value, returning a fallback for complex objects
54
+ */
55
+ function safeStringify(value) {
56
+ try {
57
+ return JSON.stringify(value);
58
+ }
59
+ catch {
60
+ return "[complex object]";
61
+ }
62
+ }
63
+ /**
64
+ * Format an unknown value for display
65
+ */
66
+ function formatValue(value) {
67
+ if (value === null || value === undefined)
68
+ return "N/A";
69
+ if (typeof value === "string")
70
+ return value;
71
+ if (typeof value === "number")
72
+ return value.toString();
73
+ if (typeof value === "boolean")
74
+ return value ? "Yes" : "No";
75
+ if (Array.isArray(value)) {
76
+ if (value.length === 0)
77
+ return "[]";
78
+ if (value.length <= 3)
79
+ return safeStringify(value);
80
+ return `[${value.length} items]`;
81
+ }
82
+ if (typeof value === "object")
83
+ return safeStringify(value);
84
+ return String(value);
85
+ }
86
+ /**
87
+ * Format a Unix timestamp to locale string
88
+ */
89
+ function formatDate(timestamp) {
90
+ if (timestamp === null)
91
+ return "Unknown";
92
+ return new Date(timestamp).toLocaleString();
93
+ }
94
+ // ============================================================================
95
+ // Stage Formatting
96
+ // ============================================================================
97
+ /**
98
+ * Chain to chain ID mapping
99
+ */
100
+ exports.CHAIN_TO_CHAIN_ID = {
101
+ ethereum: constants_js_1.CHAIN_IDS.ETHEREUM,
102
+ arb1: constants_js_1.CHAIN_IDS.ARB_ONE,
103
+ nova: constants_js_1.CHAIN_IDS.NOVA,
104
+ unknown: constants_js_1.CHAIN_IDS.ETHEREUM,
105
+ };
106
+ /**
107
+ * Priority fields shown first in stage data
108
+ */
109
+ const STAGE_PRIORITY_FIELDS = [
110
+ "proposalId",
111
+ "operationId",
112
+ "proposer",
113
+ "description",
114
+ "proposalState",
115
+ "forVotes",
116
+ "againstVotes",
117
+ "abstainVotes",
118
+ "quorum",
119
+ "quorumReached",
120
+ "timelockAddress",
121
+ "eta",
122
+ "state",
123
+ "messageCount",
124
+ "ticketCount",
125
+ "redeemedCount",
126
+ ];
127
+ /**
128
+ * Fields to skip in stage data display
129
+ */
130
+ const STAGE_SKIP_FIELDS = [
131
+ "targets",
132
+ "values",
133
+ "calldatas",
134
+ "signatures",
135
+ "callScheduledData",
136
+ "_rawBytesArray",
137
+ ];
138
+ /**
139
+ * Format stage data for display, prioritizing important fields
140
+ */
141
+ function formatStageData(stage) {
142
+ const items = [];
143
+ const data = stage.data;
144
+ if (!data)
145
+ return items;
146
+ for (const field of STAGE_PRIORITY_FIELDS) {
147
+ if (field in data && data[field] !== undefined) {
148
+ let value = formatValue(data[field]);
149
+ if (field === "description" && value.length > 100) {
150
+ value = value.slice(0, 100) + "...";
151
+ }
152
+ items.push({ label: field, value });
153
+ }
154
+ }
155
+ for (const [key, value] of Object.entries(data)) {
156
+ if (STAGE_PRIORITY_FIELDS.includes(key))
157
+ continue;
158
+ if (STAGE_SKIP_FIELDS.includes(key))
159
+ continue;
160
+ if (value === undefined || value === null)
161
+ continue;
162
+ let formattedValue = formatValue(value);
163
+ if (formattedValue.length > 80) {
164
+ formattedValue = formattedValue.slice(0, 80) + "...";
165
+ }
166
+ items.push({ label: key, value: formattedValue });
167
+ }
168
+ return items;
169
+ }
170
+ // ============================================================================
171
+ // Tracking Input Helpers
172
+ // ============================================================================
173
+ /**
174
+ * Extract transaction hash from tracking input
175
+ */
176
+ function getTxHash(input) {
177
+ switch (input.type) {
178
+ case "governor":
179
+ return input.creationTxHash;
180
+ case "timelock":
181
+ return input.scheduledTxHash;
182
+ case "discovery":
183
+ case "election":
184
+ return "";
185
+ }
186
+ }
187
+ /**
188
+ * Get display-friendly proposal or operation ID from tracking input
189
+ */
190
+ function getProposalIdDisplay(input) {
191
+ switch (input.type) {
192
+ case "governor":
193
+ return input.proposalId;
194
+ case "timelock":
195
+ return input.operationId;
196
+ case "discovery":
197
+ return input.id;
198
+ case "election":
199
+ return `election-${input.electionIndex}`;
200
+ }
201
+ }
202
+ const CALLDATA_FOLD_THRESHOLD = 100;
203
+ function formatCalldataParameter(param, indent, keyPrefix) {
204
+ const lines = [];
205
+ const foldKey = `${keyPrefix}-${param.name}`;
206
+ let value = param.displayValue;
207
+ if (param.addressLabel) {
208
+ value = `${param.displayValue} [${param.addressLabel}]`;
209
+ }
210
+ const isFoldable = value.length > CALLDATA_FOLD_THRESHOLD;
211
+ const wrappedLines = isFoldable ? wrapText(value, 80) : [value];
212
+ lines.push({
213
+ text: `${param.name} (${param.type}): ${wrappedLines[0]}`,
214
+ indent,
215
+ foldable: isFoldable,
216
+ foldKey: isFoldable ? foldKey : undefined,
217
+ foldedLineCount: isFoldable ? wrappedLines.length - 1 : undefined,
218
+ });
219
+ if (isFoldable && wrappedLines.length > 1) {
220
+ for (let i = 1; i < wrappedLines.length; i++) {
221
+ lines.push({
222
+ text: wrappedLines[i],
223
+ indent: indent + 1,
224
+ foldable: false,
225
+ isFoldedContent: true,
226
+ foldKey,
227
+ });
228
+ }
229
+ }
230
+ if (param.nested) {
231
+ lines.push({ text: "|- [NESTED]", indent: indent + 1, foldable: false });
232
+ lines.push(...formatDecodedCalldata(param.nested, indent + 2, `${foldKey}-nested`));
233
+ }
234
+ if (param.nestedArray && param.nestedArray.length > 0) {
235
+ param.nestedArray.forEach((nested, i) => {
236
+ lines.push({ text: `[${i}]:`, indent: indent + 1, foldable: false });
237
+ lines.push(...formatDecodedCalldata(nested, indent + 2, `${foldKey}-arr-${i}`));
238
+ });
239
+ }
240
+ return lines;
241
+ }
242
+ /**
243
+ * Format decoded calldata into displayable lines
244
+ */
245
+ function formatDecodedCalldata(decoded, indent = 0, keyPrefix = "root") {
246
+ const lines = [];
247
+ let header;
248
+ if (decoded.isRetryable) {
249
+ header = `Retryable Ticket -> ${decoded.targetChain}`;
250
+ }
251
+ else if (decoded.signature) {
252
+ header = decoded.signature;
253
+ }
254
+ else {
255
+ header = `Unknown function (${decoded.selector})`;
256
+ }
257
+ lines.push({ text: header, indent, foldable: false });
258
+ if (decoded.parameters) {
259
+ decoded.parameters.forEach((param, i) => {
260
+ lines.push(...formatCalldataParameter(param, indent + 1, `${keyPrefix}-p${i}`));
261
+ });
262
+ }
263
+ return lines;
264
+ }
265
+ /**
266
+ * Filter lines based on expanded fold keys
267
+ */
268
+ function filterVisibleLines(allLines, expandedKeys) {
269
+ return allLines.filter((line) => {
270
+ if (!line.isFoldedContent)
271
+ return true;
272
+ return line.foldKey && expandedKeys.has(line.foldKey);
273
+ });
274
+ }
275
+ /**
276
+ * Get all foldable keys from lines
277
+ */
278
+ function getAllFoldableKeys(lines) {
279
+ return lines.filter((l) => l.foldable && l.foldKey).map((l) => l.foldKey);
280
+ }
281
+ /**
282
+ * Toggle a fold key in the expanded set
283
+ */
284
+ function toggleFoldKey(expandedKeys, foldKey) {
285
+ const next = new Set(expandedKeys);
286
+ if (next.has(foldKey)) {
287
+ next.delete(foldKey);
288
+ }
289
+ else {
290
+ next.add(foldKey);
291
+ }
292
+ return next;
293
+ }
294
+ // ============================================================================
295
+ // Duration Formatting
296
+ // ============================================================================
297
+ /**
298
+ * Format duration in seconds to human-readable string
299
+ *
300
+ * Displays the two most significant time units (e.g., "2d 3h" or "5m 30s").
301
+ * Returns "now" for zero or negative values.
302
+ *
303
+ * @example
304
+ * formatDuration(90061) // => "1d 1h"
305
+ * formatDuration(3661) // => "1h 1m"
306
+ * formatDuration(65) // => "1m 5s"
307
+ */
308
+ function formatDuration(seconds) {
309
+ if (seconds <= 0)
310
+ return "now";
311
+ const totalSeconds = Math.floor(seconds);
312
+ const days = Math.floor(totalSeconds / 86400);
313
+ const hours = Math.floor((totalSeconds % 86400) / 3600);
314
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
315
+ const secs = totalSeconds % 60;
316
+ const parts = [];
317
+ if (days > 0)
318
+ parts.push(`${days}d`);
319
+ if (hours > 0 && parts.length < 2)
320
+ parts.push(`${hours}h`);
321
+ if (minutes > 0 && parts.length < 2)
322
+ parts.push(`${minutes}m`);
323
+ if (secs > 0 && parts.length < 2)
324
+ parts.push(`${secs}s`);
325
+ return parts.join(" ") || "0s";
326
+ }
327
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/utils/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Multicall utilities for batching L2 RPC calls
3
+ *
4
+ * Wraps @arbitrum/sdk's MultiCaller to batch multiple contract calls into a single RPC request.
5
+ * Only use for L2 calls - L1 RPCs are typically rate-limited and don't benefit as much.
6
+ */
7
+ import { ethers } from "ethers";
8
+ import { MultiCaller, CallInput } from "@arbitrum/sdk";
9
+ /**
10
+ * Create a MultiCaller instance for the given provider
11
+ *
12
+ * Uses the SDK's address resolution to find the correct Multicall2 contract.
13
+ */
14
+ export declare function getMultiCaller(provider: ethers.providers.Provider): Promise<MultiCaller>;
15
+ /**
16
+ * Build a CallInput for a contract method call
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const input = buildCallInput(
21
+ * timelockAddress,
22
+ * timelockInterface,
23
+ * "isOperationReady",
24
+ * [operationId]
25
+ * );
26
+ * ```
27
+ */
28
+ export declare function buildCallInput<T>(targetAddr: string, iface: ethers.utils.Interface, method: string, args?: unknown[]): CallInput<T>;
29
+ /**
30
+ * Execute multiple calls in a single RPC request
31
+ *
32
+ * @param provider - L2 provider (Arbitrum One/Nova)
33
+ * @param calls - Array of CallInput objects
34
+ * @param requireSuccess - If true, reverts if any call fails. If false, failed calls return undefined.
35
+ * @returns Array of results in the same order as inputs
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const timelockIface = new ethers.utils.Interface(TIMELOCK_ABI);
40
+ *
41
+ * const [isReady, isDone, timestamp] = await multicall(provider, [
42
+ * buildCallInput(timelockAddr, timelockIface, "isOperationReady", [opId]),
43
+ * buildCallInput(timelockAddr, timelockIface, "isOperationDone", [opId]),
44
+ * buildCallInput(timelockAddr, timelockIface, "getTimestamp", [opId]),
45
+ * ]);
46
+ * ```
47
+ */
48
+ export declare function multicall<T extends CallInput<unknown>[]>(provider: ethers.providers.Provider, calls: [...T], requireSuccess?: boolean): Promise<{
49
+ [K in keyof T]: T[K] extends CallInput<infer U> ? U | undefined : never;
50
+ }>;
51
+ export { CallInput } from "@arbitrum/sdk";
52
+ //# sourceMappingURL=multicall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/utils/multicall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAKvD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAE9F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,OAAO,EAAO,GACnB,SAAS,CAAC,CAAC,CAAC,CASd;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5D,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EACb,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK;CAAE,CAAC,CAatF;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}