@raac/rpc 1.2.0-beta.10 → 1.2.0-beta.12

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 (243) hide show
  1. package/dist/RPCLibrary.js +2 -0
  2. package/dist/artifacts/core/governance/gauges/BaseGauge.sol/BaseGauge.json +113 -20
  3. package/dist/artifacts/core/governance/gauges/GaugeController.sol/GaugeController.json +259 -31
  4. package/dist/artifacts/core/governance/gauges/GaugeRewardsDistributor.sol/GaugeRewardsDistributor.json +159 -31
  5. package/dist/artifacts/core/governance/gauges/RAACGauge.sol/RAACGauge.json +115 -22
  6. package/dist/artifacts/core/governance/gauges/RWAGauge.sol/RWAGauge.json +115 -22
  7. package/dist/configs/chains/1.json +22 -25
  8. package/dist/configs/chains/11155111.json +76 -112
  9. package/dist/configs/chains/17000.json +22 -25
  10. package/dist/configs/chains/18453.json +22 -25
  11. package/dist/configs/chains/8453.json +61 -31
  12. package/dist/contracts/findContract.js +11 -4
  13. package/dist/contracts/getContractAddress.js +0 -1
  14. package/dist/contracts/governance/distributor/claimAll.js +18 -11
  15. package/dist/contracts/governance/distributor/claimForGauge.js +18 -12
  16. package/dist/contracts/governance/distributor/deposit.js +17 -12
  17. package/dist/contracts/governance/distributor/getClaimableForGauge.js +10 -9
  18. package/dist/contracts/governance/distributor/getClaimedAtEpoch.js +11 -10
  19. package/dist/contracts/governance/distributor/getDepositedAtEpoch.js +8 -8
  20. package/dist/contracts/governance/distributor/getDustLastProcessedEpoch.js +28 -0
  21. package/dist/contracts/governance/distributor/getGaugeController.js +7 -7
  22. package/dist/contracts/governance/distributor/getLastClaimedEpoch.js +10 -9
  23. package/dist/contracts/governance/distributor/getMaxClaimBound.js +29 -0
  24. package/dist/contracts/governance/distributor/getPeriodDuration.js +7 -7
  25. package/dist/contracts/governance/distributor/getRewardToken.js +7 -7
  26. package/dist/contracts/governance/distributor/getRewardTokenInfo.js +7 -7
  27. package/dist/contracts/governance/distributor/getRewardTokenStats.js +7 -7
  28. package/dist/contracts/governance/distributor/index.js +5 -2
  29. package/dist/contracts/governance/distributor/setController.js +17 -12
  30. package/dist/contracts/governance/distributor/setLastClaimedEpoch.js +32 -0
  31. package/dist/contracts/governance/distributor/setMaxClaimBound.js +31 -0
  32. package/dist/contracts/governance/distributor/withdrawDust.js +31 -0
  33. package/dist/contracts/governance/distributor/withdrawRemovedGaugeRewards.js +19 -13
  34. package/dist/contracts/governance/gauge/_apy.js +122 -0
  35. package/dist/contracts/governance/gauge/_tokens.js +36 -0
  36. package/dist/contracts/governance/gauge/addRewardToken.js +2 -12
  37. package/dist/contracts/governance/gauge/approveGaugeToken.js +31 -0
  38. package/dist/contracts/governance/gauge/claimExtraReward.js +2 -12
  39. package/dist/contracts/governance/gauge/claimExtraRewards.js +2 -12
  40. package/dist/contracts/governance/gauge/claimOnBehalfOf.js +2 -12
  41. package/dist/contracts/governance/gauge/claimRewardToken.js +3 -13
  42. package/dist/contracts/governance/gauge/claimRewardsFor.js +2 -12
  43. package/dist/contracts/governance/gauge/depositRewardToken.js +2 -12
  44. package/dist/contracts/governance/gauge/getAllPendingExtraRewards.js +2 -9
  45. package/dist/contracts/governance/gauge/getApy.js +44 -0
  46. package/dist/contracts/governance/gauge/getBalanceOf.js +2 -15
  47. package/dist/contracts/governance/gauge/getControllerAddress.js +2 -9
  48. package/dist/contracts/governance/gauge/getDecimalAdjustment.js +2 -9
  49. package/dist/contracts/governance/gauge/getDepositRAACOnClaim.js +2 -9
  50. package/dist/contracts/governance/gauge/getDistributorData.js +2 -9
  51. package/dist/contracts/governance/gauge/getDistributors.js +2 -9
  52. package/dist/contracts/governance/gauge/getEarnedExtraReward.js +30 -0
  53. package/dist/contracts/governance/gauge/getEarnedReward.js +8 -14
  54. package/dist/contracts/governance/gauge/getExtraRewardTokens.js +2 -9
  55. package/dist/contracts/governance/gauge/getGaugeData.js +39 -0
  56. package/dist/contracts/governance/gauge/getGaugeRewardTokenData.js +2 -9
  57. package/dist/contracts/governance/gauge/getPauseStatus.js +31 -0
  58. package/dist/contracts/governance/gauge/getPendingExtraRewards.js +2 -9
  59. package/dist/contracts/governance/gauge/getPendingRewards.js +8 -14
  60. package/dist/contracts/governance/gauge/getPeriodBoundaries.js +2 -15
  61. package/dist/contracts/governance/gauge/getPeriodDuration.js +2 -15
  62. package/dist/contracts/governance/gauge/getRaacAutolockMin.js +2 -9
  63. package/dist/contracts/governance/gauge/getRawBalanceOf.js +2 -15
  64. package/dist/contracts/governance/gauge/getRawTotalSupply.js +2 -15
  65. package/dist/contracts/governance/gauge/getRewardTokens.js +28 -0
  66. package/dist/contracts/governance/gauge/getTotalSupply.js +2 -15
  67. package/dist/contracts/governance/gauge/getUserApy.js +71 -0
  68. package/dist/contracts/governance/gauge/getUserClaimableRewards.js +21 -73
  69. package/dist/contracts/governance/gauge/getUserGaugeState.js +44 -0
  70. package/dist/contracts/governance/gauge/getUserRewardTokenData.js +2 -9
  71. package/dist/contracts/governance/gauge/getUserWeight.js +2 -9
  72. package/dist/contracts/governance/gauge/index.js +11 -1
  73. package/dist/contracts/governance/gauge/isPaused.js +4 -11
  74. package/dist/contracts/governance/gauge/manageDistributor.js +2 -12
  75. package/dist/contracts/governance/gauge/pullRewardsFromDistributor.js +30 -0
  76. package/dist/contracts/governance/gauge/setController.js +2 -12
  77. package/dist/contracts/governance/gauge/setDepositRAACOnClaim.js +2 -12
  78. package/dist/contracts/governance/gauge/setEmergencyPaused.js +2 -12
  79. package/dist/contracts/governance/gauge/setGaugeRewardDistributor.js +2 -12
  80. package/dist/contracts/governance/gauge/setRaacAutolockMin.js +2 -12
  81. package/dist/contracts/governance/gauge/stake.js +2 -18
  82. package/dist/contracts/governance/gauge/unwrapStakingToken.js +28 -0
  83. package/dist/contracts/governance/gauge/updateUserRewards.js +2 -18
  84. package/dist/contracts/governance/gauge/withdraw.js +2 -18
  85. package/dist/contracts/governance/gauge/wrapStakingToken.js +28 -0
  86. package/dist/contracts/governance/gaugeController/addGauge.js +19 -11
  87. package/dist/contracts/governance/gaugeController/batchVote.js +20 -12
  88. package/dist/contracts/governance/gaugeController/calculateBoost.js +20 -23
  89. package/dist/contracts/governance/gaugeController/forceCompleteCheckpoint.js +19 -11
  90. package/dist/contracts/governance/gaugeController/getActiveGaugeCount.js +28 -0
  91. package/dist/contracts/governance/gaugeController/getActiveGauges.js +10 -13
  92. package/dist/contracts/governance/gaugeController/getConstants.js +10 -18
  93. package/dist/contracts/governance/gaugeController/getCurrentEpoch.js +8 -7
  94. package/dist/contracts/governance/gaugeController/getExpiredGaugeVotePower.js +30 -0
  95. package/dist/contracts/governance/gaugeController/getGauge.js +11 -9
  96. package/dist/contracts/governance/gaugeController/getGaugeDistributor.js +28 -0
  97. package/dist/contracts/governance/gaugeController/getGaugeEmissions.js +15 -9
  98. package/dist/contracts/governance/gaugeController/getGaugeRelativeWeight.js +19 -15
  99. package/dist/contracts/governance/gaugeController/getGaugeRelativeWeightView.js +12 -10
  100. package/dist/contracts/governance/gaugeController/getGaugeWeight.js +10 -8
  101. package/dist/contracts/governance/gaugeController/getLastVoteTime.js +11 -9
  102. package/dist/contracts/governance/gaugeController/getMaxVoteBuckets.js +28 -0
  103. package/dist/contracts/governance/gaugeController/getNextEpoch.js +8 -7
  104. package/dist/contracts/governance/gaugeController/getRegisteredGaugeList.js +28 -0
  105. package/dist/contracts/governance/gaugeController/getTotalWeight.js +8 -7
  106. package/dist/contracts/governance/gaugeController/getUserGaugeVotePower.js +11 -9
  107. package/dist/contracts/governance/gaugeController/getUserVotePowerRemaining.js +10 -9
  108. package/dist/contracts/governance/gaugeController/getVeToken.js +8 -7
  109. package/dist/contracts/governance/gaugeController/getVoteUserLocks.js +32 -0
  110. package/dist/contracts/governance/gaugeController/getVoteUserPower.js +8 -7
  111. package/dist/contracts/governance/gaugeController/getVoteUserSlope.js +12 -10
  112. package/dist/contracts/governance/gaugeController/index.js +10 -1
  113. package/dist/contracts/governance/gaugeController/isGaugeActive.js +11 -9
  114. package/dist/contracts/governance/gaugeController/isPaused.js +9 -8
  115. package/dist/contracts/governance/gaugeController/kick.js +17 -10
  116. package/dist/contracts/governance/gaugeController/removeGauge.js +20 -11
  117. package/dist/contracts/governance/gaugeController/removePowerFromGauge.js +19 -11
  118. package/dist/contracts/governance/gaugeController/setBoostAmplificationEnabled.js +20 -12
  119. package/dist/contracts/governance/gaugeController/setDistributor.js +31 -0
  120. package/dist/contracts/governance/gaugeController/setEmergencyGaugePause.js +20 -12
  121. package/dist/contracts/governance/gaugeController/setEmergencyGaugePauseBatch.js +33 -0
  122. package/dist/contracts/governance/gaugeController/setEmergencyPause.js +18 -11
  123. package/dist/contracts/governance/gaugeController/setMaxVoteBuckets.js +31 -0
  124. package/dist/contracts/governance/gaugeController/vote.js +15 -16
  125. package/dist/contracts/governance/gaugeSystems/_helpers.js +123 -0
  126. package/dist/contracts/governance/gaugeSystems/findGauge.js +14 -0
  127. package/dist/contracts/governance/gaugeSystems/getGaugeSystem.js +14 -0
  128. package/dist/contracts/governance/gaugeSystems/getGaugeSystems.js +13 -0
  129. package/dist/contracts/governance/gaugeSystems/getGauges.js +15 -0
  130. package/dist/contracts/governance/gaugeSystems/index.js +21 -0
  131. package/dist/types/RPCLibrary.d.ts +2 -0
  132. package/dist/types/configs/chains/index.d.ts +36 -46
  133. package/dist/types/configs/index.d.ts +18 -23
  134. package/dist/types/contracts/governance/distributor/claimAll.d.ts +7 -5
  135. package/dist/types/contracts/governance/distributor/claimForGauge.d.ts +7 -6
  136. package/dist/types/contracts/governance/distributor/deposit.d.ts +7 -6
  137. package/dist/types/contracts/governance/distributor/getClaimableForGauge.d.ts +6 -4
  138. package/dist/types/contracts/governance/distributor/getClaimedAtEpoch.d.ts +7 -5
  139. package/dist/types/contracts/governance/distributor/getDepositedAtEpoch.d.ts +6 -4
  140. package/dist/types/contracts/governance/distributor/getDustLastProcessedEpoch.d.ts +12 -0
  141. package/dist/types/contracts/governance/distributor/getGaugeController.d.ts +5 -3
  142. package/dist/types/contracts/governance/distributor/getLastClaimedEpoch.d.ts +6 -4
  143. package/dist/types/contracts/governance/distributor/getMaxClaimBound.d.ts +15 -0
  144. package/dist/types/contracts/governance/distributor/getPeriodDuration.d.ts +5 -3
  145. package/dist/types/contracts/governance/distributor/getRewardToken.d.ts +5 -3
  146. package/dist/types/contracts/governance/distributor/getRewardTokenInfo.d.ts +5 -3
  147. package/dist/types/contracts/governance/distributor/getRewardTokenStats.d.ts +5 -3
  148. package/dist/types/contracts/governance/distributor/index.d.ts +5 -2
  149. package/dist/types/contracts/governance/distributor/setController.d.ts +7 -6
  150. package/dist/types/contracts/governance/distributor/setLastClaimedEpoch.d.ts +13 -0
  151. package/dist/types/contracts/governance/distributor/setMaxClaimBound.d.ts +13 -0
  152. package/dist/types/contracts/governance/distributor/withdrawDust.d.ts +13 -0
  153. package/dist/types/contracts/governance/distributor/withdrawRemovedGaugeRewards.d.ts +8 -7
  154. package/dist/types/contracts/governance/gauge/_apy.d.ts +61 -0
  155. package/dist/types/contracts/governance/gauge/_tokens.d.ts +14 -0
  156. package/dist/types/contracts/governance/gauge/approveGaugeToken.d.ts +14 -0
  157. package/dist/types/contracts/governance/gauge/claimRewardToken.d.ts +1 -1
  158. package/dist/types/contracts/governance/gauge/getApy.d.ts +41 -0
  159. package/dist/types/contracts/governance/gauge/getEarnedExtraReward.d.ts +13 -0
  160. package/dist/types/contracts/governance/gauge/getEarnedReward.d.ts +3 -2
  161. package/dist/types/contracts/governance/gauge/getGaugeData.d.ts +23 -0
  162. package/dist/types/contracts/governance/gauge/getPauseStatus.d.ts +19 -0
  163. package/dist/types/contracts/governance/gauge/getPendingRewards.d.ts +3 -2
  164. package/dist/types/contracts/governance/gauge/getRewardTokens.d.ts +11 -0
  165. package/dist/types/contracts/governance/gauge/getUserApy.d.ts +44 -0
  166. package/dist/types/contracts/governance/gauge/getUserClaimableRewards.d.ts +14 -12
  167. package/dist/types/contracts/governance/gauge/getUserGaugeState.d.ts +31 -0
  168. package/dist/types/contracts/governance/gauge/index.d.ts +11 -1
  169. package/dist/types/contracts/governance/gauge/isPaused.d.ts +1 -1
  170. package/dist/types/contracts/governance/gauge/pullRewardsFromDistributor.d.ts +11 -0
  171. package/dist/types/contracts/governance/gauge/unwrapStakingToken.d.ts +12 -0
  172. package/dist/types/contracts/governance/gauge/wrapStakingToken.d.ts +13 -0
  173. package/dist/types/contracts/governance/gaugeController/addGauge.d.ts +8 -5
  174. package/dist/types/contracts/governance/gaugeController/batchVote.d.ts +9 -6
  175. package/dist/types/contracts/governance/gaugeController/calculateBoost.d.ts +10 -8
  176. package/dist/types/contracts/governance/gaugeController/forceCompleteCheckpoint.d.ts +8 -5
  177. package/dist/types/contracts/governance/gaugeController/getActiveGaugeCount.d.ts +12 -0
  178. package/dist/types/contracts/governance/gaugeController/getActiveGauges.d.ts +7 -3
  179. package/dist/types/contracts/governance/gaugeController/getConstants.d.ts +6 -4
  180. package/dist/types/contracts/governance/gaugeController/getCurrentEpoch.d.ts +6 -3
  181. package/dist/types/contracts/governance/gaugeController/getExpiredGaugeVotePower.d.ts +16 -0
  182. package/dist/types/contracts/governance/gaugeController/getGauge.d.ts +7 -4
  183. package/dist/types/contracts/governance/gaugeController/getGaugeDistributor.d.ts +12 -0
  184. package/dist/types/contracts/governance/gaugeController/getGaugeEmissions.d.ts +6 -3
  185. package/dist/types/contracts/governance/gaugeController/getGaugeRelativeWeight.d.ts +8 -9
  186. package/dist/types/contracts/governance/gaugeController/getGaugeRelativeWeightView.d.ts +8 -5
  187. package/dist/types/contracts/governance/gaugeController/getGaugeWeight.d.ts +6 -4
  188. package/dist/types/contracts/governance/gaugeController/getLastVoteTime.d.ts +7 -4
  189. package/dist/types/contracts/governance/gaugeController/getMaxVoteBuckets.d.ts +12 -0
  190. package/dist/types/contracts/governance/gaugeController/getNextEpoch.d.ts +6 -3
  191. package/dist/types/contracts/governance/gaugeController/getRegisteredGaugeList.d.ts +12 -0
  192. package/dist/types/contracts/governance/gaugeController/getTotalWeight.d.ts +5 -3
  193. package/dist/types/contracts/governance/gaugeController/getUserGaugeVotePower.d.ts +7 -4
  194. package/dist/types/contracts/governance/gaugeController/getUserVotePowerRemaining.d.ts +6 -4
  195. package/dist/types/contracts/governance/gaugeController/getVeToken.d.ts +6 -3
  196. package/dist/types/contracts/governance/gaugeController/getVoteUserLocks.d.ts +17 -0
  197. package/dist/types/contracts/governance/gaugeController/getVoteUserPower.d.ts +6 -3
  198. package/dist/types/contracts/governance/gaugeController/getVoteUserSlope.d.ts +8 -5
  199. package/dist/types/contracts/governance/gaugeController/index.d.ts +10 -1
  200. package/dist/types/contracts/governance/gaugeController/isGaugeActive.d.ts +6 -4
  201. package/dist/types/contracts/governance/gaugeController/isPaused.d.ts +6 -3
  202. package/dist/types/contracts/governance/gaugeController/kick.d.ts +7 -4
  203. package/dist/types/contracts/governance/gaugeController/removeGauge.d.ts +9 -5
  204. package/dist/types/contracts/governance/gaugeController/removePowerFromGauge.d.ts +8 -5
  205. package/dist/types/contracts/governance/gaugeController/setBoostAmplificationEnabled.d.ts +9 -6
  206. package/dist/types/contracts/governance/gaugeController/setDistributor.d.ts +13 -0
  207. package/dist/types/contracts/governance/gaugeController/setEmergencyGaugePause.d.ts +9 -6
  208. package/dist/types/contracts/governance/gaugeController/setEmergencyGaugePauseBatch.d.ts +14 -0
  209. package/dist/types/contracts/governance/gaugeController/setEmergencyPause.d.ts +8 -5
  210. package/dist/types/contracts/governance/gaugeController/setMaxVoteBuckets.d.ts +13 -0
  211. package/dist/types/contracts/governance/gaugeController/vote.d.ts +9 -7
  212. package/dist/types/contracts/governance/gaugeSystems/_helpers.d.ts +71 -0
  213. package/dist/types/contracts/governance/gaugeSystems/findGauge.d.ts +11 -0
  214. package/dist/types/contracts/governance/gaugeSystems/getGaugeSystem.d.ts +11 -0
  215. package/dist/types/contracts/governance/gaugeSystems/getGaugeSystems.d.ts +10 -0
  216. package/dist/types/contracts/governance/gaugeSystems/getGauges.d.ts +13 -0
  217. package/dist/types/contracts/governance/gaugeSystems/index.d.ts +5 -0
  218. package/dist/types/typechain-types/contracts/core/governance/gauges/BaseGauge.d.ts +176 -105
  219. package/dist/types/typechain-types/contracts/core/governance/gauges/GaugeController.d.ts +260 -213
  220. package/dist/types/typechain-types/contracts/core/governance/gauges/GaugeRewardsDistributor.d.ts +173 -212
  221. package/dist/types/typechain-types/contracts/core/governance/gauges/RAACGauge.d.ts +176 -105
  222. package/dist/types/typechain-types/contracts/core/governance/gauges/RWAGauge.d.ts +176 -105
  223. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IBaseGauge.d.ts +111 -108
  224. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IGaugeController.d.ts +210 -34
  225. package/dist/types/typechain-types/contracts/interfaces/core/governance/gauges/IGaugeRewardsDistributor.d.ts +112 -151
  226. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/BaseGauge__factory.d.ts +174 -95
  227. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/GaugeController__factory.d.ts +243 -227
  228. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/GaugeRewardsDistributor__factory.d.ts +164 -232
  229. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/RAACGauge__factory.d.ts +185 -98
  230. package/dist/types/typechain-types/factories/contracts/core/governance/gauges/RWAGauge__factory.d.ts +185 -98
  231. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/IBaseGauge__factory.d.ts +104 -95
  232. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/IGaugeController__factory.d.ts +241 -22
  233. package/dist/types/typechain-types/factories/contracts/interfaces/core/governance/gauges/IGaugeRewardsDistributor__factory.d.ts +72 -158
  234. package/dist/types/utils/artifacts.d.ts +40 -0
  235. package/dist/types/utils/contracts.d.ts +34 -44
  236. package/dist/utils/contracts.js +1 -1
  237. package/package.json +1 -1
  238. package/dist/contracts/governance/distributor/getStartEpoch.js +0 -28
  239. package/dist/contracts/governance/distributor/withdrawUnallocatedRewards.js +0 -26
  240. package/dist/contracts/governance/gauge/setDistributorApproval.js +0 -35
  241. package/dist/types/contracts/governance/distributor/getStartEpoch.d.ts +0 -10
  242. package/dist/types/contracts/governance/distributor/withdrawUnallocatedRewards.d.ts +0 -12
  243. package/dist/types/contracts/governance/gauge/setDistributorApproval.d.ts +0 -11
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unwrapStakingToken = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const _helpers_1 = require("../gaugeSystems/_helpers");
6
+ const _tokens_1 = require("./_tokens");
7
+ /**
8
+ * Unwraps a wrapped gauge's staking token back into its underlying (ERC4626 `redeem`), sending it to the signer.
9
+ *
10
+ * @param chainId - The chain/network to use.
11
+ * @param gaugeAddressOrId - Address of the gauge contract or its config ID.
12
+ * @param shares - Staking token to unwrap, base units.
13
+ * @param signer - An ethers.js Signer instance (required).
14
+ * @returns The mined transaction.
15
+ */
16
+ const unwrapStakingToken = async (chainId, gaugeAddressOrId, shares, signer) => {
17
+ if (!signer)
18
+ throw new Error("Signer is required");
19
+ const gauge = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
20
+ const { stakingToken, underlying } = await (0, _tokens_1.getGaugeTokens)(gauge, signer);
21
+ if (!underlying)
22
+ throw new Error(`Gauge ${gauge} does not take a wrapped token`);
23
+ const owner = await signer.getAddress();
24
+ const tx = await new ethers_1.ethers.Contract(stakingToken, _tokens_1.ERC4626_ABI, signer).redeem(shares, owner, owner);
25
+ await tx.wait();
26
+ return tx;
27
+ };
28
+ exports.unwrapStakingToken = unwrapStakingToken;
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.updateUserRewards = void 0;
7
4
  const ethers_1 = require("ethers");
