@stake-dao/reader 0.4.57 → 0.4.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/esm/bytecodes/votemarket/batchUserVotes.js +39 -0
  2. package/dist/esm/bytecodes/votemarket/batchUserVotes.js.map +1 -0
  3. package/dist/esm/endpoints.js +1 -0
  4. package/dist/esm/endpoints.js.map +1 -1
  5. package/dist/esm/index.js +7 -2
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/esm/lockers/fetch/index.js +1 -1
  8. package/dist/esm/lockers/fetch/index.js.map +1 -1
  9. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  10. package/dist/esm/votemarket/balancer/fetchBalancerUserVotes.js +42 -0
  11. package/dist/esm/votemarket/balancer/fetchBalancerUserVotes.js.map +1 -0
  12. package/dist/esm/votemarket/curve/fetchCurveUserVotes.js +8 -3
  13. package/dist/esm/votemarket/curve/fetchCurveUserVotes.js.map +1 -1
  14. package/dist/esm/votemarket/curve/fetchUserVlCvxClaimable.js +90 -40
  15. package/dist/esm/votemarket/curve/fetchUserVlCvxClaimable.js.map +1 -1
  16. package/dist/esm/votemarket/fetchCampaigns/index.js +65 -0
  17. package/dist/esm/votemarket/fetchCampaigns/index.js.map +1 -0
  18. package/dist/esm/votemarket/{fetchPendingRemoteCampaigns.js → fetchCampaigns/pendingRemote.js} +7 -2
  19. package/dist/esm/votemarket/fetchCampaigns/pendingRemote.js.map +1 -0
  20. package/dist/esm/votemarket/{fetchCampaigns.js → fetchCampaigns/processRawCampaigns.js} +16 -101
  21. package/dist/esm/votemarket/fetchCampaigns/processRawCampaigns.js.map +1 -0
  22. package/dist/esm/votemarket/fetchCampaigns/updateEpoch.js +41 -0
  23. package/dist/esm/votemarket/fetchCampaigns/updateEpoch.js.map +1 -0
  24. package/dist/esm/votemarket/fxn/fetchFxnUserVotes.js +42 -0
  25. package/dist/esm/votemarket/fxn/fetchFxnUserVotes.js.map +1 -0
  26. package/dist/types/bytecodes/votemarket/batchUserVotes.d.ts +4 -0
  27. package/dist/types/bytecodes/votemarket/batchUserVotes.d.ts.map +1 -0
  28. package/dist/types/endpoints.d.ts +1 -0
  29. package/dist/types/endpoints.d.ts.map +1 -1
  30. package/dist/types/index.d.ts +5 -2
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/types/lockers/fetch/index.d.ts +1 -0
  33. package/dist/types/lockers/fetch/index.d.ts.map +1 -1
  34. package/dist/types/votemarket/balancer/fetchBalancerUserVotes.d.ts +16 -0
  35. package/dist/types/votemarket/balancer/fetchBalancerUserVotes.d.ts.map +1 -0
  36. package/dist/types/votemarket/curve/fetchCurveUserVotes.d.ts.map +1 -1
  37. package/dist/types/votemarket/curve/fetchUserVlCvxClaimable.d.ts +17 -1
  38. package/dist/types/votemarket/curve/fetchUserVlCvxClaimable.d.ts.map +1 -1
  39. package/dist/types/votemarket/{fetchCampaigns.d.ts → fetchCampaigns/index.d.ts} +2 -2
  40. package/dist/types/votemarket/fetchCampaigns/index.d.ts.map +1 -0
  41. package/dist/types/votemarket/{fetchPendingRemoteCampaigns.d.ts → fetchCampaigns/pendingRemote.d.ts} +4 -2
  42. package/dist/types/votemarket/fetchCampaigns/pendingRemote.d.ts.map +1 -0
  43. package/dist/types/votemarket/fetchCampaigns/processRawCampaigns.d.ts +16 -0
  44. package/dist/types/votemarket/fetchCampaigns/processRawCampaigns.d.ts.map +1 -0
  45. package/dist/types/votemarket/fetchCampaigns/updateEpoch.d.ts +9 -0
  46. package/dist/types/votemarket/fetchCampaigns/updateEpoch.d.ts.map +1 -0
  47. package/dist/types/votemarket/fxn/fetchFxnUserVotes.d.ts +16 -0
  48. package/dist/types/votemarket/fxn/fetchFxnUserVotes.d.ts.map +1 -0
  49. package/dist/types/votemarket/types.d.ts +3 -1
  50. package/dist/types/votemarket/types.d.ts.map +1 -1
  51. package/package.json +5 -4
  52. package/src/bytecodes/votemarket/batchUserVotes.ts +41 -0
  53. package/src/endpoints.ts +2 -0
  54. package/src/index.ts +9 -2
  55. package/src/lockers/fetch/index.ts +1 -1
  56. package/src/votemarket/balancer/fetchBalancerUserVotes.ts +61 -0
  57. package/src/votemarket/curve/fetchCurveUserVotes.ts +9 -4
  58. package/src/votemarket/curve/fetchUserVlCvxClaimable.ts +114 -44
  59. package/src/votemarket/fetchCampaigns/index.ts +98 -0
  60. package/src/votemarket/{fetchPendingRemoteCampaigns.ts → fetchCampaigns/pendingRemote.ts} +7 -0
  61. package/src/votemarket/{fetchCampaigns.ts → fetchCampaigns/processRawCampaigns.ts} +20 -150
  62. package/src/votemarket/fetchCampaigns/updateEpoch.ts +63 -0
  63. package/src/votemarket/fxn/fetchFxnUserVotes.ts +61 -0
  64. package/src/votemarket/types.ts +3 -1
  65. package/dist/esm/bytecodes/votemarket/curve/batchCurveUserVotes.js +0 -39
  66. package/dist/esm/bytecodes/votemarket/curve/batchCurveUserVotes.js.map +0 -1
  67. package/dist/esm/votemarket/fetchCampaigns.js.map +0 -1
  68. package/dist/esm/votemarket/fetchPendingRemoteCampaigns.js.map +0 -1
  69. package/dist/types/bytecodes/votemarket/curve/batchCurveUserVotes.d.ts +0 -4
  70. package/dist/types/bytecodes/votemarket/curve/batchCurveUserVotes.d.ts.map +0 -1
  71. package/dist/types/votemarket/fetchCampaigns.d.ts.map +0 -1
  72. package/dist/types/votemarket/fetchPendingRemoteCampaigns.d.ts.map +0 -1
  73. package/src/bytecodes/votemarket/curve/batchCurveUserVotes.ts +0 -41
