@pendle/core-v2 0.8.0-beta-12 → 0.8.1-gamma
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 +39 -7
- 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 +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +833 -0
- 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 +39 -7
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +723 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +723 -0
- 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 +38 -6
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +864 -0
- 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 +56 -6
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +38 -6
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +784 -0
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +36 -4
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +36 -4
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
- 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 +2 -2
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +242 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerSidechain.sol → PendleGaugeControllerSidechainUpg.sol}/PendleGaugeControllerSidechainUpg.json +3 -3
- 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 +46 -40
- 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 +0 -13
- 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 +66 -4
- 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 +26 -2
- 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 +24 -0
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
- 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 -77
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +21 -96
- 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 +2 -2
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
- 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/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 +4 -0
- package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.json +162 -0
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.json +87 -0
- 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 +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- 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/IPInterestManagerYT.sol/IPInterestManagerYT.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- 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/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +38 -23
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +24 -0
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- 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 +27 -27
- 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/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.json +199 -0
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.json +168 -0
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.json +92 -0
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.json +137 -0
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.json +135 -0
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.json +63 -0
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +36 -4
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.json +252 -0
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.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/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/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
- 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 +4 -0
- package/build/artifacts/contracts/libraries/{SCY/SCYIndex.sol/SCYIndexLib.json → helpers/PYIndex.sol/PYIndexLib.json} +4 -4
- 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/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 +1 -1
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +209 -41
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +13 -3
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +242 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +14 -10
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +146 -0
- package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +170 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +12 -2
- package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +194 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +41 -10
- package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +12 -8
- package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +184 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +10 -12
- package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +1 -2
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +20 -10
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +3 -1
- package/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerMainchain.sol → PendleGaugeControllerMainchainUpg.sol} +0 -0
- package/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerSidechain.sol → PendleGaugeControllerSidechainUpg.sol} +0 -0
- package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
- package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +41 -29
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +4 -10
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +33 -16
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +2 -4
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +5 -1
- package/contracts/core/Market/PendleMarket.sol +4 -5
- package/contracts/core/Market/PendleMarketFactory.sol +2 -1
- package/contracts/core/PendleERC20.sol +1 -1
- package/contracts/core/YieldContracts/InterestManagerYT.sol +0 -2
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +2 -2
- package/contracts/core/YieldContracts/PendleYieldToken.sol +24 -32
- package/contracts/core/actions/ActionCallback.sol +10 -8
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +10 -9
- package/contracts/core/actions/base/ActionSCYAndYTBase.sol +5 -4
- package/contracts/core/actions/base/CallbackHelper.sol +1 -1
- package/contracts/interfaces/IEulerEToken.sol +60 -0
- package/contracts/interfaces/IEulerMarkets.sol +46 -0
- package/contracts/interfaces/IPGaugeController.sol +1 -1
- package/contracts/interfaces/IPInterestManagerYT.sol +1 -1
- package/contracts/interfaces/IPMarket.sol +1 -0
- package/contracts/interfaces/IPRouterStatic.sol +17 -10
- package/contracts/interfaces/IPVeToken.sol +2 -0
- package/contracts/interfaces/IPYieldToken.sol +2 -2
- package/contracts/interfaces/ISAvax.sol +61 -0
- package/contracts/interfaces/ISJoe.sol +60 -0
- package/contracts/interfaces/IStETH.sol +14 -0
- package/contracts/interfaces/IStargateLPStaking.sol +47 -0
- package/contracts/interfaces/IStargatePool.sol +49 -0
- package/contracts/interfaces/IStargateRouter.sol +37 -0
- package/contracts/interfaces/ISuperComposableYield.sol +6 -9
- package/contracts/interfaces/IWAvax.sol +34 -0
- package/contracts/libraries/RewardManager.sol +2 -3
- package/contracts/libraries/RewardManagerAbstract.sol +1 -0
- package/contracts/libraries/VeBalanceLib.sol +13 -0
- package/contracts/libraries/helpers/ArrayLib.sol +0 -17
- package/contracts/libraries/helpers/PYIndex.sol +69 -0
- package/contracts/libraries/helpers/TokenHelper.sol +4 -2
- package/contracts/libraries/math/LogExpMath.sol +46 -44
- package/contracts/libraries/math/MarketApproxLib.sol +10 -12
- package/contracts/libraries/math/MarketMathCore.sol +24 -15
- package/contracts/libraries/math/Math.sol +14 -0
- package/contracts/offchain-helpers/RouterStatic.sol +177 -66
- package/deployments/43113-benqi.json +2 -2
- package/deployments/43113-core.json +7 -7
- package/deployments/43113-markets/benqi-market-599408.json +7 -0
- package/deployments/43113-markets/benqi-market-93bbf0.json +7 -0
- package/deployments/80001-benqi.json +2 -2
- package/deployments/80001-core.json +6 -6
- package/deployments/80001-markets/benqi-market-007811.json +7 -0
- package/deployments/80001-markets/benqi-market-3fe528.json +7 -0
- package/package.json +3 -3
- package/typechain-types/CelerSenderUpg.ts +16 -16
- package/typechain-types/IERC20Upgradeable.ts +300 -0
- package/typechain-types/IEulerEToken.ts +320 -0
- package/typechain-types/IEulerMarkets.ts +204 -0
- package/typechain-types/IPInterestManagerYT.ts +3 -3
- package/typechain-types/IPRouterStatic.ts +75 -97
- package/typechain-types/IPVeToken.ts +34 -0
- package/typechain-types/IPYieldToken.ts +47 -47
- package/typechain-types/ISAvax.ts +430 -0
- package/typechain-types/ISJoe.ts +340 -0
- package/typechain-types/IStETH.ts +201 -0
- package/typechain-types/IStargateLPStaking.ts +108 -0
- package/typechain-types/IStargatePool.ts +94 -0
- package/typechain-types/ISuperComposableYield.ts +72 -26
- package/typechain-types/IWAvax.ts +380 -0
- package/typechain-types/PendleAaveV3SCY.ts +74 -28
- package/typechain-types/PendleERC4626SCY.ts +73 -27
- package/typechain-types/PendleEulerSCY.ts +965 -0
- package/typechain-types/PendlePrincipalToken.ts +0 -104
- package/typechain-types/PendleQiSAvaxSCY.ts +1098 -0
- package/typechain-types/PendleQiTokenSCY.ts +74 -28
- package/typechain-types/PendleSAvaxSCY.ts +962 -0
- package/typechain-types/PendleSJoeSCY.ts +1053 -0
- package/typechain-types/PendleStargatePool.ts +73 -27
- package/typechain-types/PendleStargateSCY.ts +1135 -0
- package/typechain-types/PendleVotingControllerUpg.ts +88 -75
- package/typechain-types/PendleWstEthSCY.ts +86 -27
- package/typechain-types/PendleYearnVaultScy.ts +73 -27
- package/typechain-types/PendleYieldToken.ts +44 -148
- package/typechain-types/RouterStatic.ts +327 -253
- package/typechain-types/SCYBase.ts +73 -27
- package/typechain-types/SCYBaseWithRewards.ts +73 -27
- package/typechain-types/VotingControllerStorageUpg.ts +0 -21
- package/typechain-types/VotingEscrowPendleMainchain.ts +118 -16
- package/typechain-types/VotingEscrowPendleSidechain.ts +34 -0
- package/typechain-types/VotingEscrowTokenBase.ts +34 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionCore__factory.ts +1 -1
- package/typechain-types/factories/ActionYT__factory.ts +1 -1
- package/typechain-types/factories/CelerSenderUpg__factory.ts +2 -2
- package/typechain-types/factories/IERC20Upgradeable__factory.ts +209 -0
- package/typechain-types/factories/IEulerEToken__factory.ts +174 -0
- package/typechain-types/factories/IEulerMarkets__factory.ts +99 -0
- package/typechain-types/factories/IPInterestManagerYT__factory.ts +1 -1
- package/typechain-types/factories/IPRouterStatic__factory.ts +38 -23
- package/typechain-types/factories/IPVeToken__factory.ts +24 -0
- package/typechain-types/factories/IPYieldToken__factory.ts +27 -27
- package/typechain-types/factories/ISAvax__factory.ts +208 -0
- package/typechain-types/factories/ISJoe__factory.ts +177 -0
- package/typechain-types/factories/IStETH__factory.ts +101 -0
- package/typechain-types/factories/IStargateLPStaking__factory.ts +90 -0
- package/typechain-types/factories/IStargatePool__factory.ts +79 -0
- package/typechain-types/factories/ISuperComposableYield__factory.ts +36 -4
- package/typechain-types/factories/IWAvax__factory.ts +261 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +38 -6
- package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
- package/typechain-types/factories/PendleERC20__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +37 -5
- package/typechain-types/factories/PendleEulerSCY__factory.ts +796 -0
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -76
- package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +917 -0
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +38 -6
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleSAvaxSCY__factory.ts +796 -0
- package/typechain-types/factories/PendleSJoeSCY__factory.ts +845 -0
- package/typechain-types/factories/PendleStargatePool__factory.ts +37 -5
- package/typechain-types/factories/PendleStargateSCY__factory.ts +952 -0
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +44 -38
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +65 -6
- package/typechain-types/factories/PendleYearnVaultScy__factory.ts +37 -5
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +19 -94
- package/typechain-types/factories/RouterStatic__factory.ts +208 -40
- package/typechain-types/factories/SCYBaseWithRewards__factory.ts +36 -4
- package/typechain-types/factories/SCYBase__factory.ts +36 -4
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +0 -13
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +65 -3
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +25 -1
- package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +24 -0
- package/typechain-types/hardhat.d.ts +103 -13
- package/typechain-types/index.ts +24 -4
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +0 -4
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +0 -242
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +0 -329
- package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
- package/contracts/core/PendleERC20Permit.sol +0 -84
- package/contracts/libraries/SCY/SCYIndex.sol +0 -72
- package/deployments/43113-markets/benqi-market-5C60ba.json +0 -7
- package/deployments/43113-markets/benqi-market-611eA3.json +0 -7
- package/deployments/43113-markets/benqi-market-A386eA.json +0 -7
- package/deployments/43113-markets/benqi-market-bf8841.json +0 -7
- package/deployments/80001-markets/benqi-market-5E1104.json +0 -7
- package/deployments/80001-markets/benqi-market-899134.json +0 -7
- package/deployments/80001-markets/benqi-market-94C86f.json +0 -7
- package/deployments/80001-markets/benqi-market-c68429.json +0 -7
|
@@ -3,7 +3,7 @@ pragma solidity 0.8.15;
|
|
|
3
3
|
|
|
4
4
|
import "./Math.sol";
|
|
5
5
|
import "./LogExpMath.sol";
|
|
6
|
-
import "../
|
|
6
|
+
import "../helpers/PYIndex.sol";
|
|
7
7
|
import "../helpers/MiniHelpers.sol";
|
|
8
8
|
|
|
9
9
|
struct MarketState {
|
|
@@ -36,7 +36,7 @@ library MarketMathCore {
|
|
|
36
36
|
using Math for uint256;
|
|
37
37
|
using Math for int256;
|
|
38
38
|
using LogExpMath for int256;
|
|
39
|
-
using
|
|
39
|
+
using PYIndexLib for PYIndex;
|
|
40
40
|
|
|
41
41
|
int256 internal constant MINIMUM_LIQUIDITY = 10**3;
|
|
42
42
|
int256 internal constant PERCENTAGE_DECIMALS = 100;
|
|
@@ -54,7 +54,7 @@ library MarketMathCore {
|
|
|
54
54
|
|
|
55
55
|
function addLiquidity(
|
|
56
56
|
MarketState memory market,
|
|
57
|
-
|
|
57
|
+
PYIndex index,
|
|
58
58
|
uint256 scyDesired,
|
|
59
59
|
uint256 ptDesired,
|
|
60
60
|
uint256 blockTime
|
|
@@ -97,7 +97,7 @@ library MarketMathCore {
|
|
|
97
97
|
|
|
98
98
|
function swapExactPtForScy(
|
|
99
99
|
MarketState memory market,
|
|
100
|
-
|
|
100
|
+
PYIndex index,
|
|
101
101
|
uint256 exactPtToMarket,
|
|
102
102
|
uint256 blockTime
|
|
103
103
|
) internal pure returns (uint256 netScyToAccount, uint256 netScyToReserve) {
|
|
@@ -114,7 +114,7 @@ library MarketMathCore {
|
|
|
114
114
|
|
|
115
115
|
function swapScyForExactPt(
|
|
116
116
|
MarketState memory market,
|
|
117
|
-
|
|
117
|
+
PYIndex index,
|
|
118
118
|
uint256 exactPtToAccount,
|
|
119
119
|
uint256 blockTime
|
|
120
120
|
) internal pure returns (uint256 netScyToMarket, uint256 netScyToReserve) {
|
|
@@ -135,7 +135,7 @@ library MarketMathCore {
|
|
|
135
135
|
|
|
136
136
|
function addLiquidityCore(
|
|
137
137
|
MarketState memory market,
|
|
138
|
-
|
|
138
|
+
PYIndex index,
|
|
139
139
|
int256 scyDesired,
|
|
140
140
|
int256 ptDesired,
|
|
141
141
|
uint256 blockTime
|
|
@@ -159,7 +159,9 @@ library MarketMathCore {
|
|
|
159
159
|
/// MATH
|
|
160
160
|
/// ------------------------------------------------------------
|
|
161
161
|
if (market.totalLp == 0) {
|
|
162
|
-
lpToAccount =
|
|
162
|
+
lpToAccount =
|
|
163
|
+
Math.sqrt((index.scyToAsset(scyDesired) * ptDesired).Uint()).Int() -
|
|
164
|
+
MINIMUM_LIQUIDITY;
|
|
163
165
|
lpToReserve = MINIMUM_LIQUIDITY;
|
|
164
166
|
scyUsed = scyDesired;
|
|
165
167
|
ptUsed = ptDesired;
|
|
@@ -214,7 +216,7 @@ library MarketMathCore {
|
|
|
214
216
|
|
|
215
217
|
function executeTradeCore(
|
|
216
218
|
MarketState memory market,
|
|
217
|
-
|
|
219
|
+
PYIndex index,
|
|
218
220
|
int256 netPtToAccount,
|
|
219
221
|
uint256 blockTime
|
|
220
222
|
) internal pure returns (int256 netScyToAccount, int256 netScyToReserve) {
|
|
@@ -241,12 +243,20 @@ library MarketMathCore {
|
|
|
241
243
|
/// ------------------------------------------------------------
|
|
242
244
|
/// WRITE
|
|
243
245
|
/// ------------------------------------------------------------
|
|
244
|
-
_setNewMarketStateTrade(
|
|
246
|
+
_setNewMarketStateTrade(
|
|
247
|
+
market,
|
|
248
|
+
comp,
|
|
249
|
+
index,
|
|
250
|
+
netPtToAccount,
|
|
251
|
+
netScyToAccount,
|
|
252
|
+
netScyToReserve,
|
|
253
|
+
blockTime
|
|
254
|
+
);
|
|
245
255
|
}
|
|
246
256
|
|
|
247
257
|
function getMarketPreCompute(
|
|
248
258
|
MarketState memory market,
|
|
249
|
-
|
|
259
|
+
PYIndex index,
|
|
250
260
|
uint256 blockTime
|
|
251
261
|
) internal pure returns (MarketPreCompute memory res) {
|
|
252
262
|
require(!MiniHelpers.isExpired(market.expiry, blockTime), "market expired");
|
|
@@ -294,16 +304,15 @@ library MarketMathCore {
|
|
|
294
304
|
|
|
295
305
|
netAssetToReserve = (fee * market.reserveFeePercent.Int()) / PERCENTAGE_DECIMALS;
|
|
296
306
|
netAssetToAccount = preFeeAssetToAccount - fee;
|
|
297
|
-
// netAssetToMarket = (preFeeAssetToAccount - fee + netAssetToReserve)
|
|
298
|
-
// .neg();
|
|
299
307
|
}
|
|
300
308
|
|
|
301
309
|
function _setNewMarketStateTrade(
|
|
302
310
|
MarketState memory market,
|
|
303
311
|
MarketPreCompute memory comp,
|
|
304
|
-
|
|
312
|
+
PYIndex index,
|
|
305
313
|
int256 netPtToAccount,
|
|
306
314
|
int256 netScyToAccount,
|
|
315
|
+
int256 netScyToReserve,
|
|
307
316
|
uint256 blockTime
|
|
308
317
|
) internal pure {
|
|
309
318
|
uint256 timeToExpiry = market.expiry - blockTime;
|
|
@@ -311,7 +320,7 @@ library MarketMathCore {
|
|
|
311
320
|
market.lastTradeTime = blockTime;
|
|
312
321
|
|
|
313
322
|
market.totalPt = market.totalPt.subNoNeg(netPtToAccount);
|
|
314
|
-
market.totalScy = market.totalScy.subNoNeg(netScyToAccount);
|
|
323
|
+
market.totalScy = market.totalScy.subNoNeg(netScyToAccount + netScyToReserve);
|
|
315
324
|
|
|
316
325
|
market.lastLnImpliedRate = _getLnImpliedRate(
|
|
317
326
|
market.totalPt,
|
|
@@ -412,7 +421,7 @@ library MarketMathCore {
|
|
|
412
421
|
|
|
413
422
|
function setInitialLnImpliedRate(
|
|
414
423
|
MarketState memory market,
|
|
415
|
-
|
|
424
|
+
PYIndex index,
|
|
416
425
|
int256 initialAnchor,
|
|
417
426
|
uint256 blockTime
|
|
418
427
|
) internal pure {
|
|
@@ -59,6 +59,20 @@ library Math {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
// @author Uniswap
|
|
63
|
+
function sqrt(uint256 y) internal pure returns (uint256 z) {
|
|
64
|
+
if (y > 3) {
|
|
65
|
+
z = y;
|
|
66
|
+
uint256 x = y / 2 + 1;
|
|
67
|
+
while (x < z) {
|
|
68
|
+
z = x;
|
|
69
|
+
x = (y / x + x) / 2;
|
|
70
|
+
}
|
|
71
|
+
} else if (y != 0) {
|
|
72
|
+
z = 1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
62
76
|
function abs(int256 x) internal pure returns (uint256) {
|
|
63
77
|
return uint256(x > 0 ? x : -x);
|
|
64
78
|
}
|
|
@@ -19,7 +19,8 @@ contract RouterStatic is IPRouterStatic {
|
|
|
19
19
|
using Math for uint256;
|
|
20
20
|
using Math for int256;
|
|
21
21
|
using LogExpMath for int256;
|
|
22
|
-
using
|
|
22
|
+
using PYIndexLib for PYIndex;
|
|
23
|
+
using PYIndexLib for IPYieldToken;
|
|
23
24
|
|
|
24
25
|
IPYieldContractFactory internal immutable yieldContractFactory;
|
|
25
26
|
IPMarketFactory internal immutable marketFactory;
|
|
@@ -49,7 +50,7 @@ contract RouterStatic is IPRouterStatic {
|
|
|
49
50
|
{
|
|
50
51
|
(, address yt) = getPY(py);
|
|
51
52
|
IPYieldToken YT = IPYieldToken(yt);
|
|
52
|
-
exchangeRate = YT.
|
|
53
|
+
exchangeRate = YT.pyIndexCurrent();
|
|
53
54
|
totalSupply = YT.totalSupply();
|
|
54
55
|
address[] memory rewardTokens = YT.getRewardTokens();
|
|
55
56
|
rewardIndexes = new RewardIndex[](rewardTokens.length);
|
|
@@ -78,7 +79,6 @@ contract RouterStatic is IPRouterStatic {
|
|
|
78
79
|
|
|
79
80
|
function getMarketInfo(address market)
|
|
80
81
|
external
|
|
81
|
-
view
|
|
82
82
|
returns (
|
|
83
83
|
address pt,
|
|
84
84
|
address scy,
|
|
@@ -145,7 +145,6 @@ contract RouterStatic is IPRouterStatic {
|
|
|
145
145
|
uint256 ptDesired
|
|
146
146
|
)
|
|
147
147
|
external
|
|
148
|
-
view
|
|
149
148
|
returns (
|
|
150
149
|
uint256 netLpOut,
|
|
151
150
|
uint256 scyUsed,
|
|
@@ -154,7 +153,7 @@ contract RouterStatic is IPRouterStatic {
|
|
|
154
153
|
{
|
|
155
154
|
MarketState memory state = IPMarket(market).readState(false);
|
|
156
155
|
(, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
|
|
157
|
-
|
|
156
|
+
pyIndex(market),
|
|
158
157
|
scyDesired,
|
|
159
158
|
ptDesired,
|
|
160
159
|
block.timestamp
|
|
@@ -163,23 +162,38 @@ contract RouterStatic is IPRouterStatic {
|
|
|
163
162
|
|
|
164
163
|
function addLiquiditySinglePtStatic(address market, uint256 netPtIn)
|
|
165
164
|
external
|
|
166
|
-
returns (
|
|
165
|
+
returns (
|
|
166
|
+
uint256 netLpOut,
|
|
167
|
+
uint256 netScyFee,
|
|
168
|
+
uint256 priceImpact
|
|
169
|
+
)
|
|
167
170
|
{
|
|
168
171
|
require(false, "NOT IMPLEMENTED");
|
|
169
172
|
}
|
|
170
173
|
|
|
171
|
-
function
|
|
174
|
+
function addLiquiditySingleScyStatic(address market, uint256 netScyIn)
|
|
172
175
|
external
|
|
173
|
-
returns (
|
|
176
|
+
returns (
|
|
177
|
+
uint256 netLpOut,
|
|
178
|
+
uint256 netScyFee,
|
|
179
|
+
uint256 priceImpact
|
|
180
|
+
)
|
|
174
181
|
{
|
|
175
182
|
require(false, "NOT IMPLEMENTED");
|
|
176
183
|
}
|
|
177
184
|
|
|
178
|
-
function
|
|
185
|
+
function addLiquiditySingleBaseTokenStatic(
|
|
179
186
|
address market,
|
|
180
187
|
address baseToken,
|
|
181
188
|
uint256 netBaseTokenIn
|
|
182
|
-
)
|
|
189
|
+
)
|
|
190
|
+
external
|
|
191
|
+
returns (
|
|
192
|
+
uint256 netLpOut,
|
|
193
|
+
uint256 netScyFee,
|
|
194
|
+
uint256 priceImpact
|
|
195
|
+
)
|
|
196
|
+
{
|
|
183
197
|
require(false, "NOT IMPLEMENTED");
|
|
184
198
|
}
|
|
185
199
|
|
|
@@ -194,86 +208,124 @@ contract RouterStatic is IPRouterStatic {
|
|
|
194
208
|
|
|
195
209
|
function removeLiquiditySinglePtStatic(address market, uint256 lpToRemove)
|
|
196
210
|
external
|
|
197
|
-
returns (
|
|
211
|
+
returns (
|
|
212
|
+
uint256 netPtOut,
|
|
213
|
+
uint256 netScyFee,
|
|
214
|
+
uint256 priceImpact
|
|
215
|
+
)
|
|
198
216
|
{
|
|
199
217
|
require(false, "NOT IMPLEMENTED");
|
|
200
218
|
}
|
|
201
219
|
|
|
202
|
-
function
|
|
220
|
+
function removeLiquiditySingleScyStatic(address market, uint256 lpToRemove)
|
|
203
221
|
external
|
|
204
|
-
returns (
|
|
222
|
+
returns (
|
|
223
|
+
uint256 netScyOut,
|
|
224
|
+
uint256 netScyFee,
|
|
225
|
+
uint256 priceImpact
|
|
226
|
+
)
|
|
205
227
|
{
|
|
206
228
|
require(false, "NOT IMPLEMENTED");
|
|
207
229
|
}
|
|
208
230
|
|
|
209
|
-
function
|
|
231
|
+
function removeLiquiditySingleBaseTokenStatic(
|
|
210
232
|
address market,
|
|
211
233
|
uint256 lpToRemove,
|
|
212
234
|
address baseToken
|
|
213
|
-
)
|
|
235
|
+
)
|
|
236
|
+
external
|
|
237
|
+
returns (
|
|
238
|
+
uint256 netBaseTokenOut,
|
|
239
|
+
uint256 netScyFee,
|
|
240
|
+
uint256 priceImpact
|
|
241
|
+
)
|
|
242
|
+
{
|
|
214
243
|
require(false, "NOT IMPLEMENTED");
|
|
215
244
|
}
|
|
216
245
|
|
|
217
246
|
function swapExactPtForScyStatic(address market, uint256 exactPtIn)
|
|
218
247
|
public
|
|
219
|
-
|
|
220
|
-
|
|
248
|
+
returns (
|
|
249
|
+
uint256 netScyOut,
|
|
250
|
+
uint256 netScyFee,
|
|
251
|
+
uint256 priceImpact
|
|
252
|
+
)
|
|
221
253
|
{
|
|
222
254
|
MarketState memory state = IPMarket(market).readState(false);
|
|
223
255
|
(netScyOut, netScyFee) = state.swapExactPtForScy(
|
|
224
|
-
|
|
256
|
+
pyIndex(market),
|
|
225
257
|
exactPtIn,
|
|
226
258
|
block.timestamp
|
|
227
259
|
);
|
|
260
|
+
priceImpact = calcPriceImpact(market, exactPtIn.neg());
|
|
228
261
|
}
|
|
229
262
|
|
|
230
263
|
function swapScyForExactPtStatic(address market, uint256 exactPtOut)
|
|
231
264
|
external
|
|
232
|
-
|
|
233
|
-
|
|
265
|
+
returns (
|
|
266
|
+
uint256 netScyIn,
|
|
267
|
+
uint256 netScyFee,
|
|
268
|
+
uint256 priceImpact
|
|
269
|
+
)
|
|
234
270
|
{
|
|
235
271
|
MarketState memory state = IPMarket(market).readState(false);
|
|
236
272
|
(netScyIn, netScyFee) = state.swapScyForExactPt(
|
|
237
|
-
|
|
273
|
+
pyIndex(market),
|
|
238
274
|
exactPtOut,
|
|
239
275
|
block.timestamp
|
|
240
276
|
);
|
|
277
|
+
priceImpact = calcPriceImpact(market, exactPtOut.Int());
|
|
241
278
|
}
|
|
242
279
|
|
|
243
280
|
function swapExactScyForPtStatic(address market, uint256 exactScyIn)
|
|
244
281
|
public
|
|
245
|
-
|
|
246
|
-
|
|
282
|
+
returns (
|
|
283
|
+
uint256 netPtOut,
|
|
284
|
+
uint256 netScyFee,
|
|
285
|
+
uint256 priceImpact
|
|
286
|
+
)
|
|
247
287
|
{
|
|
248
288
|
MarketState memory state = IPMarket(market).readState(false);
|
|
249
289
|
(netPtOut, , netScyFee) = state.approxSwapExactScyForPt(
|
|
250
|
-
|
|
290
|
+
pyIndex(market),
|
|
251
291
|
exactScyIn,
|
|
252
292
|
block.timestamp,
|
|
253
293
|
approxParams
|
|
254
294
|
);
|
|
295
|
+
priceImpact = calcPriceImpact(market, netPtOut.Int());
|
|
255
296
|
}
|
|
256
297
|
|
|
257
298
|
function swapPtForExactScyStatic(address market, uint256 exactScyOut)
|
|
258
299
|
public
|
|
259
|
-
|
|
260
|
-
|
|
300
|
+
returns (
|
|
301
|
+
uint256 netPtIn,
|
|
302
|
+
uint256 netScyFee,
|
|
303
|
+
uint256 priceImpact
|
|
304
|
+
)
|
|
261
305
|
{
|
|
262
306
|
MarketState memory state = IPMarket(market).readState(false);
|
|
263
307
|
|
|
264
308
|
(netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
|
|
265
|
-
|
|
309
|
+
pyIndex(market),
|
|
266
310
|
exactScyOut,
|
|
267
311
|
block.timestamp,
|
|
268
312
|
approxParams
|
|
269
313
|
);
|
|
314
|
+
priceImpact = calcPriceImpact(market, netPtIn.neg());
|
|
270
315
|
}
|
|
271
316
|
|
|
272
317
|
function swapExactBaseTokenForPtStatic(
|
|
273
318
|
address market,
|
|
274
319
|
address baseToken,
|
|
275
320
|
uint256 amountBaseToken
|
|
276
|
-
)
|
|
321
|
+
)
|
|
322
|
+
external
|
|
323
|
+
returns (
|
|
324
|
+
uint256 netPtOut,
|
|
325
|
+
uint256 netScyFee,
|
|
326
|
+
uint256 priceImpact
|
|
327
|
+
)
|
|
328
|
+
{
|
|
277
329
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
278
330
|
|
|
279
331
|
return swapExactScyForPtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
|
|
@@ -283,9 +335,16 @@ contract RouterStatic is IPRouterStatic {
|
|
|
283
335
|
address market,
|
|
284
336
|
uint256 exactYtIn,
|
|
285
337
|
address baseToken
|
|
286
|
-
)
|
|
338
|
+
)
|
|
339
|
+
external
|
|
340
|
+
returns (
|
|
341
|
+
uint256 netBaseTokenOut,
|
|
342
|
+
uint256 netScyFee,
|
|
343
|
+
uint256 priceImpact
|
|
344
|
+
)
|
|
345
|
+
{
|
|
287
346
|
uint256 netScyOut;
|
|
288
|
-
(netScyOut, netScyFee) = swapExactPtForScyStatic(market, exactYtIn);
|
|
347
|
+
(netScyOut, netScyFee, priceImpact) = swapExactPtForScyStatic(market, exactYtIn);
|
|
289
348
|
|
|
290
349
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
291
350
|
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
@@ -293,31 +352,39 @@ contract RouterStatic is IPRouterStatic {
|
|
|
293
352
|
|
|
294
353
|
function swapScyForExactYtStatic(address market, uint256 exactYtOut)
|
|
295
354
|
external
|
|
296
|
-
|
|
297
|
-
|
|
355
|
+
returns (
|
|
356
|
+
uint256 netScyIn,
|
|
357
|
+
uint256 netScyFee,
|
|
358
|
+
uint256 priceImpact
|
|
359
|
+
)
|
|
298
360
|
{
|
|
299
361
|
MarketState memory state = IPMarket(market).readState(false);
|
|
300
362
|
|
|
301
|
-
|
|
363
|
+
PYIndex index = pyIndex(market);
|
|
302
364
|
|
|
303
365
|
uint256 scyReceived;
|
|
304
366
|
(scyReceived, netScyFee) = state.swapExactPtForScy(
|
|
305
|
-
|
|
367
|
+
pyIndex(market),
|
|
306
368
|
exactYtOut,
|
|
307
369
|
block.timestamp
|
|
308
370
|
);
|
|
309
371
|
|
|
310
372
|
uint256 totalScyNeed = index.assetToScyUp(exactYtOut);
|
|
311
373
|
netScyIn = totalScyNeed.subMax0(scyReceived);
|
|
374
|
+
|
|
375
|
+
priceImpact = calcPriceImpact(market, exactYtOut.neg());
|
|
312
376
|
}
|
|
313
377
|
|
|
314
378
|
function swapExactScyForYtStatic(address market, uint256 exactScyIn)
|
|
315
379
|
public
|
|
316
|
-
|
|
317
|
-
|
|
380
|
+
returns (
|
|
381
|
+
uint256 netYtOut,
|
|
382
|
+
uint256 netScyFee,
|
|
383
|
+
uint256 priceImpact
|
|
384
|
+
)
|
|
318
385
|
{
|
|
319
386
|
MarketState memory state = IPMarket(market).readState(false);
|
|
320
|
-
|
|
387
|
+
PYIndex index = pyIndex(market);
|
|
321
388
|
|
|
322
389
|
(netYtOut, , netScyFee) = state.approxSwapExactScyForYt(
|
|
323
390
|
index,
|
|
@@ -325,16 +392,21 @@ contract RouterStatic is IPRouterStatic {
|
|
|
325
392
|
block.timestamp,
|
|
326
393
|
approxParams
|
|
327
394
|
);
|
|
395
|
+
|
|
396
|
+
priceImpact = calcPriceImpact(market, netYtOut.neg());
|
|
328
397
|
}
|
|
329
398
|
|
|
330
399
|
function swapExactYtForScyStatic(address market, uint256 exactYtIn)
|
|
331
400
|
public
|
|
332
|
-
|
|
333
|
-
|
|
401
|
+
returns (
|
|
402
|
+
uint256 netScyOut,
|
|
403
|
+
uint256 netScyFee,
|
|
404
|
+
uint256 priceImpact
|
|
405
|
+
)
|
|
334
406
|
{
|
|
335
407
|
MarketState memory state = IPMarket(market).readState(false);
|
|
336
408
|
|
|
337
|
-
|
|
409
|
+
PYIndex index = pyIndex(market);
|
|
338
410
|
|
|
339
411
|
uint256 scyOwed;
|
|
340
412
|
(scyOwed, netScyFee) = state.swapScyForExactPt(index, exactYtIn, block.timestamp);
|
|
@@ -343,16 +415,20 @@ contract RouterStatic is IPRouterStatic {
|
|
|
343
415
|
uint256 amountPYToRedeemScyOut = exactYtIn - amountPYToRepayScyOwed;
|
|
344
416
|
|
|
345
417
|
netScyOut = index.assetToScy(amountPYToRedeemScyOut);
|
|
418
|
+
priceImpact = calcPriceImpact(market, exactYtIn.Int());
|
|
346
419
|
}
|
|
347
420
|
|
|
348
421
|
function swapYtForExactScyStatic(address market, uint256 exactScyOut)
|
|
349
422
|
external
|
|
350
|
-
|
|
351
|
-
|
|
423
|
+
returns (
|
|
424
|
+
uint256 netYtIn,
|
|
425
|
+
uint256 netScyFee,
|
|
426
|
+
uint256 priceImpact
|
|
427
|
+
)
|
|
352
428
|
{
|
|
353
429
|
MarketState memory state = IPMarket(market).readState(false);
|
|
354
430
|
|
|
355
|
-
|
|
431
|
+
PYIndex index = pyIndex(market);
|
|
356
432
|
|
|
357
433
|
(netYtIn, , netScyFee) = state.approxSwapYtForExactScy(
|
|
358
434
|
index,
|
|
@@ -360,15 +436,23 @@ contract RouterStatic is IPRouterStatic {
|
|
|
360
436
|
block.timestamp,
|
|
361
437
|
approxParams
|
|
362
438
|
);
|
|
439
|
+
priceImpact = calcPriceImpact(market, netYtIn.Int());
|
|
363
440
|
}
|
|
364
441
|
|
|
365
442
|
function swapExactYtForBaseTokenStatic(
|
|
366
443
|
address market,
|
|
367
444
|
uint256 exactYtIn,
|
|
368
445
|
address baseToken
|
|
369
|
-
)
|
|
446
|
+
)
|
|
447
|
+
external
|
|
448
|
+
returns (
|
|
449
|
+
uint256 netBaseTokenOut,
|
|
450
|
+
uint256 netScyFee,
|
|
451
|
+
uint256 priceImpact
|
|
452
|
+
)
|
|
453
|
+
{
|
|
370
454
|
uint256 netScyOut;
|
|
371
|
-
(netScyOut, netScyFee) = swapExactYtForScyStatic(market, exactYtIn);
|
|
455
|
+
(netScyOut, netScyFee, priceImpact) = swapExactYtForScyStatic(market, exactYtIn);
|
|
372
456
|
|
|
373
457
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
374
458
|
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
@@ -378,7 +462,14 @@ contract RouterStatic is IPRouterStatic {
|
|
|
378
462
|
address market,
|
|
379
463
|
address baseToken,
|
|
380
464
|
uint256 amountBaseToken
|
|
381
|
-
)
|
|
465
|
+
)
|
|
466
|
+
external
|
|
467
|
+
returns (
|
|
468
|
+
uint256 netPtOut,
|
|
469
|
+
uint256 netScyFee,
|
|
470
|
+
uint256 priceImpact
|
|
471
|
+
)
|
|
472
|
+
{
|
|
382
473
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
383
474
|
|
|
384
475
|
return swapExactScyForYtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
|
|
@@ -392,7 +483,7 @@ contract RouterStatic is IPRouterStatic {
|
|
|
392
483
|
{
|
|
393
484
|
IPYieldToken _YT = IPYieldToken(YT);
|
|
394
485
|
require(!_YT.isExpired(), "YT is expired");
|
|
395
|
-
return amountScyToMint.mulDown(_YT.
|
|
486
|
+
return amountScyToMint.mulDown(_YT.pyIndexCurrent());
|
|
396
487
|
}
|
|
397
488
|
|
|
398
489
|
function redeemPYToScyStatic(address YT, uint256 amountPYToRedeem)
|
|
@@ -400,7 +491,7 @@ contract RouterStatic is IPRouterStatic {
|
|
|
400
491
|
returns (uint256 amountPY)
|
|
401
492
|
{
|
|
402
493
|
IPYieldToken _YT = IPYieldToken(YT);
|
|
403
|
-
return amountPYToRedeem.divDown(_YT.
|
|
494
|
+
return amountPYToRedeem.divDown(_YT.pyIndexCurrent());
|
|
404
495
|
}
|
|
405
496
|
|
|
406
497
|
function mintPYFromBaseStatic(
|
|
@@ -421,10 +512,10 @@ contract RouterStatic is IPRouterStatic {
|
|
|
421
512
|
return SCY.previewRedeem(baseToken, redeemPYToScyStatic(YT, amountPYToRedeem));
|
|
422
513
|
}
|
|
423
514
|
|
|
424
|
-
function
|
|
425
|
-
(
|
|
515
|
+
function pyIndex(address market) public returns (PYIndex index) {
|
|
516
|
+
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
426
517
|
|
|
427
|
-
return
|
|
518
|
+
return YT.newIndex();
|
|
428
519
|
}
|
|
429
520
|
|
|
430
521
|
function getPY(address py) public view returns (address pt, address yt) {
|
|
@@ -437,30 +528,50 @@ contract RouterStatic is IPRouterStatic {
|
|
|
437
528
|
}
|
|
438
529
|
}
|
|
439
530
|
|
|
440
|
-
function getPtImpliedYield(address market) public
|
|
531
|
+
function getPtImpliedYield(address market) public returns (int256) {
|
|
441
532
|
MarketState memory state = IPMarket(market).readState(false);
|
|
442
533
|
|
|
443
534
|
int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
|
|
444
535
|
return lnImpliedRate.exp();
|
|
445
536
|
}
|
|
446
537
|
|
|
447
|
-
function getExchangeRate(address market) public
|
|
538
|
+
function getExchangeRate(address market) public returns (uint256) {
|
|
539
|
+
return getTradeExchangeRateIncludeFee(market, 0);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function getTradeExchangeRateIncludeFee(address market, int256 netPtOut)
|
|
543
|
+
public
|
|
544
|
+
returns (uint256)
|
|
545
|
+
{
|
|
546
|
+
int256 netPtToAccount = netPtOut;
|
|
448
547
|
MarketState memory state = IPMarket(market).readState(false);
|
|
449
|
-
MarketPreCompute memory comp = state.getMarketPreCompute(
|
|
450
|
-
|
|
451
|
-
|
|
548
|
+
MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
|
|
549
|
+
|
|
550
|
+
int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
|
|
551
|
+
state.totalPt,
|
|
552
|
+
comp.totalAsset,
|
|
553
|
+
comp.rateScalar,
|
|
554
|
+
comp.rateAnchor,
|
|
555
|
+
netPtToAccount
|
|
452
556
|
);
|
|
453
557
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
558
|
+
if (netPtToAccount > 0) {
|
|
559
|
+
int256 postFeeExchangeRate = preFeeExchangeRate.divDown(comp.feeRate);
|
|
560
|
+
require(postFeeExchangeRate >= Math.IONE, "exchange rate below 1");
|
|
561
|
+
return postFeeExchangeRate.Uint();
|
|
562
|
+
} else {
|
|
563
|
+
return preFeeExchangeRate.mulDown(comp.feeRate).Uint();
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
function calcPriceImpact(address market, int256 netPtOut)
|
|
568
|
+
public
|
|
569
|
+
returns (uint256 priceImpact)
|
|
570
|
+
{
|
|
571
|
+
uint256 preTradeRate = getExchangeRate(market);
|
|
572
|
+
uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
|
|
573
|
+
|
|
574
|
+
priceImpact = (tradedRate.Int() - preTradeRate.Int()).abs().divDown(preTradeRate);
|
|
464
575
|
}
|
|
465
576
|
|
|
466
577
|
function getUserPYInfo(address py, address user)
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"QI": "0x09Fe18C4C0cFE929a6CD40903129F9bA3C837866",
|
|
4
4
|
"USD": "0x2018ecc38fbca2ce3A62f96f9F0D38F0DEE2f99D",
|
|
5
5
|
"qiUSD": "0x884f8d66862b03434E11f4Bd5527A1119c115D83",
|
|
6
|
-
"scyQiUSD": "
|
|
6
|
+
"scyQiUSD": "0xc68Fe29C91a5611e332A57d4FC091eDe7fD5156d",
|
|
7
7
|
"WAVAX": "0xD323E5337713D2e01fb341D960BC31e1FB42348d",
|
|
8
8
|
"qiAVAX": "0xABD65178Aa35051277b062327A70644F10D3cB9d",
|
|
9
|
-
"scyQiAVAX": "
|
|
9
|
+
"scyQiAVAX": "0x60e235D9836Ecf533966E2ef94795C83FcB5E7e3"
|
|
10
10
|
}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"network": 43113,
|
|
4
4
|
"celerBus": "0xE9533976C590200E32d95C53f06AE12d292cFc47",
|
|
5
5
|
"treasury": "0xB4E292AD98Ba0D5531Ca573757f7b7d6c0C205d8",
|
|
6
|
-
"governanceManager": "
|
|
6
|
+
"governanceManager": "0x8b6618109D33f84e1C83fFA50a1aAC3bEDc3d523",
|
|
7
7
|
"PENDLE": "0x83B694f9Ef84D22BECe87257f0cd4513737A505e",
|
|
8
|
-
"yieldContractFactory": "
|
|
9
|
-
"marketFactory": "
|
|
8
|
+
"yieldContractFactory": "0xf9397B3b93d118587c29bA2a166c0192251fc758",
|
|
9
|
+
"marketFactory": "0x2FfdD5E68ce0F668498029c1219Db39f79ebD5bd",
|
|
10
10
|
"router": "0xFEdBED4682D136925d30FFb9B8977CC9b3a6c406",
|
|
11
|
-
"routerStatic": "
|
|
11
|
+
"routerStatic": "0x501E089e6BD6b78e6E435C15118E52c665931850",
|
|
12
12
|
"startTime": 1657756800,
|
|
13
|
-
"vePendle": "
|
|
14
|
-
"votingController": "
|
|
15
|
-
"gaugeController": "
|
|
13
|
+
"vePendle": "0xa94936409d9B0633dB6271Fc2789aBa9C74bD729",
|
|
14
|
+
"votingController": "0x676A97883D396b21f3a7554A73F30187752c7C45",
|
|
15
|
+
"gaugeController": "0x8490DDFBCf1F451dC25e7deaeB9ac6137E75b91b"
|
|
16
16
|
}
|