8
5
  const artifacts_1 = require("../../../utils/artifacts");
9
- const getContractAddress_1 = __importDefault(require("../../getContractAddress"));
6
+ const _helpers_1 = require("../gaugeSystems/_helpers");
10
7
  /**
11
8
  * Triggers an update of the user's reward state.
12
9
  * This can be called to force rewards to accrue without claiming.
@@ -21,20 +18,7 @@ const updateUserRewards = async (chainId, gaugeAddressOrId, user, signer) => {
21
18
  if (!signer) {
22
19
  throw new Error("Signer is required");
23
20
  }
24
- let gaugeAddress;
25
- try {
26
- if ((0, ethers_1.isAddress)(gaugeAddressOrId)) {
27
- gaugeAddress = gaugeAddressOrId;
28
- }
29
- else {
30
- // @ts-ignore
31
- gaugeAddress = (0, getContractAddress_1.default)(chainId, gaugeAddressOrId.toLowerCase());
32
- }
33
- }
34
- catch (error) {
35
- console.error("Error updating user rewards:", error);
36
- throw new Error(`Failed to update user rewards for gauge ${gaugeAddress}: ${error.message}`);
37
- }
21
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
38
22
  try {
39
23
  const gaugeABI = (0, artifacts_1.getABI)("basegauge");
40
24
  const contract = new ethers_1.ethers.Contract(gaugeAddress, gaugeABI, signer);
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.withdraw = void 0;
7
4
  const ethers_1 = require("ethers");
8
5
  const artifacts_1 = require("../../../utils/artifacts");
9
- const getContractAddress_1 = __importDefault(require("../../getContractAddress"));
6
+ const _helpers_1 = require("../gaugeSystems/_helpers");
10
7
  /**
11
8
  * Withdraws staked tokens from a gauge.
12
9
  * Will also claim all pending rewards and update working balance before withdrawing.
@@ -21,20 +18,7 @@ const withdraw = async (chainId, gaugeAddressOrId, amount, signer) => {
21
18
  if (!signer) {
22
19
  throw new Error("Signer is required");
23
20
  }
24
- let gaugeAddress;
25
- try {
26
- if ((0, ethers_1.isAddress)(gaugeAddressOrId)) {
27
- gaugeAddress = gaugeAddressOrId;
28
- }
29
- else {
30
- // @ts-ignore
31
- gaugeAddress = (0, getContractAddress_1.default)(chainId, gaugeAddressOrId.toLowerCase());
32
- }
33
- }
34
- catch (error) {
35
- console.error("Error withdrawing:", error);
36
- throw new Error(`Failed to withdraw from gauge ${gaugeAddress}: ${error.message}`);
37
- }
21
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
38
22
  try {
39
23
  const gaugeABI = (0, artifacts_1.getABI)("basegauge");
40
24
  const gaugeContract = new ethers_1.ethers.Contract(gaugeAddress, gaugeABI, signer);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapStakingToken = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const _helpers_1 = require("../gaugeSystems/_helpers");
6
+ const _tokens_1 = require("./_tokens");
7
+ /**
8
+ * Wraps the underlying of a wrapped gauge into its staking token (ERC4626 `deposit`), minting the shares to the signer.
9
+ * The underlying must be approved to the wrapper first, see `approveGaugeToken`.
10
+ *
11
+ * @param chainId - The chain/network to use.
12
+ * @param gaugeAddressOrId - Address of the gauge contract or its config ID.
13
+ * @param assets - Underlying to wrap, base units.
14
+ * @param signer - An ethers.js Signer instance (required).
15
+ * @returns The mined transaction.
16
+ */
17
+ const wrapStakingToken = async (chainId, gaugeAddressOrId, assets, signer) => {
18
+ if (!signer)
19
+ throw new Error("Signer is required");
20
+ const gauge = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
21
+ const { stakingToken, underlying } = await (0, _tokens_1.getGaugeTokens)(gauge, signer);
22
+ if (!underlying)
23
+ throw new Error(`Gauge ${gauge} does not take a wrapped token`);
24
+ const tx = await new ethers_1.ethers.Contract(stakingToken, _tokens_1.ERC4626_ABI, signer).deposit(assets, await signer.getAddress());
25
+ await tx.wait();
26
+ return tx;
27
+ };
28
+ exports.wrapStakingToken = wrapStakingToken;
@@ -2,23 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addGauge = void 0;
4
4
  const ethers_1 = require("ethers");
