@gzeoneth/gov-tracker 0.4.0 → 0.5.0
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.
- package/README.md +95 -11
- package/dist/abis-json.d.ts +2315 -0
- package/dist/abis-json.d.ts.map +1 -0
- package/dist/abis-json.js +3207 -0
- package/dist/abis-json.js.map +1 -0
- package/dist/abis.d.ts +12 -7
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +32 -1
- package/dist/abis.js.map +1 -1
- package/dist/calldata/decoder.d.ts.map +1 -1
- package/dist/calldata/decoder.js +33 -28
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +19 -25
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/calldata/retryable-ticket.d.ts +2 -2
- package/dist/calldata/retryable-ticket.d.ts.map +1 -1
- package/dist/calldata/retryable-ticket.js +17 -12
- package/dist/calldata/retryable-ticket.js.map +1 -1
- package/dist/calldata/signature-lookup.js +5 -4
- package/dist/calldata/signature-lookup.js.map +1 -1
- package/dist/cli/cli.js +112 -20
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/lib/cli.d.ts +4 -2
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +34 -18
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/election-check.d.ts.map +1 -1
- package/dist/cli/lib/election-check.js +2 -1
- package/dist/cli/lib/election-check.js.map +1 -1
- package/dist/cli/lib/json-state.js +1 -1
- package/dist/cli/lib/json-state.js.map +1 -1
- package/dist/cli/tui/components/StageProgress.js +1 -1
- package/dist/cli/tui/components/StageProgress.js.map +1 -1
- package/dist/cli/tui/components/StageRow.d.ts.map +1 -1
- package/dist/cli/tui/components/StageRow.js +15 -20
- package/dist/cli/tui/components/StageRow.js.map +1 -1
- package/dist/cli/tui/components/VotingStats.d.ts.map +1 -1
- package/dist/cli/tui/components/VotingStats.js +2 -1
- package/dist/cli/tui/components/VotingStats.js.map +1 -1
- package/dist/cli/tui/hooks/useCache.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useCache.js +2 -1
- package/dist/cli/tui/hooks/useCache.js.map +1 -1
- package/dist/cli/tui/hooks/useElectionData.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useElectionData.js +3 -2
- package/dist/cli/tui/hooks/useElectionData.js.map +1 -1
- package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useNavigation.js +2 -3
- package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
- package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useProposals.js +26 -36
- package/dist/cli/tui/hooks/useProposals.js.map +1 -1
- package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useStageCalldata.js +2 -1
- package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -1
- package/dist/cli/tui/utils/index.d.ts +7 -7
- package/dist/cli/tui/utils/index.d.ts.map +1 -1
- package/dist/cli/tui/utils/index.js +18 -13
- package/dist/cli/tui/utils/index.js.map +1 -1
- package/dist/cli/tui/utils/markdown-parser.d.ts +5 -0
- package/dist/cli/tui/utils/markdown-parser.d.ts.map +1 -1
- package/dist/cli/tui/utils/markdown-parser.js +16 -0
- package/dist/cli/tui/utils/markdown-parser.js.map +1 -1
- package/dist/cli/tui/utils/navigation.d.ts +1 -0
- package/dist/cli/tui/utils/navigation.d.ts.map +1 -1
- package/dist/cli/tui/utils/navigation.js +9 -5
- package/dist/cli/tui/utils/navigation.js.map +1 -1
- package/dist/cli/tui/utils/proposal-detail-helpers.js +6 -6
- package/dist/cli/tui/utils/proposal-detail-helpers.js.map +1 -1
- package/dist/cli/tui/utils/stage-status.d.ts +4 -0
- package/dist/cli/tui/utils/stage-status.d.ts.map +1 -1
- package/dist/cli/tui/utils/stage-status.js +47 -1
- package/dist/cli/tui/utils/stage-status.js.map +1 -1
- package/dist/cli/tui/utils/time.d.ts +4 -4
- package/dist/cli/tui/utils/time.d.ts.map +1 -1
- package/dist/cli/tui/utils/time.js +13 -11
- package/dist/cli/tui/utils/time.js.map +1 -1
- package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
- package/dist/cli/tui/views/CalldataView.js +3 -2
- package/dist/cli/tui/views/CalldataView.js.map +1 -1
- package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -1
- package/dist/cli/tui/views/DescriptionView.js +4 -2
- package/dist/cli/tui/views/DescriptionView.js.map +1 -1
- package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
- package/dist/cli/tui/views/ElectionView.js +4 -9
- package/dist/cli/tui/views/ElectionView.js.map +1 -1
- package/dist/constants.d.ts +54 -23
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +78 -21
- package/dist/constants.js.map +1 -1
- package/dist/data/bundled-cache.json +393 -20
- package/dist/data/delegate-cache.json +118014 -0
- package/dist/deduplication.d.ts.map +1 -1
- package/dist/deduplication.js +34 -54
- package/dist/deduplication.js.map +1 -1
- package/dist/delegates/cache.d.ts +44 -0
- package/dist/delegates/cache.d.ts.map +1 -0
- package/dist/delegates/cache.js +202 -0
- package/dist/delegates/cache.js.map +1 -0
- package/dist/delegates/index.d.ts +13 -0
- package/dist/delegates/index.d.ts.map +1 -0
- package/dist/delegates/index.js +32 -0
- package/dist/delegates/index.js.map +1 -0
- package/dist/delegates/indexer.d.ts +32 -0
- package/dist/delegates/indexer.d.ts.map +1 -0
- package/dist/delegates/indexer.js +191 -0
- package/dist/delegates/indexer.js.map +1 -0
- package/dist/delegates/queries.d.ts +30 -0
- package/dist/delegates/queries.d.ts.map +1 -0
- package/dist/delegates/queries.js +79 -0
- package/dist/delegates/queries.js.map +1 -0
- package/dist/discovery/governor-discovery.d.ts +21 -1
- package/dist/discovery/governor-discovery.d.ts.map +1 -1
- package/dist/discovery/governor-discovery.js +47 -13
- package/dist/discovery/governor-discovery.js.map +1 -1
- package/dist/discovery/timelock-discovery.d.ts.map +1 -1
- package/dist/discovery/timelock-discovery.js +27 -30
- package/dist/discovery/timelock-discovery.js.map +1 -1
- package/dist/election/contracts.d.ts.map +1 -1
- package/dist/election/contracts.js +4 -1
- package/dist/election/contracts.js.map +1 -1
- package/dist/election/details.d.ts.map +1 -1
- package/dist/election/details.js +7 -3
- package/dist/election/details.js.map +1 -1
- package/dist/election/index.d.ts +3 -1
- package/dist/election/index.d.ts.map +1 -1
- package/dist/election/index.js +12 -1
- package/dist/election/index.js.map +1 -1
- package/dist/election/params.d.ts.map +1 -1
- package/dist/election/params.js +14 -28
- package/dist/election/params.js.map +1 -1
- package/dist/election/participants.d.ts.map +1 -1
- package/dist/election/participants.js +21 -26
- package/dist/election/participants.js.map +1 -1
- package/dist/election/proposal-ids.js +19 -22
- package/dist/election/proposal-ids.js.map +1 -1
- package/dist/election/status.d.ts +28 -1
- package/dist/election/status.d.ts.map +1 -1
- package/dist/election/status.js +116 -3
- package/dist/election/status.js.map +1 -1
- package/dist/election/write.d.ts +132 -0
- package/dist/election/write.d.ts.map +1 -0
- package/dist/election/write.js +184 -0
- package/dist/election/write.js.map +1 -0
- package/dist/governance/index.d.ts +5 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +28 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/read.d.ts +50 -0
- package/dist/governance/read.d.ts.map +1 -0
- package/dist/governance/read.js +194 -0
- package/dist/governance/read.js.map +1 -0
- package/dist/governance/write.d.ts +54 -0
- package/dist/governance/write.d.ts.map +1 -0
- package/dist/governance/write.js +132 -0
- package/dist/governance/write.js.map +1 -0
- package/dist/index.d.ts +40 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +149 -15
- package/dist/index.js.map +1 -1
- package/dist/simulation/index.d.ts +4 -1
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +5 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/simulation-data.d.ts +33 -2
- package/dist/simulation/simulation-data.d.ts.map +1 -1
- package/dist/simulation/simulation-data.js +68 -24
- package/dist/simulation/simulation-data.js.map +1 -1
- package/dist/simulation/tenderly-payloads.d.ts +107 -0
- package/dist/simulation/tenderly-payloads.d.ts.map +1 -0
- package/dist/simulation/tenderly-payloads.js +103 -0
- package/dist/simulation/tenderly-payloads.js.map +1 -0
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +43 -63
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.d.ts.map +1 -1
- package/dist/stages/retryables.js +10 -9
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +43 -3
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +170 -53
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/utils.d.ts +56 -1
- package/dist/stages/utils.d.ts.map +1 -1
- package/dist/stages/utils.js +146 -30
- package/dist/stages/utils.js.map +1 -1
- package/dist/tracker/bundled-cache.d.ts +136 -0
- package/dist/tracker/bundled-cache.d.ts.map +1 -0
- package/dist/tracker/bundled-cache.js +207 -0
- package/dist/tracker/bundled-cache.js.map +1 -0
- package/dist/tracker/checkpoint-helpers.d.ts +20 -1
- package/dist/tracker/checkpoint-helpers.d.ts.map +1 -1
- package/dist/tracker/checkpoint-helpers.js +41 -7
- package/dist/tracker/checkpoint-helpers.js.map +1 -1
- package/dist/tracker/discovery.d.ts +3 -0
- package/dist/tracker/discovery.d.ts.map +1 -1
- package/dist/tracker/discovery.js +59 -34
- package/dist/tracker/discovery.js.map +1 -1
- package/dist/tracker/pipeline.d.ts +3 -10
- package/dist/tracker/pipeline.d.ts.map +1 -1
- package/dist/tracker/pipeline.js +18 -32
- package/dist/tracker/pipeline.js.map +1 -1
- package/dist/tracker/query.d.ts +1 -0
- package/dist/tracker/query.d.ts.map +1 -1
- package/dist/tracker/query.js +28 -36
- package/dist/tracker/query.js.map +1 -1
- package/dist/tracker/state.d.ts +3 -2
- package/dist/tracker/state.d.ts.map +1 -1
- package/dist/tracker/state.js +5 -4
- package/dist/tracker/state.js.map +1 -1
- package/dist/tracker.d.ts +33 -11
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +76 -43
- package/dist/tracker.js.map +1 -1
- package/dist/types/config.d.ts +39 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/delegates.d.ts +55 -0
- package/dist/types/delegates.d.ts.map +1 -0
- package/dist/types/delegates.js +9 -0
- package/dist/types/delegates.js.map +1 -0
- package/dist/types/election.d.ts +23 -0
- package/dist/types/election.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/simulation.d.ts +2 -2
- package/dist/types/simulation.d.ts.map +1 -1
- package/dist/types/tracking.d.ts +2 -2
- package/dist/types/tracking.d.ts.map +1 -1
- package/dist/utils/chain.d.ts +5 -1
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils/chain.js +7 -0
- package/dist/utils/chain.js.map +1 -1
- package/dist/utils/formatters.d.ts +2 -6
- package/dist/utils/formatters.d.ts.map +1 -1
- package/dist/utils/formatters.js +9 -12
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/log-filters.js +1 -1
- package/dist/utils/log-filters.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/multicall.d.ts +0 -1
- package/dist/utils/multicall.d.ts.map +1 -1
- package/dist/utils/rpc-utils.d.ts +5 -0
- package/dist/utils/rpc-utils.d.ts.map +1 -1
- package/dist/utils/rpc-utils.js +9 -1
- package/dist/utils/rpc-utils.js.map +1 -1
- package/dist/utils/stage-metadata.d.ts +19 -0
- package/dist/utils/stage-metadata.d.ts.map +1 -1
- package/dist/utils/stage-metadata.js +44 -0
- package/dist/utils/stage-metadata.js.map +1 -1
- package/dist/utils/timing.d.ts +3 -10
- package/dist/utils/timing.d.ts.map +1 -1
- package/dist/utils/timing.js +9 -22
- package/dist/utils/timing.js.map +1 -1
- package/package.json +7 -3
- package/dist/cli/tui/utils/calldata-formatter.d.ts +0 -7
- package/dist/cli/tui/utils/calldata-formatter.d.ts.map +0 -1
- package/dist/cli/tui/utils/calldata-formatter.js +0 -14
- package/dist/cli/tui/utils/calldata-formatter.js.map +0 -1
- package/dist/cli/tui/utils/stage-formatter.d.ts +0 -7
- package/dist/cli/tui/utils/stage-formatter.d.ts.map +0 -1
- package/dist/cli/tui/utils/stage-formatter.js +0 -13
- package/dist/cli/tui/utils/stage-formatter.js.map +0 -1
- package/dist/cli/tui/utils/text.d.ts +0 -7
- package/dist/cli/tui/utils/text.d.ts.map +0 -1
- package/dist/cli/tui/utils/text.js +0 -12
- package/dist/cli/tui/utils/text.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deduplication.d.ts","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"deduplication.d.ts","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAoC3E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAI1E;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAElF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQ3F;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,WAAW,EAAE;QACX,uCAAuC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,gDAAgD;QAChD,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsB5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBtF"}
|
package/dist/deduplication.js
CHANGED
|
@@ -55,6 +55,13 @@ async function getCacheKeysAsync(cache) {
|
|
|
55
55
|
}
|
|
56
56
|
return [];
|
|
57
57
|
}
|
|
58
|
+
/** Load all checkpoints matching an optional key filter */
|
|
59
|
+
async function loadCheckpoints(cache, keyFilter) {
|
|
60
|
+
const allKeys = await getCacheKeysAsync(cache);
|
|
61
|
+
const keys = keyFilter ? allKeys.filter(keyFilter) : allKeys;
|
|
62
|
+
const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
|
|
63
|
+
return keys.map((key, i) => ({ key, checkpoint: checkpoints[i] ?? null }));
|
|
64
|
+
}
|
|
58
65
|
/**
|
|
59
66
|
* Check if a timelock operation calldata involves Security Council management
|
|
60
67
|
*
|
|
@@ -130,13 +137,12 @@ function filterChildCheckpoints(results) {
|
|
|
130
137
|
* @returns Map of child key to parent key
|
|
131
138
|
*/
|
|
132
139
|
async function getChildToParentMap(cache) {
|
|
140
|
+
const entries = await loadCheckpoints(cache);
|
|
133
141
|
const result = new Map();
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
result.set(key, checkpoint.metadata.sourceCheckpoint);
|
|
139
|
-
}
|
|
142
|
+
for (const { key, checkpoint } of entries) {
|
|
143
|
+
const source = checkpoint?.metadata?.sourceCheckpoint;
|
|
144
|
+
if (source)
|
|
145
|
+
result.set(key, source);
|
|
140
146
|
}
|
|
141
147
|
return result;
|
|
142
148
|
}
|
|
@@ -148,15 +154,10 @@ async function getChildToParentMap(cache) {
|
|
|
148
154
|
* @returns Array of child checkpoint keys
|
|
149
155
|
*/
|
|
150
156
|
async function getChildCheckpoints(parentKey, cache) {
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (checkpoint?.metadata?.sourceCheckpoint === parentKey) {
|
|
156
|
-
children.push(key);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return children;
|
|
157
|
+
const entries = await loadCheckpoints(cache);
|
|
158
|
+
return entries
|
|
159
|
+
.filter(({ checkpoint }) => checkpoint?.metadata?.sourceCheckpoint === parentKey)
|
|
160
|
+
.map(({ key }) => key);
|
|
160
161
|
}
|
|
161
162
|
/**
|
|
162
163
|
* Get deduplication statistics for the cache
|
|
@@ -165,36 +166,25 @@ async function getChildCheckpoints(parentKey, cache) {
|
|
|
165
166
|
* @returns Statistics about checkpoint relationships
|
|
166
167
|
*/
|
|
167
168
|
async function getDeduplicationStats(cache) {
|
|
168
|
-
const
|
|
169
|
-
let totalCheckpoints = 0;
|
|
169
|
+
const entries = await loadCheckpoints(cache, (key) => key !== "discovery:watermarks");
|
|
170
170
|
let childCheckpoints = 0;
|
|
171
171
|
let fromElections = 0;
|
|
172
172
|
let fromProposals = 0;
|
|
173
|
-
for (const
|
|
174
|
-
// Skip watermarks
|
|
175
|
-
if (key === "discovery:watermarks")
|
|
176
|
-
continue;
|
|
177
|
-
totalCheckpoints++;
|
|
178
|
-
const checkpoint = await cache.get(key);
|
|
173
|
+
for (const { checkpoint } of entries) {
|
|
179
174
|
const source = checkpoint?.metadata?.sourceCheckpoint;
|
|
180
175
|
if (source) {
|
|
181
176
|
childCheckpoints++;
|
|
182
|
-
if (source.startsWith("election:"))
|
|
177
|
+
if (source.startsWith("election:"))
|
|
183
178
|
fromElections++;
|
|
184
|
-
|
|
185
|
-
else {
|
|
179
|
+
else
|
|
186
180
|
fromProposals++;
|
|
187
|
-
}
|
|
188
181
|
}
|
|
189
182
|
}
|
|
190
183
|
return {
|
|
191
|
-
totalCheckpoints,
|
|
192
|
-
rootCheckpoints:
|
|
184
|
+
totalCheckpoints: entries.length,
|
|
185
|
+
rootCheckpoints: entries.length - childCheckpoints,
|
|
193
186
|
childCheckpoints,
|
|
194
|
-
parentTypes: {
|
|
195
|
-
fromElections,
|
|
196
|
-
fromProposals,
|
|
197
|
-
},
|
|
187
|
+
parentTypes: { fromElections, fromProposals },
|
|
198
188
|
};
|
|
199
189
|
}
|
|
200
190
|
/**
|
|
@@ -215,17 +205,17 @@ async function findPotentialParent(timelockCheckpoint, cache) {
|
|
|
215
205
|
const isL2ConstitutionalTimelock = timelockAddr === constants_1.ADDRESSES.L2_CONSTITUTIONAL_TIMELOCK?.toLowerCase();
|
|
216
206
|
if (isL2ConstitutionalTimelock) {
|
|
217
207
|
// Search completed elections that might have created this
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const electionCheckpoint =
|
|
208
|
+
const electionKeys = keys.filter((key) => key.startsWith("election:"));
|
|
209
|
+
const electionCheckpoints = await Promise.all(electionKeys.map((key) => cache.get(key)));
|
|
210
|
+
for (let i = 0; i < electionKeys.length; i++) {
|
|
211
|
+
const electionCheckpoint = electionCheckpoints[i];
|
|
222
212
|
const status = electionCheckpoint?.cachedData?.electionStatus;
|
|
223
213
|
// Completed elections with executed member proposals create timelock ops
|
|
224
214
|
if (status?.phase === "COMPLETED" && status.memberProposalId) {
|
|
225
215
|
// This election completed and may have created this timelock op
|
|
226
216
|
// Without more detailed tracking of the execution tx, we can't be 100% sure
|
|
227
217
|
// but this is a reasonable heuristic
|
|
228
|
-
return
|
|
218
|
+
return electionKeys[i];
|
|
229
219
|
}
|
|
230
220
|
}
|
|
231
221
|
}
|
|
@@ -243,24 +233,14 @@ async function findPotentialParent(timelockCheckpoint, cache) {
|
|
|
243
233
|
* @returns Number of newly linked checkpoints
|
|
244
234
|
*/
|
|
245
235
|
async function autoLinkOrphanedCheckpoints(cache) {
|
|
246
|
-
const
|
|
236
|
+
const entries = await loadCheckpoints(cache, (key) => key.startsWith("tx:"));
|
|
237
|
+
const orphaned = entries.filter(({ checkpoint }) => checkpoint && !checkpoint.metadata?.sourceCheckpoint && checkpoint.input.type === "timelock");
|
|
238
|
+
const parentResults = await Promise.all(orphaned.map(({ checkpoint }) => findPotentialParent(checkpoint, cache)));
|
|
247
239
|
let linkedCount = 0;
|
|
248
|
-
for (
|
|
249
|
-
|
|
250
|
-
continue;
|
|
251
|
-
const checkpoint = await cache.get(key);
|
|
252
|
-
if (!checkpoint)
|
|
253
|
-
continue;
|
|
254
|
-
// Skip if already linked
|
|
255
|
-
if (checkpoint.metadata?.sourceCheckpoint)
|
|
256
|
-
continue;
|
|
257
|
-
// Skip if not a timelock checkpoint
|
|
258
|
-
if (checkpoint.input.type !== "timelock")
|
|
259
|
-
continue;
|
|
260
|
-
// Try to find a parent
|
|
261
|
-
const parentKey = await findPotentialParent(checkpoint, cache);
|
|
240
|
+
for (let i = 0; i < orphaned.length; i++) {
|
|
241
|
+
const parentKey = parentResults[i];
|
|
262
242
|
if (parentKey) {
|
|
263
|
-
await linkCheckpointToChild(key, parentKey, cache);
|
|
243
|
+
await linkCheckpointToChild(orphaned[i].key, parentKey, cache);
|
|
264
244
|
linkedCount++;
|
|
265
245
|
}
|
|
266
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deduplication.js","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;
|
|
1
|
+
{"version":3,"file":"deduplication.js","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegate cache loading, validation, and query helpers
|
|
3
|
+
*
|
|
4
|
+
* All functions are synchronous and operate on a loaded DelegateCache.
|
|
5
|
+
* No RPC calls — pure data access.
|
|
6
|
+
*/
|
|
7
|
+
import type { DelegateCache, DelegateCacheStats, DelegateInfo } from "../types/delegates";
|
|
8
|
+
export declare const DELEGATE_CACHE_VERSION = 1;
|
|
9
|
+
export declare function serializeDelegateCache(cache: DelegateCache): Record<string, unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* Get the path to the bundled delegate cache shipped with the package.
|
|
12
|
+
* Tries multiple candidate paths to support dist/ and src/ layouts.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getBundledDelegateCachePath(): string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Load the bundled delegate cache shipped with the package.
|
|
17
|
+
* Returns the parsed DelegateCache object.
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadBundledDelegateCache(): DelegateCache;
|
|
20
|
+
/** Extract the delegates array from a cache */
|
|
21
|
+
export declare function extractDelegates(cache: DelegateCache): DelegateInfo[];
|
|
22
|
+
/** Extract display statistics from a cache */
|
|
23
|
+
export declare function getDelegateCacheStats(cache: DelegateCache): DelegateCacheStats;
|
|
24
|
+
/** Get top N delegates by voting power (already sorted in cache) */
|
|
25
|
+
export declare function getTopDelegates(cache: DelegateCache, limit?: number): DelegateInfo[];
|
|
26
|
+
/**
|
|
27
|
+
* Look up a delegate's rank and cached voting power.
|
|
28
|
+
* Returns undefined if address not found.
|
|
29
|
+
* Uses pre-computed Map for O(1) lookup.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getDelegateRankInfo(cache: DelegateCache, address: `0x${string}` | string): {
|
|
32
|
+
rank: number;
|
|
33
|
+
votingPower: string;
|
|
34
|
+
} | undefined;
|
|
35
|
+
/** Filter delegates by minimum voting power threshold (wei) */
|
|
36
|
+
export declare function filterDelegatesByMinPower(delegates: DelegateInfo[], minVotingPower: string): DelegateInfo[];
|
|
37
|
+
/** Filter delegates by address substring match (case-insensitive) */
|
|
38
|
+
export declare function filterDelegatesByAddress(delegates: DelegateInfo[], addressFilter: string): DelegateInfo[];
|
|
39
|
+
/**
|
|
40
|
+
* Runtime validation that an unknown value is a valid DelegateCache.
|
|
41
|
+
* Expects compact delegate keys ({a, vp, b}) and expands them in-place.
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateDelegateCache(data: unknown): data is DelegateCache;
|
|
44
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/delegates/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1F,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAYxC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYpF;AAcD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,SAAS,CAWhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAWxD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CAErE;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAQ9E;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAKpF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMnD;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,YAAY,EAAE,EACzB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAGhB;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,YAAY,EAAE,EACzB,aAAa,EAAE,MAAM,GACpB,YAAY,EAAE,CAGhB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CA2B1E"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Delegate cache loading, validation, and query helpers
|
|
4
|
+
*
|
|
5
|
+
* All functions are synchronous and operate on a loaded DelegateCache.
|
|
6
|
+
* No RPC calls — pure data access.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.DELEGATE_CACHE_VERSION = void 0;
|
|
43
|
+
exports.serializeDelegateCache = serializeDelegateCache;
|
|
44
|
+
exports.getBundledDelegateCachePath = getBundledDelegateCachePath;
|
|
45
|
+
exports.loadBundledDelegateCache = loadBundledDelegateCache;
|
|
46
|
+
exports.extractDelegates = extractDelegates;
|
|
47
|
+
exports.getDelegateCacheStats = getDelegateCacheStats;
|
|
48
|
+
exports.getTopDelegates = getTopDelegates;
|
|
49
|
+
exports.getDelegateRankInfo = getDelegateRankInfo;
|
|
50
|
+
exports.filterDelegatesByMinPower = filterDelegatesByMinPower;
|
|
51
|
+
exports.filterDelegatesByAddress = filterDelegatesByAddress;
|
|
52
|
+
exports.validateDelegateCache = validateDelegateCache;
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
const ethers_1 = require("ethers");
|
|
56
|
+
const sanitize_1 = require("../utils/sanitize");
|
|
57
|
+
exports.DELEGATE_CACHE_VERSION = 1;
|
|
58
|
+
const rankLookupCache = new WeakMap();
|
|
59
|
+
function serializeDelegate(d) {
|
|
60
|
+
return { a: d.address, vp: d.votingPower, b: d.lastChangeBlock };
|
|
61
|
+
}
|
|
62
|
+
function deserializeDelegate(d) {
|
|
63
|
+
return { address: d.a, votingPower: d.vp, lastChangeBlock: d.b };
|
|
64
|
+
}
|
|
65
|
+
function serializeDelegateCache(cache) {
|
|
66
|
+
return {
|
|
67
|
+
version: exports.DELEGATE_CACHE_VERSION,
|
|
68
|
+
generatedAt: cache.generatedAt,
|
|
69
|
+
snapshotBlock: cache.snapshotBlock,
|
|
70
|
+
startBlock: cache.startBlock,
|
|
71
|
+
chainId: cache.chainId,
|
|
72
|
+
totalVotingPower: cache.totalVotingPower,
|
|
73
|
+
totalSupply: cache.totalSupply,
|
|
74
|
+
delegates: cache.delegates.map(serializeDelegate),
|
|
75
|
+
stats: cache.stats,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function getRankMap(cache) {
|
|
79
|
+
let map = rankLookupCache.get(cache);
|
|
80
|
+
if (!map) {
|
|
81
|
+
map = new Map();
|
|
82
|
+
for (let i = 0; i < cache.delegates.length; i++) {
|
|
83
|
+
map.set(cache.delegates[i].address.toLowerCase(), i);
|
|
84
|
+
}
|
|
85
|
+
rankLookupCache.set(cache, map);
|
|
86
|
+
}
|
|
87
|
+
return map;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the path to the bundled delegate cache shipped with the package.
|
|
91
|
+
* Tries multiple candidate paths to support dist/ and src/ layouts.
|
|
92
|
+
*/
|
|
93
|
+
function getBundledDelegateCachePath() {
|
|
94
|
+
const candidates = [
|
|
95
|
+
path.join(__dirname, "..", "data", "delegate-cache.json"), // dist/delegates -> dist/data
|
|
96
|
+
path.join(__dirname, "..", "..", "data", "delegate-cache.json"), // src/delegates -> data (dev)
|
|
97
|
+
];
|
|
98
|
+
for (const candidate of candidates) {
|
|
99
|
+
if (fs.existsSync(candidate)) {
|
|
100
|
+
return candidate;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Load the bundled delegate cache shipped with the package.
|
|
107
|
+
* Returns the parsed DelegateCache object.
|
|
108
|
+
*/
|
|
109
|
+
function loadBundledDelegateCache() {
|
|
110
|
+
const cachePath = getBundledDelegateCachePath();
|
|
111
|
+
if (!cachePath) {
|
|
112
|
+
throw new Error("Delegate cache not found. Run 'yarn cache:delegates' to generate it.");
|
|
113
|
+
}
|
|
114
|
+
const raw = fs.readFileSync(cachePath, "utf8");
|
|
115
|
+
const data = (0, sanitize_1.safeJsonParse)(raw);
|
|
116
|
+
if (!data || !validateDelegateCache(data)) {
|
|
117
|
+
throw new Error("Invalid delegate cache format at " + cachePath);
|
|
118
|
+
}
|
|
119
|
+
return data;
|
|
120
|
+
}
|
|
121
|
+
/** Extract the delegates array from a cache */
|
|
122
|
+
function extractDelegates(cache) {
|
|
123
|
+
return cache.delegates;
|
|
124
|
+
}
|
|
125
|
+
/** Extract display statistics from a cache */
|
|
126
|
+
function getDelegateCacheStats(cache) {
|
|
127
|
+
return {
|
|
128
|
+
totalDelegates: cache.stats.totalDelegates,
|
|
129
|
+
snapshotBlock: cache.snapshotBlock,
|
|
130
|
+
generatedAt: cache.generatedAt,
|
|
131
|
+
totalVotingPower: cache.totalVotingPower,
|
|
132
|
+
totalSupply: cache.totalSupply,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Get top N delegates by voting power (already sorted in cache) */
|
|
136
|
+
function getTopDelegates(cache, limit) {
|
|
137
|
+
if (limit === undefined || limit >= cache.delegates.length) {
|
|
138
|
+
return cache.delegates;
|
|
139
|
+
}
|
|
140
|
+
return cache.delegates.slice(0, limit);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Look up a delegate's rank and cached voting power.
|
|
144
|
+
* Returns undefined if address not found.
|
|
145
|
+
* Uses pre-computed Map for O(1) lookup.
|
|
146
|
+
*/
|
|
147
|
+
function getDelegateRankInfo(cache, address) {
|
|
148
|
+
const map = getRankMap(cache);
|
|
149
|
+
const index = map.get(address.toLowerCase());
|
|
150
|
+
if (index === undefined)
|
|
151
|
+
return undefined;
|
|
152
|
+
const delegate = cache.delegates[index];
|
|
153
|
+
return { rank: index + 1, votingPower: delegate.votingPower };
|
|
154
|
+
}
|
|
155
|
+
/** Filter delegates by minimum voting power threshold (wei) */
|
|
156
|
+
function filterDelegatesByMinPower(delegates, minVotingPower) {
|
|
157
|
+
const threshold = ethers_1.ethers.BigNumber.from(minVotingPower);
|
|
158
|
+
return delegates.filter((d) => ethers_1.ethers.BigNumber.from(d.votingPower).gte(threshold));
|
|
159
|
+
}
|
|
160
|
+
/** Filter delegates by address substring match (case-insensitive) */
|
|
161
|
+
function filterDelegatesByAddress(delegates, addressFilter) {
|
|
162
|
+
const lower = addressFilter.toLowerCase();
|
|
163
|
+
return delegates.filter((d) => d.address.toLowerCase().includes(lower));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Runtime validation that an unknown value is a valid DelegateCache.
|
|
167
|
+
* Expects compact delegate keys ({a, vp, b}) and expands them in-place.
|
|
168
|
+
*/
|
|
169
|
+
function validateDelegateCache(data) {
|
|
170
|
+
if (data === null || typeof data !== "object")
|
|
171
|
+
return false;
|
|
172
|
+
const obj = data;
|
|
173
|
+
if (typeof obj.version !== "number")
|
|
174
|
+
return false;
|
|
175
|
+
if (typeof obj.generatedAt !== "string")
|
|
176
|
+
return false;
|
|
177
|
+
if (typeof obj.snapshotBlock !== "number")
|
|
178
|
+
return false;
|
|
179
|
+
if (typeof obj.startBlock !== "number")
|
|
180
|
+
return false;
|
|
181
|
+
if (typeof obj.chainId !== "number")
|
|
182
|
+
return false;
|
|
183
|
+
if (typeof obj.totalVotingPower !== "string")
|
|
184
|
+
return false;
|
|
185
|
+
if (typeof obj.totalSupply !== "string")
|
|
186
|
+
return false;
|
|
187
|
+
if (!Array.isArray(obj.delegates))
|
|
188
|
+
return false;
|
|
189
|
+
const stats = obj.stats;
|
|
190
|
+
if (stats === null || typeof stats !== "object")
|
|
191
|
+
return false;
|
|
192
|
+
if (typeof stats.totalDelegates !== "number")
|
|
193
|
+
return false;
|
|
194
|
+
if (obj.delegates.length > 0) {
|
|
195
|
+
const first = obj.delegates[0];
|
|
196
|
+
if (typeof first.a !== "string" || typeof first.vp !== "string" || typeof first.b !== "number")
|
|
197
|
+
return false;
|
|
198
|
+
obj.delegates = obj.delegates.map(deserializeDelegate);
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/delegates/cache.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,wDAYC;AAkBD,kEAWC;AAMD,4DAWC;AAGD,4CAEC;AAGD,sDAQC;AAGD,0CAKC;AAOD,kDASC;AAGD,8DAMC;AAGD,4DAMC;AAMD,sDA2BC;AAvKD,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAgC;AAChC,gDAAkD;AAGrC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,eAAe,GAAG,IAAI,OAAO,EAAsC,CAAC;AAE1E,SAAS,iBAAiB,CAAC,CAAe;IACxC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAuC;IAClE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAkB,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAoB;IACzD,OAAO;QACL,OAAO,EAAE,8BAAsB;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACjD,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,IAAI,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B;IACzC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,8BAA8B;QACzF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,8BAA8B;KAChG,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB;IACtC,MAAM,SAAS,GAAG,2BAA2B,EAAE,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,wBAAa,EAAgB,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,SAAS,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,SAAgB,gBAAgB,CAAC,KAAoB;IACnD,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC;AAED,8CAA8C;AAC9C,SAAgB,qBAAqB,CAAC,KAAoB;IACxD,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc;QAC1C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,SAAgB,eAAe,CAAC,KAAoB,EAAE,KAAc;IAClE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC,SAAS,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,KAAoB,EACpB,OAA+B;IAE/B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC;AAED,+DAA+D;AAC/D,SAAgB,yBAAyB,CACvC,SAAyB,EACzB,cAAsB;IAEtB,MAAM,SAAS,GAAG,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,qEAAqE;AACrE,SAAgB,wBAAwB,CACtC,SAAyB,EACzB,aAAqB;IAErB,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,IAAa;IACjD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3D,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,OAAQ,KAAiC,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAExF,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAA4B,CAAC;QAC1D,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;YAC5F,OAAO,KAAK,CAAC;QACf,GAAG,CAAC,SAAS,GAAI,GAAG,CAAC,SAAoD,CAAC,GAAG,CAC3E,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegate Indexing & Query Module
|
|
3
|
+
*
|
|
4
|
+
* Provides delegate voting power caching, lookup, and live queries
|
|
5
|
+
* for Arbitrum governance token delegates.
|
|
6
|
+
*/
|
|
7
|
+
export { loadBundledDelegateCache, getBundledDelegateCachePath, extractDelegates, getDelegateCacheStats, validateDelegateCache, serializeDelegateCache, DELEGATE_CACHE_VERSION, } from "./cache";
|
|
8
|
+
export { getTopDelegates, getDelegateRankInfo, filterDelegatesByMinPower, filterDelegatesByAddress, } from "./cache";
|
|
9
|
+
export { queryDelegatesNotVoted, queryDelegateVotingPowers } from "./queries";
|
|
10
|
+
export type { QueryDelegatesNotVotedOptions } from "./queries";
|
|
11
|
+
export { buildDelegateCache } from "./indexer";
|
|
12
|
+
export type { BuildDelegateCacheOptions } from "./indexer";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAG/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Delegate Indexing & Query Module
|
|
4
|
+
*
|
|
5
|
+
* Provides delegate voting power caching, lookup, and live queries
|
|
6
|
+
* for Arbitrum governance token delegates.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.buildDelegateCache = exports.queryDelegateVotingPowers = exports.queryDelegatesNotVoted = exports.filterDelegatesByAddress = exports.filterDelegatesByMinPower = exports.getDelegateRankInfo = exports.getTopDelegates = exports.DELEGATE_CACHE_VERSION = exports.serializeDelegateCache = exports.validateDelegateCache = exports.getDelegateCacheStats = exports.extractDelegates = exports.getBundledDelegateCachePath = exports.loadBundledDelegateCache = void 0;
|
|
10
|
+
// Cache access (sync, no RPC)
|
|
11
|
+
var cache_1 = require("./cache");
|
|
12
|
+
Object.defineProperty(exports, "loadBundledDelegateCache", { enumerable: true, get: function () { return cache_1.loadBundledDelegateCache; } });
|
|
13
|
+
Object.defineProperty(exports, "getBundledDelegateCachePath", { enumerable: true, get: function () { return cache_1.getBundledDelegateCachePath; } });
|
|
14
|
+
Object.defineProperty(exports, "extractDelegates", { enumerable: true, get: function () { return cache_1.extractDelegates; } });
|
|
15
|
+
Object.defineProperty(exports, "getDelegateCacheStats", { enumerable: true, get: function () { return cache_1.getDelegateCacheStats; } });
|
|
16
|
+
Object.defineProperty(exports, "validateDelegateCache", { enumerable: true, get: function () { return cache_1.validateDelegateCache; } });
|
|
17
|
+
Object.defineProperty(exports, "serializeDelegateCache", { enumerable: true, get: function () { return cache_1.serializeDelegateCache; } });
|
|
18
|
+
Object.defineProperty(exports, "DELEGATE_CACHE_VERSION", { enumerable: true, get: function () { return cache_1.DELEGATE_CACHE_VERSION; } });
|
|
19
|
+
// Query helpers (sync, operate on loaded cache)
|
|
20
|
+
var cache_2 = require("./cache");
|
|
21
|
+
Object.defineProperty(exports, "getTopDelegates", { enumerable: true, get: function () { return cache_2.getTopDelegates; } });
|
|
22
|
+
Object.defineProperty(exports, "getDelegateRankInfo", { enumerable: true, get: function () { return cache_2.getDelegateRankInfo; } });
|
|
23
|
+
Object.defineProperty(exports, "filterDelegatesByMinPower", { enumerable: true, get: function () { return cache_2.filterDelegatesByMinPower; } });
|
|
24
|
+
Object.defineProperty(exports, "filterDelegatesByAddress", { enumerable: true, get: function () { return cache_2.filterDelegatesByAddress; } });
|
|
25
|
+
// Live queries (requires provider)
|
|
26
|
+
var queries_1 = require("./queries");
|
|
27
|
+
Object.defineProperty(exports, "queryDelegatesNotVoted", { enumerable: true, get: function () { return queries_1.queryDelegatesNotVoted; } });
|
|
28
|
+
Object.defineProperty(exports, "queryDelegateVotingPowers", { enumerable: true, get: function () { return queries_1.queryDelegateVotingPowers; } });
|
|
29
|
+
// Indexer
|
|
30
|
+
var indexer_1 = require("./indexer");
|
|
31
|
+
Object.defineProperty(exports, "buildDelegateCache", { enumerable: true, get: function () { return indexer_1.buildDelegateCache; } });
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delegates/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,8BAA8B;AAC9B,iCAQiB;AAPf,iHAAA,wBAAwB,OAAA;AACxB,oHAAA,2BAA2B,OAAA;AAC3B,yGAAA,gBAAgB,OAAA;AAChB,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,+GAAA,sBAAsB,OAAA;AACtB,+GAAA,sBAAsB,OAAA;AAGxB,gDAAgD;AAChD,iCAKiB;AAJf,wGAAA,eAAe,OAAA;AACf,4GAAA,mBAAmB,OAAA;AACnB,kHAAA,yBAAyB,OAAA;AACzB,iHAAA,wBAAwB,OAAA;AAG1B,mCAAmC;AACnC,qCAA8E;AAArE,iHAAA,sBAAsB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AAG1D,UAAU;AACV,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delegate cache indexer
|
|
3
|
+
*
|
|
4
|
+
* Scans DelegateVotesChanged events from the ARB token contract
|
|
5
|
+
* and produces a DelegateCache snapshot.
|
|
6
|
+
*
|
|
7
|
+
* Uses adaptive chunking to handle event-dense periods (e.g., ARB airdrop)
|
|
8
|
+
* where even moderate block ranges exceed RPC log limits.
|
|
9
|
+
*
|
|
10
|
+
* Processes events into a Map per-chunk to avoid OOM on full genesis builds
|
|
11
|
+
* (~millions of events over 370M+ blocks).
|
|
12
|
+
*/
|
|
13
|
+
import { ethers } from "ethers";
|
|
14
|
+
import type { DelegateCache } from "../types/delegates";
|
|
15
|
+
export interface BuildDelegateCacheOptions {
|
|
16
|
+
existingCache?: DelegateCache;
|
|
17
|
+
force?: boolean;
|
|
18
|
+
startBlock?: number;
|
|
19
|
+
/** Minimum voting power in wei (default: 10 ARB) */
|
|
20
|
+
minVotingPower?: string;
|
|
21
|
+
/** Token contract address (default: ADDRESSES.ARB_TOKEN) */
|
|
22
|
+
tokenAddress?: string;
|
|
23
|
+
onProgress?: (pct: number, block: number) => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build or incrementally update a delegate voting power cache.
|
|
27
|
+
*
|
|
28
|
+
* Scans DelegateVotesChanged events and aggregates the latest
|
|
29
|
+
* voting power per delegate address.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildDelegateCache(provider: ethers.providers.Provider, options?: BuildDelegateCacheOptions): Promise<DelegateCache>;
|
|
32
|
+
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/delegates/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAsBtE,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAqGD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,aAAa,CAAC,CAoGxB"}
|