@@ -0,0 +1,41 @@
1
+ import { Zero } from '@stake-dao/constants';
2
+ import { zeroAddress } from 'viem';
3
+ export const updateEpoch = ({ period, previousPeriod, campaign, totalVotes, remainingPeriods, }) => {
4
+ // -- _checkForUpgrade is handled in solidity BatchCampaigns.sol
5
+ // -- If not first period, check if previousPeriod is updated
6
+ if (!period.updated && (previousPeriod?.updated || typeof previousPeriod === 'undefined')) {
7
+ // Calculate remaining periods and total reward.
8
+ const totalRewardForRemainingPeriods = campaign.totalRewardAmount - campaign.totalDistributed;
9
+ // -- Update the period data.
10
+ const newRewardPerPeriod = remainingPeriods > 0 ? totalRewardForRemainingPeriods / BigInt(remainingPeriods) : totalRewardForRemainingPeriods;
11
+ period.rewardPerPeriod = newRewardPerPeriod;
12
+ // -- Update the reward per vote
13
+ // If no votes, rollover the leftover to the next epoch.
14
+ if (totalVotes === Zero) {
15
+ period.leftover = period.rewardPerPeriod;
16
+ }
17
+ else {
18
+ // Calculate reward per vote
19
+ let rewardPerVote = (newRewardPerPeriod * BigInt(1e18)) / totalVotes;
20
+ // Cap reward per vote at max reward per vote
21
+ if (rewardPerVote > campaign.maxRewardPerVote) {
22
+ rewardPerVote = campaign.maxRewardPerVote;
23
+ // Calculate leftover rewards
24
+ const leftOver = newRewardPerPeriod - (rewardPerVote * totalVotes) / BigInt(1e18);
25
+ // Handle leftover rewards
26
+ if (campaign.hook === zeroAddress) {
27
+ // Store leftover in the period if there is no hook.
28
+ period.leftover = period.leftover + leftOver;
29
+ }
30
+ }
31
+ // Save the calculated reward per vote.
32
+ period.rewardPerVote = rewardPerVote;
33
+ }
34
+ // -- Update the total distributed amount
35
+ campaign.totalDistributed = campaign.totalDistributed + newRewardPerPeriod - period.leftover;
36
+ // -- Mark the period as updated
37
+ period.updated = true;
38
+ }
39
+ return campaign;
40
+ };
41
+ //# sourceMappingURL=updateEpoch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateEpoch.js","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/updateEpoch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAGlC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,QAAQ,EACR,UAAU,EACV,gBAAgB,GAOjB,EAAE,EAAE;IACH,gEAAgE;IAChE,6DAA6D;IAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC,EAAE,CAAC;QAC1F,gDAAgD;QAChD,MAAM,8BAA8B,GAAW,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CAAA;QAErG,6BAA6B;QAC7B,MAAM,kBAAkB,GACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAA;QACnH,MAAM,CAAC,eAAe,GAAG,kBAAkB,CAAA;QAE3C,gCAAgC;QAChC,wDAAwD;QACxD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,IAAI,aAAa,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;YAEpE,6CAA6C;YAC7C,IAAI,aAAa,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAA;gBAEzC,6BAA6B;gBAC7B,MAAM,QAAQ,GAAG,kBAAkB,GAAG,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;gBAEjF,0BAA0B;gBAC1B,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAClC,oDAAoD;oBACpD,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBAC9C,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAA;QACtC,CAAC;QAED,yCAAyC;QACzC,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAA;QAE5F,gCAAgC;QAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { contracts } from '@stake-dao/constants';
2
+ import { encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem';
3
+ import { mainnet } from 'viem/chains';
4
+ import batchUserVotes from '../../bytecodes/votemarket/batchUserVotes.js';
5
+ import { concatBytecode } from '../../index.js';
6
+ import { batchJsonRpc, equalTlc } from '../../utils.js';
7
+ export const fetchFxnUserVotes = async (rpc, user) => {
8
+ const calls = [
9
+ concatBytecode(batchUserVotes.bytecode[mainnet.id], encodeAbiParameters(parseAbiParameters(batchUserVotes.inputType[mainnet.id]), [
10
+ user,
11
+ contracts.fxnGaugeController[1],
12
+ contracts.veFxn[1],
13
+ ])),
14
+ ];
15
+ const rawVotes = await batchJsonRpc({
16
+ rpc,
17
+ calls,
18
+ outputTypeAbi: batchUserVotes.outputType[mainnet.id],
19
+ parse: false,
20
+ callsKey: `votemarket/fxn/fetchFxnUserVotes.ts: rawGauges - chainId ${mainnet.id} - rpc ${rpc}`,
21
+ });
22
+ const veBalance = rawVotes[0].veBalance;
23
+ const votes = rawVotes[0].votes
24
+ .filter((rv) => !equalTlc(rv.gauge, zeroAddress))
25
+ .map((v) => ({
26
+ gauge: v.gauge,
27
+ slope: formatUnits(v.slope, 0),
28
+ relativeWeight: Number(v.power) / 100,
29
+ weight: formatUnits((veBalance * BigInt(v.power)) / BigInt(10000), 18),
30
+ start: Number(v.start),
31
+ end: Number(v.end),
32
+ }));
33
+ const unusedRelativeWeight = 10000 - votes.reduce((total, x) => total + x.relativeWeight * 100, 0);
34
+ const unusedVeBalance = (veBalance * BigInt(unusedRelativeWeight)) / BigInt(10000);
35
+ return {
36
+ veBalance: formatUnits(veBalance, 18),
37
+ unusedVeBalance: formatUnits(unusedVeBalance, 18),
38
+ unusedRelativeWeight: unusedRelativeWeight / 100,
39
+ votes,
40
+ };
41
+ };
42
+ //# sourceMappingURL=fetchFxnUserVotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchFxnUserVotes.js","sourceRoot":"","sources":["../../../../src/votemarket/fxn/fetchFxnUserVotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,cAAc,MAAM,8CAA8C,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAavD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAY,EAA2B,EAAE;IAC5F,MAAM,KAAK,GAAG;QACZ,cAAc,CACZ,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAE,EACpC,mBAAmB,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAE,CAAQ,EAAE;YACpF,IAAI;YACJ,SAAS,CAAC,kBAAmB,CAAC,CAAC,CAAE;YACjC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAE;SACrB,CAAC,CACH;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,GAAG;QACH,KAAK;QACL,aAAa,EAAE,cAAc,CAAC,UAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,4DAA4D,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE;KAChG,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;SAC5B,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG;QACrC,MAAM,EAAE,WAAW,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACtE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;KACnB,CAAC,CAAC,CAAA;IAEL,MAAM,oBAAoB,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAClG,MAAM,eAAe,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAElF,OAAO;QACL,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QACrC,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;QACjD,oBAAoB,EAAE,oBAAoB,GAAG,GAAG;QAChD,KAAK;KACN,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { BatchMetaData } from '../types.js';
2
+ declare const batchCurveUserVotes: BatchMetaData;
3
+ export default batchCurveUserVotes;
4
+ //# sourceMappingURL=batchUserVotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchUserVotes.d.ts","sourceRoot":"","sources":["../../../../src/bytecodes/votemarket/batchUserVotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,QAAA,MAAM,mBAAmB,EAAE,aAoC1B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export declare const GH_STAKE_DAO_RAW_ORG = "https://raw.githubusercontent.com/stake-dao";
2
2
  export declare const GH_STAKE_DAO_BOUNTIES_REPORT = "https://raw.githubusercontent.com/stake-dao/bounties-report";
3
3
  export declare const GH_STAKE_DAO_VM_DATA = "https://raw.githubusercontent.com/stake-dao/votemarket-data";
4
+ export declare const STAKE_DAO_API = "https://api.stakedao.org/api";
4
5
  export declare const LLAMA_API_URL = "https://coins.llama.fi";
5
6
  export declare const THE_GRAPH_BASE_URL = "https://gateway-arbitrum.network.thegraph.com/api/e3c2ef8231c88703a5b450c188ce2db6/subgraphs/id";
6
7
  export declare const SNAPSHOT_HUB = "https://hub.snapshot.org/graphql";
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,gDAAgD,CAAA;AACjF,eAAO,MAAM,4BAA4B,gEAA4C,CAAA;AACrF,eAAO,MAAM,oBAAoB,gEAA4C,CAAA;AAE7E,eAAO,MAAM,aAAa,2BAA2B,CAAA;AACrD,eAAO,MAAM,kBAAkB,oGACoE,CAAA;AAEnG,eAAO,MAAM,YAAY,qCAAqC,CAAA"}
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,gDAAgD,CAAA;AACjF,eAAO,MAAM,4BAA4B,gEAA4C,CAAA;AACrF,eAAO,MAAM,oBAAoB,gEAA4C,CAAA;AAE7E,eAAO,MAAM,aAAa,iCAAiC,CAAA;AAE3D,eAAO,MAAM,aAAa,2BAA2B,CAAA;AACrD,eAAO,MAAM,kBAAkB,oGACoE,CAAA;AAEnG,eAAO,MAAM,YAAY,qCAAqC,CAAA"}
@@ -28,12 +28,15 @@ export { fetchPendle } from './strategies/pendle/fetch.js';
28
28
  export { buildPendleStrategies } from './strategies/pendle/build.js';
29
29
  export { default as getPendleApiData } from './strategies/pendle/getPendleApiData.js';
30
30
  export { fetchStakeDao } from './strategies/stakeDao/fetch.js';
31
- export { fetchPendingRemoteCampaigns } from './votemarket/fetchPendingRemoteCampaigns.js';
32
- export { fetchCampaigns } from './votemarket/fetchCampaigns.js';
31
+ export { processRawCampaigns } from './votemarket/fetchCampaigns/processRawCampaigns.js';
32
+ export { fetchPendingRemoteCampaigns } from './votemarket/fetchCampaigns/pendingRemote.js';
33
+ export { fetchCampaigns } from './votemarket/fetchCampaigns/index.js';
33
34
  export type { Campaign } from './votemarket/types.js';
34
35
  export { fetchCurveGauges } from './votemarket/curve/fetchCurveGauges.js';
35
36
  export { fetchCurveUserVotes } from './votemarket/curve/fetchCurveUserVotes.js';
36
37
  export { fetchSnapshotUserData } from './votemarket/curve/fetchSnapshotUserData.js';
38
+ export { fetchBalancerUserVotes } from './votemarket/balancer/fetchBalancerUserVotes.js';
39
+ export { fetchFxnUserVotes } from './votemarket/fxn/fetchFxnUserVotes.js';
37
40
  export { fetchEpochsVotes } from './votemarket/fetchEpochVotes.js';
38
41
  export { fetchClaimableData } from './votemarket/fetchClaimableData.js';
39
42
  export { fetchNeededCampaignUpdate } from './votemarket/fetchNeededCampaignUpdate.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,7 @@ export declare const fetchLockers: ({ provider, chainId, prices, withAirdropGrap
90
90
  veToken: import("@stake-dao/constants").Address;
91
91
  gauge: import("@stake-dao/constants").Address;
92
92
  accumulator: import("@stake-dao/constants").Address;
93
+ redeem?: import("@stake-dao/constants").Address;
93
94
  };
