@pendle/core-v2 0.9.4-beta → 0.10.2-testnet
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/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +7 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol}/PendleYearnVaultSCY.json +3 -3
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json +67 -5
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +63 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +65 -3
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +74 -10
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +79 -15
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +204 -123
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +127 -73
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +93 -34
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +90 -14
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +14 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +139 -37
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +84 -56
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +122 -11
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- 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 +96 -40
- 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/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +1025 -0
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +622 -0
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +35 -0
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +459 -0
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +459 -0
- package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/base/{ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json → ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json} +2 -2
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +24 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPActionCore.sol/IPActionCore.json → IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json} +141 -912
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +598 -0
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +35 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +435 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPActionYT.sol/IPActionYT.json → IPActionSwapYT.sol/IPActionSwapYT.json} +23 -11
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +323 -47
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +4 -0
- package/build/artifacts/contracts/{core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json → interfaces/IPGauge.sol/IPGauge.json} +5 -5
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +72 -29
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +0 -11
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +0 -37
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.json +1 -1
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +74 -0
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +93 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +427 -39
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +4 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +86 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +4 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +37 -0
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +8 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +11 -5
- package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -1
- package/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol} +0 -0
- package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +1 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +1 -1
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +7 -7
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +7 -6
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -5
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -3
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +6 -3
- package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
- package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +22 -28
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +71 -13
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -2
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +4 -3
- package/contracts/core/Market/PendleMarket.sol +93 -57
- package/contracts/core/Market/PendleMarketFactory.sol +18 -33
- package/contracts/core/PendleRouter.sol +60 -52
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +12 -12
- package/contracts/core/YieldContracts/PendleYieldToken.sol +1 -1
- package/contracts/core/actions/ActionAddRemoveLiq.sol +366 -0
- package/contracts/core/actions/ActionCallback.sol +6 -6
- package/contracts/core/actions/ActionMintRedeem.sol +124 -0
- package/contracts/core/actions/ActionMisc.sol +24 -0
- package/contracts/core/actions/ActionSwapPT.sol +199 -0
- package/contracts/core/actions/{base/ActionSCYAndYTBase.sol → ActionSwapYT.sol} +109 -74
- package/contracts/core/actions/base/{ActionSCYAndPYBase.sol → ActionBaseMintRedeem.sol} +9 -8
- package/contracts/interfaces/IBenQiComptroller.sol +2 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +188 -0
- package/contracts/interfaces/IPActionMintRedeem.sol +115 -0
- package/contracts/interfaces/IPActionMisc.sol +9 -0
- package/contracts/interfaces/IPActionSwapPT.sol +69 -0
- package/contracts/interfaces/{IPActionYT.sol → IPActionSwapYT.sol} +12 -10
- package/contracts/interfaces/IPAllAction.sol +12 -3
- package/contracts/interfaces/IPGauge.sol +6 -0
- package/contracts/interfaces/IPGaugeController.sol +0 -2
- package/contracts/interfaces/IPMarket.sol +28 -10
- package/contracts/interfaces/IPMarketFactory.sol +1 -7
- package/contracts/interfaces/IPVeToken.sol +1 -1
- package/contracts/interfaces/IPVotingController.sol +0 -2
- package/contracts/interfaces/IRewardManager.sol +1 -1
- package/contracts/libraries/OracleLib.sol +214 -0
- package/contracts/libraries/RewardManagerAbstract.sol +1 -1
- package/contracts/libraries/math/MarketApproxLib.sol +227 -14
- package/contracts/libraries/math/MarketMathCore.sol +0 -33
- package/contracts/offchain-helpers/MarketMathStatic.sol +565 -0
- package/contracts/offchain-helpers/RouterStatic.sol +187 -251
- package/contracts/periphery/BoringOwnableUpgradeable.sol +62 -0
- package/deployments/43113-core.json +7 -8
- package/deployments/43113-markets/benqi-market-590025.json +8 -0
- package/deployments/43113-markets/benqi-market-c93916.json +8 -0
- package/deployments/80001-core.json +6 -7
- package/deployments/80001-markets/benqi-market-3b8BD1.json +8 -0
- package/deployments/80001-markets/benqi-market-b61e7f.json +8 -0
- package/package.json +11 -11
- package/typechain-types/ActionAddRemoveLiq.ts +1037 -0
- package/typechain-types/ActionBaseMintRedeem.ts +87 -0
- package/typechain-types/ActionCore.ts +21 -20
- package/typechain-types/ActionMintRedeem.ts +665 -0
- package/typechain-types/ActionMisc.ts +105 -0
- package/typechain-types/ActionSwapPT.ts +515 -0
- package/typechain-types/ActionSwapYT.ts +515 -0
- package/typechain-types/ActionYT.ts +5 -4
- package/typechain-types/BoringOwnable.ts +194 -0
- package/typechain-types/BoringOwnableData.ts +100 -0
- package/typechain-types/BoringOwnableUpgradeable.ts +194 -0
- package/typechain-types/BoringOwnableUpgradeableData.ts +100 -0
- package/typechain-types/CelerReceiverUpg.ts +124 -19
- package/typechain-types/CelerSenderUpg.ts +116 -11
- package/typechain-types/IBenQiComptroller.ts +39 -0
- package/typechain-types/IPActionAddRemoveLiq.ts +1018 -0
- package/typechain-types/IPActionCore.ts +21 -20
- package/typechain-types/IPActionMintRedeem.ts +646 -0
- package/typechain-types/IPActionMisc.ts +105 -0
- package/typechain-types/IPActionSwapPT.ts +496 -0
- package/typechain-types/IPActionSwapYT.ts +496 -0
- package/typechain-types/IPActionYT.ts +5 -4
- package/typechain-types/IPAllAction.ts +431 -193
- package/typechain-types/IPGauge.ts +87 -0
- package/typechain-types/IPMarket.ts +133 -50
- package/typechain-types/IPMarketFactory.ts +7 -17
- package/typechain-types/IPVeToken.ts +8 -8
- package/typechain-types/IPVotingController.ts +0 -20
- package/typechain-types/IPYieldToken.ts +3 -3
- package/typechain-types/IRewardManager.ts +3 -3
- package/typechain-types/MarketMathStatic.ts +198 -0
- package/typechain-types/OracleLib.ts +124 -0
- package/typechain-types/PendleGaugeControllerBaseUpg.ts +118 -15
- package/typechain-types/PendleGaugeControllerMainchainUpg.ts +136 -9
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +138 -11
- package/typechain-types/PendleMarket.ts +178 -59
- package/typechain-types/PendleMarketFactory.ts +135 -61
- package/typechain-types/PendleRouter.ts +201 -31
- package/typechain-types/PendleVotingControllerUpg.ts +325 -149
- package/typechain-types/PendleYieldContractFactory.ts +144 -21
- package/typechain-types/RouterStatic.ts +344 -64
- package/typechain-types/VotingControllerStorageUpg.ts +182 -113
- package/typechain-types/VotingEscrowPendleMainchain.ts +170 -63
- package/typechain-types/VotingEscrowPendleSidechain.ts +163 -17
- package/typechain-types/VotingEscrowTokenBase.ts +27 -8
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1083 -0
- package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +43 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionCore__factory.ts +6 -6
- package/typechain-types/factories/ActionMintRedeem__factory.ts +680 -0
- package/typechain-types/factories/ActionMisc__factory.ts +85 -0
- package/typechain-types/factories/ActionSwapPT__factory.ts +514 -0
- package/typechain-types/factories/ActionSwapYT__factory.ts +514 -0
- package/typechain-types/factories/ActionYT__factory.ts +2 -2
- package/typechain-types/factories/BoringOwnableData__factory.ts +90 -0
- package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +96 -0
- package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +143 -0
- package/typechain-types/factories/BoringOwnable__factory.ts +141 -0
- package/typechain-types/factories/CelerReceiverUpg__factory.ts +67 -5
- package/typechain-types/factories/CelerSenderUpg__factory.ts +63 -1
- package/typechain-types/factories/IBenQiComptroller__factory.ts +24 -0
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +1020 -0
- package/typechain-types/factories/IPActionCore__factory.ts +5 -5
- package/typechain-types/factories/IPActionMintRedeem__factory.ts +613 -0
- package/typechain-types/factories/IPActionMisc__factory.ts +47 -0
- package/typechain-types/factories/IPActionSwapPT__factory.ts +450 -0
- package/typechain-types/factories/IPActionSwapYT__factory.ts +450 -0
- package/typechain-types/factories/IPActionYT__factory.ts +1 -1
- package/typechain-types/factories/IPAllAction__factory.ts +323 -47
- package/typechain-types/factories/IPGauge__factory.ts +36 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +0 -11
- package/typechain-types/factories/IPMarket__factory.ts +72 -29
- package/typechain-types/factories/IPVeToken__factory.ts +1 -1
- package/typechain-types/factories/IPVotingController__factory.ts +0 -37
- package/typechain-types/factories/IPYieldToken__factory.ts +1 -1
- package/typechain-types/factories/IRewardManager__factory.ts +1 -1
- package/typechain-types/factories/MarketMathStatic__factory.ts +146 -0
- package/typechain-types/factories/OracleLib__factory.ts +124 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleEulerSCY__factory.ts +10 -1
- package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +65 -3
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +73 -13
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +79 -23
- package/typechain-types/factories/PendleMarketFactory__factory.ts +84 -86
- package/typechain-types/factories/PendleMarket__factory.ts +131 -37
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +141 -22
- package/typechain-types/factories/PendleSAvaxSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleSJoeSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +203 -129
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +97 -72
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +233 -39
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +126 -72
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +93 -41
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +90 -17
- package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +14 -1
- package/typechain-types/hardhat.d.ts +162 -0
- package/typechain-types/index.ts +36 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +0 -1801
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +0 -447
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +0 -24
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -874
- package/contracts/core/actions/ActionCore.sol +0 -382
- package/contracts/core/actions/ActionYT.sol +0 -93
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +0 -303
- package/contracts/interfaces/IPActionCore.sol +0 -306
- package/contracts/interfaces/IPRouterStatic.sol +0 -152
- package/deployments/43113-markets/benqi-market-599408.json +0 -7
- package/deployments/43113-markets/benqi-market-93bbf0.json +0 -7
- package/deployments/43113-markets/benqi-market-95E744.json +0 -7
- package/deployments/43113-markets/benqi-market-D91a3F.json +0 -7
- package/deployments/80001-markets/benqi-market-007811.json +0 -7
- package/deployments/80001-markets/benqi-market-3fe528.json +0 -7
- package/typechain-types/FeeDistributorAbstract.ts +0 -164
- package/typechain-types/IPVotingControllerStorage.ts +0 -169
- package/typechain-types/factories/FeeDistributorAbstract__factory.ts +0 -90
- package/typechain-types/factories/IPVotingControllerStorage__factory.ts +0 -107
|
@@ -17,6 +17,7 @@ abstract contract VotingControllerStorageUpg {
|
|
|
17
17
|
using VeBalanceLib for LockedPosition;
|
|
18
18
|
using EnumerableSet for EnumerableSet.AddressSet;
|
|
19
19
|
using Checkpoints for Checkpoints.History;
|
|
20
|
+
using WeekMath for uint128;
|
|
20
21
|
|
|
21
22
|
struct PoolData {
|
|
22
23
|
uint64 chainId;
|
|
@@ -57,16 +58,16 @@ abstract contract VotingControllerStorageUpg {
|
|
|
57
58
|
EnumerableSet.AddressSet internal allRemovedPools;
|
|
58
59
|
|
|
59
60
|
// [chainId] => [pool]
|
|
60
|
-
mapping(uint64 => EnumerableSet.AddressSet) internal
|
|
61
|
+
mapping(uint64 => EnumerableSet.AddressSet) internal activeChainPools;
|
|
61
62
|
|
|
62
63
|
// [poolAddress] -> PoolData
|
|
63
|
-
mapping(address => PoolData)
|
|
64
|
+
mapping(address => PoolData) internal poolData;
|
|
64
65
|
|
|
65
66
|
// [wTime] => WeekData
|
|
66
|
-
mapping(uint128 => WeekData)
|
|
67
|
+
mapping(uint128 => WeekData) internal weekData;
|
|
67
68
|
|
|
68
69
|
// user voting data
|
|
69
|
-
mapping(address => UserData)
|
|
70
|
+
mapping(address => UserData) internal userData;
|
|
70
71
|
|
|
71
72
|
// [user][pool] => checkpoint
|
|
72
73
|
mapping(address => mapping(address => Checkpoints.History)) internal userPoolHistory;
|
|
@@ -82,8 +83,64 @@ abstract contract VotingControllerStorageUpg {
|
|
|
82
83
|
VIEW FUNCTIONS
|
|
83
84
|
//////////////////////////////////////////////////////////////*/
|
|
84
85
|
|
|
86
|
+
function getPoolData(address pool, uint128[] calldata wTimes)
|
|
87
|
+
public
|
|
88
|
+
view
|
|
89
|
+
returns (
|
|
90
|
+
uint64 chainId,
|
|
91
|
+
uint128 lastSlopeChangeAppliedAt,
|
|
92
|
+
VeBalance memory totalVote,
|
|
93
|
+
uint128[] memory slopeChanges
|
|
94
|
+
)
|
|
95
|
+
{
|
|
96
|
+
PoolData storage data = poolData[pool];
|
|
97
|
+
(chainId, lastSlopeChangeAppliedAt, totalVote) = (
|
|
98
|
+
data.chainId,
|
|
99
|
+
data.lastSlopeChangeAppliedAt,
|
|
100
|
+
data.totalVote
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
slopeChanges = new uint128[](wTimes.length);
|
|
104
|
+
for (uint256 i = 0; i < wTimes.length; ++i) {
|
|
105
|
+
require(wTimes[i].isValidWTime(), "invalid wTimes");
|
|
106
|
+
slopeChanges[i] = data.slopeChanges[wTimes[i]];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function getUserData(address user, address[] calldata pools)
|
|
111
|
+
public
|
|
112
|
+
view
|
|
113
|
+
returns (uint64 totalVotedWeight, UserPoolData[] memory voteForPools)
|
|
114
|
+
{
|
|
115
|
+
UserData storage data = userData[user];
|
|
116
|
+
|
|
117
|
+
totalVotedWeight = data.totalVotedWeight;
|
|
118
|
+
|
|
119
|
+
voteForPools = new UserPoolData[](pools.length);
|
|
120
|
+
for (uint256 i = 0; i < pools.length; ++i) voteForPools[i] = data.voteForPools[pools[i]];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function getWeekData(uint128 wTime, address[] calldata pools)
|
|
124
|
+
public
|
|
125
|
+
view
|
|
126
|
+
returns (
|
|
127
|
+
bool isEpochFinalized,
|
|
128
|
+
uint128 totalVotes,
|
|
129
|
+
uint128[] memory poolVotes
|
|
130
|
+
)
|
|
131
|
+
{
|
|
132
|
+
require(wTime.isValidWTime(), "invalid wTimes");
|
|
133
|
+
|
|
134
|
+
WeekData storage data = weekData[wTime];
|
|
135
|
+
|
|
136
|
+
(isEpochFinalized, totalVotes) = (data.isEpochFinalized, data.totalVotes);
|
|
137
|
+
|
|
138
|
+
poolVotes = new uint128[](pools.length);
|
|
139
|
+
for (uint256 i = 0; i < pools.length; ++i) poolVotes[i] = data.poolVotes[pools[i]];
|
|
140
|
+
}
|
|
141
|
+
|
|
85
142
|
/// @dev trivial view function
|
|
86
|
-
function
|
|
143
|
+
function getAllActivePools() external view returns (address[] memory) {
|
|
87
144
|
return allActivePools.values();
|
|
88
145
|
}
|
|
89
146
|
|
|
@@ -93,14 +150,15 @@ abstract contract VotingControllerStorageUpg {
|
|
|
93
150
|
view
|
|
94
151
|
returns (uint256 lengthOfRemovedPools, address[] memory arr)
|
|
95
152
|
{
|
|
96
|
-
arr = new address[](end - start + 1);
|
|
97
|
-
for (uint256 i = start; i <= end; i++) arr[i] = allRemovedPools.at(i);
|
|
98
153
|
lengthOfRemovedPools = allRemovedPools.length();
|
|
154
|
+
require(end < lengthOfRemovedPools, "end is out of bounds");
|
|
155
|
+
arr = new address[](end - start + 1);
|
|
156
|
+
for (uint256 i = start; i <= end; ++i) arr[i - start] = allRemovedPools.at(i);
|
|
99
157
|
}
|
|
100
158
|
|
|
101
159
|
/// @dev trivial view function
|
|
102
|
-
function
|
|
103
|
-
return
|
|
160
|
+
function getActiveChainPools(uint64 chainId) external view returns (address[] memory) {
|
|
161
|
+
return activeChainPools[chainId].values();
|
|
104
162
|
}
|
|
105
163
|
|
|
106
164
|
/// @dev trivial view function
|
|
@@ -130,11 +188,11 @@ abstract contract VotingControllerStorageUpg {
|
|
|
130
188
|
|
|
131
189
|
/**
|
|
132
190
|
* @dev expected behavior:
|
|
133
|
-
- add to allActivePools,
|
|
191
|
+
- add to allActivePools, activeChainPools
|
|
134
192
|
- set params in poolData
|
|
135
193
|
*/
|
|
136
194
|
function _addPool(uint64 chainId, address pool) internal {
|
|
137
|
-
require(
|
|
195
|
+
require(activeChainPools[chainId].add(pool), "IE");
|
|
138
196
|
require(allActivePools.add(pool), "IE");
|
|
139
197
|
|
|
140
198
|
poolData[pool].chainId = chainId;
|
|
@@ -143,13 +201,13 @@ abstract contract VotingControllerStorageUpg {
|
|
|
143
201
|
|
|
144
202
|
/**
|
|
145
203
|
* @dev expected behavior:
|
|
146
|
-
- remove from allActivePool,
|
|
204
|
+
- remove from allActivePool, activeChainPools
|
|
147
205
|
- add to allRemovedPools
|
|
148
206
|
- clear all params in poolData
|
|
149
207
|
*/
|
|
150
208
|
function _removePool(address pool) internal {
|
|
151
209
|
uint64 chainId = poolData[pool].chainId;
|
|
152
|
-
require(
|
|
210
|
+
require(activeChainPools[chainId].remove(pool), "IE");
|
|
153
211
|
require(allActivePools.remove(pool), "IE");
|
|
154
212
|
require(allRemovedPools.add(pool), "IE");
|
|
155
213
|
|
|
@@ -34,12 +34,14 @@ contract VotingEscrowPendleMainchain is IPVotingEscrow, VotingEscrowTokenBase, C
|
|
|
34
34
|
// to ask for their vePendle balance at any wTime
|
|
35
35
|
mapping(address => Checkpoints.History) internal userHistory;
|
|
36
36
|
|
|
37
|
-
constructor(IERC20 _pendle
|
|
38
|
-
CelerSenderUpg(_governanceManager) // only sets immutable variables
|
|
39
|
-
{
|
|
37
|
+
constructor(IERC20 _pendle) {
|
|
40
38
|
pendle = _pendle;
|
|
41
39
|
}
|
|
42
40
|
|
|
41
|
+
function initialize() external initializer {
|
|
42
|
+
__BoringOwnable_init();
|
|
43
|
+
}
|
|
44
|
+
|
|
43
45
|
/// @notice basically a proxy function to call increaseLockPosition & broadcastUserPosition at the same time
|
|
44
46
|
function increaseLockPositionAndBroadcast(
|
|
45
47
|
uint128 additionalAmountToLock,
|
|
@@ -71,6 +73,7 @@ contract VotingEscrowPendleMainchain is IPVotingEscrow, VotingEscrowTokenBase, C
|
|
|
71
73
|
);
|
|
72
74
|
|
|
73
75
|
require(newExpiry <= block.timestamp + MAX_LOCK_TIME, "max lock time exceeded");
|
|
76
|
+
require(newExpiry >= block.timestamp + MIN_LOCK_TIME, "insufficient lock time");
|
|
74
77
|
require(positionData[user].expiry <= newExpiry, "new expiry must be after current expiry");
|
|
75
78
|
|
|
76
79
|
uint128 newTotalAmountLocked = additionalAmountToLock + positionData[user].amount;
|
|
@@ -227,7 +230,7 @@ contract VotingEscrowPendleMainchain is IPVotingEscrow, VotingEscrowTokenBase, C
|
|
|
227
230
|
}
|
|
228
231
|
|
|
229
232
|
/// @notice broadcast position to all chains in chainIds
|
|
230
|
-
function _broadcastPosition(address user, uint256[] calldata chainIds)
|
|
233
|
+
function _broadcastPosition(address user, uint256[] calldata chainIds) internal {
|
|
231
234
|
require(chainIds.length != 0, "empty chainIds");
|
|
232
235
|
|
|
233
236
|
(VeBalance memory supply, uint128 wTime) = _applySlopeChange();
|
|
@@ -17,7 +17,11 @@ contract VotingEscrowPendleSidechain is VotingEscrowTokenBase, CelerReceiverUpg
|
|
|
17
17
|
|
|
18
18
|
event SetNewUserPosition(LockedPosition position);
|
|
19
19
|
|
|
20
|
-
constructor(
|
|
20
|
+
constructor() {}
|
|
21
|
+
|
|
22
|
+
function initialize() external initializer {
|
|
23
|
+
__BoringOwnable_init();
|
|
24
|
+
}
|
|
21
25
|
|
|
22
26
|
function totalSupplyCurrent() public view virtual override returns (uint128) {
|
|
23
27
|
return totalSupplyStored();
|
|
@@ -27,7 +31,7 @@ contract VotingEscrowPendleSidechain is VotingEscrowTokenBase, CelerReceiverUpg
|
|
|
27
31
|
* @dev The mechanism of delegating is for governance to support protocol to build on top
|
|
28
32
|
* This way, it is more gas efficient and does not affect the crosschain messaging cost
|
|
29
33
|
*/
|
|
30
|
-
function setDelegatorFor(address receiver, address delegator) external
|
|
34
|
+
function setDelegatorFor(address receiver, address delegator) external onlyOwner {
|
|
31
35
|
delegatorOf[receiver] = delegator;
|
|
32
36
|
emit SetNewDelegator(delegator, receiver);
|
|
33
37
|
}
|
|
@@ -10,7 +10,7 @@ import "../../../libraries/helpers/MiniHelpers.sol";
|
|
|
10
10
|
* @dev this contract is an abstract for its mainchain and sidechain variant
|
|
11
11
|
* PRINCIPLE:
|
|
12
12
|
* - All functions implemented in this contract should be either view or pure
|
|
13
|
-
* to ensure that no writing logic is
|
|
13
|
+
* to ensure that no writing logic is inherited by sidechain version
|
|
14
14
|
* - Mainchain version will handle the logic which are:
|
|
15
15
|
* + Deposit, withdraw, increase lock, increase amount
|
|
16
16
|
* + Mainchain logic will be ensured to have _totalSupply = linear sum of
|
|
@@ -25,6 +25,7 @@ abstract contract VotingEscrowTokenBase is IPVeToken {
|
|
|
25
25
|
|
|
26
26
|
uint128 public constant WEEK = 1 weeks;
|
|
27
27
|
uint128 public constant MAX_LOCK_TIME = 104 weeks;
|
|
28
|
+
uint128 public constant MIN_LOCK_TIME = 1 weeks;
|
|
28
29
|
|
|
29
30
|
VeBalance internal _totalSupply;
|
|
30
31
|
uint128 public lastSlopeChangeAppliedAt;
|
|
@@ -49,7 +50,7 @@ abstract contract VotingEscrowTokenBase is IPVeToken {
|
|
|
49
50
|
return MiniHelpers.isCurrentlyExpired(positionData[user].expiry);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
function
|
|
53
|
-
return (
|
|
53
|
+
function totalSupplyAndBalanceCurrent(address user) external returns (uint128, uint128) {
|
|
54
|
+
return (totalSupplyCurrent(), balanceOf(user));
|
|
54
55
|
}
|
|
55
56
|
}
|
|
@@ -8,6 +8,7 @@ import "../../interfaces/IPMarket.sol";
|
|
|
8
8
|
import "../../interfaces/IPMarketFactory.sol";
|
|
9
9
|
import "../../interfaces/IPMarketSwapCallback.sol";
|
|
10
10
|
|
|
11
|
+
import "../../libraries/OracleLib.sol";
|
|
11
12
|
import "../../libraries/math/LogExpMath.sol";
|
|
12
13
|
import "../../libraries/math/Math.sol";
|
|
13
14
|
import "../../libraries/helpers/MiniHelpers.sol";
|
|
@@ -16,8 +17,8 @@ import "../LiquidityMining/PendleGauge.sol";
|
|
|
16
17
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
|
-
|
|
20
|
-
- Internal balances totalPt & totalScy not
|
|
20
|
+
Invariance to maintain:
|
|
21
|
+
- Internal balances totalPt & totalScy not interfered by people transferring tokens in directly
|
|
21
22
|
- address(0) & address(this) should never have any rewards & activeBalance accounting done. This is
|
|
22
23
|
guaranteed by address(0) & address(this) check in each updateForTwo function
|
|
23
24
|
*/
|
|
@@ -27,15 +28,17 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
27
28
|
using MarketMathCore for MarketState;
|
|
28
29
|
using SafeERC20 for IERC20;
|
|
29
30
|
using PYIndexLib for IPYieldToken;
|
|
31
|
+
using OracleLib for OracleLib.Observation[65535];
|
|
30
32
|
|
|
31
33
|
struct MarketStorage {
|
|
32
34
|
int128 totalPt;
|
|
33
35
|
int128 totalScy;
|
|
34
36
|
// 1 SLOT = 256 bits
|
|
35
37
|
uint96 lastLnImpliedRate;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
uint16 observationIndex;
|
|
39
|
+
uint16 observationCardinality;
|
|
40
|
+
uint16 observationCardinalityNext;
|
|
41
|
+
// 1 SLOT = 144 bits
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
string private constant NAME = "Pendle Market";
|
|
@@ -52,6 +55,8 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
52
55
|
|
|
53
56
|
MarketStorage public _storage;
|
|
54
57
|
|
|
58
|
+
OracleLib.Observation[65535] public observations;
|
|
59
|
+
|
|
55
60
|
modifier notExpired() {
|
|
56
61
|
require(!isExpired(), "market expired");
|
|
57
62
|
_;
|
|
@@ -71,6 +76,9 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
71
76
|
SCY = ISuperComposableYield(PT.SCY());
|
|
72
77
|
YT = IPYieldToken(PT.YT());
|
|
73
78
|
|
|
79
|
+
(_storage.observationCardinality, _storage.observationCardinalityNext) = observations
|
|
80
|
+
.initialize(uint32(block.timestamp));
|
|
81
|
+
|
|
74
82
|
require(_scalarRoot > 0, "scalarRoot must be positive");
|
|
75
83
|
scalarRoot = _scalarRoot;
|
|
76
84
|
initialAnchor = _initialAnchor;
|
|
@@ -82,13 +90,8 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
82
90
|
* @notice PendleMarket allows users to provide in PT & SCY in exchange for LPs, which
|
|
83
91
|
* will grant LP holders more exchange fee over time
|
|
84
92
|
*/
|
|
85
|
-
function mint(address receiver)
|
|
86
|
-
|
|
87
|
-
nonReentrant
|
|
88
|
-
notExpired
|
|
89
|
-
returns (uint256 lpToAccount)
|
|
90
|
-
{
|
|
91
|
-
MarketState memory market = readState(true);
|
|
93
|
+
function mint(address receiver) external nonReentrant notExpired returns (uint256 netLpOut) {
|
|
94
|
+
MarketState memory market = readState();
|
|
92
95
|
PYIndex index = YT.newIndex();
|
|
93
96
|
|
|
94
97
|
uint256 scyDesired = IERC20(SCY).balanceOf(address(this)) - market.totalScy.Uint();
|
|
@@ -98,7 +101,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
98
101
|
uint256 scyUsed;
|
|
99
102
|
uint256 ptUsed;
|
|
100
103
|
|
|
101
|
-
(lpToReserve,
|
|
104
|
+
(lpToReserve, netLpOut, scyUsed, ptUsed) = market.addLiquidity(
|
|
102
105
|
index,
|
|
103
106
|
scyDesired,
|
|
104
107
|
ptDesired,
|
|
@@ -111,11 +114,11 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
111
114
|
_mint(address(1), lpToReserve);
|
|
112
115
|
}
|
|
113
116
|
|
|
114
|
-
_mint(receiver,
|
|
117
|
+
_mint(receiver, netLpOut);
|
|
115
118
|
|
|
116
119
|
_writeState(market);
|
|
117
120
|
|
|
118
|
-
emit Mint(receiver,
|
|
121
|
+
emit Mint(receiver, netLpOut, scyUsed, ptUsed);
|
|
119
122
|
}
|
|
120
123
|
|
|
121
124
|
/**
|
|
@@ -125,21 +128,21 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
125
128
|
function burn(address receiverScy, address receiverPt)
|
|
126
129
|
external
|
|
127
130
|
nonReentrant
|
|
128
|
-
returns (uint256
|
|
131
|
+
returns (uint256 netScyOut, uint256 netPtOut)
|
|
129
132
|
{
|
|
130
|
-
MarketState memory market = readState(
|
|
133
|
+
MarketState memory market = readState();
|
|
131
134
|
|
|
132
135
|
uint256 lpToRemove = balanceOf(address(this));
|
|
133
136
|
_burn(address(this), lpToRemove);
|
|
134
137
|
|
|
135
|
-
(
|
|
138
|
+
(netScyOut, netPtOut) = market.removeLiquidity(lpToRemove);
|
|
136
139
|
|
|
137
|
-
IERC20(SCY).safeTransfer(receiverScy,
|
|
138
|
-
IERC20(PT).safeTransfer(receiverPt,
|
|
140
|
+
if (receiverScy != address(this)) IERC20(SCY).safeTransfer(receiverScy, netScyOut);
|
|
141
|
+
if (receiverPt != address(this)) IERC20(PT).safeTransfer(receiverPt, netPtOut);
|
|
139
142
|
|
|
140
143
|
_writeState(market);
|
|
141
144
|
|
|
142
|
-
emit Burn(receiverScy, receiverPt, lpToRemove,
|
|
145
|
+
emit Burn(receiverScy, receiverPt, lpToRemove, netScyOut, netPtOut);
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
/**
|
|
@@ -157,7 +160,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
157
160
|
uint256 exactPtIn,
|
|
158
161
|
bytes calldata data
|
|
159
162
|
) external nonReentrant notExpired returns (uint256 netScyOut, uint256 netScyToReserve) {
|
|
160
|
-
MarketState memory market = readState(
|
|
163
|
+
MarketState memory market = readState();
|
|
161
164
|
|
|
162
165
|
(netScyOut, netScyToReserve) = market.swapExactPtForScy(
|
|
163
166
|
YT.newIndex(),
|
|
@@ -165,7 +168,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
165
168
|
block.timestamp
|
|
166
169
|
);
|
|
167
170
|
|
|
168
|
-
IERC20(SCY).safeTransfer(receiver, netScyOut);
|
|
171
|
+
if (receiver != address(this)) IERC20(SCY).safeTransfer(receiver, netScyOut);
|
|
169
172
|
IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
|
|
170
173
|
|
|
171
174
|
_writeState(market);
|
|
@@ -194,7 +197,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
194
197
|
uint256 exactPtOut,
|
|
195
198
|
bytes calldata data
|
|
196
199
|
) external nonReentrant notExpired returns (uint256 netScyIn, uint256 netScyToReserve) {
|
|
197
|
-
MarketState memory market = readState(
|
|
200
|
+
MarketState memory market = readState();
|
|
198
201
|
|
|
199
202
|
(netScyIn, netScyToReserve) = market.swapScyForExactPt(
|
|
200
203
|
YT.newIndex(),
|
|
@@ -202,7 +205,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
202
205
|
block.timestamp
|
|
203
206
|
);
|
|
204
207
|
|
|
205
|
-
IERC20(PT).safeTransfer(receiver, exactPtOut);
|
|
208
|
+
if (receiver != address(this)) IERC20(PT).safeTransfer(receiver, exactPtOut);
|
|
206
209
|
IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
|
|
207
210
|
|
|
208
211
|
_writeState(market);
|
|
@@ -222,7 +225,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
222
225
|
|
|
223
226
|
/// @notice force balances to match reserves
|
|
224
227
|
function skim() external nonReentrant {
|
|
225
|
-
MarketState memory market = readState(
|
|
228
|
+
MarketState memory market = readState();
|
|
226
229
|
uint256 excessPt = IERC20(PT).balanceOf(address(this)) - market.totalPt.Uint();
|
|
227
230
|
uint256 excessScy = IERC20(SCY).balanceOf(address(this)) - market.totalScy.Uint();
|
|
228
231
|
IERC20(PT).safeTransfer(market.treasury, excessPt);
|
|
@@ -237,64 +240,97 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
|
|
|
237
240
|
return _getRewardTokens();
|
|
238
241
|
}
|
|
239
242
|
|
|
240
|
-
|
|
241
|
-
|
|
243
|
+
/*///////////////////////////////////////////////////////////////
|
|
244
|
+
ORACLE
|
|
245
|
+
//////////////////////////////////////////////////////////////*/
|
|
246
|
+
|
|
247
|
+
function observe(uint32[] memory secondsAgos)
|
|
248
|
+
public
|
|
242
249
|
view
|
|
243
|
-
returns (
|
|
244
|
-
ISuperComposableYield _SCY,
|
|
245
|
-
IPPrincipalToken _PT,
|
|
246
|
-
IPYieldToken _YT
|
|
247
|
-
)
|
|
250
|
+
returns (uint216[] memory lnImpliedRateCumulative)
|
|
248
251
|
{
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
+
return
|
|
253
|
+
observations.observe(
|
|
254
|
+
uint32(block.timestamp),
|
|
255
|
+
secondsAgos,
|
|
256
|
+
_storage.lastLnImpliedRate,
|
|
257
|
+
_storage.observationIndex,
|
|
258
|
+
_storage.observationCardinality
|
|
259
|
+
);
|
|
252
260
|
}
|
|
253
261
|
|
|
254
|
-
function
|
|
255
|
-
|
|
262
|
+
function increaseObservationsCardinalityNext(uint16 cardinalityNext) external nonReentrant {
|
|
263
|
+
uint16 cardinalityNextOld = _storage.observationCardinalityNext;
|
|
264
|
+
uint16 cardinalityNextNew = observations.grow(cardinalityNextOld, cardinalityNext);
|
|
265
|
+
if (cardinalityNextOld != cardinalityNextNew) {
|
|
266
|
+
_storage.observationCardinalityNext = cardinalityNextNew;
|
|
267
|
+
emit IncreaseObservationCardinalityNext(cardinalityNextOld, cardinalityNextNew);
|
|
268
|
+
}
|
|
256
269
|
}
|
|
257
270
|
|
|
271
|
+
/*///////////////////////////////////////////////////////////////
|
|
272
|
+
READ/WRITE STATES
|
|
273
|
+
//////////////////////////////////////////////////////////////*/
|
|
274
|
+
|
|
258
275
|
/**
|
|
259
276
|
* @notice read the state of the market from storage into memory for gas-efficient manipulation
|
|
260
|
-
* @param updateRateOracle if set to true, the oracleRate will be updated, which will take ~6k of gas. If router wants
|
|
261
|
-
to do external calculations, normally this can be set to false
|
|
262
277
|
*/
|
|
263
|
-
function readState(
|
|
278
|
+
function readState() public view returns (MarketState memory market) {
|
|
264
279
|
market.totalPt = _storage.totalPt;
|
|
265
280
|
market.totalScy = _storage.totalScy;
|
|
266
281
|
market.totalLp = totalSupply().Int();
|
|
267
|
-
market.oracleRate = _storage.oracleRate;
|
|
268
282
|
|
|
269
|
-
(
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
market.rateOracleTimeWindow,
|
|
273
|
-
market.reserveFeePercent
|
|
274
|
-
) = IPMarketFactory(factory).marketConfig();
|
|
283
|
+
(market.treasury, market.lnFeeRateRoot, market.reserveFeePercent) = IPMarketFactory(
|
|
284
|
+
factory
|
|
285
|
+
).marketConfig();
|
|
275
286
|
|
|
276
287
|
market.scalarRoot = scalarRoot;
|
|
277
288
|
market.expiry = expiry;
|
|
278
289
|
|
|
279
290
|
market.lastLnImpliedRate = _storage.lastLnImpliedRate;
|
|
280
|
-
market.lastTradeTime = _storage.lastTradeTime;
|
|
281
|
-
|
|
282
|
-
if (updateRateOracle) {
|
|
283
|
-
// must happen after lastLnImpliedRate & lastTradeTime is filled
|
|
284
|
-
market.oracleRate = market.getNewRateOracle(block.timestamp);
|
|
285
|
-
}
|
|
286
291
|
}
|
|
287
292
|
|
|
288
293
|
/// @notice write back the state of the market from memory to storage
|
|
289
294
|
function _writeState(MarketState memory market) internal {
|
|
295
|
+
uint96 lastLnImpliedRate96 = market.lastLnImpliedRate.Uint96();
|
|
296
|
+
|
|
290
297
|
_storage.totalPt = market.totalPt.Int128();
|
|
291
298
|
_storage.totalScy = market.totalScy.Int128();
|
|
292
|
-
_storage.lastLnImpliedRate =
|
|
293
|
-
|
|
294
|
-
_storage.
|
|
299
|
+
_storage.lastLnImpliedRate = lastLnImpliedRate96;
|
|
300
|
+
|
|
301
|
+
(_storage.observationIndex, _storage.observationCardinality) = observations.write(
|
|
302
|
+
_storage.observationIndex,
|
|
303
|
+
uint32(block.timestamp),
|
|
304
|
+
lastLnImpliedRate96,
|
|
305
|
+
_storage.observationCardinality,
|
|
306
|
+
_storage.observationCardinalityNext
|
|
307
|
+
);
|
|
308
|
+
|
|
295
309
|
emit UpdateImpliedRate(block.timestamp, market.lastLnImpliedRate);
|
|
296
310
|
}
|
|
297
311
|
|
|
312
|
+
/*///////////////////////////////////////////////////////////////
|
|
313
|
+
TRIVIAL FUNCTIONS
|
|
314
|
+
//////////////////////////////////////////////////////////////*/
|
|
315
|
+
|
|
316
|
+
function readTokens()
|
|
317
|
+
external
|
|
318
|
+
view
|
|
319
|
+
returns (
|
|
320
|
+
ISuperComposableYield _SCY,
|
|
321
|
+
IPPrincipalToken _PT,
|
|
322
|
+
IPYieldToken _YT
|
|
323
|
+
)
|
|
324
|
+
{
|
|
325
|
+
_SCY = SCY;
|
|
326
|
+
_PT = PT;
|
|
327
|
+
_YT = YT;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
function isExpired() public view returns (bool) {
|
|
331
|
+
return MiniHelpers.isCurrentlyExpired(expiry);
|
|
332
|
+
}
|
|
333
|
+
|
|
298
334
|
/*///////////////////////////////////////////////////////////////
|
|
299
335
|
PENDLE GAUGE - RELATED
|
|
300
336
|
//////////////////////////////////////////////////////////////*/
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
2
|
pragma solidity 0.8.15;
|
|
3
3
|
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
|
4
|
-
import "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
|
5
4
|
|
|
6
5
|
import "../../interfaces/IPMarket.sol";
|
|
7
6
|
import "../../interfaces/IPYieldContractFactory.sol";
|
|
8
7
|
import "../../interfaces/IPMarketFactory.sol";
|
|
9
8
|
|
|
10
9
|
import "../../libraries/helpers/SSTORE2Deployer.sol";
|
|
11
|
-
import "../../periphery/
|
|
10
|
+
import "../../periphery/BoringOwnableUpgradeable.sol";
|
|
12
11
|
|
|
13
12
|
import "./PendleMarket.sol";
|
|
14
13
|
import "../LiquidityMining/PendleGauge.sol";
|
|
15
14
|
|
|
16
|
-
contract PendleMarketFactory is
|
|
15
|
+
contract PendleMarketFactory is BoringOwnableUpgradeable, IPMarketFactory {
|
|
17
16
|
using EnumerableSet for EnumerableSet.AddressSet;
|
|
18
17
|
|
|
19
18
|
struct MarketConfig {
|
|
20
19
|
address treasury;
|
|
21
20
|
uint96 lnFeeRateRoot;
|
|
22
21
|
// 1 SLOT = 256 bits
|
|
23
|
-
uint32 rateOracleTimeWindow;
|
|
24
22
|
uint8 reserveFeePercent;
|
|
25
|
-
// 1 SLOT =
|
|
23
|
+
// 1 SLOT = 8 bits
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
uint256 private constant MIN_RATE_ORACLE_TIME_WINDOW = 300 seconds;
|
|
@@ -41,28 +39,26 @@ contract PendleMarketFactory is PermissionsV2Upg, Initializable, IPMarketFactory
|
|
|
41
39
|
MarketConfig public marketConfig;
|
|
42
40
|
|
|
43
41
|
constructor(
|
|
44
|
-
address
|
|
45
|
-
|
|
46
|
-
address _treasury,
|
|
47
|
-
uint96 _lnFeeRateRoot,
|
|
48
|
-
uint32 _rateOracleTimeWindow,
|
|
49
|
-
uint8 _reserveFeePercent
|
|
50
|
-
) PermissionsV2Upg(_governanceManager) {
|
|
42
|
+
address _yieldContractFactory
|
|
43
|
+
) {
|
|
51
44
|
require(_yieldContractFactory != address(0), "zero address");
|
|
52
45
|
yieldContractFactory = _yieldContractFactory;
|
|
53
46
|
maxLnFeeRateRoot = uint256(LogExpMath.ln(int256((105 * Math.IONE) / 100))); // ln(1.05)
|
|
54
|
-
|
|
55
|
-
setTreasury(_treasury);
|
|
56
|
-
setlnFeeRateRoot(_lnFeeRateRoot);
|
|
57
|
-
setRateOracleTimeWindow(_rateOracleTimeWindow);
|
|
58
|
-
setReserveFeePercent(_reserveFeePercent);
|
|
59
47
|
}
|
|
60
48
|
|
|
61
49
|
function initialize(
|
|
50
|
+
address _treasury,
|
|
51
|
+
uint96 _lnFeeRateRoot,
|
|
52
|
+
uint8 _reserveFeePercent,
|
|
62
53
|
address newVePendle,
|
|
63
54
|
address newGaugeController,
|
|
64
55
|
bytes memory _marketCreationCode
|
|
65
|
-
) external
|
|
56
|
+
) external initializer {
|
|
57
|
+
__BoringOwnable_init();
|
|
58
|
+
setTreasury(_treasury);
|
|
59
|
+
setlnFeeRateRoot(_lnFeeRateRoot);
|
|
60
|
+
setReserveFeePercent(_reserveFeePercent);
|
|
61
|
+
|
|
66
62
|
require(newVePendle != address(0) && newGaugeController != address(0), "zero address");
|
|
67
63
|
vePendle = newVePendle;
|
|
68
64
|
gaugeController = newGaugeController;
|
|
@@ -104,25 +100,19 @@ contract PendleMarketFactory is PermissionsV2Upg, Initializable, IPMarketFactory
|
|
|
104
100
|
return marketConfig.treasury;
|
|
105
101
|
}
|
|
106
102
|
|
|
107
|
-
function setTreasury(address newTreasury) public
|
|
103
|
+
function setTreasury(address newTreasury) public onlyOwner {
|
|
108
104
|
require(newTreasury != address(0), "zero address");
|
|
109
105
|
marketConfig.treasury = newTreasury;
|
|
110
106
|
_emitNewMarketConfigEvent();
|
|
111
107
|
}
|
|
112
108
|
|
|
113
|
-
function setlnFeeRateRoot(uint96 newlnFeeRateRoot) public
|
|
109
|
+
function setlnFeeRateRoot(uint96 newlnFeeRateRoot) public onlyOwner {
|
|
114
110
|
require(newlnFeeRateRoot <= maxLnFeeRateRoot, "invalid fee rate root");
|
|
115
111
|
marketConfig.lnFeeRateRoot = newlnFeeRateRoot;
|
|
116
112
|
_emitNewMarketConfigEvent();
|
|
117
113
|
}
|
|
118
114
|
|
|
119
|
-
function
|
|
120
|
-
require(newRateOracleTimeWindow >= MIN_RATE_ORACLE_TIME_WINDOW, "invalid time window");
|
|
121
|
-
marketConfig.rateOracleTimeWindow = newRateOracleTimeWindow;
|
|
122
|
-
_emitNewMarketConfigEvent();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function setReserveFeePercent(uint8 newReserveFeePercent) public onlyGovernance {
|
|
115
|
+
function setReserveFeePercent(uint8 newReserveFeePercent) public onlyOwner {
|
|
126
116
|
require(newReserveFeePercent <= 100, "invalid reserve fee percent");
|
|
127
117
|
marketConfig.reserveFeePercent = newReserveFeePercent;
|
|
128
118
|
_emitNewMarketConfigEvent();
|
|
@@ -130,11 +120,6 @@ contract PendleMarketFactory is PermissionsV2Upg, Initializable, IPMarketFactory
|
|
|
130
120
|
|
|
131
121
|
function _emitNewMarketConfigEvent() internal {
|
|
132
122
|
MarketConfig memory local = marketConfig;
|
|
133
|
-
emit NewMarketConfig(
|
|
134
|
-
local.treasury,
|
|
135
|
-
local.lnFeeRateRoot,
|
|
136
|
-
local.rateOracleTimeWindow,
|
|
137
|
-
local.reserveFeePercent
|
|
138
|
-
);
|
|
123
|
+
emit NewMarketConfig(local.treasury, local.lnFeeRateRoot, local.reserveFeePercent);
|
|
139
124
|
}
|
|
140
125
|
}
|