@factordao/governance 1.0.1 → 1.0.4
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 +8 -8
- package/dist/cjs/index.js +122 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/subgraphs.js +31 -2
- package/dist/cjs/utils/subgraphs.js.map +1 -1
- package/dist/mjs/index.js +120 -1
- package/dist/mjs/index.js.map +1 -1
- package/dist/mjs/types/index.js.map +1 -1
- package/dist/mjs/utils/subgraphs.js +31 -3
- package/dist/mjs/utils/subgraphs.js.map +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +4 -1
- package/types/types/index.d.ts +30 -0
- package/types/utils/subgraphs.d.ts +3 -2
package/README.md
CHANGED
|
@@ -6,13 +6,13 @@ 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
|
-
- [
|
|
9
|
+
- [x] Create the function to get all the votes for a given user
|
|
10
|
+
- [x] Create the function to get all the votes for all the users
|
|
10
11
|
- [ ] Create the function to get all the votes allocations
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [ ] Create the
|
|
16
|
-
- [ ] Create the function to get the inventives, if they're active or not and how much they're worth
|
|
12
|
+
- [x] 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
|
+
- [x] Create the subgraph to track the `emit UpdateVaultReward(vault, newSpeed, uint128(block.timestamp) + WEEK);` event from `FactorGaugeController`
|
|
14
|
+
- [x] Create the function to get all the rewards for a given vault
|
|
15
|
+
- [x] Create the function to get all the rewards for all vaults
|
|
16
|
+
- [ ] Create the function to get the incentives, if they're active or not and how much they're worth
|
|
17
17
|
- [ ] Create the function to get the `function earned(address account, address _rewardsToken)` for a given account and rewards token to get the rewards for the user (?)
|
|
18
|
-
- [ ] Calculate the APY for scale and the given vault (?)
|
|
18
|
+
- [ ] Calculate the APY for scale and the given vault (?)
|
package/dist/cjs/index.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAvailableVaultsForVoting = getAvailableVaultsForVoting;
|
|
4
4
|
exports.getVotesForUser = getVotesForUser;
|
|
5
|
+
exports.getVotesForAllUsers = getVotesForAllUsers;
|
|
6
|
+
exports.getRewardsForVault = getRewardsForVault;
|
|
7
|
+
exports.getRewardsForAllVaults = getRewardsForAllVaults;
|
|
5
8
|
const subgraphs_1 = require("./utils/subgraphs");
|
|
6
9
|
async function getAvailableVaultsForVoting(chainId, environment) {
|
|
7
10
|
const subgraphUrl = subgraphs_1.factorScaleSubgraphUrl[chainId]?.[environment];
|
|
@@ -45,4 +48,123 @@ async function getVotesForUser(chainId, environment, user) {
|
|
|
45
48
|
const data = await response.json();
|
|
46
49
|
return data.data.votes;
|
|
47
50
|
}
|
|
51
|
+
async function getVotesForAllUsers(chainId, environment) {
|
|
52
|
+
const subgraphUrl = subgraphs_1.factorScaleSubgraphUrl[chainId]?.[environment];
|
|
53
|
+
if (!subgraphUrl) {
|
|
54
|
+
throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
|
|
55
|
+
}
|
|
56
|
+
const votes = await (0, subgraphs_1.fetchPaginatedData)(subgraphUrl, (first, skip) => `
|
|
57
|
+
{
|
|
58
|
+
votes(
|
|
59
|
+
first: ${first}
|
|
60
|
+
skip: ${skip}
|
|
61
|
+
where: { weight_not: "0" }
|
|
62
|
+
orderBy: timestamp
|
|
63
|
+
orderDirection: asc
|
|
64
|
+
) {
|
|
65
|
+
vaultAddress
|
|
66
|
+
userAddress
|
|
67
|
+
weight
|
|
68
|
+
timestamp
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
`, (data) => data.data.votes || []);
|
|
72
|
+
const votesByVault = {};
|
|
73
|
+
for (const vote of votes) {
|
|
74
|
+
if (!votesByVault[vote.vaultAddress]) {
|
|
75
|
+
votesByVault[vote.vaultAddress] = [];
|
|
76
|
+
}
|
|
77
|
+
votesByVault[vote.vaultAddress].push({
|
|
78
|
+
weight: Number(vote.weight),
|
|
79
|
+
timestamp: Number(vote.timestamp),
|
|
80
|
+
userAddress: vote.userAddress,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return votesByVault;
|
|
84
|
+
}
|
|
85
|
+
const DECIMALS = 18n;
|
|
86
|
+
const DECIMALS_DIVISOR = 10n ** DECIMALS;
|
|
87
|
+
function formatWeiToDecimal(wei) {
|
|
88
|
+
const whole = wei / DECIMALS_DIVISOR;
|
|
89
|
+
const remainder = wei % DECIMALS_DIVISOR;
|
|
90
|
+
if (remainder === 0n) {
|
|
91
|
+
return whole.toString();
|
|
92
|
+
}
|
|
93
|
+
const remainderStr = remainder.toString().padStart(Number(DECIMALS), '0');
|
|
94
|
+
const trimmed = remainderStr.replace(/0+$/, '');
|
|
95
|
+
return `${whole}.${trimmed}`;
|
|
96
|
+
}
|
|
97
|
+
function transformVaultReward(data) {
|
|
98
|
+
const fctrPerSec = BigInt(data.fctrPerSec);
|
|
99
|
+
const incentiveEndsAt = Number(data.incentiveEndsAt);
|
|
100
|
+
const timestamp = Number(data.timestamp);
|
|
101
|
+
const durationSec = BigInt(incentiveEndsAt - timestamp);
|
|
102
|
+
const totalIncentive = fctrPerSec * durationSec;
|
|
103
|
+
return {
|
|
104
|
+
vault: data.vault,
|
|
105
|
+
fctrPerSec,
|
|
106
|
+
incentiveEndsAt,
|
|
107
|
+
block: Number(data.block),
|
|
108
|
+
timestamp,
|
|
109
|
+
txid: data.txid,
|
|
110
|
+
totalIncentive,
|
|
111
|
+
totalIncentiveFmt: formatWeiToDecimal(totalIncentive),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async function getRewardsForVault(chainId, environment, vault) {
|
|
115
|
+
const subgraphUrl = subgraphs_1.factorGaugeControllerSubgraphUrl[chainId]?.[environment];
|
|
116
|
+
if (!subgraphUrl) {
|
|
117
|
+
throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
|
|
118
|
+
}
|
|
119
|
+
const query = `
|
|
120
|
+
{
|
|
121
|
+
vaultReward(id: "${vault.toLowerCase()}") {
|
|
122
|
+
id
|
|
123
|
+
vault
|
|
124
|
+
fctrPerSec
|
|
125
|
+
incentiveEndsAt
|
|
126
|
+
block
|
|
127
|
+
timestamp
|
|
128
|
+
txid
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
`;
|
|
132
|
+
const response = await fetch(subgraphUrl, {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
headers: {
|
|
135
|
+
'Content-Type': 'application/json',
|
|
136
|
+
},
|
|
137
|
+
body: JSON.stringify({ query }),
|
|
138
|
+
});
|
|
139
|
+
const data = await response.json();
|
|
140
|
+
if (!data.data.vaultReward) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return transformVaultReward(data.data.vaultReward);
|
|
144
|
+
}
|
|
145
|
+
async function getRewardsForAllVaults(chainId, environment) {
|
|
146
|
+
const subgraphUrl = subgraphs_1.factorGaugeControllerSubgraphUrl[chainId]?.[environment];
|
|
147
|
+
if (!subgraphUrl) {
|
|
148
|
+
throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
|
|
149
|
+
}
|
|
150
|
+
const rewards = await (0, subgraphs_1.fetchPaginatedData)(subgraphUrl, (first, skip) => `
|
|
151
|
+
{
|
|
152
|
+
vaultRewards(
|
|
153
|
+
first: ${first}
|
|
154
|
+
skip: ${skip}
|
|
155
|
+
orderBy: timestamp
|
|
156
|
+
orderDirection: desc
|
|
157
|
+
) {
|
|
158
|
+
id
|
|
159
|
+
vault
|
|
160
|
+
fctrPerSec
|
|
161
|
+
incentiveEndsAt
|
|
162
|
+
block
|
|
163
|
+
timestamp
|
|
164
|
+
txid
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
`, (data) => data.data.vaultRewards || []);
|
|
168
|
+
return rewards.map(transformVaultReward);
|
|
169
|
+
}
|
|
48
170
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;AAC3B,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B"}
|
|
@@ -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',
|
|
@@ -22,11 +51,11 @@ exports.factorScaleSubgraphUrl = {
|
|
|
22
51
|
};
|
|
23
52
|
exports.factorGaugeControllerSubgraphUrl = {
|
|
24
53
|
[tokenlist_1.ChainId.ARBITRUM_ONE]: {
|
|
25
|
-
testing: '',
|
|
54
|
+
testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/gauge-arbitrum_testing/v0.0.1/gn',
|
|
26
55
|
production: '',
|
|
27
56
|
},
|
|
28
57
|
[tokenlist_1.ChainId.BASE]: {
|
|
29
|
-
testing: '',
|
|
58
|
+
testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/gauge-base_testing/v0.0.2/gn',
|
|
30
59
|
production: '',
|
|
31
60
|
},
|
|
32
61
|
[tokenlist_1.ChainId.OPTIMISM]: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraphs.js","sourceRoot":"","sources":["../../../src/utils/subgraphs.ts"],"names":[],"mappings":";;;
|
|
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,CACtC,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;QACf,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,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;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAEY,QAAA,sBAAsB,GAAG;IACpC,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACtB,OAAO,EACL,iHAAiH;QACnH,UAAU,EACR,oHAAoH;KACvH;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACf,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;CAC6D,CAAC;AAEpD,QAAA,gCAAgC,GAAG;IAC9C,CAAC,mBAAO,CAAC,YAAY,CAAC,EAAE;QACtB,OAAO,EACL,iHAAiH;QACnH,UAAU,EAAE,EAAE;KACf;IACD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EACL,6GAA6G;QAC/G,UAAU,EAAE,EAAE;KACf;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,mBAAO,CAAC,KAAK,CAAC,EAAE;QACf,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;CAC6D,CAAC"}
|
package/dist/mjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { factorScaleSubgraphUrl } from './utils/subgraphs';
|
|
1
|
+
import { factorScaleSubgraphUrl, factorGaugeControllerSubgraphUrl, 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,123 @@ 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
|
+
}
|
|
78
|
+
const DECIMALS = 18n;
|
|
79
|
+
const DECIMALS_DIVISOR = 10n ** DECIMALS;
|
|
80
|
+
function formatWeiToDecimal(wei) {
|
|
81
|
+
const whole = wei / DECIMALS_DIVISOR;
|
|
82
|
+
const remainder = wei % DECIMALS_DIVISOR;
|
|
83
|
+
if (remainder === 0n) {
|
|
84
|
+
return whole.toString();
|
|
85
|
+
}
|
|
86
|
+
const remainderStr = remainder.toString().padStart(Number(DECIMALS), '0');
|
|
87
|
+
const trimmed = remainderStr.replace(/0+$/, '');
|
|
88
|
+
return `${whole}.${trimmed}`;
|
|
89
|
+
}
|
|
90
|
+
function transformVaultReward(data) {
|
|
91
|
+
const fctrPerSec = BigInt(data.fctrPerSec);
|
|
92
|
+
const incentiveEndsAt = Number(data.incentiveEndsAt);
|
|
93
|
+
const timestamp = Number(data.timestamp);
|
|
94
|
+
const durationSec = BigInt(incentiveEndsAt - timestamp);
|
|
95
|
+
const totalIncentive = fctrPerSec * durationSec;
|
|
96
|
+
return {
|
|
97
|
+
vault: data.vault,
|
|
98
|
+
fctrPerSec,
|
|
99
|
+
incentiveEndsAt,
|
|
100
|
+
block: Number(data.block),
|
|
101
|
+
timestamp,
|
|
102
|
+
txid: data.txid,
|
|
103
|
+
totalIncentive,
|
|
104
|
+
totalIncentiveFmt: formatWeiToDecimal(totalIncentive),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function getRewardsForVault(chainId, environment, vault) {
|
|
108
|
+
const subgraphUrl = factorGaugeControllerSubgraphUrl[chainId]?.[environment];
|
|
109
|
+
if (!subgraphUrl) {
|
|
110
|
+
throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
|
|
111
|
+
}
|
|
112
|
+
const query = `
|
|
113
|
+
{
|
|
114
|
+
vaultReward(id: "${vault.toLowerCase()}") {
|
|
115
|
+
id
|
|
116
|
+
vault
|
|
117
|
+
fctrPerSec
|
|
118
|
+
incentiveEndsAt
|
|
119
|
+
block
|
|
120
|
+
timestamp
|
|
121
|
+
txid
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
const response = await fetch(subgraphUrl, {
|
|
126
|
+
method: 'POST',
|
|
127
|
+
headers: {
|
|
128
|
+
'Content-Type': 'application/json',
|
|
129
|
+
},
|
|
130
|
+
body: JSON.stringify({ query }),
|
|
131
|
+
});
|
|
132
|
+
const data = await response.json();
|
|
133
|
+
if (!data.data.vaultReward) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return transformVaultReward(data.data.vaultReward);
|
|
137
|
+
}
|
|
138
|
+
export async function getRewardsForAllVaults(chainId, environment) {
|
|
139
|
+
const subgraphUrl = factorGaugeControllerSubgraphUrl[chainId]?.[environment];
|
|
140
|
+
if (!subgraphUrl) {
|
|
141
|
+
throw new Error(`Subgraph URL not found for chainId ${chainId} and environment ${environment}`);
|
|
142
|
+
}
|
|
143
|
+
const rewards = await fetchPaginatedData(subgraphUrl, (first, skip) => `
|
|
144
|
+
{
|
|
145
|
+
vaultRewards(
|
|
146
|
+
first: ${first}
|
|
147
|
+
skip: ${skip}
|
|
148
|
+
orderBy: timestamp
|
|
149
|
+
orderDirection: desc
|
|
150
|
+
) {
|
|
151
|
+
id
|
|
152
|
+
vault
|
|
153
|
+
fctrPerSec
|
|
154
|
+
incentiveEndsAt
|
|
155
|
+
block
|
|
156
|
+
timestamp
|
|
157
|
+
txid
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
`, (data) => data.data.vaultRewards || []);
|
|
161
|
+
return rewards.map(transformVaultReward);
|
|
162
|
+
}
|
|
44
163
|
//# sourceMappingURL=index.js.map
|
package/dist/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;AAC3B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B"}
|
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
import { ChainId } from
|
|
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',
|
|
@@ -19,11 +47,11 @@ export const factorScaleSubgraphUrl = {
|
|
|
19
47
|
};
|
|
20
48
|
export const factorGaugeControllerSubgraphUrl = {
|
|
21
49
|
[ChainId.ARBITRUM_ONE]: {
|
|
22
|
-
testing: '',
|
|
50
|
+
testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/gauge-arbitrum_testing/v0.0.1/gn',
|
|
23
51
|
production: '',
|
|
24
52
|
},
|
|
25
53
|
[ChainId.BASE]: {
|
|
26
|
-
testing: '',
|
|
54
|
+
testing: 'https://api.goldsky.com/api/public/project_cmgzitcts001c5np28moc9lyy/subgraphs/gauge-base_testing/v0.0.2/gn',
|
|
27
55
|
production: '',
|
|
28
56
|
},
|
|
29
57
|
[ChainId.OPTIMISM]: {
|
|
@@ -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,
|
|
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,CACtC,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;QACf,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,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;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACtB,OAAO,EACL,iHAAiH;QACnH,UAAU,EACR,oHAAoH;KACvH;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACf,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;CAC6D,CAAC;AAEjE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACtB,OAAO,EACL,iHAAiH;QACnH,UAAU,EAAE,EAAE;KACf;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EACL,6GAA6G;QAC/G,UAAU,EAAE,EAAE;KACf;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACf,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf;CAC6D,CAAC"}
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { FactorEnvironment } from './types';
|
|
1
|
+
import { FactorEnvironment, VaultVotes, VaultReward } 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>;
|
|
6
|
+
export declare function getRewardsForVault(chainId: ChainId, environment: FactorEnvironment, vault: string): Promise<VaultReward | null>;
|
|
7
|
+
export declare function getRewardsForAllVaults(chainId: ChainId, environment: FactorEnvironment): Promise<VaultReward[]>;
|
package/types/types/index.d.ts
CHANGED
|
@@ -3,3 +3,33 @@ 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
|
+
}>>;
|
|
17
|
+
export type VaultRewardData = {
|
|
18
|
+
id: string;
|
|
19
|
+
vault: string;
|
|
20
|
+
fctrPerSec: string;
|
|
21
|
+
incentiveEndsAt: string;
|
|
22
|
+
block: string;
|
|
23
|
+
timestamp: string;
|
|
24
|
+
txid: string;
|
|
25
|
+
};
|
|
26
|
+
export type VaultReward = {
|
|
27
|
+
vault: string;
|
|
28
|
+
fctrPerSec: bigint;
|
|
29
|
+
incentiveEndsAt: number;
|
|
30
|
+
block: number;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
txid: string;
|
|
33
|
+
totalIncentive: bigint;
|
|
34
|
+
totalIncentiveFmt: string;
|
|
35
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ChainId } from
|
|
2
|
-
import { FactorEnvironment } from
|
|
1
|
+
import { ChainId } from '@factordao/tokenlist';
|
|
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>>>;
|