5
- const getContractAddress_1 = require("../../getContractAddress");
6
5
  const artifacts_1 = require("../../../utils/artifacts");
6
+ const _helpers_1 = require("../gaugeSystems/_helpers");
7
+ const _helpers_2 = require("../_helpers");
7
8
  /**
8
- * Adds a new gauge to the GaugeController. Requires the GAUGE_ADMIN role.
9
+ * Registers a gauge on the controller. Requires GAUGE_ADMIN. The gauge must belong to this system (RAACGauge on the RAAC controller, RWAGauge on the RWA controller).
10
+ *
9
11
  * @param chainId - The chain/network to use.
10
- * @param gauge - Address of the gauge to add.
12
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
13
+ * @param gaugeAddressOrId - Address or config id of the gauge.
11
14
  * @param signer - An ethers.js Signer instance (required).
12
- * @returns The transaction response.
15
+ * @returns The transaction after it has been mined.
13
16
  */
14
- const addGauge = async (chainId, gauge, signer) => {
17
+ const addGauge = async (chainId, gaugeSystem, gaugeAddressOrId, signer) => {
15
18
  if (!signer)
16
19
  throw new Error("Signer is required");
17
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
18
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
19
- const contract = new ethers_1.ethers.Contract(address, abi, signer);
20
- const tx = await contract.addGauge(gauge);
21
- await tx.wait();
22
- return tx;
20
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
21
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
22
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), signer);
23
+ try {
24
+ const tx = await contract.addGauge(gaugeAddress);
25
+ await tx.wait();
26
+ return tx;
27
+ }
28
+ catch (error) {
29
+ throw (0, _helpers_2.toGovernanceTxError)("Failed to add gauge", error);
30
+ }
23
31
  };