94
95
  secondaryMarket?: import("@stake-dao/constants").LockerSecondaryMarket;
95
96
  veBoost?: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lockers/fetch/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAK5C,OAA6B,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAuB5F,UAAU,aAAa;IACrB,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,eAAO,MAAM,YAAY,oDAA2D,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6RhG,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lockers/fetch/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAK5C,OAA6B,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAuB5F,UAAU,aAAa;IACrB,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,eAAO,MAAM,YAAY,oDAA2D,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6RhG,CAAA"}
@@ -0,0 +1,16 @@
1
+ export type Vote = {
2
+ gauge: string;
3
+ slope: string;
4
+ relativeWeight: number;
5
+ weight: number;
6
+ start: number;
7
+ end: number;
8
+ };
9
+ export type GaugesUserData = {
10
+ veBalance: string;
11
+ unusedVeBalance: string;
12
+ unusedRelativeWeight: number;
13
+ votes: Vote[];
14
+ };
15
+ export declare const fetchBalancerUserVotes: (rpc: string, user: string) => Promise<GaugesUserData>;
16
+ //# sourceMappingURL=fetchBalancerUserVotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchBalancerUserVotes.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/balancer/fetchBalancerUserVotes.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAA;AAExH,eAAO,MAAM,sBAAsB,QAAe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,cAAc,CA0C9F,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchCurveUserVotes.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchCurveUserVotes.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAA;AAExH,eAAO,MAAM,mBAAmB,QAAe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,cAAc,CAsC3F,CAAA"}
1
+ {"version":3,"file":"fetchCurveUserVotes.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchCurveUserVotes.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAA;AAExH,eAAO,MAAM,mBAAmB,QAAe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,cAAc,CA0C3F,CAAA"}
@@ -2,7 +2,9 @@ import { type Address } from 'viem';
2
2
  type Rpcs = {
3
3
  [chainId: number]: string;
4
4
  };
