@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,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 fetchBalancerUserVotes = async (rpc, user) => {
8
+ const calls = [
9
+ concatBytecode(batchUserVotes.bytecode[mainnet.id], encodeAbiParameters(parseAbiParameters(batchUserVotes.inputType[mainnet.id]), [
10
+ user,
11
+ contracts.balancerGaugeController[1],
12
+ contracts.veBal[1],
13
+ ])),
14
+ ];
15
+ const rawVotes = await batchJsonRpc({
16
+ rpc,
17
+ calls,
18
+ outputTypeAbi: batchUserVotes.outputType[mainnet.id],
19
+ parse: false,
20
+ callsKey: `votemarket/balancer/fetchBalancerUserVotes.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=fetchBalancerUserVotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchBalancerUserVotes.js","sourceRoot":"","sources":["../../../../src/votemarket/balancer/fetchBalancerUserVotes.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,sBAAsB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAY,EAA2B,EAAE;IACjG,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,uBAAwB,CAAC,CAAC,CAAE;YACtC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAC;SACpB,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,sEAAsE,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE;KAC1G,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"}
@@ -1,16 +1,21 @@
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
  export const fetchCurveUserVotes = async (rpc, user) => {
7
8
  const calls = [
8
- concatBytecode(batchCurveUserVotes.bytecode[mainnet.id], encodeAbiParameters(parseAbiParameters(batchCurveUserVotes.inputType[mainnet.id]), [user])),
9
+ concatBytecode(batchUserVotes.bytecode[mainnet.id], encodeAbiParameters(parseAbiParameters(batchUserVotes.inputType[mainnet.id]), [
10
+ user,
11
+ contracts.curveGaugeController[1],
12
+ contracts.veCrv[1],
13
+ ])),
9
14
  ];
10
15
  const rawVotes = await batchJsonRpc({
11
16
  rpc,
12
17
  calls,
13
- outputTypeAbi: batchCurveUserVotes.outputType[mainnet.id],
18
+ outputTypeAbi: batchUserVotes.outputType[mainnet.id],
14
19
  parse: false,
15
20
  callsKey: `votemarket/curve/fetchCurveUserVotes.ts: rawGauges - chainId ${mainnet.id} - rpc ${rpc}`,
16
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetchCurveUserVotes.js","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchCurveUserVotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,mBAAmB,MAAM,yDAAyD,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAavD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAY,EAA2B,EAAE;IAC9F,MAAM,KAAK,GAAG;QACZ,cAAc,CACZ,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAE,EACzC,mBAAmB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAE,CAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CACnG;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,GAAG;QACH,KAAK;QACL,aAAa,EAAE,mBAAmB,CAAC,UAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,gEAAgE,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE;KACpG,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"}
1
+ {"version":3,"file":"fetchCurveUserVotes.js","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchCurveUserVotes.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,mBAAmB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAY,EAA2B,EAAE;IAC9F,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,oBAAqB,CAAC,CAAC,CAAE;YACnC,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,gEAAgE,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE;KACpG,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"}
@@ -1,49 +1,65 @@
1
1
  import { Zero, contract, tokenWithAddress } from '@stake-dao/constants';
2
2
  import { formatUnits, parseAbi } from 'viem';
3
3
  import { mainnet } from 'viem/chains';
4
- import { GH_STAKE_DAO_BOUNTIES_REPORT } from '../../endpoints.js';
4
+ import { GH_STAKE_DAO_BOUNTIES_REPORT, STAKE_DAO_API } from '../../endpoints.js';
5
5
  import { getPrices } from '../../prices.js';
6
6
  import { rpcFetchTokensData } from '../../tokens.js';
7
7
  import { equalTlc, multicall } from '../../utils.js';
8
- const getMerkleData = async () => {
9
- const [delegators, nonDelegators] = await Promise.all([
10
- fetch(`${GH_STAKE_DAO_BOUNTIES_REPORT}/refs/heads/main/bounties-reports/latest/vlCVX/vlcvx_merkle_delegators.json`).then((res) => res.json()),
11
- fetch(`${GH_STAKE_DAO_BOUNTIES_REPORT}/refs/heads/main/bounties-reports/latest/vlCVX/vlcvx_merkle.json`).then((res) => res.json()),
8
+ const getMerkleData = async (chainId) => {
9
+ const [delegators, nonDelegators, votiumMerkle] = await Promise.all([
10
+ chainId === mainnet.id
11
+ ? fetch(`${GH_STAKE_DAO_BOUNTIES_REPORT}/refs/heads/main/bounties-reports/latest/vlCVX/vlcvx_merkle_delegators.json`).then((res) => res.json())
12
+ : {},
13
+ fetch(`${GH_STAKE_DAO_BOUNTIES_REPORT}/refs/heads/main/bounties-reports/latest/vlCVX/vlcvx_merkle${chainId === mainnet.id ? '' : `_${chainId}`}.json`).then((res) => res.json()),
14
+ chainId === mainnet.id
15
+ ? fetch(`${STAKE_DAO_API}/votemarket/votium_merkles.json`).then((res) => res.json())
16
+ : { claims: {} },
12
17
  ]);
13
- return { delegators, nonDelegators };
18
+ return { delegators, nonDelegators, votiumMerkle };
14
19
  };
15
- const isRootMatch = (contractRoot, fileRoot) => (contractRoot === ZERO_ROOT && fileRoot === ZERO_ROOT) || equalTlc(contractRoot, fileRoot);
16
- const validateMerkleRoots = (delegatorRoot, nonDelegatorRoot, merkleData) => {
17
- const delegatorMatches = isRootMatch(delegatorRoot, merkleData.delegators.merkleRoot);
18
- const nonDelegatorMatches = isRootMatch(nonDelegatorRoot, merkleData.nonDelegators.merkleRoot);
20
+ const validateMerkleRoots = (delegatorRoot, nonDelegatorRoot, merkleData, isMainnet) => {
21
+ const delegatorMatches = isMainnet ? equalTlc(delegatorRoot, merkleData.delegators.merkleRoot) : false;
22
+ const nonDelegatorMatches = equalTlc(nonDelegatorRoot, merkleData.nonDelegators.merkleRoot);
19
23
  return delegatorMatches || nonDelegatorMatches;
20
24
  };
21
- const getMerkleRoots = async (provider) => {
25
+ const getMerkleRoots = async (provider, user) => {
22
26
  const contracts = [contract('vlCvxDelegatorMerkle', mainnet.id), contract('vlCvxNotDelegatorMerkle', mainnet.id)];
23
- const result = await multicall(provider, contracts.map((address) => ({
24
- address,
25
- name: 'root',
26
- params: [],
27
- })), parseAbi(['function root() external view returns (bytes32)']));
27
+ const result = await multicall(provider, contracts.flatMap((address) => [
28
+ { address, name: 'root', params: [] },
29
+ { address, name: 'recipients', params: [user] },
30
+ ]), parseAbi([
31
+ 'function root() external view returns (bytes32)',
32
+ 'function recipients(address) external view returns (address)',
33
+ ]));
28
34
  return {
29
35
  delegatorRoot: result[0].result,
30
- nonDelegatorRoot: result[1].result,
36
+ delegatorRecipient: result[1].result,
37
+ nonDelegatorRoot: result[2].result,
38
+ nonDelegatorRecipient: result[3].result,
31
39
  };
32
40
  };
33
41
  const getClaimedData = async (provider, tokens, user, contract) => {
34
42
  const rawClaimed = tokens.length > 0
35
- ? await multicall(provider, tokens.map((t) => ({
36
- address: contract,
37
- name: 'claimed',
38
- params: [user, t],
39
- })), parseAbi(['function claimed(address,address) external view returns (uint256)']))
43
+ ? await multicall(provider, tokens.flatMap((t) => [{ address: contract, name: 'claimed', params: [user, t] }]), parseAbi(['function claimed(address,address) external view returns (uint256)']))
40
44
  : [];
41
45
  return tokens.map((t, index) => ({
42
46
  token: t,
43
47
  claimed: rawClaimed[index].result,
44
48
  }));
45
49
  };
46
- const getParsedData = (merkleAddress, userData, unknownTokensData, claimedData, prices) => {
50
+ const getVotiumClaimedData = async (provider, merkle) => {
51
+ const rawClaimed = await multicall(provider, Object.keys(merkle).map((t) => ({
52
+ address: contract('votiumMerkle'),
53
+ name: 'isClaimed',
54
+ params: [t, merkle[t].index],
55
+ })), parseAbi(['function isClaimed(address,uint256) external view returns(bool)']));
56
+ return Object.keys(merkle).map((t, index) => ({
57
+ ...merkle[t],
58
+ token: t,
59
+ claimed: rawClaimed[index].result,
60
+ }));
61
+ };
62
+ const getParsedData = (user, recipient, merkleAddress, userData, unknownTokensData, claimedData, prices, chainId) => {
47
63
  return userData
48
64
  ? Object.keys(userData.tokens).map((token) => {
49
65
  const rewardToken = tokenWithAddress(token) || unknownTokensData.find((t) => equalTlc(t.address, token));
@@ -51,6 +67,8 @@ const getParsedData = (merkleAddress, userData, unknownTokensData, claimedData,
51
67
  const claimed = claimedData.find((c) => equalTlc(c.token, token))?.claimed;
52
68
  const claimable = BigInt(userData.tokens[token].amount) - claimed;
53
69
  return {
70
+ user,
71
+ recipient,
54
72
  token: rewardToken,
55
73
  claimable: formatUnits(claimable, 0),
56
74
  claimableUsd: Number(formatUnits(claimable, rewardToken?.decimals || 18)) * tokenPrice,
@@ -59,48 +77,80 @@ const getParsedData = (merkleAddress, userData, unknownTokensData, claimedData,
59
77
  proof: userData.tokens[token].proof,
60
78
  merkleAddress: merkleAddress,
61
79
  isClaimed: claimable === Zero,
80
+ chainId,
81
+ };
82
+ })
83
+ : undefined;
84
+ };
85
+ const getVotiumParsedData = (user, userData, unknownTokensData, prices) => {
86
+ return userData
87
+ ? userData.map((ud) => {
88
+ const rewardToken = tokenWithAddress(ud.token) || unknownTokensData.find((t) => equalTlc(t.address, ud.token));
89
+ const tokenPrice = prices.find((p) => equalTlc(ud.token, p.address))?.usdPrice || 0;
90
+ return {
91
+ user,
92
+ recipient: user,
93
+ token: rewardToken,
94
+ claimable: ud.claimed ? '0' : formatUnits(BigInt(ud.amount), 0),
95
+ claimableUsd: ud.claimed
96
+ ? 0
97
+ : Number(formatUnits(BigInt(ud.amount), rewardToken?.decimals || 18)) * tokenPrice,
98
+ amount: formatUnits(BigInt(ud.amount), 0),
99
+ amountUsd: Number(formatUnits(BigInt(ud.amount), rewardToken?.decimals || 18)) * tokenPrice,
100
+ proof: ud.proof,
101
+ merkleAddress: contract('votiumMerkle'),
102
+ isClaimed: ud.claimed,
103
+ index: ud.index,
104
+ chainId: mainnet.id,
62
105
  };
63
106
  })
64
107
  : undefined;
65
108
  };
66
- const ZERO_ROOT = '0x0000000000000000000000000000000000000000000000000000000000000000';
67
- export const fetchUserVlCvxClaimable = async (provider, rpc, user) => {
68
- const { delegatorRoot, nonDelegatorRoot } = await getMerkleRoots(provider);
109
+ export const fetchUserVlCvxClaimable = async (provider, rpc, user, chainId) => {
110
+ const { delegatorRoot, delegatorRecipient, nonDelegatorRoot, nonDelegatorRecipient } = await getMerkleRoots(provider, user);
69
111
  let vlCvxClaimable;
112
+ let votiumMerkleData;
70
113
  try {
71
- const merkleData = await getMerkleData();
72
- if (validateMerkleRoots(delegatorRoot, nonDelegatorRoot, merkleData)) {
73
- vlCvxClaimable = merkleData;
114
+ const merkleData = await getMerkleData(chainId);
115
+ if (validateMerkleRoots(delegatorRoot, nonDelegatorRoot, merkleData, chainId === mainnet.id)) {
116
+ vlCvxClaimable = { delegators: merkleData.delegators, nonDelegators: merkleData.nonDelegators };
74
117
  }
118
+ votiumMerkleData = merkleData.votiumMerkle.claims[user];
75
119
  }
76
120
  catch { }
77
- if (!vlCvxClaimable) {
78
- throw new Error('Could not find valid merkle data');
121
+ if (!vlCvxClaimable && !votiumMerkleData) {
122
+ console.error('Could not find valid merkle data');
123
+ return [];
79
124
  }
80
- const vlCvxUserDelegated = vlCvxClaimable?.delegators.claims[user];
81
- const vlCvxUserNotDelegated = vlCvxClaimable?.nonDelegators.claims[user];
125
+ const vlCvxUserDelegated = vlCvxClaimable.delegators?.claims?.[user];
126
+ const vlCvxUserNotDelegated = vlCvxClaimable.nonDelegators.claims[user];
82
127
  const tokensDelegated = Object.keys(vlCvxUserDelegated?.tokens || {});
83
128
  const tokensNotDelegated = Object.keys(vlCvxUserNotDelegated?.tokens || {});
84
- const tokens = [...tokensDelegated, ...tokensNotDelegated];
129
+ const tokensVotium = Object.keys(votiumMerkleData?.tokens || {});
130
+ const tokens = [...tokensDelegated, ...tokensNotDelegated, ...tokensVotium];
85
131
  if (!tokens.length)
86
132
  return [];
87
- const [delegatedClaimed, notDelegatedClaimed] = await Promise.all([
133
+ const [delegatedClaimed, notDelegatedClaimed, votiumClaimed] = await Promise.all([
88
134
  getClaimedData(provider, tokensDelegated, user, contract('vlCvxDelegatorMerkle')),
89
135
  getClaimedData(provider, tokensNotDelegated, user, contract('vlCvxNotDelegatorMerkle')),
136
+ votiumMerkleData?.tokens && Object.keys(votiumMerkleData?.tokens).length > 0
137
+ ? getVotiumClaimedData(provider, votiumMerkleData?.tokens)
138
+ : [],
90
139
  ]);
91
140
  const unknownTokens = tokens.filter((t) => !tokenWithAddress(t));
92
- const rawUnknownTokensData = await rpcFetchTokensData(mainnet.id, rpc[mainnet.id], unknownTokens);
141
+ const rawUnknownTokensData = await rpcFetchTokensData(chainId, rpc[chainId], unknownTokens);
93
142
  const unknownTokensData = rawUnknownTokensData.map((t) => ({
94
143
  name: t.name,
95
144
  symbol: t.symbol,
96
145
  address: t.tokenAddress,
97
146
  decimals: Number(t.decimals),
98
- chainId: mainnet.id,
147
+ chainId,
99
148
  }));
100
- const prices = await getPrices(tokens.map((t) => ({ address: t })), mainnet.id);
149
+ const prices = await getPrices(tokens.map((t) => ({ address: t })), chainId);
101
150
  return [
102
- getParsedData(contract('vlCvxDelegatorMerkle', mainnet.id), vlCvxUserDelegated, unknownTokensData, delegatedClaimed, prices),
103
- getParsedData(contract('vlCvxNotDelegatorMerkle', mainnet.id), vlCvxUserNotDelegated, unknownTokensData, notDelegatedClaimed, prices),
151
+ getParsedData(user, delegatorRecipient, contract('vlCvxDelegatorMerkle'), vlCvxUserDelegated, unknownTokensData, delegatedClaimed, prices, chainId),
152
+ getParsedData(user, nonDelegatorRecipient, contract('vlCvxNotDelegatorMerkle', chainId), vlCvxUserNotDelegated, unknownTokensData, notDelegatedClaimed, prices, chainId),
153
+ getVotiumParsedData(user, votiumClaimed, unknownTokensData, prices),
104
154
  ]
105
155
  .filter(Boolean)
106
156
  .flat();
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserVlCvxClaimable.js","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchUserVlCvxClaimable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchUserVlCvxClaimable.js","sourceRoot":"","sources":["../../../../src/votemarket/curve/fetchUserVlCvxClaimable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { contract } from '@stake-dao/constants';
2
+ import { range } from 'lodash-es';
3
+ import { decodeAbiParameters, encodeAbiParameters, parseAbiParameters } from 'viem';
4
+ import { arbitrum } from 'viem/chains';
5
+ import batchCampaigns from '../../bytecodes/votemarket/batchCampaigns.js';
6
+ import { batchJsonRpc, concatBytecode, equalTlc, rpcCall } from '../../utils.js';
7
+ import { fetchPendingRemoteCampaigns } from './pendingRemote.js';
8
+ import { processRawCampaigns } from './processRawCampaigns.js';
9
+ export const CAMPAIGNS_CHUNK_SIZE = 10;
10
+ export const CLAIM_WINDOW_LENGTH = 24; // weeks
11
+ export const CLOSE_WINDOW_LENGTH = 4; // weeks
12
+ export const fetchCampaigns = async ({ platform, gaugeController, chainId, rpcs, etherscanApiKey, fromBlock, mainnetVmRemote, }) => {
13
+ const rpc = rpcs[chainId];
14
+ const nCampaignsRequest = await rpcCall(rpc, [{ to: platform, data: '0x7274e30d' }]); // campaignCount
15
+ const nCampaigns = Number(decodeAbiParameters([{ type: 'uint256', name: 'campaignCount' }], nCampaignsRequest[0].result));
16
+ const calls = range(0, nCampaigns, CAMPAIGNS_CHUNK_SIZE).map((skip) => {
17
+ const inputParams = [
18
+ chainId,
19
+ platform,
20
+ contract('laPosteTokenFactory', chainId),
21
+ skip,
22
+ skip + CAMPAIGNS_CHUNK_SIZE > nCampaigns ? nCampaigns : skip + CAMPAIGNS_CHUNK_SIZE,
23
+ ];
24
+ const inputData = encodeAbiParameters(parseAbiParameters(batchCampaigns.inputType[1]), inputParams);
25
+ return concatBytecode(batchCampaigns.bytecode[1], inputData);
26
+ });
27
+ let rawCampaigns = await batchJsonRpc({
28
+ rpc,
29
+ calls,
30
+ outputTypeAbi: batchCampaigns.outputType[1],
31
+ parse: false,
32
+ callsKey: `votemarket/fetchCampaigns.ts: rawCampaigns - chainId ${chainId} - rpc ${rpc}`,
33
+ });
34
+ if (chainId === arbitrum.id && etherscanApiKey && fromBlock && mainnetVmRemote) {
35
+ const nextIndex = rawCampaigns.length > 0 ? Math.max(...rawCampaigns.map((rc) => Number(rc.id))) + 1 : 0;
36
+ const { remoteCampaigns: pendingRemoteCampaigns } = await fetchPendingRemoteCampaigns({
37
+ mainnetVmRemote,
38
+ chainId,
39
+ fromBlock,
40
+ etherscanApiKey,
41
+ nextIndex,
42
+ votemarket: platform,
43
+ });
44
+ rawCampaigns = [
45
+ ...rawCampaigns,
46
+ ...pendingRemoteCampaigns.filter((rmtC) => {
47
+ const existingCampaign = rawCampaigns.find((rc) => rc.addresses.length === rmtC.addresses.length &&
48
+ rc.addresses.every((rca, index) => equalTlc(rca, rmtC.addresses[index])) &&
49
+ equalTlc(rc.rewardAddress, rmtC.rewardAddress) &&
50
+ rc.rewardChainId === rmtC.rewardChainId &&
51
+ rc.campaign.startTimestamp === rmtC.campaign.startTimestamp &&
52
+ rc.campaign.endTimestamp === rmtC.campaign.endTimestamp &&
53
+ rc.campaign.numberOfPeriods === rmtC.campaign.numberOfPeriods &&
54
+ rc.campaign.maxRewardPerVote === rmtC.campaign.maxRewardPerVote &&
55
+ rc.campaign.totalRewardAmount === rmtC.campaign.totalRewardAmount &&
56
+ equalTlc(rc.campaign.gauge, rmtC.campaign.gauge) &&
57
+ equalTlc(rc.campaign.hook, rmtC.campaign.hook) &&
58
+ equalTlc(rc.campaign.manager, rmtC.campaign.manager));
59
+ return typeof existingCampaign === 'undefined';
60
+ }),
61
+ ];
62
+ }
63
+ return await processRawCampaigns({ rawCampaigns, platform, chainId, gaugeController, rpcs });
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/index.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@ import { LA_POSTE_MESSAGE_SENT_EVENT, ONE_WEEK, One, Zero, contract } from '@sta
2
2
  import { range } from 'lodash-es';
3
3
  import { decodeAbiParameters, decodeEventLog, parseAbiParameters, zeroAddress } from 'viem';
4
4
  import { mainnet } from 'viem/chains';
5
+ import { equalTlc } from '../../utils.js';
5
6
  export const CAMPAIGNS_CHUNK_SIZE = 10;
6
7
  export const CLAIM_WINDOW_LENGTH = 24; // weeks
7
8
  export const CLOSE_WINDOW_LENGTH = 4; // weeks
8
- export const fetchPendingRemoteCampaigns = async ({ mainnetVmRemote, chainId, fromBlock, etherscanApiKey, nextIndex, }) => {
9
+ export const fetchPendingRemoteCampaigns = async ({ mainnetVmRemote, chainId, fromBlock, etherscanApiKey, nextIndex, votemarket, }) => {
9
10
  const queryParams = {
10
11
  chainid: `${mainnet.id}`,
11
12
  module: 'logs',
@@ -33,6 +34,9 @@ export const fetchPendingRemoteCampaigns = async ({ mainnetVmRemote, chainId, fr
33
34
  'Payload payload',
34
35
  'struct Payload { uint256 actionType; address sender; address votemarket; bytes parameters }',
35
36
  ]), decodedEvent.args.message.payload);
37
+ // Skip if the target is not the protocol's votmarket
38
+ if (!equalTlc(payload[0].votemarket, votemarket))
39
+ continue;
36
40
  // Create Campaign (actionType === 0)
37
41
  if (payload[0].actionType === Zero) {
38
42
  const decodedParams = decodeAbiParameters(parseAbiParameters([
@@ -93,10 +97,11 @@ export const fetchPendingRemoteCampaigns = async ({ mainnetVmRemote, chainId, fr
93
97
  })),
94
98
  rewardAddress: campaignParams.rewardToken,
95
99
  rewardChainId: BigInt(mainnet.id),
100
+ eventTimestamp: element.eventTimestamp,
96
101
  };
97
102
  nextIndex++;
98
103
  return campaign;
99
104
  });
100
105
  return { remoteCampaigns, remoteCampaignsUpdate: manageParams };
101
106
  };
102
- //# sourceMappingURL=fetchPendingRemoteCampaigns.js.map
107
+ //# sourceMappingURL=pendingRemote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingRemote.js","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/pendingRemote.ts"],"names":[],"mappings":"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"}
@@ -1,113 +1,26 @@
1
- import { ONE_WEEK, Zero, contract, contracts, tokenWithAddress, tokens } from '@stake-dao/constants';
2
- import { chunk, filter, range, remove, uniq } from 'lodash-es';
3
- import { decodeAbiParameters, encodeAbiParameters, formatEther, formatUnits, parseAbiParameters, zeroAddress, } from 'viem';
4
- import { arbitrum, mainnet } from 'viem/chains';
5
- import batchCampaigns from '../bytecodes/votemarket/batchCampaigns.js';
6
- import batchCampaignsRestrictedVotes from '../bytecodes/votemarket/batchCampaignsRestrictedVotes.js';
7
- import batchGaugesWeight from '../bytecodes/votemarket/batchGaugesWeight.js';
8
- import { getPrices } from '../prices.js';
9
- import { rpcFetchTokensData } from '../tokens.js';
10
- import { batchJsonRpc, concatBytecode, equalTlc, rpcCall, rpcGetLastBlockTimetstamp } from '../utils.js';
11
- import campaignsUnderlyingTokens from './campaignsUnderlyingTokens.js';
12
- import { fetchPendingRemoteCampaigns } from './fetchPendingRemoteCampaigns.js';
1
+ import { ONE_WEEK, Zero, tokenWithAddress, tokens } from '@stake-dao/constants';
2
+ import { chunk, filter, remove, uniq } from 'lodash-es';
3
+ import { encodeAbiParameters, formatEther, formatUnits, parseAbiParameters } from 'viem';
4
+ import { mainnet } from 'viem/chains';
5
+ import batchCampaignsRestrictedVotes from '../../bytecodes/votemarket/batchCampaignsRestrictedVotes.js';
6
+ import batchGaugesWeight from '../../bytecodes/votemarket/batchGaugesWeight.js';
7
+ import { getPrices } from '../../prices.js';
8
+ import { rpcFetchTokensData } from '../../tokens.js';
9
+ import { batchJsonRpc, concatBytecode, equalTlc, lc, rpcGetLastBlockTimetstamp } from '../../utils.js';
10
+ import campaignsUnderlyingTokens from '../campaignsUnderlyingTokens.js';
11
+ import { updateEpoch } from './updateEpoch.js';
13
12
  export const CAMPAIGNS_CHUNK_SIZE = 10;
14
13
  export const CLAIM_WINDOW_LENGTH = 24; // weeks
15
14
  export const CLOSE_WINDOW_LENGTH = 4; // weeks
16
- const updateEpoch = ({ period, previousPeriod, campaign, totalVotes, remainingPeriods, }) => {
17
- // -- _checkForUpgrade is handled in solidity BatchCampaigns.sol
18
- // -- If not first period, check if previousPeriod is updated
19
- if (!period.updated && (previousPeriod?.updated || typeof previousPeriod === 'undefined')) {
20
- // Calculate remaining periods and total reward.
21
- const totalRewardForRemainingPeriods = campaign.totalRewardAmount - campaign.totalDistributed;
22
- // -- Update the period data.
23
- const newRewardPerPeriod = remainingPeriods > 0 ? totalRewardForRemainingPeriods / BigInt(remainingPeriods) : totalRewardForRemainingPeriods;
24
- period.rewardPerPeriod = newRewardPerPeriod;
25
- // -- Update the reward per vote
26
- // If no votes, rollover the leftover to the next epoch.
27
- if (totalVotes === Zero) {
28
- period.leftover = period.rewardPerPeriod;
29
- }
30
- else {
31
- // Calculate reward per vote
32
- let rewardPerVote = (newRewardPerPeriod * BigInt(1e18)) / totalVotes;
33
- // Cap reward per vote at max reward per vote
34
- if (rewardPerVote > campaign.maxRewardPerVote) {
35
- rewardPerVote = campaign.maxRewardPerVote;
36
- // Calculate leftover rewards
37
- const leftOver = newRewardPerPeriod - (rewardPerVote * totalVotes) / BigInt(1e18);
38
- // Handle leftover rewards
39
- if (campaign.hook === zeroAddress) {
40
- // Store leftover in the period if there is no hook.
41
- period.leftover = period.leftover + leftOver;
42
- }
43
- }
44
- // Save the calculated reward per vote.
45
- period.rewardPerVote = rewardPerVote;
46
- }
47
- // -- Update the total distributed amount
48
- campaign.totalDistributed = campaign.totalDistributed + newRewardPerPeriod - period.leftover;
49
- // -- Mark the period as updated
50
- period.updated = true;
51
- }
52
- return campaign;
53
- };
54
15
  const formatPeriod = (rawPeriod, decimals) => ({
55
16
  rewardPerPeriod: formatUnits(rawPeriod.rewardPerPeriod, decimals),
56
17
  rewardPerVote: formatUnits(rawPeriod.rewardPerVote, decimals),
57
18
  leftover: formatUnits(rawPeriod.leftover, decimals),
58
19
  updated: rawPeriod.updated,
59
20
  });
60
- export const fetchCampaigns = async ({ platform, gaugeController, chainId, rpcs, etherscanApiKey, fromBlock, mainnetVmRemote, }) => {
21
+ export const processRawCampaigns = async ({ rawCampaigns, platform, gaugeController, chainId, rpcs, }) => {
61
22
  const rpc = rpcs[chainId];
62
23
  const block = await rpcGetLastBlockTimetstamp(rpc);
63
- const nCampaignsRequest = await rpcCall(rpc, [{ to: platform, data: '0x7274e30d' }]); // campaignCount
64
- const nCampaigns = Number(decodeAbiParameters([{ type: 'uint256', name: 'campaignCount' }], nCampaignsRequest[0].result));
65
- const calls = range(0, nCampaigns, CAMPAIGNS_CHUNK_SIZE).map((skip) => {
66
- const inputParams = [
67
- chainId,
68
- platform,
69
- contract('laPosteTokenFactory', chainId),
70
- skip,
71
- skip + CAMPAIGNS_CHUNK_SIZE > nCampaigns ? nCampaigns : skip + CAMPAIGNS_CHUNK_SIZE,
72
- ];
73
- const inputData = encodeAbiParameters(parseAbiParameters(batchCampaigns.inputType[1]), inputParams);
74
- return concatBytecode(batchCampaigns.bytecode[1], inputData);
75
- });
76
- let rawCampaigns = await batchJsonRpc({
77
- rpc,
78
- calls,
79
- outputTypeAbi: batchCampaigns.outputType[1],
80
- parse: false,
81
- callsKey: `votemarket/fetchCampaigns.ts: rawCampaigns - chainId ${chainId} - rpc ${rpc}`,
82
- });
83
- if (chainId === arbitrum.id && etherscanApiKey && fromBlock && mainnetVmRemote) {
84
- const nextIndex = rawCampaigns.length > 0 ? Math.max(...rawCampaigns.map((rc) => Number(rc.id))) + 1 : 0;
85
- const { remoteCampaigns: pendingRemoteCampaigns } = await fetchPendingRemoteCampaigns({
86
- mainnetVmRemote,
87
- chainId,
88
- fromBlock,
89
- etherscanApiKey,
90
- nextIndex,
91
- });
92
- rawCampaigns = [
93
- ...rawCampaigns,
94
- ...pendingRemoteCampaigns.filter((rmtC) => {
95
- const existingCampaign = rawCampaigns.find((rc) => rc.addresses.length === rmtC.addresses.length &&
96
- rc.addresses.every((rca, index) => equalTlc(rca, rmtC.addresses[index])) &&
97
- equalTlc(rc.rewardAddress, rmtC.rewardAddress) &&
98
- rc.rewardChainId === rmtC.rewardChainId &&
99
- rc.campaign.startTimestamp === rmtC.campaign.startTimestamp &&
100
- rc.campaign.endTimestamp === rmtC.campaign.endTimestamp &&
101
- rc.campaign.numberOfPeriods === rmtC.campaign.numberOfPeriods &&
102
- rc.campaign.maxRewardPerVote === rmtC.campaign.maxRewardPerVote &&
103
- rc.campaign.totalRewardAmount === rmtC.campaign.totalRewardAmount &&
104
- equalTlc(rc.campaign.gauge, rmtC.campaign.gauge) &&
105
- equalTlc(rc.campaign.hook, rmtC.campaign.hook) &&
106
- equalTlc(rc.campaign.manager, rmtC.campaign.manager));
107
- return typeof existingCampaign === 'undefined';
108
- }),
109
- ];
110
- }
111
24
  const callsRestrictedVotes = rawCampaigns
112
25
  .filter((rc) => rc.addresses.length > 0)
113
26
  .map((rc) => [rc.campaign.chainId, rc.id, rc.campaign.gauge, rc.addresses]);
@@ -130,7 +43,7 @@ export const fetchCampaigns = async ({ platform, gaugeController, chainId, rpcs,
130
43
  rpc: rpcs[mainnet.id],
131
44
  calls: [
132
45
  concatBytecode(batchGaugesWeight.bytecode[mainnet.id], encodeAbiParameters(parseAbiParameters(batchGaugesWeight.inputType[mainnet.id]), [
133
- contracts.curveGaugeController[1],
46
+ gaugeController,
134
47
  campaignsGauges,
135
48
  ])),
136
49
  ],
@@ -222,7 +135,9 @@ export const fetchCampaigns = async ({ platform, gaugeController, chainId, rpcs,
222
135
  const rawPreviousPeriod = rc.periods[indexOfCurrentPeriod - 1];
223
136
  const restrictedVotesData = rawCampaignsRestrictedVotes.find((rvc) => rvc.chainId === rc.campaign.chainId && rvc.campaignId === rc.id && rvc.gauge === rc.campaign.gauge);
224
137
  return {
138
+ key: `${chainId}-${lc(platform.slice(2, 6))}-${lc(platform.slice(-4))}-${Number(rc.id)}`,
225
139
  id: Number(rc.id),
140
+ platform,
226
141
  chainId,
227
142
  rewardChainId: Number(rc.rewardChainId),
228
143
  gaugeChainId: Number(rc.campaign.chainId),
@@ -258,4 +173,4 @@ export const fetchCampaigns = async ({ platform, gaugeController, chainId, rpcs,
258
173
  });
259
174
  return campaigns;
260
175
  };
261
- //# sourceMappingURL=fetchCampaigns.js.map
176
+ //# sourceMappingURL=processRawCampaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processRawCampaigns.js","sourceRoot":"","sources":["../../../../src/votemarket/fetchCampaigns/processRawCampaigns.ts"],"names":[],"mappings":"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"}