24
32
  exports.addGauge = addGauge;
@@ -2,24 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.batchVote = void 0;
4
4
  const ethers_1 = require("ethers");
5
- const getContractAddress_1 = require("../../getContractAddress");
6
5
  const artifacts_1 = require("../../../utils/artifacts");
6
+ const _helpers_1 = require("../gaugeSystems/_helpers");
7
+ const _helpers_2 = require("../_helpers");
7
8
  /**
8
- * Casts votes on multiple gauges in a single transaction.
9
+ * Votes on several gauges in one transaction.
10
+ *
9
11
  * @param chainId - The chain/network to use.
10
- * @param gaugeAddresses - Array of gauge addresses to vote on.
11
- * @param voteWeights - Array of vote weights (basis points) aligned with gaugeAddresses.
12
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
13
+ * @param gaugeAddressesOrIds - Addresses or config ids of the gauges.
14
+ * @param voteWeights - Vote weight per gauge in basis points, index-aligned with the gauges.
12
15
  * @param signer - An ethers.js Signer instance (required).
13
- * @returns The transaction response.
16
+ * @returns The transaction after it has been mined.
14
17
  */
15
- const batchVote = async (chainId, gaugeAddresses, voteWeights, signer) => {
18
+ const batchVote = async (chainId, gaugeSystem, gaugeAddressesOrIds, voteWeights, signer) => {
16
19
  if (!signer)
17
20
  throw new Error("Signer is required");
18
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
19
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
20
- const contract = new ethers_1.ethers.Contract(address, abi, signer);
21
- const tx = await contract.batchVote(gaugeAddresses, voteWeights);
22
- await tx.wait();
23
- return tx;
21
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
22
+ const gaugeAddresses = gaugeAddressesOrIds.map((g) => (0, _helpers_1.resolveGauge)(chainId, g));
23
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), signer);
24
+ try {
25
+ const tx = await contract.batchVote(gaugeAddresses, voteWeights);
26
+ await tx.wait();
27
+ return tx;
28
+ }
29
+ catch (error) {
30
+ throw (0, _helpers_2.toGovernanceTxError)("Failed to batch vote", error);
31
+ }
24
32
  };
