@pendle/core-v2 1.1.0-mainnet → 1.2.0-mainnet

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 (190) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +560 -0
  14. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  16. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  28. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  30. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  34. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  36. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  38. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  43. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  62. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  64. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  66. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  68. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
  70. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +86 -5
  72. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +24 -32
  82. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  85. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  86. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  87. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  88. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
  89. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  90. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
  91. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  92. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  93. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  94. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  95. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  96. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  97. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  98. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  99. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  100. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  101. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  102. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  103. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  104. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  105. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  106. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  107. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  108. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  109. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  110. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  111. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  112. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  113. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  114. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +4 -0
  115. package/build/artifacts/contracts/router/kyberswap/{IMultihopRouter.sol/IMultihopRouter.json → IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json} +3 -3
  116. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  117. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
  118. package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
  119. package/contracts/core/libraries/ArrayLib.sol +9 -0
  120. package/contracts/core/libraries/Errors.sol +10 -2
  121. package/contracts/interfaces/IPFeeDistributor.sol +12 -10
  122. package/contracts/offchain-helpers/Multicall2.sol +103 -0
  123. package/contracts/router/kyberswap/AggregationRouterHelper.sol +37 -23
  124. package/contracts/router/kyberswap/{IMultihopRouter.sol → IMultihopRouterEthereum.sol} +11 -9
  125. package/deployments/1-core.json +2 -1
  126. package/package.json +1 -1
  127. package/typechain-types/BribeDistributor.ts +363 -0
  128. package/typechain-types/DistributorBase.ts +363 -0
  129. package/typechain-types/FeeDistributor.ts +416 -0
  130. package/typechain-types/IMultihopRouterEthereum.ts +209 -0
  131. package/typechain-types/IPFeeDistributor.ts +43 -78
  132. package/typechain-types/IPFeeDistributorFactory.ts +53 -139
  133. package/typechain-types/PendleFeeDistributor.ts +373 -118
  134. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  135. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  136. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  137. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  138. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  139. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  140. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  141. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  142. package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
  143. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  144. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  145. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  146. package/typechain-types/factories/DistributorBase__factory.ts +249 -0
  147. package/typechain-types/factories/Errors__factory.ts +85 -4
  148. package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
  149. package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
  150. package/typechain-types/factories/IPFeeDistributorFactory__factory.ts +25 -34
  151. package/typechain-types/factories/IPFeeDistributor__factory.ts +24 -32
  152. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
  153. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  154. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  155. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  156. package/typechain-types/factories/PendleFeeDistributor__factory.ts +310 -67
  157. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  158. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  159. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  160. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  161. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  162. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  163. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  164. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  165. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  166. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  167. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  168. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  169. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  170. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  171. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  172. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  173. package/typechain-types/factories/SAPE__factory.ts +1 -1
  174. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  175. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  176. package/typechain-types/hardhat.d.ts +18 -36
  177. package/typechain-types/index.ts +4 -8
  178. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +0 -4
  179. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json +0 -131
  180. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
  181. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -310
  182. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +0 -4
  183. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +0 -389
  184. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +0 -4
  185. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json +0 -76
  186. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
  187. package/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol +0 -159
  188. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +0 -99
  189. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +0 -70
  190. package/contracts/interfaces/IPFeeDistributorFactory.sol +0 -14
