@factordao/governance 1.0.1 → 1.0.3

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 CHANGED
@@ -6,9 +6,9 @@ This repository contains the governance for Factor.
6
6
  - [x] Create the subgraph to track the `emit AddVault(_chainId, _vault);` event from `FactorScale` on Arbitrum
7
7
  - [x] Create the function to get all the vaults for all the available chains
8
8
  - [x] Create the subgraph to track the `emit Vote(user, vaults[i], weights[i], newVote);` event from `FactorScale`
9
- - [ ] Create the function to get all the votes for a given user
9
+ - [x] Create the function to get all the votes for a given user
10
+ - [] Create the function to get all the votes for all the users
10
11
  - [ ] Create the function to get all the votes allocations
11
- - [ ] Create the function to get all the votes for all the users
12
12
  - [ ] Create the subgraph to track the `emit ReceiveVotingResults(wTime, vaults, fctrAmounts);` event from `FactorGaugeController` of both Arbitrum and Base which is emitted after the broadcast
13
13
  - [ ] Create the function to get all the rewards for a given vault
14
14
  - [ ] Create the function to get all the rewards for all vaults
package/dist/cjs/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAvailableVaultsForVoting = getAvailableVaultsForVoting;
4
4
  exports.getVotesForUser = getVotesForUser;
5
+ exports.getVotesForAllUsers = getVotesForAllUsers;
5
6
  const subgraphs_1 = require("./utils/subgraphs");