25
33
  exports.batchVote = batchVote;
@@ -1,36 +1,33 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.calculateBoost = void 0;
4
7
  const ethers_1 = require("ethers");
5
- const getContractAddress_1 = require("../../getContractAddress");
8
+ const chains_1 = __importDefault(require("../../../configs/chains"));
6
9
  const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
7
11
  /**
8
- * Reads the calculateBoost result from the GaugeController contract (read-only).
12
+ * Calculates the reward boost a user would get on a gauge for a staked amount.
9
13
  *
10
14
  * @param chainId - The chain/network to use.
11
- * @param userAddress - The user for which to calculate boost.
12
- * @param gaugeAddress - The gauge address to calculate the boost for.
13
- * @param amount - The amount to calculate the boost for.
14
- * @param provider - An ethers.js Provider instance for read-only RPC.
15
- * @returns {Promise<{ boostBasisPoints: bigint, boostedAmount: bigint }>}
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
16
+ * @param user - Address of the user.
17
+ * @param gaugeAddressOrId - Address or config id of the gauge.
18
+ * @param amount - Staked amount, base units.
19
+ * @param provider - Optional ethers.js Provider instance.
20
+ * @returns The boost in basis points and the boosted amount.
16
21
  */
17
- const calculateBoost = async (chainId, userAddress, gaugeAddress, amount, provider) => {
22
+ const calculateBoost = async (chainId, gaugeSystem, user, gaugeAddressOrId, amount, provider) => {
18
23
  if (!provider) {
19
- throw new Error("Provider is required");
20
- }
21
- try {
22
- const gaugeControllerAddress = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
23
- const gaugeControllerABI = (0, artifacts_1.getABI)("gaugecontroller");
24
- const gaugeControllerContract = new ethers_1.ethers.Contract(gaugeControllerAddress, gaugeControllerABI, provider);
25
- const [boostBasisPoints, boostedAmount] = await gaugeControllerContract.calculateBoost(userAddress, gaugeAddress, amount);
26
- return {
27
- boostBasisPoints,
28
- boostedAmount,
29
- };
30
- }
31
- catch (error) {
32
- console.error("Error calculating boost from contract:", error);
33
- throw new Error(`Failed to calculate boost: ${error.message}`);
24
+ const rpc = chains_1.default[chainId].rpcs[0];
25
+ provider = new ethers_1.ethers.JsonRpcProvider(rpc);
34
26
  }
27
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
28
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
29
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
30
+ const [boostBasisPoints, boostedAmount] = await contract.calculateBoost(user, gaugeAddress, amount);
31
+ return { boostBasisPoints, boostedAmount };
35
32
  };
36
33
  exports.calculateBoost = calculateBoost;
@@ -2,23 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.forceCompleteCheckpoint = void 0;
4
4
  const ethers_1 = require("ethers");
5
- const getContractAddress_1 = require("../../getContractAddress");
6
5
  const artifacts_1 = require("../../../utils/artifacts");
6
+ const _helpers_1 = require("../gaugeSystems/_helpers");
7
+ const _helpers_2 = require("../_helpers");
7
8
  /**
8
- * Forces completion of a pending checkpoint for a gauge.
9
+ * Completes a gauge's pending weight checkpoint.
10
+ *
9
11
  * @param chainId - The chain/network to use.
10
- * @param gauge - Address of the gauge to checkpoint.
12
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
13
+ * @param gaugeAddressOrId - Address or config id of the gauge.
11
14
  * @param signer - An ethers.js Signer instance (required).
12
- * @returns The transaction response.
15
+ * @returns The transaction after it has been mined.
13
16
  */
14
- const forceCompleteCheckpoint = async (chainId, gauge, signer) => {
17
+ const forceCompleteCheckpoint = async (chainId, gaugeSystem, gaugeAddressOrId, signer) => {
15
18
  if (!signer)
16
19
  throw new Error("Signer is required");
17
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
18
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
19
- const contract = new ethers_1.ethers.Contract(address, abi, signer);
20
- const tx = await contract.forceCompleteCheckpoint(gauge);
21
- await tx.wait();
22
- return tx;
20
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
21
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
22
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), signer);
23
+ try {
24
+ const tx = await contract.forceCompleteCheckpoint(gaugeAddress);
25
+ await tx.wait();
26
+ return tx;
27
+ }
28
+ catch (error) {
29
+ throw (0, _helpers_2.toGovernanceTxError)("Failed to force checkpoint", error);
30
+ }
23
31
  };
