@pendle/core-v2 0.8.1-beta → 0.9.0-gamma-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +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 +2 -2
- 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 +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +20 -2
- 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 +2 -2
- 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/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/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 +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- 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 +47 -28
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- 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/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 +272 -136
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +75 -41
- 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 +1 -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 +1 -1
- 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 -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/IPActionCore.sol/IPActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +268 -132
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +71 -37
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +339 -169
- 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 +23 -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 +1 -1
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +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/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +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/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json} +3 -3
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +39 -39
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +242 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +1 -1
- 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/PendleWstEthSCY.sol +33 -6
- package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +182 -0
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +19 -10
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +3 -1
- package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
- package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +26 -8
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +0 -4
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +30 -13
- 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 +1 -1
- package/contracts/core/PendleRouter.sol +10 -10
- 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 -25
- package/contracts/core/actions/ActionCallback.sol +7 -7
- package/contracts/core/actions/ActionCore.sol +54 -81
- package/contracts/core/actions/ActionYT.sol +17 -37
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +21 -37
- package/contracts/core/actions/base/ActionSCYAndPYBase.sol +39 -51
- package/contracts/core/actions/base/ActionSCYAndYTBase.sol +14 -31
- package/contracts/interfaces/IEulerEToken.sol +60 -0
- package/contracts/interfaces/IEulerMarkets.sol +46 -0
- package/contracts/interfaces/IPActionCore.sol +43 -50
- package/contracts/interfaces/IPActionYT.sol +11 -12
- package/contracts/interfaces/IPInterestManagerYT.sol +1 -1
- package/contracts/interfaces/IPMarket.sol +1 -0
- package/contracts/interfaces/IPRouterStatic.sol +2 -7
- 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/IWAvax.sol +34 -0
- package/contracts/libraries/helpers/PYIndex.sol +69 -0
- package/contracts/libraries/helpers/TokenHelper.sol +8 -3
- package/contracts/libraries/kyberswap/KyberSwapHelper.sol +61 -0
- package/contracts/libraries/math/MarketApproxLib.sol +5 -5
- package/contracts/libraries/math/MarketMathCore.sol +10 -10
- package/contracts/offchain-helpers/RouterStatic.sol +21 -39
- 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 +1 -1
- package/typechain-types/ActionCore.ts +330 -356
- package/typechain-types/ActionSCYAndPTBase.ts +11 -8
- package/typechain-types/ActionSCYAndPYBase.ts +11 -8
- package/typechain-types/ActionSCYAndYTBase.ts +11 -8
- package/typechain-types/ActionYT.ts +119 -106
- 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/IPActionCore.ts +320 -349
- package/typechain-types/IPActionYT.ts +110 -100
- package/typechain-types/IPAllAction.ts +400 -447
- package/typechain-types/IPInterestManagerYT.ts +3 -3
- package/typechain-types/IPRouterStatic.ts +60 -118
- 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/IWAvax.ts +380 -0
- package/typechain-types/KyberSwapHelper.ts +87 -0
- package/typechain-types/PendleEulerSCY.ts +965 -0
- package/typechain-types/PendlePrincipalToken.ts +0 -104
- package/typechain-types/PendleQiSAvaxSCY.ts +1098 -0
- package/typechain-types/PendleSAvaxSCY.ts +962 -0
- package/typechain-types/PendleSJoeSCY.ts +1053 -0
- package/typechain-types/PendleVotingControllerUpg.ts +89 -55
- package/typechain-types/PendleWstEthSCY.ts +13 -0
- package/typechain-types/PendleYieldToken.ts +44 -148
- package/typechain-types/RouterStatic.ts +133 -299
- 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 +275 -139
- package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +1 -1
- package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +1 -1
- package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -1
- package/typechain-types/factories/ActionYT__factory.ts +78 -44
- 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/IPActionCore__factory.ts +268 -132
- package/typechain-types/factories/IPActionYT__factory.ts +71 -37
- package/typechain-types/factories/IPAllAction__factory.ts +339 -169
- package/typechain-types/factories/IPInterestManagerYT__factory.ts +1 -1
- package/typechain-types/factories/IPRouterStatic__factory.ts +23 -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/IWAvax__factory.ts +261 -0
- package/typechain-types/factories/KyberSwapHelper__factory.ts +39 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleEulerSCY__factory.ts +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 +1 -1
- 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/PendleStargateSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +45 -26
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +29 -2
- package/typechain-types/factories/PendleYearnVaultScy__factory.ts +1 -1
- 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 +38 -38
- 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 +107 -17
- package/typechain-types/index.ts +24 -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/interfaces/IJoePair.sol/IJoePair.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.json +0 -662
- package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.json +0 -760
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +0 -962
- package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +0 -10
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
- package/contracts/core/PendleERC20Permit.sol +0 -84
- package/contracts/interfaces/IJoePair.sol +0 -98
- package/contracts/interfaces/IJoeRouter01.sol +0 -162
- package/contracts/interfaces/IJoeRouter02.sol +0 -52
- package/contracts/libraries/SCY/SCYIndex.sol +0 -72
- package/contracts/libraries/traderjoe/JoeLibrary.sol +0 -122
- package/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol +0 -80
- package/deployments/43113-markets/benqi-market-4Ccb97.json +0 -7
- package/deployments/43113-markets/benqi-market-534471.json +0 -7
- package/deployments/80001-markets/benqi-market-109acB.json +0 -7
- package/deployments/80001-markets/benqi-market-4e470E.json +0 -7
|
@@ -14,7 +14,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
14
14
|
using MarketMathCore for MarketState;
|
|
15
15
|
using MarketApproxLib for MarketState;
|
|
16
16
|
using SafeERC20 for IERC20;
|
|
17
|
-
using
|
|
17
|
+
using PYIndexLib for IPYieldToken;
|
|
18
18
|
|
|
19
19
|
bytes private constant EMPTY_BYTES = abi.encode();
|
|
20
20
|
|
|
@@ -38,11 +38,12 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
38
38
|
uint256 ptUsed
|
|
39
39
|
)
|
|
40
40
|
{
|
|
41
|
-
(ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market)
|
|
41
|
+
(ISuperComposableYield SCY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market)
|
|
42
|
+
.readTokens();
|
|
42
43
|
|
|
43
44
|
MarketState memory state = IPMarket(market).readState(false);
|
|
44
45
|
(, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
|
|
45
|
-
|
|
46
|
+
YT.newIndex(),
|
|
46
47
|
scyDesired,
|
|
47
48
|
ptDesired,
|
|
48
49
|
block.timestamp
|
|
@@ -119,10 +120,10 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
119
120
|
bool doPull
|
|
120
121
|
) internal returns (uint256 netPtIn) {
|
|
121
122
|
MarketState memory state = IPMarket(market).readState(false);
|
|
122
|
-
(
|
|
123
|
+
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
123
124
|
|
|
124
125
|
(netPtIn, , ) = state.approxSwapPtForExactScy(
|
|
125
|
-
|
|
126
|
+
YT.newIndex(),
|
|
126
127
|
exactScyOut,
|
|
127
128
|
block.timestamp,
|
|
128
129
|
guessPtIn
|
|
@@ -147,9 +148,9 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
147
148
|
bool doPull
|
|
148
149
|
) internal returns (uint256 netScyIn) {
|
|
149
150
|
MarketState memory state = IPMarket(market).readState(false);
|
|
150
|
-
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
151
|
+
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
151
152
|
|
|
152
|
-
(netScyIn, ) = state.swapScyForExactPt(
|
|
153
|
+
(netScyIn, ) = state.swapScyForExactPt(YT.newIndex(), exactPtOut, block.timestamp);
|
|
153
154
|
|
|
154
155
|
require(netScyIn <= maxScyIn, "exceed limit SCY in");
|
|
155
156
|
|
|
@@ -175,10 +176,10 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
175
176
|
bool doPull
|
|
176
177
|
) internal returns (uint256 netPtOut) {
|
|
177
178
|
MarketState memory state = IPMarket(market).readState(false);
|
|
178
|
-
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
179
|
+
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
179
180
|
|
|
180
181
|
(netPtOut, , ) = state.approxSwapExactScyForPt(
|
|
181
|
-
|
|
182
|
+
YT.newIndex(),
|
|
182
183
|
exactScyIn,
|
|
183
184
|
block.timestamp,
|
|
184
185
|
guessPtOut
|
|
@@ -198,28 +199,19 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
198
199
|
/**
|
|
199
200
|
* @notice swap from any ERC20 tokens, through Uniswap's forks, to get baseTokens to make SCY, then swap
|
|
200
201
|
from SCY to PT
|
|
201
|
-
* @dev simply a combination of
|
|
202
|
+
* @dev simply a combination of _mintScyFromToken & _swapExactScyForPt
|
|
202
203
|
*/
|
|
203
|
-
function
|
|
204
|
+
function _swapExactTokenForPt(
|
|
204
205
|
address receiver,
|
|
205
206
|
address market,
|
|
206
|
-
uint256 exactRawTokenIn,
|
|
207
207
|
uint256 minPtOut,
|
|
208
|
-
address[] calldata path,
|
|
209
208
|
ApproxParams memory guessPtOut,
|
|
210
|
-
|
|
209
|
+
TokenInput calldata input
|
|
211
210
|
) internal returns (uint256 netPtOut) {
|
|
212
211
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
213
212
|
|
|
214
213
|
// all output SCY is transferred directly to the market
|
|
215
|
-
uint256 netScyUseToBuyPt =
|
|
216
|
-
market,
|
|
217
|
-
address(SCY),
|
|
218
|
-
exactRawTokenIn,
|
|
219
|
-
1,
|
|
220
|
-
path,
|
|
221
|
-
doPull
|
|
222
|
-
);
|
|
214
|
+
uint256 netScyUseToBuyPt = _mintScyFromToken(address(market), address(SCY), 1, input);
|
|
223
215
|
|
|
224
216
|
// SCY is already in the market, hence doPull = false
|
|
225
217
|
netPtOut = _swapExactScyForPt(
|
|
@@ -233,30 +225,22 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
|
|
|
233
225
|
}
|
|
234
226
|
|
|
235
227
|
/**
|
|
236
|
-
* @notice swap from PT to SCY, then redeem SCY to baseToken & swap through Uniswap's forks to get
|
|
237
|
-
* @dev simply a combination of _swapExactPtForScy &
|
|
228
|
+
* @notice swap from PT to SCY, then redeem SCY to baseToken & swap through Uniswap's forks to get tokenOut
|
|
229
|
+
* @dev simply a combination of _swapExactPtForScy & _redeemScyToToken
|
|
238
230
|
*/
|
|
239
|
-
function
|
|
231
|
+
function _swapExactPtForToken(
|
|
240
232
|
address receiver,
|
|
241
233
|
address market,
|
|
242
234
|
uint256 exactPtIn,
|
|
243
|
-
|
|
244
|
-
address[] calldata path,
|
|
235
|
+
TokenOutput calldata output,
|
|
245
236
|
bool doPull
|
|
246
|
-
) internal returns (uint256
|
|
237
|
+
) internal returns (uint256 netTokenOut) {
|
|
247
238
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
248
239
|
|
|
249
240
|
// all output SCY is directly transferred to the SCY contract
|
|
250
|
-
_swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
|
|
241
|
+
uint256 netScyReceived = _swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
|
|
251
242
|
|
|
252
243
|
// since all SCY is already at the SCY contract, doPull = false
|
|
253
|
-
|
|
254
|
-
receiver,
|
|
255
|
-
address(SCY),
|
|
256
|
-
0,
|
|
257
|
-
minRawTokenOut,
|
|
258
|
-
path,
|
|
259
|
-
false
|
|
260
|
-
);
|
|
244
|
+
netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyReceived, output, false);
|
|
261
245
|
}
|
|
262
246
|
}
|
|
@@ -2,120 +2,108 @@
|
|
|
2
2
|
pragma solidity 0.8.15;
|
|
3
3
|
|
|
4
4
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
5
|
-
import "../../../libraries/
|
|
5
|
+
import "../../../libraries/kyberswap/KyberSwapHelper.sol";
|
|
6
6
|
import "../../../libraries/helpers/MiniHelpers.sol";
|
|
7
7
|
import "../../../libraries/helpers/TokenHelper.sol";
|
|
8
8
|
import "../../../interfaces/ISuperComposableYield.sol";
|
|
9
9
|
import "../../../interfaces/IPYieldToken.sol";
|
|
10
10
|
|
|
11
11
|
// solhint-disable no-empty-blocks
|
|
12
|
-
abstract contract ActionSCYAndPYBase is
|
|
12
|
+
abstract contract ActionSCYAndPYBase is TokenHelper, KyberSwapHelper {
|
|
13
13
|
using SafeERC20 for IERC20;
|
|
14
14
|
|
|
15
15
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
16
|
-
constructor(address
|
|
16
|
+
constructor(address _kyberSwapRouter) KyberSwapHelper(_kyberSwapRouter) {}
|
|
17
17
|
|
|
18
18
|
/// @dev for Path. If no swap is needed, path = [token]
|
|
19
19
|
/// else, path = [inputToken, token0, token1, ...., outputToken]
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* @notice swap
|
|
22
|
+
* @notice swap token to baseToken through Uniswap's forks & use it to mint SCY
|
|
23
23
|
*/
|
|
24
|
-
function
|
|
24
|
+
function _mintScyFromToken(
|
|
25
25
|
address receiver,
|
|
26
26
|
address SCY,
|
|
27
|
-
uint256 netRawTokenIn,
|
|
28
27
|
uint256 minScyOut,
|
|
29
|
-
|
|
30
|
-
bool doPull
|
|
28
|
+
TokenInput calldata input
|
|
31
29
|
) internal returns (uint256 netScyOut) {
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
IERC20(path[0]).safeTransferFrom(msg.sender, address(this), netRawTokenIn);
|
|
36
|
-
}
|
|
37
|
-
amountBaseToken = netRawTokenIn;
|
|
38
|
-
} else {
|
|
39
|
-
if (doPull) {
|
|
40
|
-
IERC20(path[0]).safeTransferFrom(msg.sender, _getFirstPair(path), netRawTokenIn);
|
|
41
|
-
}
|
|
42
|
-
amountBaseToken = _swapExactIn(path, netRawTokenIn, address(this));
|
|
30
|
+
_transferIn(input.tokenIn, msg.sender, input.netTokenIn);
|
|
31
|
+
if (input.tokenIn != input.tokenMintScy) {
|
|
32
|
+
_kyberswap(input.tokenIn, input.netTokenIn, input.kybercall);
|
|
43
33
|
}
|
|
44
34
|
|
|
45
|
-
|
|
46
|
-
IERC20(baseToken).approve(SCY, amountBaseToken);
|
|
35
|
+
_safeApproveInf(input.tokenMintScy, SCY);
|
|
47
36
|
netScyOut = ISuperComposableYield(SCY).deposit(
|
|
48
37
|
receiver,
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
input.tokenMintScy,
|
|
39
|
+
_selfBalance(input.tokenMintScy),
|
|
51
40
|
minScyOut
|
|
52
41
|
);
|
|
53
42
|
}
|
|
54
43
|
|
|
55
44
|
/**
|
|
56
|
-
* @notice redeem SCY to baseToken -> swap baseToken to
|
|
45
|
+
* @notice redeem SCY to baseToken -> swap baseToken to token through Uniswap's forks
|
|
57
46
|
*/
|
|
58
|
-
function
|
|
47
|
+
function _redeemScyToToken(
|
|
59
48
|
address receiver,
|
|
60
49
|
address SCY,
|
|
61
50
|
uint256 netScyIn,
|
|
62
|
-
|
|
63
|
-
address[] memory path,
|
|
51
|
+
TokenOutput calldata output,
|
|
64
52
|
bool doPull
|
|
65
|
-
) internal returns (uint256
|
|
53
|
+
) internal returns (uint256 netTokenOut) {
|
|
66
54
|
if (doPull) {
|
|
67
55
|
IERC20(SCY).safeTransferFrom(msg.sender, SCY, netScyIn);
|
|
68
56
|
}
|
|
69
57
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
netRawTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
|
|
58
|
+
if (output.tokenRedeemScy == output.tokenOut) {
|
|
59
|
+
netTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
|
|
73
60
|
receiver,
|
|
74
|
-
|
|
75
|
-
|
|
61
|
+
output.tokenRedeemScy,
|
|
62
|
+
output.minTokenOut
|
|
76
63
|
);
|
|
77
64
|
} else {
|
|
78
|
-
uint256
|
|
79
|
-
|
|
80
|
-
|
|
65
|
+
uint256 netTokenRedeemed = ISuperComposableYield(SCY).redeemAfterTransfer(
|
|
66
|
+
address(this),
|
|
67
|
+
output.tokenRedeemScy,
|
|
81
68
|
1
|
|
82
69
|
);
|
|
83
|
-
|
|
84
|
-
|
|
70
|
+
_kyberswap(output.tokenRedeemScy, netTokenRedeemed, output.kybercall);
|
|
71
|
+
|
|
72
|
+
netTokenOut = _selfBalance(output.tokenOut);
|
|
73
|
+
require(netTokenOut >= output.minTokenOut, "insufficient out");
|
|
74
|
+
|
|
75
|
+
_transferOut(output.tokenOut, receiver, netTokenOut);
|
|
85
76
|
}
|
|
86
77
|
}
|
|
87
78
|
|
|
88
79
|
/**
|
|
89
|
-
* @notice swap
|
|
80
|
+
* @notice swap token to baseToken through Uniswap's forks -> convert to SCY -> convert to PT + YT
|
|
90
81
|
*/
|
|
91
|
-
function
|
|
82
|
+
function _mintPyFromToken(
|
|
92
83
|
address receiver,
|
|
93
84
|
address YT,
|
|
94
|
-
uint256 netRawTokenIn,
|
|
95
85
|
uint256 minPyOut,
|
|
96
|
-
|
|
97
|
-
bool doPull
|
|
86
|
+
TokenInput calldata input
|
|
98
87
|
) internal returns (uint256 netPyOut) {
|
|
99
88
|
address SCY = IPYieldToken(YT).SCY();
|
|
100
89
|
|
|
101
|
-
|
|
90
|
+
_mintScyFromToken(YT, SCY, 1, input);
|
|
102
91
|
|
|
103
92
|
netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
|
|
104
93
|
require(netPyOut >= minPyOut, "insufficient PY out");
|
|
105
94
|
}
|
|
106
95
|
|
|
107
96
|
/**
|
|
108
|
-
* @notice redeem PT + YT to SCY -> redeem SCY to baseToken -> swap baseToken to
|
|
97
|
+
* @notice redeem PT + YT to SCY -> redeem SCY to baseToken -> swap baseToken to token through Uniswap's forks.
|
|
109
98
|
If the YT hasn't expired, both PT & YT will be needed to redeem. Else, only PT is needed
|
|
110
99
|
*/
|
|
111
|
-
function
|
|
100
|
+
function _redeemPyToToken(
|
|
112
101
|
address receiver,
|
|
113
102
|
address YT,
|
|
114
103
|
uint256 netPyIn,
|
|
115
|
-
|
|
116
|
-
address[] memory path,
|
|
104
|
+
TokenOutput calldata output,
|
|
117
105
|
bool doPull
|
|
118
|
-
) internal returns (uint256
|
|
106
|
+
) internal returns (uint256 netTokenOut) {
|
|
119
107
|
address PT = IPYieldToken(YT).PT();
|
|
120
108
|
address SCY = IPYieldToken(YT).SCY();
|
|
121
109
|
|
|
@@ -125,9 +113,9 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg, TokenHelper {
|
|
|
125
113
|
if (needToBurnYt) IERC20(YT).safeTransferFrom(msg.sender, YT, netPyIn);
|
|
126
114
|
}
|
|
127
115
|
|
|
128
|
-
IPYieldToken(YT).redeemPY(SCY); // ignore return
|
|
116
|
+
uint256 amountScyOut = IPYieldToken(YT).redeemPY(SCY); // ignore return
|
|
129
117
|
|
|
130
|
-
|
|
118
|
+
netTokenOut = _redeemScyToToken(receiver, SCY, amountScyOut, output, false);
|
|
131
119
|
}
|
|
132
120
|
|
|
133
121
|
function _mintPyFromScy(
|
|
@@ -16,7 +16,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
|
|
|
16
16
|
using MarketApproxLib for MarketState;
|
|
17
17
|
using SafeERC20 for ISuperComposableYield;
|
|
18
18
|
using SafeERC20 for IPYieldToken;
|
|
19
|
-
using
|
|
19
|
+
using PYIndexLib for IPYieldToken;
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @notice swap exact SCY to YT with the help of flashswaps & YT tokenization / redemption
|
|
@@ -40,7 +40,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
|
|
|
40
40
|
MarketState memory state = IPMarket(market).readState(false);
|
|
41
41
|
|
|
42
42
|
(netYtOut, , ) = state.approxSwapExactScyForYt(
|
|
43
|
-
|
|
43
|
+
YT.newIndex(),
|
|
44
44
|
exactScyIn,
|
|
45
45
|
block.timestamp,
|
|
46
46
|
guessYtOut
|
|
@@ -141,10 +141,10 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
|
|
|
141
141
|
bool doPull
|
|
142
142
|
) internal returns (uint256 netYtIn) {
|
|
143
143
|
MarketState memory state = IPMarket(market).readState(false);
|
|
144
|
-
(
|
|
144
|
+
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
145
145
|
|
|
146
146
|
(netYtIn, , ) = state.approxSwapYtForExactScy(
|
|
147
|
-
|
|
147
|
+
YT.newIndex(),
|
|
148
148
|
exactScyOut,
|
|
149
149
|
block.timestamp,
|
|
150
150
|
guessYtIn
|
|
@@ -167,25 +167,16 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
|
|
|
167
167
|
* @notice swap any ERC20 tokens, through Uniswap's forks, to baseToken of the corresponding SCY of YT. These SCY is then
|
|
168
168
|
used to swap to YT. Please refer to swapExactScyForYt for more details.
|
|
169
169
|
*/
|
|
170
|
-
function
|
|
170
|
+
function _swapExactTokenForYt(
|
|
171
171
|
address receiver,
|
|
172
172
|
address market,
|
|
173
|
-
uint256 exactRawTokenIn,
|
|
174
173
|
uint256 minYtOut,
|
|
175
|
-
address[] calldata path,
|
|
176
174
|
ApproxParams memory guessYtOut,
|
|
177
|
-
|
|
175
|
+
TokenInput calldata input
|
|
178
176
|
) internal returns (uint256 netYtOut) {
|
|
179
177
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
180
178
|
|
|
181
|
-
uint256 netScyUsedToBuyYT =
|
|
182
|
-
address(YT),
|
|
183
|
-
address(SCY),
|
|
184
|
-
exactRawTokenIn,
|
|
185
|
-
1,
|
|
186
|
-
path,
|
|
187
|
-
doPull
|
|
188
|
-
);
|
|
179
|
+
uint256 netScyUsedToBuyYT = _mintScyFromToken(address(YT), address(SCY), 1, input);
|
|
189
180
|
|
|
190
181
|
netYtOut = _swapExactScyForYt(
|
|
191
182
|
receiver,
|
|
@@ -198,28 +189,20 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
|
|
|
198
189
|
}
|
|
199
190
|
|
|
200
191
|
/**
|
|
201
|
-
* @notice swap YT to SCY (using `swapExactYtForScy` logic), then redeem SCY to baseToken & swap baseToken to
|
|
192
|
+
* @notice swap YT to SCY (using `swapExactYtForScy` logic), then redeem SCY to baseToken & swap baseToken to token
|
|
202
193
|
through Uniswap's forks
|
|
203
194
|
*/
|
|
204
|
-
function
|
|
195
|
+
function _swapExactYtForToken(
|
|
205
196
|
address receiver,
|
|
206
197
|
address market,
|
|
207
|
-
uint256
|
|
208
|
-
|
|
209
|
-
address[] calldata path,
|
|
198
|
+
uint256 netYtIn,
|
|
199
|
+
TokenOutput calldata output,
|
|
210
200
|
bool doPull
|
|
211
|
-
) internal returns (uint256
|
|
201
|
+
) internal returns (uint256 netTokenOut) {
|
|
212
202
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
213
203
|
|
|
214
|
-
uint256 netScyOut = _swapExactYtForScy(
|
|
204
|
+
uint256 netScyOut = _swapExactYtForScy(receiver, market, netYtIn, 1, doPull);
|
|
215
205
|
|
|
216
|
-
|
|
217
|
-
receiver,
|
|
218
|
-
address(SCY),
|
|
219
|
-
netScyOut,
|
|
220
|
-
minRawTokenOut,
|
|
221
|
-
path,
|
|
222
|
-
false
|
|
223
|
-
);
|
|
206
|
+
netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyOut, output, false);
|
|
224
207
|
}
|
|
225
208
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
/*
|
|
3
|
+
* MIT License
|
|
4
|
+
* ===========
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
pragma solidity 0.8.15;
|
|
25
|
+
|
|
26
|
+
interface IEulerEToken {
|
|
27
|
+
/// @notice Address of underlying asset
|
|
28
|
+
function underlyingAsset() external view returns (address);
|
|
29
|
+
|
|
30
|
+
/// @notice Sum of all balances, in internal book-keeping units (non-increasing)
|
|
31
|
+
function totalSupply() external view returns (uint256);
|
|
32
|
+
|
|
33
|
+
/// @notice Sum of all balances, in underlying units (increases as interest is earned)
|
|
34
|
+
function totalSupplyUnderlying() external view returns (uint256);
|
|
35
|
+
|
|
36
|
+
/// @notice Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens
|
|
37
|
+
/// @param subAccountId 0 for primary, 1-255 for a sub-account
|
|
38
|
+
/// @param amount In underlying units (use max uint256 for full underlying token balance)
|
|
39
|
+
function deposit(uint256 subAccountId, uint256 amount) external;
|
|
40
|
+
|
|
41
|
+
function balanceOf(address) external view returns (uint256);
|
|
42
|
+
|
|
43
|
+
/// @notice Balance of a particular account, in underlying units (increases as interest is earned)
|
|
44
|
+
function balanceOfUnderlying(address) external view returns (uint256);
|
|
45
|
+
|
|
46
|
+
/// @notice Convert an underlying amount to an eToken balance, taking into account current exchange rate
|
|
47
|
+
/// @param underlyingAmount Amount in underlying units (same decimals as underlying token)
|
|
48
|
+
/// @return eToken balance, in internal book-keeping units (18 decimals)
|
|
49
|
+
function convertUnderlyingToBalance(uint256 underlyingAmount) external view returns (uint256);
|
|
50
|
+
|
|
51
|
+
/// @notice Convert an eToken balance to an underlying amount, taking into account current exchange rate
|
|
52
|
+
/// @param balance eToken balance, in internal book-keeping units (18 decimals)
|
|
53
|
+
/// @return Amount in underlying units, (same decimals as underlying token)
|
|
54
|
+
function convertBalanceToUnderlying(uint256 balance) external view returns (uint256);
|
|
55
|
+
|
|
56
|
+
/// @notice Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens
|
|
57
|
+
/// @param subAccountId 0 for primary, 1-255 for a sub-account
|
|
58
|
+
/// @param amount In underlying units (use max uint256 for full pool balance)
|
|
59
|
+
function withdraw(uint256 subAccountId, uint256 amount) external;
|
|
60
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
/*
|
|
3
|
+
* MIT License
|
|
4
|
+
* ===========
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
pragma solidity 0.8.15;
|
|
25
|
+
|
|
26
|
+
interface IEulerMarkets {
|
|
27
|
+
/// @notice Given an EToken address, looks up the associated underlying
|
|
28
|
+
/// @param eToken EToken address
|
|
29
|
+
/// @return underlying Token address
|
|
30
|
+
function eTokenToUnderlying(address eToken) external view returns (address underlying);
|
|
31
|
+
|
|
32
|
+
/// @notice Given an underlying, lookup the associated EToken
|
|
33
|
+
/// @param underlying Token address
|
|
34
|
+
/// @return EToken address, or address(0) if not activated
|
|
35
|
+
function underlyingToEToken(address underlying) external view returns (address);
|
|
36
|
+
|
|
37
|
+
/// @notice Given an underlying, lookup the associated DToken
|
|
38
|
+
/// @param underlying Token address
|
|
39
|
+
/// @return DToken address, or address(0) if not activated
|
|
40
|
+
function underlyingToDToken(address underlying) external view returns (address);
|
|
41
|
+
|
|
42
|
+
/// @notice Retrieves the current interest rate for an asset
|
|
43
|
+
/// @param underlying Token address
|
|
44
|
+
/// @return The interest rate in yield-per-second, scaled by 10**27
|
|
45
|
+
function interestRate(address underlying) external view returns (int96);
|
|
46
|
+
}
|