@gzeoneth/gov-tracker 0.4.0-beta.fb8713f → 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 +94 -7
- 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/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/cli/cli.js +73 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +3 -2
- 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/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/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.js +2 -2
- package/dist/cli/tui/hooks/useProposals.js.map +1 -1
- package/dist/cli/tui/utils/index.d.ts +2 -2
- package/dist/cli/tui/utils/index.d.ts.map +1 -1
- package/dist/cli/tui/utils/index.js +5 -1
- package/dist/cli/tui/utils/index.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 +4 -4
- package/dist/cli/tui/utils/navigation.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/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/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 +43 -22
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +62 -17
- 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 +28 -51
- 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 +46 -12
- 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 +1 -2
- package/dist/discovery/timelock-discovery.js.map +1 -1
- package/dist/election/details.d.ts.map +1 -1
- package/dist/election/details.js +2 -2
- 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 +11 -16
- package/dist/election/params.js.map +1 -1
- package/dist/election/proposal-ids.js +2 -2
- 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 +110 -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 -13
- 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 +31 -0
- package/dist/simulation/simulation-data.d.ts.map +1 -1
- package/dist/simulation/simulation-data.js +34 -0
- 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 +40 -60
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +41 -3
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +159 -48
- 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 +144 -28
- 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 +18 -0
- package/dist/tracker/checkpoint-helpers.d.ts.map +1 -1
- package/dist/tracker/checkpoint-helpers.js +37 -0
- 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 +3 -0
- 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.d.ts +27 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +47 -14
- 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/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/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/rpc-utils.d.ts +0 -6
- package/dist/utils/rpc-utils.d.ts.map +1 -1
- package/dist/utils/rpc-utils.js +0 -9
- 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 +2 -9
- package/dist/utils/timing.d.ts.map +1 -1
- package/dist/utils/timing.js +3 -20
- package/dist/utils/timing.js.map +1 -1
- package/package.json +7 -3
|
@@ -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,14 +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
|
-
if (checkpoint?.metadata?.sourceCheckpoint) {
|
|
139
|
-
result.set(keys[i], checkpoint.metadata.sourceCheckpoint);
|
|
140
|
-
}
|
|
142
|
+
for (const { key, checkpoint } of entries) {
|
|
143
|
+
const source = checkpoint?.metadata?.sourceCheckpoint;
|
|
144
|
+
if (source)
|
|
145
|
+
result.set(key, source);
|
|
141
146
|
}
|
|
142
147
|
return result;
|
|
143
148
|
}
|
|
@@ -149,16 +154,10 @@ async function getChildToParentMap(cache) {
|
|
|
149
154
|
* @returns Array of child checkpoint keys
|
|
150
155
|
*/
|
|
151
156
|
async function getChildCheckpoints(parentKey, cache) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const checkpoint = checkpoints[i];
|
|
157
|
-
if (checkpoint?.metadata?.sourceCheckpoint === parentKey) {
|
|
158
|
-
children.push(keys[i]);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return children;
|
|
157
|
+
const entries = await loadCheckpoints(cache);
|
|
158
|
+
return entries
|
|
159
|
+
.filter(({ checkpoint }) => checkpoint?.metadata?.sourceCheckpoint === parentKey)
|
|
160
|
+
.map(({ key }) => key);
|
|
162
161
|
}
|
|
163
162
|
/**
|
|
164
163
|
* Get deduplication statistics for the cache
|
|
@@ -167,32 +166,25 @@ async function getChildCheckpoints(parentKey, cache) {
|
|
|
167
166
|
* @returns Statistics about checkpoint relationships
|
|
168
167
|
*/
|
|
169
168
|
async function getDeduplicationStats(cache) {
|
|
170
|
-
const
|
|
171
|
-
const keys = allKeys.filter((key) => key !== "discovery:watermarks");
|
|
172
|
-
const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
|
|
169
|
+
const entries = await loadCheckpoints(cache, (key) => key !== "discovery:watermarks");
|
|
173
170
|
let childCheckpoints = 0;
|
|
174
171
|
let fromElections = 0;
|
|
175
172
|
let fromProposals = 0;
|
|
176
|
-
for (const checkpoint of
|
|
173
|
+
for (const { checkpoint } of entries) {
|
|
177
174
|
const source = checkpoint?.metadata?.sourceCheckpoint;
|
|
178
175
|
if (source) {
|
|
179
176
|
childCheckpoints++;
|
|
180
|
-
if (source.startsWith("election:"))
|
|
177
|
+
if (source.startsWith("election:"))
|
|
181
178
|
fromElections++;
|
|
182
|
-
|
|
183
|
-
else {
|
|
179
|
+
else
|
|
184
180
|
fromProposals++;
|
|
185
|
-
}
|
|
186
181
|
}
|
|
187
182
|
}
|
|
188
183
|
return {
|
|
189
|
-
totalCheckpoints:
|
|
190
|
-
rootCheckpoints:
|
|
184
|
+
totalCheckpoints: entries.length,
|
|
185
|
+
rootCheckpoints: entries.length - childCheckpoints,
|
|
191
186
|
childCheckpoints,
|
|
192
|
-
parentTypes: {
|
|
193
|
-
fromElections,
|
|
194
|
-
fromProposals,
|
|
195
|
-
},
|
|
187
|
+
parentTypes: { fromElections, fromProposals },
|
|
196
188
|
};
|
|
197
189
|
}
|
|
198
190
|
/**
|
|
@@ -241,29 +233,14 @@ async function findPotentialParent(timelockCheckpoint, cache) {
|
|
|
241
233
|
* @returns Number of newly linked checkpoints
|
|
242
234
|
*/
|
|
243
235
|
async function autoLinkOrphanedCheckpoints(cache) {
|
|
244
|
-
const
|
|
245
|
-
const
|
|
246
|
-
const
|
|
247
|
-
// Filter to orphaned timelock checkpoints
|
|
248
|
-
const orphanedPairs = [];
|
|
249
|
-
for (let i = 0; i < txKeys.length; i++) {
|
|
250
|
-
const checkpoint = checkpoints[i];
|
|
251
|
-
if (!checkpoint)
|
|
252
|
-
continue;
|
|
253
|
-
if (checkpoint.metadata?.sourceCheckpoint)
|
|
254
|
-
continue;
|
|
255
|
-
if (checkpoint.input.type !== "timelock")
|
|
256
|
-
continue;
|
|
257
|
-
orphanedPairs.push({ key: txKeys[i], checkpoint });
|
|
258
|
-
}
|
|
259
|
-
// Find parents in parallel
|
|
260
|
-
const parentResults = await Promise.all(orphanedPairs.map(({ checkpoint }) => findPotentialParent(checkpoint, cache)));
|
|
261
|
-
// Link those with parents found
|
|
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)));
|
|
262
239
|
let linkedCount = 0;
|
|
263
|
-
for (let i = 0; i <
|
|
240
|
+
for (let i = 0; i < orphaned.length; i++) {
|
|
264
241
|
const parentKey = parentResults[i];
|
|
265
242
|
if (parentKey) {
|
|
266
|
-
await linkCheckpointToChild(
|
|
243
|
+
await linkCheckpointToChild(orphaned[i].key, parentKey, cache);
|
|
267
244
|
linkedCount++;
|
|
268
245
|
}
|
|
269
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":"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"}
|
|
@@ -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"}
|