24
32
  exports.forceCompleteCheckpoint = forceCompleteCheckpoint;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getActiveGaugeCount = void 0;
7
+ const ethers_1 = require("ethers");
8
+ const chains_1 = __importDefault(require("../../../configs/chains"));
9
+ const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
+ /**
12
+ * Returns the number of registered gauges on the controller. Emergency-paused gauges are counted.
13
+ *
14
+ * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
16
+ * @param provider - Optional ethers.js Provider instance.
17
+ * @returns The registered gauge count.
18
+ */
19
+ const getActiveGaugeCount = async (chainId, gaugeSystem, provider) => {
20
+ if (!provider) {
21
+ const rpc = chains_1.default[chainId].rpcs[0];
22
+ provider = new ethers_1.ethers.JsonRpcProvider(rpc);
23
+ }
24
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
25
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
26
+ return contract.activeGaugeCount();
27
+ };
28
+ exports.getActiveGaugeCount = getActiveGaugeCount;
@@ -6,29 +6,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getActiveGauges = void 0;
7
7
  const ethers_1 = require("ethers");
8
8
  const chains_1 = __importDefault(require("../../../configs/chains"));
9
- const getContractAddress_1 = require("../../getContractAddress");
10
- const GET_ACTIVE_GAUGES_ABI = `function getActiveGauges() view returns (
11
- address[] memory,
12
- uint256[] memory,
13
- uint256 totalWeight
14
- )`;
9
+ const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
15
11
  /**
16
- * Gets the active gauges and their weights.
12
+ * Gets the active gauges on a controller and their weights at the current epoch.
17
13
  *
18
14
  * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
19
16
  * @param provider - Optional ethers.js Provider instance.
20
- * @returns Active gauges, their weights, and total weight. (address[] memory, uint256[] memory, uint256} {activeGauges, weights, totalWeight} Tuple of active gauges, weights and total weight)
17
+ * @returns Active gauges, their weights and the total weight.
21
18
  */
