@pendle/core-v2 0.6.8 → 0.7.0
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 +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +751 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
- package/build/artifacts/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol/WadRayMath.json +3 -3
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +27 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +761 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +635 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +609 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +653 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +622 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +622 -0
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/{ISuperComposableYield.sol/ISuperComposableYield.json → base-implementations/SCYBase.sol/SCYBase.json} +221 -141
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/{implementations → base-implementations}/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +247 -223
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.json +128 -0
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json → core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.json} +29 -33
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.json +193 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +255 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +318 -0
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +4 -0
- package/build/artifacts/contracts/{interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.json → core/LiquidityMining/PendleGauge.sol/PendleGauge.json} +57 -65
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +707 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.json +342 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +547 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +353 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.json +138 -0
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +4 -0
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +922 -0
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +345 -0
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +4 -0
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +254 -0
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -20
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +445 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +344 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +750 -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/ActionCore.sol/ActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +123 -77
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +39 -42
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +163 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +0 -13
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -14
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.json +10 -0
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +39 -0
- 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 +13 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.json +74 -0
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IVePToken.sol/IVePToken.json → ICelerMessageBus.sol/ICelerMessageBus.json} +21 -11
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +45 -0
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +4 -0
- package/build/artifacts/contracts/{core/PendleBaseToken.sol/PendleBaseToken.json → interfaces/IERC4626.sol/IERC4626.json} +53 -68
- package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +962 -0
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +122 -58
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +36 -21
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +116 -81
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +109 -0
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +132 -0
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.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 +35 -54
- package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +31 -0
- 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/IPPrincipalToken.sol/IPPrincipalToken.json +5 -5
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +99 -0
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +167 -0
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +148 -0
- 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 +85 -83
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPBaseToken.sol/IPBaseToken.json → IQiAvax.sol/IQiAvax.json} +106 -15
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +117 -0
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +117 -0
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +4 -0
- package/build/artifacts/contracts/{periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → interfaces/IRewardManager.sol/IRewardManager.json} +12 -14
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations/SCYBase.sol/SCYBase.json → interfaces/ISuperComposableYield.sol/ISuperComposableYield.json} +183 -181
- 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/IWXBTRFLY.sol/IWXBTRFLY.json +13 -0
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +13 -0
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +13 -0
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations → libraries}/RewardManager.sol/RewardManager.json +44 -33
- package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +101 -0
- package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol}/SCYIndexLib.json +3 -3
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield → libraries/SCY}/SCYUtils.sol/SCYUtils.json +3 -3
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{math/MarketMathAux.sol/MarketMathAux.json → VeBalanceLib.sol/VeBalanceLib.json} +4 -4
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +4 -0
- package/build/artifacts/contracts/{core/actions/base/ActionType.sol/ActionType.json → libraries/helpers/TokenHelper.sol/TokenHelper.json} +2 -2
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
- 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/Math.sol/Math.json +2 -2
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +10 -0
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol}/JoeLibrary.json +3 -3
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +24 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +862 -0
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +147 -0
- package/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +74 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +187 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +123 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +99 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +245 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +107 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +120 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +197 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +131 -0
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol +47 -0
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol +52 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol +141 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +30 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +22 -0
- package/contracts/core/LiquidityMining/PendleGauge.sol +118 -0
- package/contracts/core/LiquidityMining/README.md +63 -0
- package/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol +323 -0
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol +224 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +241 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +73 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol +53 -0
- package/contracts/core/{PendleMarket.sol → Market/PendleMarket.sol} +139 -103
- package/contracts/core/{PendleMarketFactory.sol → Market/PendleMarketFactory.sol} +62 -19
- package/contracts/core/PendleERC20.sol +358 -0
- package/contracts/core/PendleERC20Permit.sol +84 -0
- package/contracts/core/PendleRouter.sol +6 -12
- package/contracts/core/YieldContracts/InterestManagerYT.sol +87 -0
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +52 -0
- package/contracts/core/{PendleYieldContractFactory.sol → YieldContracts/PendleYieldContractFactory.sol} +46 -25
- package/contracts/core/YieldContracts/PendleYieldToken.sol +340 -0
- package/contracts/core/actions/ActionCallback.sol +63 -43
- package/contracts/core/actions/ActionCore.sol +95 -78
- package/contracts/core/actions/ActionYT.sol +35 -86
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +133 -78
- package/contracts/core/actions/base/ActionSCYAndPYBase.sol +31 -46
- package/contracts/core/actions/base/ActionSCYAndYTBase.sol +127 -45
- package/contracts/core/actions/base/CallbackHelper.sol +81 -0
- package/contracts/interfaces/IAToken.sol +11 -1
- package/contracts/interfaces/IAavePool.sol +1 -1
- package/contracts/interfaces/IAaveRewardsController.sol +1 -1
- package/contracts/interfaces/IBenQiComptroller.sol +3 -1
- package/contracts/interfaces/IBenQiInterestRateModel.sol +16 -0
- package/contracts/interfaces/ICelerMessageBus.sol +28 -0
- package/contracts/interfaces/ICelerMessageReceiverApp.sol +25 -0
- package/contracts/interfaces/IERC4626.sol +39 -0
- package/contracts/interfaces/IJoeRouter01.sol +1 -1
- package/contracts/interfaces/IJoeRouter02.sol +52 -0
- package/contracts/interfaces/IPActionCore.sol +44 -27
- package/contracts/interfaces/IPActionYT.sol +12 -9
- package/contracts/interfaces/IPAllAction.sol +2 -3
- package/contracts/interfaces/IPGaugeController.sol +22 -0
- package/contracts/interfaces/IPGaugeControllerMainchain.sol +12 -0
- package/contracts/interfaces/IPGovernanceManager.sol +1 -1
- package/contracts/interfaces/IPInterestManagerYT.sol +9 -0
- package/contracts/interfaces/IPMarket.sol +13 -13
- package/contracts/interfaces/IPMarketAddRemoveCallback.sol +3 -3
- package/contracts/interfaces/IPMarketFactory.sol +8 -1
- package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
- package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
- package/contracts/interfaces/IPPrincipalToken.sol +9 -5
- package/contracts/interfaces/IPRouterStatic.sol +1 -1
- package/contracts/interfaces/IPVeToken.sol +10 -5
- package/contracts/interfaces/IPVotingController.sol +21 -0
- package/contracts/interfaces/IPVotingEscrow.sol +14 -22
- package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
- package/contracts/interfaces/IPYieldToken.sol +17 -17
- package/contracts/interfaces/IQiAvax.sol +31 -0
- package/contracts/interfaces/IQiErc20.sol +1 -1
- package/contracts/interfaces/IQiToken.sol +22 -1
- package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
- package/contracts/interfaces/IRewardManager.sol +9 -0
- package/contracts/interfaces/ISuperComposableYield.sol +182 -0
- package/contracts/interfaces/IWETH.sol +1 -1
- package/contracts/interfaces/IWXBTRFLY.sol +3 -1
- package/contracts/interfaces/IWstETH.sol +3 -1
- package/contracts/interfaces/IYearnVault.sol +3 -1
- package/contracts/libraries/RewardManager.sol +78 -0
- package/contracts/libraries/RewardManagerAbstract.sol +81 -0
- package/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol} +8 -8
- package/contracts/libraries/SCY/SCYUtils.sol +18 -0
- package/contracts/libraries/VeBalanceLib.sol +114 -0
- package/contracts/libraries/helpers/ArrayLib.sol +65 -0
- package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
- package/contracts/libraries/helpers/MiniDeployer.sol +23 -0
- package/contracts/libraries/helpers/MiniHelpers.sol +15 -0
- package/contracts/libraries/helpers/TokenHelper.sol +105 -0
- package/contracts/libraries/math/LogExpMath.sol +59 -1
- package/contracts/libraries/math/MarketApproxLib.sol +167 -164
- package/contracts/libraries/math/MarketMathCore.sol +106 -25
- package/contracts/libraries/math/Math.sol +28 -21
- package/contracts/libraries/math/WeekMath.sol +19 -0
- package/contracts/libraries/solmate/Bytes32AddressLib.sol +14 -0
- package/contracts/libraries/solmate/LibRLP.sol +30 -0
- package/contracts/libraries/solmate/SSTORE2.sol +99 -0
- package/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol} +3 -2
- package/contracts/{periphery → libraries/traderjoe}/PendleJoeSwapHelperUpg.sol +8 -10
- package/contracts/{core → offchain-helpers}/RouterStatic.sol +24 -19
- package/contracts/periphery/PendleGovernanceManager.sol +1 -1
- package/contracts/periphery/PermissionsV2Upg.sol +1 -1
- package/package.json +1 -1
- package/typechain-types/ActionCore.ts +169 -96
- package/typechain-types/ActionSCYAndPTBase.ts +210 -0
- package/typechain-types/ActionSCYAndPYBase.ts +0 -13
- package/typechain-types/ActionSCYAndYTBase.ts +8 -21
- package/typechain-types/ActionYT.ts +73 -64
- package/typechain-types/BeaconProxy.ts +97 -0
- package/typechain-types/CelerReceiver.ts +267 -0
- package/typechain-types/CelerSender.ts +197 -0
- package/typechain-types/ERC1967Upgrade.ts +97 -0
- package/typechain-types/ERC20Permit.ts +521 -0
- package/typechain-types/IAToken.ts +55 -0
- package/typechain-types/IBeacon.ts +87 -0
- package/typechain-types/IBenQiComptroller.ts +13 -0
- package/typechain-types/IBenQiInterestRateModel.ts +162 -0
- package/typechain-types/ICelerMessageBus.ts +134 -0
- package/typechain-types/ICelerMessageReceiverApp.ts +120 -0
- package/typechain-types/IERC1822Proxiable.ts +87 -0
- package/typechain-types/IERC20Permit.ts +175 -0
- package/typechain-types/IERC4626.ts +463 -0
- package/typechain-types/IJoeRouter02.ts +1420 -0
- package/typechain-types/IPActionCore.ts +169 -83
- package/typechain-types/IPActionYT.ts +65 -43
- package/typechain-types/IPAllAction.ts +190 -137
- package/typechain-types/IPGauge.ts +104 -0
- package/typechain-types/IPGaugeController.ts +191 -0
- package/typechain-types/IPGaugeControllerMainchain.ts +236 -0
- package/typechain-types/IPMarket.ts +73 -74
- package/typechain-types/IPMarketFactory.ts +27 -0
- package/typechain-types/IPPrincipalToken.ts +8 -20
- package/typechain-types/IPVeToken.ts +198 -0
- package/typechain-types/IPVotingController.ts +179 -0
- package/typechain-types/IPVotingEscrow.ts +217 -0
- package/typechain-types/IPVotingEscrowController.ts +154 -0
- package/typechain-types/IPYieldToken.ts +176 -213
- package/typechain-types/IQiAvax.ts +551 -0
- package/typechain-types/IQiErc20.ts +171 -0
- package/typechain-types/IQiToken.ts +171 -0
- package/typechain-types/IRewardManager.ts +16 -87
- package/typechain-types/ISuperComposableYield.ts +283 -269
- package/typechain-types/IWXBTRFLY.ts +13 -0
- package/typechain-types/IWstETH.ts +13 -0
- package/typechain-types/IYearnVault.ts +13 -0
- package/typechain-types/PendleAaveV3SCY.ts +382 -477
- package/typechain-types/PendleBtrflyScy.ts +287 -348
- package/typechain-types/PendleERC20.ts +339 -0
- package/typechain-types/PendleERC20Permit.ts +443 -0
- package/typechain-types/PendleERC4626SCY.ts +801 -0
- package/typechain-types/PendleGauge.ts +276 -0
- package/typechain-types/PendleGaugeController.ts +346 -0
- package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
- package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
- package/typechain-types/PendleJoeLpSCY.ts +837 -0
- package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
- package/typechain-types/PendleMarket.ts +265 -151
- package/typechain-types/PendleMarketFactory.ts +111 -16
- package/typechain-types/PendleMarketRewards.ts +1317 -0
- package/typechain-types/PendlePrincipalToken.ts +103 -130
- package/typechain-types/PendleQiTokenHelper.ts +57 -0
- package/typechain-types/PendleQiTokenSCY.ts +991 -0
- package/typechain-types/PendleRouter.ts +0 -19
- package/typechain-types/PendleVotingController.ts +1042 -0
- package/typechain-types/PendleWstEthSCY.ts +813 -0
- package/typechain-types/PendleYearnVaultScy.ts +278 -339
- package/typechain-types/PendleYieldContractFactory.ts +43 -27
- package/typechain-types/PendleYieldToken.ts +297 -428
- package/typechain-types/RewardManager.ts +70 -69
- package/typechain-types/RewardManagerMini.ts +200 -0
- package/typechain-types/SCYBase.ts +276 -335
- package/typechain-types/SCYBaseWithRewards.ts +367 -424
- package/typechain-types/VotingControllerStorage.ts +507 -0
- package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
- package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
- package/typechain-types/VotingEscrowToken.ts +251 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionCore__factory.ts +122 -80
- package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +187 -0
- package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
- package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
- package/typechain-types/factories/ActionYT__factory.ts +39 -48
- package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
- package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
- package/typechain-types/factories/CelerSender__factory.ts +85 -0
- package/typechain-types/factories/ERC1967Upgrade__factory.ts +71 -0
- package/typechain-types/factories/ERC20Permit__factory.ts +368 -0
- package/typechain-types/factories/ERC20__factory.ts +1 -1
- package/typechain-types/factories/IAToken__factory.ts +39 -0
- package/typechain-types/factories/IBeacon__factory.ts +36 -0
- package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
- package/typechain-types/factories/IBenQiInterestRateModel__factory.ts +93 -0
- package/typechain-types/factories/ICelerMessageBus__factory.ts +68 -0
- package/typechain-types/factories/ICelerMessageReceiverApp__factory.ts +64 -0
- package/typechain-types/factories/IERC1822Proxiable__factory.ts +39 -0
- package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
- package/typechain-types/factories/IERC4626__factory.ts +330 -0
- package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
- package/typechain-types/factories/IPActionCore__factory.ts +122 -58
- package/typechain-types/factories/IPActionYT__factory.ts +36 -21
- package/typechain-types/factories/IPAllAction__factory.ts +116 -81
- package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
- package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
- package/typechain-types/factories/IPGauge__factory.ts +42 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
- package/typechain-types/factories/IPMarket__factory.ts +35 -54
- package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
- package/typechain-types/factories/IPVeToken__factory.ts +111 -0
- package/typechain-types/factories/IPVotingController__factory.ts +182 -0
- package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
- package/typechain-types/factories/IPVotingEscrow__factory.ts +163 -0
- package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
- package/typechain-types/factories/IQiAvax__factory.ts +362 -0
- package/typechain-types/factories/IQiErc20__factory.ts +117 -0
- package/typechain-types/factories/IQiToken__factory.ts +117 -0
- package/typechain-types/factories/IRewardManager__factory.ts +5 -47
- package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
- package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
- package/typechain-types/factories/IWstETH__factory.ts +13 -0
- package/typechain-types/factories/IYearnVault__factory.ts +13 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
- package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
- package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
- package/typechain-types/factories/PendleERC20__factory.ts +327 -0
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
- package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
- package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
- package/typechain-types/factories/PendleGaugeController__factory.ts +212 -0
- package/typechain-types/factories/PendleGauge__factory.ts +171 -0
- package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
- package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
- package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
- package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
- package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
- package/typechain-types/factories/PendleMarket__factory.ts +182 -94
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
- package/typechain-types/factories/PendleRouter__factory.ts +1 -23
- package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
- package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
- package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
- package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
- package/typechain-types/factories/RewardManager__factory.ts +43 -32
- package/typechain-types/factories/RouterStatic__factory.ts +1 -1
- package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
- package/typechain-types/factories/SCYBase__factory.ts +195 -176
- package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
- package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
- package/typechain-types/hardhat.d.ts +338 -131
- package/typechain-types/index.ts +92 -38
- package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
- package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
- package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
- package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
- package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
- package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
- package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
- package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
- package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
- package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.json +0 -113
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.json +0 -43
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.json +0 -61
- package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
- package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
- package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.json +0 -167
- package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
- package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
- package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
- package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
- package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
- package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
- package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
- package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
- package/contracts/core/PendleBaseToken.sol +0 -35
- package/contracts/core/PendlePrincipalToken.sol +0 -54
- package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
- package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
- package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
- package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
- package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
- package/contracts/core/PendleYieldToken.sol +0 -340
- package/contracts/core/actions/ActionRedeem.sol +0 -36
- package/contracts/core/actions/base/ActionType.sol +0 -11
- package/contracts/interfaces/IPActionRedeem.sol +0 -17
- package/contracts/interfaces/IPBaseToken.sol +0 -9
- package/contracts/interfaces/IPGauge.sol +0 -32
- package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
- package/contracts/interfaces/IPendleGauge.sol +0 -32
- package/contracts/interfaces/IVePToken.sol +0 -14
- package/contracts/interfaces/IVotingEscrowController.sol +0 -14
- package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
- package/contracts/libraries/math/MarketMathAux.sol +0 -101
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
pragma solidity 0.8.
|
|
3
|
-
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
9
|
-
import "
|
|
10
|
-
import "
|
|
11
|
-
|
|
12
|
-
import "
|
|
13
|
-
import "
|
|
14
|
-
import "
|
|
15
|
-
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
|
+
|
|
4
|
+
import "../PendleERC20.sol";
|
|
5
|
+
import "../../interfaces/IPPrincipalToken.sol";
|
|
6
|
+
import "../../interfaces/ISuperComposableYield.sol";
|
|
7
|
+
import "../../interfaces/IPMarket.sol";
|
|
8
|
+
import "../../interfaces/IPMarketFactory.sol";
|
|
9
|
+
import "../../interfaces/IPMarketSwapCallback.sol";
|
|
10
|
+
import "../../interfaces/IPMarketAddRemoveCallback.sol";
|
|
11
|
+
|
|
12
|
+
import "../../libraries/math/LogExpMath.sol";
|
|
13
|
+
import "../../libraries/math/Math.sol";
|
|
14
|
+
import "../../libraries/helpers/MiniHelpers.sol";
|
|
15
|
+
|
|
16
|
+
import "../LiquidityMining/PendleGauge.sol";
|
|
17
|
+
import "../PendleERC20Permit.sol";
|
|
16
18
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
17
19
|
|
|
18
20
|
// solhint-disable reason-string
|
|
19
|
-
|
|
21
|
+
/// Invariances to maintain:
|
|
22
|
+
/// - Internal balances totalPt & totalScy not interferred by people transferring tokens in directly
|
|
23
|
+
contract PendleMarket is PendleERC20Permit, PendleGauge, IPMarket {
|
|
20
24
|
using Math for uint256;
|
|
21
25
|
using Math for int256;
|
|
22
|
-
using Math for uint128;
|
|
23
|
-
using LogExpMath for uint256;
|
|
24
|
-
using MarketMathAux for MarketState;
|
|
25
26
|
using MarketMathCore for MarketState;
|
|
26
27
|
using SafeERC20 for IERC20;
|
|
28
|
+
using SCYIndexLib for ISuperComposableYield;
|
|
27
29
|
|
|
28
30
|
struct MarketStorage {
|
|
29
31
|
int128 totalPt;
|
|
@@ -32,8 +34,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
32
34
|
uint96 lastLnImpliedRate;
|
|
33
35
|
uint96 oracleRate;
|
|
34
36
|
uint32 lastTradeTime;
|
|
35
|
-
|
|
36
|
-
// 1 SLOT = 232 bits
|
|
37
|
+
// 1 SLOT = 224 bits
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
uint8 private constant _NOT_ENTERED = 1;
|
|
@@ -42,49 +43,47 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
42
43
|
string private constant NAME = "Pendle Market";
|
|
43
44
|
string private constant SYMBOL = "PENDLE-LPT";
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
IPPrincipalToken internal immutable PT;
|
|
47
|
+
ISuperComposableYield internal immutable SCY;
|
|
48
|
+
IPYieldToken internal immutable YT;
|
|
48
49
|
|
|
50
|
+
address public immutable factory;
|
|
51
|
+
uint256 public immutable expiry;
|
|
49
52
|
int256 public immutable scalarRoot;
|
|
50
53
|
int256 public immutable initialAnchor;
|
|
51
54
|
|
|
52
55
|
MarketStorage public _storage;
|
|
53
56
|
|
|
54
|
-
modifier
|
|
55
|
-
|
|
56
|
-
require(_storage._reentrancyStatus != _ENTERED, "ReentrancyGuard: reentrant call");
|
|
57
|
-
|
|
58
|
-
// Any calls to nonReentrant after this point will fail
|
|
59
|
-
_storage._reentrancyStatus = _ENTERED;
|
|
60
|
-
|
|
57
|
+
modifier notExpired() {
|
|
58
|
+
require(!isExpired(), "market expired");
|
|
61
59
|
_;
|
|
62
|
-
|
|
63
|
-
// By storing the original value once again, a refund is triggered (see
|
|
64
|
-
// https://eips.ethereum.org/EIPS/eip-2200)
|
|
65
|
-
_storage._reentrancyStatus = _NOT_ENTERED;
|
|
66
60
|
}
|
|
67
61
|
|
|
68
62
|
constructor(
|
|
69
63
|
address _PT,
|
|
70
64
|
int256 _scalarRoot,
|
|
71
|
-
int256 _initialAnchor
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
int256 _initialAnchor,
|
|
66
|
+
address _vePendle,
|
|
67
|
+
address _gaugeController
|
|
68
|
+
)
|
|
69
|
+
PendleERC20Permit(NAME, SYMBOL, 18)
|
|
70
|
+
PendleGauge(IPPrincipalToken(_PT).SCY(), _vePendle, _gaugeController)
|
|
71
|
+
{
|
|
72
|
+
PT = IPPrincipalToken(_PT);
|
|
73
|
+
SCY = ISuperComposableYield(PT.SCY());
|
|
74
|
+
YT = IPYieldToken(PT.YT());
|
|
75
|
+
|
|
76
|
+
require(_scalarRoot > 0, "scalarRoot must be positive");
|
|
76
77
|
scalarRoot = _scalarRoot;
|
|
77
78
|
initialAnchor = _initialAnchor;
|
|
78
|
-
|
|
79
|
+
expiry = IPPrincipalToken(_PT).expiry();
|
|
80
|
+
factory = msg.sender;
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
/**
|
|
82
84
|
* @notice PendleMarket allows users to provide in PT & SCY in exchange for LPs, which
|
|
83
|
-
* will grant LP holders more exchange fee over time
|
|
84
|
-
*
|
|
85
|
-
- Releases the proportional amount of LP to receiver
|
|
86
|
-
- Callback to msg.sender if data.length > 0
|
|
87
|
-
- Ensure that the corresponding amount of SCY & PT have been transferred to this address
|
|
85
|
+
* will grant LP holders more exchange fee over time. All the tokens must be transferred to
|
|
86
|
+
* this market prior to the call for LP to be minted. There is no flashAdd
|
|
88
87
|
* @param data bytes data to be sent in the callback
|
|
89
88
|
*/
|
|
90
89
|
function addLiquidity(
|
|
@@ -95,6 +94,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
95
94
|
)
|
|
96
95
|
external
|
|
97
96
|
nonReentrant
|
|
97
|
+
notExpired
|
|
98
98
|
returns (
|
|
99
99
|
uint256 lpToAccount,
|
|
100
100
|
uint256 scyUsed,
|
|
@@ -102,7 +102,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
102
102
|
)
|
|
103
103
|
{
|
|
104
104
|
MarketState memory market = readState(true);
|
|
105
|
-
SCYIndex index =
|
|
105
|
+
SCYIndex index = SCY.newIndex();
|
|
106
106
|
|
|
107
107
|
uint256 lpToReserve;
|
|
108
108
|
(lpToReserve, lpToAccount, scyUsed, ptUsed) = market.addLiquidity(
|
|
@@ -120,6 +120,14 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
120
120
|
|
|
121
121
|
_mint(receiver, lpToAccount);
|
|
122
122
|
|
|
123
|
+
_writeState(market);
|
|
124
|
+
|
|
125
|
+
require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
|
|
126
|
+
require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
|
|
127
|
+
|
|
128
|
+
emit AddLiquidity(receiver, lpToAccount, scyUsed, ptUsed);
|
|
129
|
+
|
|
130
|
+
// no flashAdd, we only do callback after all the tokens have been provided
|
|
123
131
|
if (data.length > 0) {
|
|
124
132
|
IPMarketAddRemoveCallback(msg.sender).addLiquidityCallback(
|
|
125
133
|
lpToAccount,
|
|
@@ -128,13 +136,6 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
128
136
|
data
|
|
129
137
|
);
|
|
130
138
|
}
|
|
131
|
-
|
|
132
|
-
require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
|
|
133
|
-
require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
|
|
134
|
-
|
|
135
|
-
_writeState(market);
|
|
136
|
-
|
|
137
|
-
emit AddLiquidity(receiver, lpToAccount, scyUsed, ptUsed);
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
/**
|
|
@@ -147,7 +148,8 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
147
148
|
* @param data bytes data to be sent in the callback
|
|
148
149
|
*/
|
|
149
150
|
function removeLiquidity(
|
|
150
|
-
address
|
|
151
|
+
address receiverScy,
|
|
152
|
+
address receiverPt,
|
|
151
153
|
uint256 lpToRemove,
|
|
152
154
|
bytes calldata data
|
|
153
155
|
) external nonReentrant returns (uint256 scyToAccount, uint256 ptToAccount) {
|
|
@@ -155,8 +157,10 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
155
157
|
|
|
156
158
|
(scyToAccount, ptToAccount) = market.removeLiquidity(lpToRemove, true);
|
|
157
159
|
|
|
158
|
-
IERC20(SCY).safeTransfer(
|
|
159
|
-
IERC20(PT).safeTransfer(
|
|
160
|
+
IERC20(SCY).safeTransfer(receiverScy, scyToAccount);
|
|
161
|
+
IERC20(PT).safeTransfer(receiverPt, ptToAccount);
|
|
162
|
+
|
|
163
|
+
_writeState(market);
|
|
160
164
|
|
|
161
165
|
if (data.length > 0) {
|
|
162
166
|
IPMarketAddRemoveCallback(msg.sender).removeLiquidityCallback(
|
|
@@ -167,10 +171,10 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
167
171
|
);
|
|
168
172
|
}
|
|
169
173
|
|
|
174
|
+
// this checks enough lp has been transferred in
|
|
170
175
|
_burn(address(this), lpToRemove);
|
|
171
176
|
|
|
172
|
-
|
|
173
|
-
emit RemoveLiquidity(receiver, lpToRemove, scyToAccount, ptToAccount);
|
|
177
|
+
emit RemoveLiquidity(receiverScy, receiverPt, lpToRemove, scyToAccount, ptToAccount);
|
|
174
178
|
}
|
|
175
179
|
|
|
176
180
|
/**
|
|
@@ -186,31 +190,27 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
186
190
|
function swapExactPtForScy(
|
|
187
191
|
address receiver,
|
|
188
192
|
uint256 exactPtIn,
|
|
189
|
-
uint256 minScyOut,
|
|
190
193
|
bytes calldata data
|
|
191
|
-
) external nonReentrant returns (uint256 netScyOut, uint256 netScyToReserve) {
|
|
192
|
-
require(block.timestamp < expiry, "MARKET_EXPIRED");
|
|
193
|
-
|
|
194
|
+
) external nonReentrant notExpired returns (uint256 netScyOut, uint256 netScyToReserve) {
|
|
194
195
|
MarketState memory market = readState(true);
|
|
195
196
|
|
|
196
197
|
(netScyOut, netScyToReserve) = market.swapExactPtForScy(
|
|
197
|
-
|
|
198
|
+
SCY.newIndex(),
|
|
198
199
|
exactPtIn,
|
|
199
|
-
block.timestamp
|
|
200
|
-
true
|
|
200
|
+
block.timestamp
|
|
201
201
|
);
|
|
202
|
-
require(netScyOut >= minScyOut, "insufficient scy out");
|
|
203
202
|
|
|
204
203
|
IERC20(SCY).safeTransfer(receiver, netScyOut);
|
|
205
204
|
IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
|
|
206
205
|
|
|
206
|
+
_writeState(market);
|
|
207
|
+
|
|
207
208
|
if (data.length > 0) {
|
|
208
209
|
IPMarketSwapCallback(msg.sender).swapCallback(exactPtIn.neg(), netScyOut.Int(), data);
|
|
209
210
|
}
|
|
210
211
|
|
|
211
212
|
// have received enough PT
|
|
212
213
|
require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
|
|
213
|
-
_writeState(market);
|
|
214
214
|
|
|
215
215
|
emit Swap(receiver, exactPtIn.neg(), netScyOut.Int(), netScyToReserve);
|
|
216
216
|
}
|
|
@@ -227,44 +227,46 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
227
227
|
function swapScyForExactPt(
|
|
228
228
|
address receiver,
|
|
229
229
|
uint256 exactPtOut,
|
|
230
|
-
uint256 maxScyIn,
|
|
231
230
|
bytes calldata data
|
|
232
|
-
) external nonReentrant returns (uint256 netScyIn, uint256 netScyToReserve) {
|
|
233
|
-
require(block.timestamp < expiry, "MARKET_EXPIRED");
|
|
234
|
-
|
|
231
|
+
) external nonReentrant notExpired returns (uint256 netScyIn, uint256 netScyToReserve) {
|
|
235
232
|
MarketState memory market = readState(true);
|
|
236
233
|
|
|
237
234
|
(netScyIn, netScyToReserve) = market.swapScyForExactPt(
|
|
238
|
-
|
|
235
|
+
SCY.newIndex(),
|
|
239
236
|
exactPtOut,
|
|
240
|
-
block.timestamp
|
|
241
|
-
true
|
|
237
|
+
block.timestamp
|
|
242
238
|
);
|
|
243
|
-
require(netScyIn <= maxScyIn, "scy in exceed limit");
|
|
244
239
|
|
|
245
240
|
IERC20(PT).safeTransfer(receiver, exactPtOut);
|
|
246
241
|
IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
|
|
247
242
|
|
|
243
|
+
_writeState(market);
|
|
244
|
+
|
|
248
245
|
if (data.length > 0) {
|
|
249
246
|
IPMarketSwapCallback(msg.sender).swapCallback(exactPtOut.Int(), netScyIn.neg(), data);
|
|
250
247
|
}
|
|
251
248
|
|
|
252
249
|
// have received enough SCY
|
|
253
250
|
require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
|
|
254
|
-
_writeState(market);
|
|
255
251
|
|
|
256
252
|
emit Swap(receiver, exactPtOut.Int(), netScyIn.neg(), netScyToReserve);
|
|
257
253
|
}
|
|
258
254
|
|
|
259
|
-
/// @
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
255
|
+
/// @notice force balances to match reserves
|
|
256
|
+
function skim() external nonReentrant {
|
|
257
|
+
MarketState memory market = readState(true);
|
|
258
|
+
uint256 excessPt = IERC20(PT).balanceOf(address(this)) - market.totalPt.Uint();
|
|
259
|
+
uint256 excessScy = IERC20(SCY).balanceOf(address(this)) - market.totalScy.Uint();
|
|
260
|
+
IERC20(PT).safeTransfer(market.treasury, excessPt);
|
|
261
|
+
IERC20(SCY).safeTransfer(market.treasury, excessScy);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function redeemRewards(address user) external nonReentrant returns (uint256[] memory) {
|
|
265
|
+
return _redeemRewards(user);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function getRewardTokens() external view returns (address[] memory) {
|
|
269
|
+
return _getRewardTokens();
|
|
268
270
|
}
|
|
269
271
|
|
|
270
272
|
function readTokens()
|
|
@@ -276,18 +278,25 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
276
278
|
IPYieldToken _YT
|
|
277
279
|
)
|
|
278
280
|
{
|
|
279
|
-
_SCY =
|
|
280
|
-
_PT =
|
|
281
|
-
_YT =
|
|
281
|
+
_SCY = SCY;
|
|
282
|
+
_PT = PT;
|
|
283
|
+
_YT = YT;
|
|
282
284
|
}
|
|
283
285
|
|
|
284
|
-
function
|
|
285
|
-
|
|
286
|
+
function isExpired() public view returns (bool) {
|
|
287
|
+
return MiniHelpers.isCurrentlyExpired(expiry);
|
|
288
|
+
}
|
|
286
289
|
|
|
287
|
-
|
|
288
|
-
|
|
290
|
+
/**
|
|
291
|
+
* @notice read the state of the market from storage into memory for gas-efficient manipulation
|
|
292
|
+
* @param updateRateOracle if set to true, the oracleRate will be updated, which will take ~6k of gas. If router wants
|
|
293
|
+
to do external calculations, normally this can be set to false
|
|
294
|
+
*/
|
|
295
|
+
function readState(bool updateRateOracle) public view returns (MarketState memory market) {
|
|
296
|
+
market.totalPt = _storage.totalPt;
|
|
297
|
+
market.totalScy = _storage.totalScy;
|
|
289
298
|
market.totalLp = totalSupply().Int();
|
|
290
|
-
market.oracleRate =
|
|
299
|
+
market.oracleRate = _storage.oracleRate;
|
|
291
300
|
|
|
292
301
|
(
|
|
293
302
|
market.treasury,
|
|
@@ -299,25 +308,52 @@ contract PendleMarket is PendleBaseToken, IPMarket {
|
|
|
299
308
|
market.scalarRoot = scalarRoot;
|
|
300
309
|
market.expiry = expiry;
|
|
301
310
|
|
|
302
|
-
market.lastLnImpliedRate =
|
|
303
|
-
market.lastTradeTime =
|
|
311
|
+
market.lastLnImpliedRate = _storage.lastLnImpliedRate;
|
|
312
|
+
market.lastTradeTime = _storage.lastTradeTime;
|
|
304
313
|
|
|
305
314
|
if (updateRateOracle) {
|
|
315
|
+
// must happen after lastLnImpliedRate & lastTradeTime is filled
|
|
306
316
|
market.oracleRate = market.getNewRateOracle(block.timestamp);
|
|
307
317
|
}
|
|
308
318
|
}
|
|
309
319
|
|
|
320
|
+
/// @notice write back the state of the market from memory to storage
|
|
310
321
|
function _writeState(MarketState memory market) internal {
|
|
311
|
-
|
|
322
|
+
_storage.totalPt = market.totalPt.Int128();
|
|
323
|
+
_storage.totalScy = market.totalScy.Int128();
|
|
324
|
+
_storage.lastLnImpliedRate = market.lastLnImpliedRate.Uint96();
|
|
325
|
+
_storage.oracleRate = market.oracleRate.Uint96();
|
|
326
|
+
_storage.lastTradeTime = market.lastTradeTime.Uint32();
|
|
327
|
+
emit UpdateImpliedRate(block.timestamp, market.lastLnImpliedRate);
|
|
328
|
+
}
|
|
312
329
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
tempStore.oracleRate = market.oracleRate.Uint96();
|
|
317
|
-
tempStore.lastTradeTime = market.lastTradeTime.Uint32();
|
|
330
|
+
/*///////////////////////////////////////////////////////////////
|
|
331
|
+
PENDLE GAUGE - RELATED
|
|
332
|
+
//////////////////////////////////////////////////////////////*/
|
|
318
333
|
|
|
319
|
-
|
|
334
|
+
function _stakedBalance(address user) internal view override returns (uint256) {
|
|
335
|
+
return balanceOf(user);
|
|
336
|
+
}
|
|
320
337
|
|
|
321
|
-
|
|
338
|
+
function _totalStaked() internal view override returns (uint256) {
|
|
339
|
+
return totalSupply();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// solhint-disable-next-line ordering
|
|
343
|
+
function _beforeTokenTransfer(
|
|
344
|
+
address from,
|
|
345
|
+
address to,
|
|
346
|
+
uint256 amount
|
|
347
|
+
) internal override(PendleERC20, PendleGauge) {
|
|
348
|
+
PendleGauge._beforeTokenTransfer(from, to, amount);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// solhint-disable-next-line ordering
|
|
352
|
+
function _afterTokenTransfer(
|
|
353
|
+
address from,
|
|
354
|
+
address to,
|
|
355
|
+
uint256 amount
|
|
356
|
+
) internal override(PendleERC20, PendleGauge) {
|
|
357
|
+
PendleGauge._afterTokenTransfer(from, to, amount);
|
|
322
358
|
}
|
|
323
359
|
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
pragma solidity 0.8.
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
3
|
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
|
4
|
-
import "
|
|
5
|
-
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
4
|
+
import "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
|
5
|
+
|
|
6
|
+
import "../../interfaces/IPMarket.sol";
|
|
7
|
+
import "../../interfaces/IPYieldContractFactory.sol";
|
|
8
|
+
import "../../interfaces/IPMarketFactory.sol";
|
|
9
|
+
|
|
10
|
+
import "../../libraries/helpers/MiniDeployer.sol";
|
|
11
|
+
import "../../periphery/PermissionsV2Upg.sol";
|
|
12
|
+
|
|
8
13
|
import "./PendleMarket.sol";
|
|
14
|
+
import "../LiquidityMining/PendleGauge.sol";
|
|
9
15
|
|
|
10
|
-
contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
16
|
+
contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, IPMarketFactory {
|
|
11
17
|
using EnumerableSet for EnumerableSet.AddressSet;
|
|
12
18
|
|
|
13
19
|
struct MarketConfig {
|
|
@@ -19,11 +25,18 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
|
19
25
|
// 1 SLOT = 40 bits
|
|
20
26
|
}
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
uint256 private constant MIN_RATE_ORACLE_TIME_WINDOW = 300 seconds;
|
|
23
29
|
|
|
24
30
|
address public immutable yieldContractFactory;
|
|
31
|
+
address public immutable marketCreationCodePointer;
|
|
25
32
|
uint256 public immutable maxLnFeeRateRoot;
|
|
26
|
-
|
|
33
|
+
|
|
34
|
+
// PT -> scalarRoot -> initialAnchor
|
|
35
|
+
mapping(address => mapping(int256 => mapping(int256 => address))) internal markets;
|
|
36
|
+
EnumerableSet.AddressSet internal allMarkets;
|
|
37
|
+
|
|
38
|
+
address public vePendle;
|
|
39
|
+
address public gaugeController;
|
|
27
40
|
|
|
28
41
|
MarketConfig public marketConfig;
|
|
29
42
|
|
|
@@ -33,7 +46,8 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
|
33
46
|
address _treasury,
|
|
34
47
|
uint96 _lnFeeRateRoot,
|
|
35
48
|
uint32 _rateOracleTimeWindow,
|
|
36
|
-
uint8 _reserveFeePercent
|
|
49
|
+
uint8 _reserveFeePercent,
|
|
50
|
+
bytes memory _marketCreationCode
|
|
37
51
|
) PermissionsV2Upg(_governanceManager) {
|
|
38
52
|
require(_yieldContractFactory != address(0), "zero address");
|
|
39
53
|
yieldContractFactory = _yieldContractFactory;
|
|
@@ -43,6 +57,17 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
|
43
57
|
setlnFeeRateRoot(_lnFeeRateRoot);
|
|
44
58
|
setRateOracleTimeWindow(_rateOracleTimeWindow);
|
|
45
59
|
setReserveFeePercent(_reserveFeePercent);
|
|
60
|
+
marketCreationCodePointer = _setCreationCode(_marketCreationCode);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function initialize(address newVePendle, address newGaugeController)
|
|
64
|
+
external
|
|
65
|
+
onlyGovernance
|
|
66
|
+
initializer
|
|
67
|
+
{
|
|
68
|
+
require(newVePendle != address(0) && newGaugeController != address(0), "zero address");
|
|
69
|
+
vePendle = newVePendle;
|
|
70
|
+
gaugeController = newGaugeController;
|
|
46
71
|
}
|
|
47
72
|
|
|
48
73
|
/**
|
|
@@ -54,23 +79,27 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
|
54
79
|
int256 scalarRoot,
|
|
55
80
|
int256 initialAnchor
|
|
56
81
|
) external returns (address market) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
82
|
+
require(IPYieldContractFactory(yieldContractFactory).isPT(PT), "Invalid PT");
|
|
83
|
+
require(vePendle != address(0), "vePendle unset");
|
|
84
|
+
require(gaugeController != address(0), "gaugeController unset");
|
|
60
85
|
require(
|
|
61
|
-
|
|
62
|
-
"
|
|
86
|
+
markets[PT][scalarRoot][initialAnchor] == address(0),
|
|
87
|
+
"duplicated creation params"
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
market = _deployWithArgs(
|
|
91
|
+
marketCreationCodePointer,
|
|
92
|
+
abi.encode(PT, scalarRoot, initialAnchor, vePendle, gaugeController)
|
|
63
93
|
);
|
|
64
94
|
|
|
65
|
-
|
|
66
|
-
require(
|
|
95
|
+
markets[PT][scalarRoot][initialAnchor] = market;
|
|
96
|
+
require(allMarkets.add(market), "IE market can't be added");
|
|
67
97
|
|
|
68
98
|
emit CreateNewMarket(PT, scalarRoot, initialAnchor);
|
|
69
99
|
}
|
|
70
100
|
|
|
71
101
|
function isValidMarket(address market) external view returns (bool) {
|
|
72
|
-
|
|
73
|
-
return markets[PT].contains(market);
|
|
102
|
+
return allMarkets.contains(market);
|
|
74
103
|
}
|
|
75
104
|
|
|
76
105
|
function treasury() external view returns (address) {
|
|
@@ -80,20 +109,34 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
|
|
|
80
109
|
function setTreasury(address newTreasury) public onlyGovernance {
|
|
81
110
|
require(newTreasury != address(0), "zero address");
|
|
82
111
|
marketConfig.treasury = newTreasury;
|
|
112
|
+
_emitNewMarketConfigEvent();
|
|
83
113
|
}
|
|
84
114
|
|
|
85
115
|
function setlnFeeRateRoot(uint96 newlnFeeRateRoot) public onlyGovernance {
|
|
86
116
|
require(newlnFeeRateRoot <= maxLnFeeRateRoot, "invalid fee rate root");
|
|
87
117
|
marketConfig.lnFeeRateRoot = newlnFeeRateRoot;
|
|
118
|
+
_emitNewMarketConfigEvent();
|
|
88
119
|
}
|
|
89
120
|
|
|
90
121
|
function setRateOracleTimeWindow(uint32 newRateOracleTimeWindow) public onlyGovernance {
|
|
91
|
-
require(newRateOracleTimeWindow >=
|
|
122
|
+
require(newRateOracleTimeWindow >= MIN_RATE_ORACLE_TIME_WINDOW, "invalid time window");
|
|
92
123
|
marketConfig.rateOracleTimeWindow = newRateOracleTimeWindow;
|
|
124
|
+
_emitNewMarketConfigEvent();
|
|
93
125
|
}
|
|
94
126
|
|
|
95
127
|
function setReserveFeePercent(uint8 newReserveFeePercent) public onlyGovernance {
|
|
96
128
|
require(newReserveFeePercent <= 100, "invalid reserve fee percent");
|
|
97
129
|
marketConfig.reserveFeePercent = newReserveFeePercent;
|
|
130
|
+
_emitNewMarketConfigEvent();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function _emitNewMarketConfigEvent() internal {
|
|
134
|
+
MarketConfig memory local = marketConfig;
|
|
135
|
+
emit NewMarketConfig(
|
|
136
|
+
local.treasury,
|
|
137
|
+
local.lnFeeRateRoot,
|
|
138
|
+
local.rateOracleTimeWindow,
|
|
139
|
+
local.reserveFeePercent
|
|
140
|
+
);
|
|
98
141
|
}
|
|
99
142
|
}
|