5
- export declare const fetchUserVlCvxClaimable: (provider: any, rpc: Rpcs, user: string) => Promise<({
5
+ export declare const fetchUserVlCvxClaimable: (provider: any, rpc: Rpcs, user: string, chainId: number) => Promise<({
6
+ user: string;
7
+ recipient: string;
6
8
  token: any;
7
9
  claimable: string;
8
10
  claimableUsd: number;
@@ -11,6 +13,20 @@ export declare const fetchUserVlCvxClaimable: (provider: any, rpc: Rpcs, user: s
11
13
  proof: any;
12
14
  merkleAddress: Address;
13
15
  isClaimed: boolean;
16
+ chainId: number;
17
+ } | {
18
+ user: string;
19
+ recipient: string;
20
+ token: any;
21
+ claimable: string;
22
+ claimableUsd: number;
23
+ amount: string;
24
+ amountUsd: number;
25
+ proof: any;
26
+ merkleAddress: string;
27
+ isClaimed: any;
28
+ index: any;
29
+ chainId: 1;
14
30
  } | undefined)[]>;
15
31
  export {};
16
32
  //# sourceMappingURL=fetchUserVlCvxClaimable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserVlCvxClaimable.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchUserVlCvxClaimable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,MAAM,CAAA;AAO1D,KAAK,IAAI,GAAG;IACV,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAA;AAuGD,eAAO,MAAM,uBAAuB,aAAoB,GAAG,OAAO,IAAI,QAAQ,MAAM;;;;;;;mBAT1C,OAAO;;iBAsEhD,CAAA"}
1
+ {"version":3,"file":"fetchUserVlCvxClaimable.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchUserVlCvxClaimable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,MAAM,CAAA;AAO1D,KAAK,IAAI,GAAG;IACV,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAA;AA4JD,eAAO,MAAM,uBAAuB,aAAoB,GAAG,OAAO,IAAI,QAAQ,MAAM,WAAW,MAAM;;;;;;;;;mBAnC3D,OAAO;;;;;;;;;;;;;;;;iBAiHhD,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { Campaign } from './types.js';
1
+ import type { Campaign } from '../types.js';
2
2
  export declare const CAMPAIGNS_CHUNK_SIZE = 10;
3
3
  export declare const CLAIM_WINDOW_LENGTH = 24;
4
4
  export declare const CLOSE_WINDOW_LENGTH = 4;
@@ -15,4 +15,4 @@ interface FetchCampaignsProps {
15
15
  }
16
16
  export declare const fetchCampaigns: ({ platform, gaugeController, chainId, rpcs, etherscanApiKey, fromBlock, mainnetVmRemote, }: FetchCampaignsProps) => Promise<Campaign[]>;
17
17
  export {};
18
- //# sourceMappingURL=fetchCampaigns.d.ts.map
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACnC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,cAAc,+FAQxB,mBAAmB,KAAG,OAAO,CAAC,QAAQ,EAAE,CAiE1C,CAAA"}
@@ -7,8 +7,9 @@ interface FetchPendingRemoteCampaignsProps {
7
7
  fromBlock: number;
8
8
  etherscanApiKey: string;
9
9
  nextIndex: number;
10
+ votemarket: string;
10
11
  }
11
- export declare const fetchPendingRemoteCampaigns: ({ mainnetVmRemote, chainId, fromBlock, etherscanApiKey, nextIndex, }: FetchPendingRemoteCampaignsProps) => Promise<{
12
+ export declare const fetchPendingRemoteCampaigns: ({ mainnetVmRemote, chainId, fromBlock, etherscanApiKey, nextIndex, votemarket, }: FetchPendingRemoteCampaignsProps) => Promise<{
12
13
  remoteCampaigns: {
13
14
  isPendingRemote: boolean;
14
15
  id: bigint;
@@ -39,8 +40,9 @@ export declare const fetchPendingRemoteCampaigns: ({ mainnetVmRemote, chainId, f
39
40
  }[];
40
41
  rewardAddress: any;
41
42
  rewardChainId: bigint;
43
+ eventTimestamp: any;
42
44
  }[];
43
45
  remoteCampaignsUpdate: any[];
44
46
  }>;
45
47
  export {};
46
- //# sourceMappingURL=fetchPendingRemoteCampaigns.d.ts.map
48
+ //# sourceMappingURL=pendingRemote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingRemote.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/pendingRemote.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,UAAU,gCAAgC;IACxC,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,2BAA2B,qFAOrC,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyHlC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { Campaign } from '../types.js';
2
+ export declare const CAMPAIGNS_CHUNK_SIZE = 10;
3
+ export declare const CLAIM_WINDOW_LENGTH = 24;
4
+ export declare const CLOSE_WINDOW_LENGTH = 4;
5
+ interface ProcessRawCampaignsProps {
6
+ rawCampaigns: any[];
7
+ platform: string;
8
+ gaugeController: string;
9
+ chainId: number;
10
+ rpcs: {
11
+ [chainId: number]: string;
12
+ };
13
+ }
14
+ export declare const processRawCampaigns: ({ rawCampaigns, platform, gaugeController, chainId, rpcs, }: ProcessRawCampaignsProps) => Promise<Campaign[]>;
15
+ export {};
16
+ //# sourceMappingURL=processRawCampaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processRawCampaigns.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/processRawCampaigns.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,UAAU,wBAAwB;IAChC,YAAY,EAAE,GAAG,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AASD,eAAO,MAAM,mBAAmB,gEAM7B,wBAAwB,KAAG,OAAO,CAAC,QAAQ,EAAE,CAkM/C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { RawCampaign, RawPeriod } from '../types.js';
2
+ export declare const updateEpoch: ({ period, previousPeriod, campaign, totalVotes, remainingPeriods, }: {
3
+ period: RawPeriod;
4
+ previousPeriod?: RawPeriod;
5
+ campaign: RawCampaign;
6
+ totalVotes: bigint;
7
+ remainingPeriods: number;
8
+ }) => RawCampaign;
9
+ //# sourceMappingURL=updateEpoch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateEpoch.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/updateEpoch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEzD,eAAO,MAAM,WAAW,wEAMrB;IACD,MAAM,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,WAAW,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;CACzB,gBA8CA,CAAA"}
@@ -0,0 +1,16 @@
1
+ export type Vote = {
2
+ gauge: string;
3
+ slope: string;
4
+ relativeWeight: number;
5
+ weight: number;
6
+ start: number;
7
+ end: number;
8
+ };
9
+ export type GaugesUserData = {
10
+ veBalance: string;
11
+ unusedVeBalance: string;
12
+ unusedRelativeWeight: number;
13
+ votes: Vote[];
14
+ };
15
+ export declare const fetchFxnUserVotes: (rpc: string, user: string) => Promise<GaugesUserData>;
16
+ //# sourceMappingURL=fetchFxnUserVotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchFxnUserVotes.d.ts","sourceRoot":"","sources":["../../../../src/votemarket/fxn/fetchFxnUserVotes.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAA;AAExH,eAAO,MAAM,iBAAiB,QAAe,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,cAAc,CA0CzF,CAAA"}
@@ -5,7 +5,9 @@ export type Period = {
5
5
  updated: boolean;
6
6
  };
7
7
  export type Campaign = {
8
+ key: string;
8
9
  id: number;
10
+ platform: string;
9
11
  chainId: number;
10
12
  gauge: string;
11
13
  gaugeChainId: number;
@@ -38,7 +40,7 @@ export type Campaign = {
38
40
  addresses: string[];
39
41
  isWhitelist: boolean;
40
42
  isBlacklist: boolean;
41
- previousPeriod: Period;
43
+ previousPeriod: Period | undefined;
42
44
  currentPeriod: Period;
43
45
  periodLeft: number;
44
46
  periods: Period[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/votemarket/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,CAAA;QACjB,UAAU,EAAE,OAAO,CAAA;QACnB,SAAS,EAAE,OAAO,CAAA;QAClB,WAAW,EAAE,OAAO,CAAA;QACpB,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAID,MAAM,MAAM,SAAS,GAAG;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/votemarket/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,CAAA;QACjB,UAAU,EAAE,OAAO,CAAA;QACnB,SAAS,EAAE,OAAO,CAAA;QAClB,WAAW,EAAE,OAAO,CAAA;QACpB,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAID,MAAM,MAAM,SAAS,GAAG;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stake-dao/reader",
3
3
  "description": "",
4
- "version": "0.4.57",
4
+ "version": "0.4.59",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
7
7
  "type": "git",
@@ -34,11 +34,12 @@
34
34
  "dayjs": "^1.11.11",
35
35
  "graphql-request": "^6.0.0",
36
36
  "lodash-es": "^4.17.21",
37
- "viem": "^2.9.31",
38
- "@stake-dao/constants": "0.4.25"
37
+ "viem": "^2.21.53",
38
+ "@stake-dao/constants": "0.4.27"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/lodash-es": "^4.17.12"
41
+ "@types/lodash-es": "^4.17.12",
42
+ "typescript": "5.7.3"
42
43
  },
43
44
  "author": "Stake DAO",
44
45
  "contributors": [
@@ -0,0 +1,41 @@
1
+ import type { BatchMetaData } from '../types.js'
2
+
3
+ const batchCurveUserVotes: BatchMetaData = {
4
+ bytecode: {
5
+ 1: '0x608060405234801561000f575f80fd5b506040516109bd3803806109bd833981810160405281019061003191906105dc565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff1663e93841d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a3919061065f565b90506100ad610525565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016100e69190610699565b602060405180830381865afa158015610101573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610125919061065f565b815f0181815250505f805b838110156103b5575f8573ffffffffffffffffffffffffffffffffffffffff1663b0539187836040518263ffffffff1660e01b815260040161017291906106c1565b602060405180830381865afa15801561018d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b191906106da565b90506101bb61053e565b8673ffffffffffffffffffffffffffffffffffffffff16630f467f988b846040518363ffffffff1660e01b81526004016101f6929190610705565b606060405180830381865afa158015610211573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610235919061072c565b8360200184604001856080018381525083815250838152505050505f816040015111156103a65781815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff16637e418fa08b846040518363ffffffff1660e01b81526004016102ce929190610705565b602060405180830381865afa1580156102e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030d919061065f565b816060018181525050805f808681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030155608082015181600401559050506001846103a391906107a9565b93505b50508080600101915050610130565b506103c5816103fb60201b60201c565b82602001819052505f826040516020016103df9190610942565b6040516020818303038152906040529050602081018059038082f35b60608167ffffffffffffffff81111561041757610416610962565b5b60405190808252806020026020018201604052801561045057816020015b61043d61053e565b8152602001906001900390816104355790505b5090505f5b8281101561051f575f808281526020019081526020015f206040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815250508282815181106105075761050661098f565b5b60200260200101819052508080600101915050610455565b50919050565b60405180604001604052805f8152602001606081525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105ab82610582565b9050919050565b6105bb816105a1565b81146105c5575f80fd5b50565b5f815190506105d6816105b2565b92915050565b5f805f606084860312156105f3576105f261057e565b5b5f610600868287016105c8565b9350506020610611868287016105c8565b9250506040610622868287016105c8565b9150509250925092565b5f819050919050565b61063e8161062c565b8114610648575f80fd5b50565b5f8151905061065981610635565b92915050565b5f602082840312156106745761067361057e565b5b5f6106818482850161064b565b91505092915050565b610693816105a1565b82525050565b5f6020820190506106ac5f83018461068a565b92915050565b6106bb8161062c565b82525050565b5f6020820190506106d45f8301846106b2565b92915050565b5f602082840312156106ef576106ee61057e565b5b5f6106fc848285016105c8565b91505092915050565b5f6040820190506107185f83018561068a565b610725602083018461068a565b9392505050565b5f805f606084860312156107435761074261057e565b5b5f6107508682870161064b565b93505060206107618682870161064b565b92505060406107728682870161064b565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6107b38261062c565b91506107be8361062c565b92508282019050808211156107d6576107d561077c565b5b92915050565b6107e58161062c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61081d816105a1565b82525050565b60a082015f8201516108375f850182610814565b50602082015161084a60208501826107dc565b50604082015161085d60408501826107dc565b50606082015161087060608501826107dc565b50608082015161088360808501826107dc565b50505050565b5f6108948383610823565b60a08301905092915050565b5f602082019050919050565b5f6108b6826107eb565b6108c081856107f5565b93506108cb83610805565b805f5b838110156108fb5781516108e28882610889565b97506108ed836108a0565b9250506001810190506108ce565b5085935050505092915050565b5f604083015f83015161091d5f8601826107dc565b506020830151848203602086015261093582826108ac565b9150508091505092915050565b5f6020820190508181035f83015261095a8184610908565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe',
6
+ },
7
+ inputType: {
8
+ 1: ['address user', 'address gaugeController', 'address veToken'],
9
+ },
10
+ outputTypeHr: {
11
+ 1: [
12
+ 'ReturnData memory returnData',
13
+ 'struct ReturnData { uint256 veBalance; Vote[] votes; }',
14
+ 'struct Vote { address gauge; uint256 slope; uint256 power; uint256 start; uint256 end; }',
15
+ ],
16
+ },
17
+ outputType: {
18
+ 1: [
19
+ {
20
+ type: 'tuple',
21
+ name: 'returnData',
22
+ components: [
23
+ { type: 'uint256', name: 'veBalance' },
24
+ {
25
+ type: 'tuple[]',
26
+ name: 'votes',
27
+ components: [
28
+ { type: 'address', name: 'gauge' },
29
+ { type: 'uint256', name: 'slope' },
30
+ { type: 'uint256', name: 'power' },
31
+ { type: 'uint256', name: 'start' },
32
+ { type: 'uint256', name: 'end' },
33
+ ],
34
+ },
35
+ ],
36
+ },
37
+ ],
38
+ },
39
+ }
40
+
41
+ export default batchCurveUserVotes
package/src/endpoints.ts CHANGED
@@ -2,6 +2,8 @@ export const GH_STAKE_DAO_RAW_ORG = 'https://raw.githubusercontent.com/stake-dao
2
2
  export const GH_STAKE_DAO_BOUNTIES_REPORT = `${GH_STAKE_DAO_RAW_ORG}/bounties-report`
3
3
  export const GH_STAKE_DAO_VM_DATA = `${GH_STAKE_DAO_RAW_ORG}/votemarket-data`
4
4
 
5
+ export const STAKE_DAO_API = 'https://api.stakedao.org/api'
6
+
5
7
  export const LLAMA_API_URL = 'https://coins.llama.fi'
6
8
  export const THE_GRAPH_BASE_URL =
7
9
  'https://gateway-arbitrum.network.thegraph.com/api/e3c2ef8231c88703a5b450c188ce2db6/subgraphs/id'
package/src/index.ts CHANGED
@@ -67,8 +67,9 @@ export { fetchStakeDao } from './strategies/stakeDao/fetch.js'
67
67
  /// --- VOTEMARKET
68
68
 
69
69
  // General
70
- export { fetchPendingRemoteCampaigns } from './votemarket/fetchPendingRemoteCampaigns.js'
71
- export { fetchCampaigns } from './votemarket/fetchCampaigns.js'
70
+ export { processRawCampaigns } from './votemarket/fetchCampaigns/processRawCampaigns.js'
71
+ export { fetchPendingRemoteCampaigns } from './votemarket/fetchCampaigns/pendingRemote.js'
72
+ export { fetchCampaigns } from './votemarket/fetchCampaigns/index.js'
72
73
  export type { Campaign } from './votemarket/types.js'
73
74
 
74
75
  // Curve
@@ -76,6 +77,12 @@ export { fetchCurveGauges } from './votemarket/curve/fetchCurveGauges.js'
76
77
  export { fetchCurveUserVotes } from './votemarket/curve/fetchCurveUserVotes.js'
77
78
  export { fetchSnapshotUserData } from './votemarket/curve/fetchSnapshotUserData.js'
78
79
 
80
+ // Balancer
81
+ export { fetchBalancerUserVotes } from './votemarket/balancer/fetchBalancerUserVotes.js'
82
+
83
+ // Fxn
84
+ export { fetchFxnUserVotes } from './votemarket/fxn/fetchFxnUserVotes.js'
85
+
79
86
  // Campaign data
80
87
  export { fetchEpochsVotes } from './votemarket/fetchEpochVotes.js'
81
88
  export { fetchClaimableData } from './votemarket/fetchClaimableData.js'
@@ -188,7 +188,7 @@ export const fetchLockers = async ({ provider, chainId, prices, withAirdropGraph
188
188
  const rewardPrice = prices.find((p) => p.address === r.address)?.usdPrice || 0
189
189
 
190
190
  const periodFinish = Number(formatUnits(rawData ? rawData[2] : Zero, 0))
191
- const streaming = periodFinish > Math.floor(Date.now() / 1000)
191
+ const streaming = r.distribution === 'streamed' && periodFinish > Math.floor(Date.now() / 1000)
192
192
 
193
193
  const rate = rawData ? rawData[3] : Zero
194
194
  const oneYearRate = rate * BigInt(ONE_YEAR)
@@ -0,0 +1,61 @@
1
+ import { contracts } from '@stake-dao/constants'
2
+ import { encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem'
3
+ import { mainnet } from 'viem/chains'
4
+ import batchUserVotes from '../../bytecodes/votemarket/batchUserVotes.js'
5
+ import { concatBytecode } from '../../index.js'
6
+ import { batchJsonRpc, equalTlc } from '../../utils.js'
7
+
8
+ export type Vote = {
9
+ gauge: string
10
+ slope: string
11
+ relativeWeight: number
12
+ weight: number
13
+ start: number
14
+ end: number
15
+ }
16
+
17
+ export type GaugesUserData = { veBalance: string; unusedVeBalance: string; unusedRelativeWeight: number; votes: Vote[] }
18
+
19
+ export const fetchBalancerUserVotes = async (rpc: string, user: string): Promise<GaugesUserData> => {
20
+ const calls = [
21
+ concatBytecode(
22
+ batchUserVotes.bytecode[mainnet.id]!,
23
+ encodeAbiParameters(parseAbiParameters(batchUserVotes.inputType[mainnet.id]!) as any, [
24
+ user,
25
+ contracts.balancerGaugeController![1]!,
26
+ contracts.veBal![1],
27
+ ]),
28
+ ),
29
+ ]
30
+
31
+ const rawVotes = await batchJsonRpc({
32
+ rpc,
33
+ calls,
34
+ outputTypeAbi: batchUserVotes.outputType![mainnet.id],
35
+ parse: false,
36
+ callsKey: `votemarket/balancer/fetchBalancerUserVotes.ts: rawGauges - chainId ${mainnet.id} - rpc ${rpc}`,
37
+ })
38
+
39
+ const veBalance = rawVotes[0].veBalance
40
+
41
+ const votes = rawVotes[0].votes
42
+ .filter((rv) => !equalTlc(rv.gauge, zeroAddress))
43
+ .map((v) => ({
44
+ gauge: v.gauge,
45
+ slope: formatUnits(v.slope, 0),
46
+ relativeWeight: Number(v.power) / 100,
47
+ weight: formatUnits((veBalance * BigInt(v.power)) / BigInt(10000), 18),
48
+ start: Number(v.start),
49
+ end: Number(v.end),
50
+ }))
51
+
52
+ const unusedRelativeWeight = 10000 - votes.reduce((total, x) => total + x.relativeWeight * 100, 0)
53
+ const unusedVeBalance = (veBalance * BigInt(unusedRelativeWeight)) / BigInt(10000)
54
+
55
+ return {
56
+ veBalance: formatUnits(veBalance, 18),
57
+ unusedVeBalance: formatUnits(unusedVeBalance, 18),
58
+ unusedRelativeWeight: unusedRelativeWeight / 100,
59
+ votes,
60
+ }
61
+ }
@@ -1,6 +1,7 @@
1
+ import { contracts } from '@stake-dao/constants'
1
2
  import { encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem'
2
3
  import { mainnet } from 'viem/chains'
3
- import batchCurveUserVotes from '../../bytecodes/votemarket/curve/batchCurveUserVotes.js'
4
+ import batchUserVotes from '../../bytecodes/votemarket/batchUserVotes.js'
4
5
  import { concatBytecode } from '../../index.js'
5
6
  import { batchJsonRpc, equalTlc } from '../../utils.js'
6
7
 
@@ -18,15 +19,19 @@ export type GaugesUserData = { veBalance: string; unusedVeBalance: string; unuse
18
19
  export const fetchCurveUserVotes = async (rpc: string, user: string): Promise<GaugesUserData> => {
19
20
  const calls = [
20
21
  concatBytecode(
21
- batchCurveUserVotes.bytecode[mainnet.id]!,
22
- encodeAbiParameters(parseAbiParameters(batchCurveUserVotes.inputType[mainnet.id]!) as any, [user]),
22
+ batchUserVotes.bytecode[mainnet.id]!,
23
+ encodeAbiParameters(parseAbiParameters(batchUserVotes.inputType[mainnet.id]!) as any, [
24
+ user,
25
+ contracts.curveGaugeController![1]!,
26
+ contracts.veCrv![1]!,
27
+ ]),
23
28
  ),
24
29
  ]
25
30
 
26
31
  const rawVotes = await batchJsonRpc({
27
32
  rpc,
28
33
  calls,
29
- outputTypeAbi: batchCurveUserVotes.outputType![mainnet.id],
34
+ outputTypeAbi: batchUserVotes.outputType![mainnet.id],
30
35
  parse: false,
31
36
  callsKey: `votemarket/curve/fetchCurveUserVotes.ts: rawGauges - chainId ${mainnet.id} - rpc ${rpc}`,
32
37
  })