6
7
  async function getAvailableVaultsForVoting(chainId, environment) {
7
8
  const subgraphUrl = subgraphs_1.factorScaleSubgraphUrl[chainId]?.[environment];
@@ -45,4 +46,38 @@ async function getVotesForUser(chainId, environment, user) {
45
46
  const data = await response.json();
46
47
  return data.data.votes;
47
48
  }
49
+ async function getVotesForAllUsers(chainId, environment) {
50
+ const subgraphUrl = subgraphs_1.factorScaleSubgraphUrl[chainId]?.[environment];
51
+ if (!subgraphUrl) {
52
+ throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
53
+ }
54
+ const votes = await (0, subgraphs_1.fetchPaginatedData)(subgraphUrl, (first, skip) => `
55
+ {
56
+ votes(
57
+ first: ${first}
58
+ skip: ${skip}
59
+ where: { weight_not: "0" }
60
+ orderBy: timestamp
61
+ orderDirection: asc
62
+ ) {
63
+ vaultAddress
64
+ userAddress
65
+ weight
66
+ timestamp
67
+ }
68
+ }
69
+ `, (data) => data.data.votes || []);
70
+ const votesByVault = {};
71
+ for (const vote of votes) {
72
+ if (!votesByVault[vote.vaultAddress]) {
73
+ votesByVault[vote.vaultAddress] = [];
74
+ }
75
+ votesByVault[vote.vaultAddress].push({
76
+ weight: Number(vote.weight),
77
+ timestamp: Number(vote.timestamp),
78
+ userAddress: vote.userAddress,
79
+ });
80
+ }
81
+ return votesByVault;
82
+ }
48
83
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAKA,kEAmBC;AAED,0CAqBC;AA/CD,iDAA6F;AAKtF,KAAK,UAAU,2BAA2B,CAAC,OAAgB,EAAE,WAA8B;IAC9F,MAAM,WAAW,GAAG,kCAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;;;;;;KAOb,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,WAA8B,EAAE,IAAY;IAChG,MAAM,WAAW,GAAG,kCAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;uCAEqB,IAAI,CAAC,WAAW,EAAE;;;;;;;KAOpD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAIA,kEAmBC;AAED,0CAqBC;AAED,kDAuCC;AAvFD,iDAAiH;AAI1G,KAAK,UAAU,2BAA2B,CAAC,OAAgB,EAAE,WAA8B;IAC9F,MAAM,WAAW,GAAG,kCAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;;;;;;KAOb,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,WAA8B,EAAE,IAAY;IAChG,MAAM,WAAW,GAAG,kCAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;uCAEqB,IAAI,CAAC,WAAW,EAAE;;;;;;;KAOpD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,OAAgB,EAAE,WAA8B;IACtF,MAAM,WAAW,GAAG,kCAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,8BAAkB,EAClC,WAAW,EACX,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;;;yBAGA,KAAK;wBACN,IAAI;;;;;;;;;;;SAWnB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAClC,CAAC;IAEF,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -1,7 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.factorGaugeControllerSubgraphUrl = exports.factorScaleSubgraphUrl = void 0;
4
+ exports.fetchPaginatedData = fetchPaginatedData;
4
5
  const tokenlist_1 = require("@factordao/tokenlist");
6
+ const DEFAULT_PAGE_SIZE = 1000;
7
+ async function fetchPaginatedData(subgraphUrl, queryBuilder, dataExtractor) {
8
+ const allData = [];
9
+ let skip = 0;
10
+ let hasMore = true;
11
+ while (hasMore) {
12
+ const query = queryBuilder(DEFAULT_PAGE_SIZE, skip);
13
+ const response = await fetch(subgraphUrl, {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body: JSON.stringify({ query }),
19
+ });
20
+ if (!response.ok) {
21
+ throw new Error(`GraphQL query failed: ${response.statusText}`);
22
+ }
23
+ const data = await response.json();
24
+ if (data.errors) {
25
+ throw new Error(`GraphQL errors: ${JSON.stringify(data.errors)}`);
26
+ }
27
+ const pageData = dataExtractor(data);
28
+ allData.push(...pageData);
29
+ hasMore = pageData.length === DEFAULT_PAGE_SIZE;
30
+ skip += DEFAULT_PAGE_SIZE;
31
+ }
32
+ return allData;
33
+ }
5
34
  exports.factorScaleSubgraphUrl = {
6
35
  [tokenlist_1.ChainId.ARBITRUM_ONE]: {
7
36
  testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/scale-arbitrum_testing/v0.0.3/gn',
@@ -1 +1 @@
1
- {"version":3,"file":"subgraphs.js","sourceRoot":"","sources":["../../../src/utils/subgraphs.ts"],"names":[],"mappings":";;;AAAA,oDAA+C;AAGlC,QAAA,sBAAsB,GAAG;IAClC,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE,oHAAoH;KACnI;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC;AAEpD,QAAA,gCAAgC,GAAG;IAC5C,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC"}
1
+ {"version":3,"file":"subgraphs.js","sourceRoot":"","sources":["../../../src/utils/subgraphs.ts"],"names":[],"mappings":";;;AAKA,gDAqCC;AA1CD,oDAA+C;AAG/C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAExB,KAAK,UAAU,kBAAkB,CACpC,WAAmB,EACnB,YAAqD,EACrD,aAAqC;IAErC,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE1B,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC;QAChD,IAAI,IAAI,iBAAiB,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAEY,QAAA,sBAAsB,GAAG;IAClC,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE,oHAAoH;KACnI;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC;AAEpD,QAAA,gCAAgC,GAAG;IAC5C,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC"}
package/dist/mjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { factorScaleSubgraphUrl } from './utils/subgraphs';
1
+ import { factorScaleSubgraphUrl, fetchPaginatedData } from './utils/subgraphs';
2
2
  export async function getAvailableVaultsForVoting(chainId, environment) {
3
3
  const subgraphUrl = factorScaleSubgraphUrl[chainId]?.[environment];
4
4
  if (!subgraphUrl) {
@@ -41,4 +41,38 @@ export async function getVotesForUser(chainId, environment, user) {
41
41
  const data = await response.json();
42
42
  return data.data.votes;
43
43
  }
44
+ export async function getVotesForAllUsers(chainId, environment) {
45
+ const subgraphUrl = factorScaleSubgraphUrl[chainId]?.[environment];
46
+ if (!subgraphUrl) {
47
+ throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
48
+ }
49
+ const votes = await fetchPaginatedData(subgraphUrl, (first, skip) => `
50
+ {
51
+ votes(
52
+ first: ${first}
53
+ skip: ${skip}
54
+ where: { weight_not: "0" }
55
+ orderBy: timestamp
56
+ orderDirection: asc
57
+ ) {
58
+ vaultAddress
59
+ userAddress
60
+ weight
61
+ timestamp
62
+ }
63
+ }
64
+ `, (data) => data.data.votes || []);
65
+ const votesByVault = {};
66
+ for (const vote of votes) {
67
+ if (!votesByVault[vote.vaultAddress]) {
68
+ votesByVault[vote.vaultAddress] = [];
69
+ }
70
+ votesByVault[vote.vaultAddress].push({
71
+ weight: Number(vote.weight),
72
+ timestamp: Number(vote.timestamp),
73
+ userAddress: vote.userAddress,
74
+ });
75
+ }
76
+ return votesByVault;
77
+ }
44
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAoC,MAAM,mBAAmB,CAAC;AAK7F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAgB,EAAE,WAA8B;IAC9F,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;;;;;;KAOb,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,WAA8B,EAAE,IAAY;IAChG,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;uCAEqB,IAAI,CAAC,WAAW,EAAE;;;;;;;KAOpD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAoC,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIjH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAgB,EAAE,WAA8B;IAC9F,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;;;;;;KAOb,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,WAA8B,EAAE,IAAY;IAChG,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG;;uCAEqB,IAAI,CAAC,WAAW,EAAE;;;;;;;KAOpD,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAgB,EAAE,WAA8B;IACtF,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAClC,WAAW,EACX,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;;;yBAGA,KAAK;wBACN,IAAI;;;;;;;;;;;SAWnB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAClC,CAAC;IAEF,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -1,4 +1,32 @@
1
1
  import { ChainId } from "@factordao/tokenlist";
2
+ const DEFAULT_PAGE_SIZE = 1000;
3
+ export async function fetchPaginatedData(subgraphUrl, queryBuilder, dataExtractor) {
4
+ const allData = [];
5
+ let skip = 0;
6
+ let hasMore = true;
7
+ while (hasMore) {
8
+ const query = queryBuilder(DEFAULT_PAGE_SIZE, skip);
9
+ const response = await fetch(subgraphUrl, {
10
+ method: 'POST',
11
+ headers: {
12
+ 'Content-Type': 'application/json',
13
+ },
14
+ body: JSON.stringify({ query }),
15
+ });
16
+ if (!response.ok) {
17
+ throw new Error(`GraphQL query failed: ${response.statusText}`);
18
+ }
19
+ const data = await response.json();
20
+ if (data.errors) {
21
+ throw new Error(`GraphQL errors: ${JSON.stringify(data.errors)}`);
22
+ }
23
+ const pageData = dataExtractor(data);
24
+ allData.push(...pageData);
25
+ hasMore = pageData.length === DEFAULT_PAGE_SIZE;
26
+ skip += DEFAULT_PAGE_SIZE;
27
+ }
28
+ return allData;
29
+ }
2
30
  export const factorScaleSubgraphUrl = {
3
31
  [ChainId.ARBITRUM_ONE]: {
4
32
  testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/scale-arbitrum_testing/v0.0.3/gn',
@@ -1 +1 @@
1
- {"version":3,"file":"subgraphs.js","sourceRoot":"","sources":["../../../src/utils/subgraphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE,oHAAoH;KACnI;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC;AAEjE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC5C,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC"}
1
+ {"version":3,"file":"subgraphs.js","sourceRoot":"","sources":["../../../src/utils/subgraphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,WAAmB,EACnB,YAAqD,EACrD,aAAqC;IAErC,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE1B,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC;QAChD,IAAI,IAAI,iBAAiB,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,iHAAiH;QAC1H,UAAU,EAAE,oHAAoH;KACnI;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC;AAEjE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC5C,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACjB;CAC2D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factordao/governance",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist",
package/types/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { FactorEnvironment } from './types';
1
+ import { FactorEnvironment, VaultVotes } from './types';
2
2
  import { ChainId } from '@factordao/tokenlist';
3
3
  export declare function getAvailableVaultsForVoting(chainId: ChainId, environment: FactorEnvironment): Promise<any>;
4
4
  export declare function getVotesForUser(chainId: ChainId, environment: FactorEnvironment, user: string): Promise<any>;
5
+ export declare function getVotesForAllUsers(chainId: ChainId, environment: FactorEnvironment): Promise<VaultVotes>;
@@ -3,3 +3,14 @@ export declare enum FactorEnvironment {
3
3
  STAGING = "staging",
4
4
  PRODUCTION = "production"
5
5
  }
6
+ export type VoteData = {
7
+ vaultAddress: string;
8
+ userAddress: string;
9
+ weight: string;
10
+ timestamp: string;
11
+ };
12
+ export type VaultVotes = Record<string, Array<{
13
+ weight: number;
14
+ timestamp: number;
15
+ userAddress: string;
16
+ }>>;
@@ -1,4 +1,5 @@
1
1
  import { ChainId } from "@factordao/tokenlist";
2
2
  import { FactorEnvironment } from "../types";
3
+ export declare function fetchPaginatedData<T>(subgraphUrl: string, queryBuilder: (first: number, skip: number) => string, dataExtractor: (response: any) => T[]): Promise<T[]>;
3
4
  export declare const factorScaleSubgraphUrl: Record<ChainId, Partial<Record<FactorEnvironment, string>>>;
4
5
  export declare const factorGaugeControllerSubgraphUrl: Record<ChainId, Partial<Record<FactorEnvironment, string>>>;