@@ -1,99 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
3
-
4
- import "../../core/libraries/math/Math.sol";
5
- import "../../core/libraries/ArrayLib.sol";
6
- import "../../core/libraries/MiniHelpers.sol";
7
- import "../../core/libraries/Errors.sol";
8
- import "../../core/libraries/BoringOwnableUpgradeable.sol";
9
-
10
- import "../libraries/WeekMath.sol";
11
- import "../libraries/VeHistoryLib.sol";
12
-
13
- import "../../interfaces/IPFeeDistributor.sol";
14
- import "../../interfaces/IPFeeDistributorFactory.sol";
15
-
16
- import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
17
-
18
- contract PendleFeeDistributor is IPFeeDistributor, BoringOwnableUpgradeable {
19
- using Math for uint256;
20
- using SafeERC20 for IERC20;
21
- using ArrayLib for address[];
22
- using VeBalanceLib for VeBalance;
23
-
24
- address public immutable factory;
25
- address public immutable pool;
26
- address public immutable rewardToken;
27
- uint256 public immutable startEpoch;
28
-
29
- uint256 public lastFinishedEpoch;
30
-
31
- // [user] => [epoch]
32
- mapping(address => uint256) public userLastClaimedEpoch;
33
-
34
- // [epoch] => [incentive]
35
- mapping(uint256 => uint256) public incentivesForEpoch;
36
-
37
- constructor(
38
- address _pool,
39
- address _rewardToken,
40
- uint256 _startEpoch
41
- ) initializer {
42
- pool = _pool;
43
- factory = msg.sender;
44
- rewardToken = _rewardToken;
45
- startEpoch = _startEpoch;
46
- lastFinishedEpoch = _startEpoch;
47
- __BoringOwnable_init();
48
- }
49
-
50
- function fund(uint256[] calldata rewardsForEpoch) external onlyOwner {
51
- uint256 epoch = lastFinishedEpoch;
52
- uint256 totalRewardFunding = 0;
53
- for (uint256 i = 0; i < rewardsForEpoch.length; ++i) {
54
- epoch += WeekMath.WEEK;
55
- uint256 incentive = rewardsForEpoch[i];
56
-
57
- incentivesForEpoch[epoch] += incentive;
58
- totalRewardFunding += incentive;
59
-
60
- emit Fund(epoch, incentive);
61
- }
62
-
63
- if (epoch > WeekMath.getCurrentWeekStart()) revert Errors.FDCantFundFutureEpoch();
64
-
65
- IERC20(rewardToken).transferFrom(msg.sender, address(this), totalRewardFunding);
66
- lastFinishedEpoch = epoch;
67
- }
68
-
69
- function claimReward(address user) external returns (uint256 amountRewardOut) {
70
- IPFeeDistributorFactory(factory).updateUserShare(user, pool);
71
-
72
- uint256 finishedEpoch = lastFinishedEpoch;
73
- uint256 userEpoch = userLastClaimedEpoch[user];
74
-
75
- if (userEpoch == finishedEpoch) return 0;
76
- if (userEpoch == 0) userEpoch = startEpoch;
77
-
78
- while (userEpoch < finishedEpoch) {
79
- userEpoch += WeekMath.WEEK;
80
-
81
- uint256 incentive = incentivesForEpoch[userEpoch];
82
- if (incentive == 0) continue;
83
-
84
- (uint256 userShare, uint256 totalShare) = IPFeeDistributorFactory(factory)
85
- .getUserAndTotalSharesAt(user, pool, userEpoch);
86
-
87
- if (userShare == 0) continue;
88
-
89
- amountRewardOut += (userShare * incentive) / totalShare;
90
- }
91
-
92
- userLastClaimedEpoch[user] = finishedEpoch;
93
- if (amountRewardOut > 0) {
94
- IERC20(rewardToken).safeTransfer(user, amountRewardOut);
95
- }
96
-
97
- emit ClaimReward(user, rewardToken, finishedEpoch, amountRewardOut);
98
- }
99
- }
@@ -1,70 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
3
-
4
- import "./PendleFeeDistributor.sol";
5
- import "./EpochResultManager.sol";
6
-
7
- import "../../core/libraries/BaseSplitCodeFactory.sol";
8
-
9
- import "../../interfaces/IBoringOwnableUpgradeable.sol";
10
- import "../../interfaces/IPFeeDistributorFactory.sol";
11
-
12
- contract PendleFeeDistributorFactory is BoringOwnableUpgradeable, EpochResultManager {
13
- using Math for uint256;
14
-
15
- struct PoolInfo {
16
- address distributor;
17
- uint64 startTime;
18
- }
19
-
20
- address public immutable feeDistributorCreationCodeContractA;
21
- uint256 public immutable feeDistributorCreationCodeSizeA;
22
- address public immutable feeDistributorCreationCodeContractB;
23
- uint256 public immutable feeDistributorCreationCodeSizeB;
24
-
25
- address public immutable rewardToken;
26
- uint256 public lastFinishedEpoch;
27
- mapping(address => PoolInfo) public poolInfos;
28
-
29
- constructor(
30
- address _rewardToken,
31
- address _votingController,
32
- address _vePendle,
33
- address _feeDistributorCreationCodeContractA,
34
- uint256 _feeDistributorCreationCodeSizeA,
35
- address _feeDistributorCreationCodeContractB,
36
- uint256 _feeDistributorCreationCodeSizeB
37
- ) EpochResultManager(_votingController, _vePendle) initializer {
38
- __BoringOwnable_init();
39
- rewardToken = _rewardToken;
40
- feeDistributorCreationCodeContractA = _feeDistributorCreationCodeContractA;
41
- feeDistributorCreationCodeSizeA = _feeDistributorCreationCodeSizeA;
42
- feeDistributorCreationCodeContractB = _feeDistributorCreationCodeContractB;
43
- feeDistributorCreationCodeSizeB = _feeDistributorCreationCodeSizeB;
44
- }
45
-
46
- function createFeeDistributor(address pool, uint64 startTime)
47
- external
48
- onlyOwner
49
- returns (address distributor)
50
- {
51
- if (poolInfos[pool].distributor != address(0))
52
- revert Errors.FDFactoryDistributorAlreadyExisted(pool, poolInfos[pool].distributor);
53
-
54
- distributor = BaseSplitCodeFactory._create2(
55
- 0,
56
- bytes32(""),
57
- abi.encode(pool, rewardToken, uint256(startTime)),
58
- feeDistributorCreationCodeContractA,
59
- feeDistributorCreationCodeSizeA,
60
- feeDistributorCreationCodeContractB,
61
- feeDistributorCreationCodeSizeB
62
- );
63
- IBoringOwnableUpgradeable(distributor).transferOwnership(msg.sender, true, false);
64
- poolInfos[pool] = PoolInfo({ distributor: distributor, startTime: startTime });
65
- }
66
-
67
- function _getPoolStartTime(address pool) internal view virtual override returns (uint64) {
68
- return poolInfos[pool].startTime;
69
- }
70
- }
@@ -1,14 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
3
-
4
- interface IPFeeDistributorFactory {
5
- function lastFinishedEpoch() external returns (uint256);
6
-
7
- function updateUserShare(address user, address pool) external;
8
-
9
- function getUserAndTotalSharesAt(
10
- address user,
11
- address pool,
12
- uint256 epoch
13
- ) external view returns (uint256 userShare, uint256 totalShare);
14
- }