@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.
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +560 -0
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +86 -5
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +24 -32
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +4 -0
- package/build/artifacts/contracts/router/kyberswap/{IMultihopRouter.sol/IMultihopRouter.json → IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json} +3 -3
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
- package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
- package/contracts/core/libraries/ArrayLib.sol +9 -0
- package/contracts/core/libraries/Errors.sol +10 -2
- package/contracts/interfaces/IPFeeDistributor.sol +12 -10
- package/contracts/offchain-helpers/Multicall2.sol +103 -0
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +37 -23
- package/contracts/router/kyberswap/{IMultihopRouter.sol → IMultihopRouterEthereum.sol} +11 -9
- package/deployments/1-core.json +2 -1
- package/package.json +1 -1
- package/typechain-types/BribeDistributor.ts +363 -0
- package/typechain-types/DistributorBase.ts +363 -0
- package/typechain-types/FeeDistributor.ts +416 -0
- package/typechain-types/IMultihopRouterEthereum.ts +209 -0
- package/typechain-types/IPFeeDistributor.ts +43 -78
- package/typechain-types/IPFeeDistributorFactory.ts +53 -139
- package/typechain-types/PendleFeeDistributor.ts +373 -118
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionMisc__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
- package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +1 -1
- package/typechain-types/factories/DistributorBase__factory.ts +249 -0
- package/typechain-types/factories/Errors__factory.ts +85 -4
- package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
- package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
- package/typechain-types/factories/IPFeeDistributorFactory__factory.ts +25 -34
- package/typechain-types/factories/IPFeeDistributor__factory.ts +24 -32
- package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +310 -67
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +1 -1
- package/typechain-types/factories/SAPE__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +18 -36
- package/typechain-types/index.ts +4 -8
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json +0 -131
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -310
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +0 -389
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json +0 -76
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
- package/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol +0 -159
- package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +0 -99
- package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +0 -70
- 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
|
-
}
|