22
- const getActiveGauges = async (chainId, provider) => {
19
+ const getActiveGauges = async (chainId, gaugeSystem, provider) => {
23
20
  if (!provider) {
24
21
  const rpc = chains_1.default[chainId].rpcs[0];
25
22
  provider = new ethers_1.ethers.JsonRpcProvider(rpc);
26
23
  }
27
- const contractAddress = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
28
- const contract = new ethers_1.ethers.Contract(contractAddress, [GET_ACTIVE_GAUGES_ABI], provider);
29
- const [activeGauges, weights, totalWeight] = await contract.getActiveGauges();
24
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
25
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
26
+ const [gauges, weights, totalWeight] = await contract.getActiveGauges();
30
27
  return {
31
- gauges: activeGauges,
28
+ gauges: [...gauges],
32
29
  weights: weights.map((w) => ethers_1.ethers.formatEther(w)),
33
30
  totalWeight: ethers_1.ethers.formatEther(totalWeight),
34
31
  };
@@ -6,24 +6,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getConstants = void 0;
7
7
  const ethers_1 = require("ethers");
8
8
  const chains_1 = __importDefault(require("../../../configs/chains"));
9
- const getContractAddress_1 = require("../../getContractAddress");
10
9
  const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
11
  /**
12
- * Reads the immutable/constant configuration values from the GaugeController.
12
+ * Reads the constant configuration values from a GaugeController.
13
+ *
13
14
  * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
14
16
  * @param provider - Optional ethers.js Provider instance.
15
- * @returns An object with maxBoost, minBoost, weightPrecision, week, weightVoteDelay,
16
- * minVoteWeight and maxVoteWeight, all bigint.
17
+ * @returns maxBoost, minBoost, weightPrecision, week, weightVoteDelay, minVoteWeight and maxVoteWeight.
17
18
  */
18
- const getConstants = async (chainId, provider) => {
19
+ const getConstants = async (chainId, gaugeSystem, provider) => {
19
20
  if (!provider) {
20
21
  const rpc = chains_1.default[chainId].rpcs[0];
21
22
  provider = new ethers_1.ethers.JsonRpcProvider(rpc);
22
23
  }
23
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
24
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
25
- const contract = new ethers_1.ethers.Contract(address, abi, provider);
26
- const [maxBoost, minBoost, weightPrecision, week, weightVoteDelay, minVoteWeight, maxVoteWeight,] = await Promise.all([
24
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
25
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
26
+ const [maxBoost, minBoost, weightPrecision, week, weightVoteDelay, minVoteWeight, maxVoteWeight] = await Promise.all([
27
27
  contract.MAX_BOOST(),
28
28
  contract.MIN_BOOST(),
29
29
  contract.WEIGHT_PRECISION(),
@@ -32,14 +32,6 @@ const getConstants = async (chainId, provider) => {
32
32
  contract.MIN_VOTE_WEIGHT(),
33
33
  contract.MAX_VOTE_WEIGHT(),
34
34
  ]);
35
- return {
36
- maxBoost,
37
- minBoost,
38
- weightPrecision,
39
- week,
40
- weightVoteDelay,
41
- minVoteWeight,
42
- maxVoteWeight,
43
- };
35
+ return { maxBoost, minBoost, weightPrecision, week, weightVoteDelay, minVoteWeight, maxVoteWeight };
44
36
  };
45
37
  exports.getConstants = getConstants;
@@ -6,22 +6,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getCurrentEpoch = void 0;
7
7
  const ethers_1 = require("ethers");
8
8
  const chains_1 = __importDefault(require("../../../configs/chains"));
9
- const getContractAddress_1 = require("../../getContractAddress");
10
9
  const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
11
  /**
12
- * Gets the current epoch boundary (rounded down to the week) from the GaugeController.
12
+ * Returns the start timestamp of the controller's current epoch.
13
+ *
13
14
  * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
14
16
  * @param provider - Optional ethers.js Provider instance.
15
- * @returns Current epoch timestamp as a bigint.
17
+ * @returns The current epoch timestamp, seconds.
16
18
  */
17
- const getCurrentEpoch = async (chainId, provider) => {
19
+ const getCurrentEpoch = async (chainId, gaugeSystem, provider) => {
18
20
  if (!provider) {
19
21
  const rpc = chains_1.default[chainId].rpcs[0];
20
22
  provider = new ethers_1.ethers.JsonRpcProvider(rpc);
21
23
  }
22
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
23
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
24
- const contract = new ethers_1.ethers.Contract(address, abi, provider);
24
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
25
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
25
26
  return contract.getCurrentEpoch();
26
27
  };
27
28
  exports.getCurrentEpoch = getCurrentEpoch;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getExpiredGaugeVotePower = void 0;
7
+ const ethers_1 = require("ethers");
8
+ const chains_1 = __importDefault(require("../../../configs/chains"));
9
+ const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
+ /**
12
+ * Returns the vote power a user still has assigned to gauges whose votes no longer count, because every lock backing the vote has decayed out by the next epoch. Free it by re-voting those gauges.
13
+ *
14
+ * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
16
+ * @param user - Address of the voter.
17
+ * @param provider - Optional ethers.js Provider instance.
18
+ * @returns The stale vote weight in basis points and the gauges it sits on.
19
+ */
20
+ const getExpiredGaugeVotePower = async (chainId, gaugeSystem, user, provider) => {
21
+ if (!provider) {
22
+ const rpc = chains_1.default[chainId].rpcs[0];
23
+ provider = new ethers_1.ethers.JsonRpcProvider(rpc);
24
+ }
25
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
26
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
27
+ const [expiredGaugePower, gauges] = await contract.getExpiredGaugeVotePower(user);
28
+ return { expiredGaugePower, gauges: [...gauges] };
29
+ };
30
+ exports.getExpiredGaugeVotePower = getExpiredGaugeVotePower;
@@ -6,24 +6,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getGauge = void 0;
7
7
  const ethers_1 = require("ethers");
8
8
  const chains_1 = __importDefault(require("../../../configs/chains"));
9
- const getContractAddress_1 = require("../../getContractAddress");
10
9
  const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
11
  /**
12
- * Reads the gauge config struct from the public `gauges` mapping on the GaugeController.
12
+ * Reads a gauge's entry from the controller's public `gauges` mapping.
13
+ *
13
14
  * @param chainId - The chain/network to use.
14
- * @param gauge - Address of the gauge.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
16
+ * @param gaugeAddressOrId - Address or config id of the gauge.
15
17
  * @param provider - Optional ethers.js Provider instance.
16
- * @returns An object with isActive, isBoostAmplificationEnabled (booleans), weight and lastUpdateTime (bigint).
18
+ * @returns isActive and isBoostAmplificationEnabled flags, weight and lastUpdateTime.
17
19
  */
18
- const getGauge = async (chainId, gauge, provider) => {
20
+ const getGauge = async (chainId, gaugeSystem, gaugeAddressOrId, provider) => {
19
21
  if (!provider) {
20
22
  const rpc = chains_1.default[chainId].rpcs[0];
21
23
  provider = new ethers_1.ethers.JsonRpcProvider(rpc);
22
24
  }
23
- const address = (0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller");
24
- const abi = (0, artifacts_1.getABI)("gaugecontroller");
25
- const contract = new ethers_1.ethers.Contract(address, abi, provider);
26
- const [isActive, isBoostAmplificationEnabled, weight, lastUpdateTime] = await contract.gauges(gauge);
25
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
26
+ const gaugeAddress = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
27
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
28
+ const [isActive, isBoostAmplificationEnabled, weight, lastUpdateTime] = await contract.gauges(gaugeAddress);
27
29
  return { isActive, isBoostAmplificationEnabled, weight, lastUpdateTime };
28
30
  };
29
31
  exports.getGauge = getGauge;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getGaugeDistributor = void 0;
7
+ const ethers_1 = require("ethers");
8
+ const chains_1 = __importDefault(require("../../../configs/chains"));
9
+ const artifacts_1 = require("../../../utils/artifacts");
10
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
+ /**
12
+ * Returns the GaugeRewardsDistributor wired to the controller.
13
+ *
14
+ * @param chainId - The chain/network to use.
15
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges") or a GaugeController address.
16
+ * @param provider - Optional ethers.js Provider instance.
17
+ * @returns The distributor address.
18
+ */
19
+ const getGaugeDistributor = async (chainId, gaugeSystem, provider) => {
20
+ if (!provider) {
21
+ const rpc = chains_1.default[chainId].rpcs[0];
22
+ provider = new ethers_1.ethers.JsonRpcProvider(rpc);
23
+ }
24
+ const address = (0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem);
25
+ const contract = new ethers_1.ethers.Contract(address, (0, artifacts_1.getABI)("gaugecontroller"), provider);
26
+ return contract.gaugeDistributor();
27
+ };
28
+ exports.getGaugeDistributor = getGaugeDistributor;
@@ -8,6 +8,7 @@ const ethers_1 = require("ethers");
8
8
  const chains_1 = __importDefault(require("../../../configs/chains"));
9
9
  const getContractAddress_1 = require("../../getContractAddress");
10
10
  const artifacts_1 = require("../../../utils/artifacts");
11
+ const _helpers_1 = require("../gaugeSystems/_helpers");
11
12
  const E18 = 10n ** 18n;
12
13
  /**
13
14
  * Per-epoch emissions for a gauge. The GaugeController snapshots gauge weights per epoch
@@ -22,26 +23,32 @@ const E18 = 10n ** 18n;
22
23
  * where scheduledWeekEmission = minter.calculateScheduledMintableAmount(week) × distributorShare.
23
24
  *
24
25
  * @param chainId - The chain/network to use.
25
- * @param gauge - Gauge address (or config key).
26
- * @param numEpochs - How many epochs to include, ending at the current one (default 8).
26
+ * @param gaugeSystem - Gauge system id ("raacgauges" or "rwagauges").
27
+ * @param gaugeAddressOrId - Address or config id of the gauge.
28
+ * @param numEpochs - How many epochs to include, ending at the current one (default 8), clamped to the gauge's start.
29
+ * @param includeUpcoming - Whether to append a projection for the next epoch (default true).
27
30
  * @param provider - Optional ethers.js Provider instance.
28
31
  */
29
- const getGaugeEmissions = async (chainId, gauge, numEpochs = 8, includeUpcoming = true, provider) => {
32
+ const getGaugeEmissions = async (chainId, gaugeSystem, gaugeAddressOrId, numEpochs = 8, includeUpcoming = true, provider) => {
30
33
  if (!provider) {
31
34
  const rpc = chains_1.default[chainId].rpcs[0];
32
35
  provider = new ethers_1.ethers.JsonRpcProvider(rpc);
33
36
  }
34
- const controller = new ethers_1.ethers.Contract((0, getContractAddress_1.getContractAddress)(chainId, "gaugecontroller"), (0, artifacts_1.getABI)("gaugecontroller"), provider);
35
- const distributor = new ethers_1.ethers.Contract((0, getContractAddress_1.getContractAddress)(chainId, "gaugerewardsdistributor"), (0, artifacts_1.getABI)("gaugerewardsdistributor"), provider);
36
- const [weekBn, currentEpochBn, startEpochBn, rewardToken] = await Promise.all([
37
+ const gauge = (0, _helpers_1.resolveGauge)(chainId, gaugeAddressOrId);
38
+ const distAddr = (0, _helpers_1.resolveGaugeDistributor)(chainId, gaugeSystem);
39
+ const controller = new ethers_1.ethers.Contract((0, _helpers_1.resolveGaugeController)(chainId, gaugeSystem), (0, artifacts_1.getABI)("gaugecontroller"), provider);
40
+ const distributor = new ethers_1.ethers.Contract(distAddr, (0, artifacts_1.getABI)("gaugerewardsdistributor"), provider);
41
+ const gaugeContract = new ethers_1.ethers.Contract(gauge, (0, artifacts_1.getABI)("basegauge"), provider);
42
+ const [weekBn, currentEpochBn, gaugeData, rewardToken] = await Promise.all([
37
43
  controller.WEEK(),
38
44
  controller.getCurrentEpoch(),
39
- distributor.startEpoch(),
45
+ gaugeContract.gaugeData(),
40
46
  distributor.rewardToken(),
41
47
  ]);
42
48
  const week = BigInt(weekBn);
43
49
  const currentEpoch = BigInt(currentEpochBn);
44
- const startEpoch = BigInt(startEpochBn) > 0n ? BigInt(startEpochBn) : currentEpoch;
50
+ const gaugeStart = BigInt(gaugeData.gaugeInitialStartTime ?? gaugeData[0] ?? 0n);
51
+ const startEpoch = gaugeStart > 0n ? (gaugeStart / week) * week : currentEpoch;
45
52
  // ── Distributor's share of the minter + scheduled-emission helper ─────────
46
53
  // The schedule deterministically sets each week's system emission, so we use it for
47
54
  // the in-progress and upcoming epochs (where depositedAtEpoch is partial/zero).
@@ -49,7 +56,6 @@ const getGaugeEmissions = async (chainId, gauge, numEpochs = 8, includeUpcoming
49
56
  let minter = null;
50
57
  try {
51
58
  minter = new ethers_1.ethers.Contract((0, getContractAddress_1.getContractAddress)(chainId, "raacminter"), (0, artifacts_1.getABI)("raacminter"), provider);
52
- const distAddr = (0, getContractAddress_1.getContractAddress)(chainId, "gaugerewardsdistributor");
53
59
  const [info, totalWeight] = await Promise.all([minter.poolInfo(distAddr), minter.totalWeight()]);
54
60
  const poolWeight = BigInt(info.weight ?? info[0] ?? 0n);
55
61
  const exists = Boolean(info.exists ?? info[1]);