@pendle/core-v2 0.9.4-beta → 0.10.2-testnet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +7 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol}/PendleYearnVaultSCY.json +3 -3
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json +67 -5
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +63 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +65 -3
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +74 -10
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +79 -15
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +204 -123
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +127 -73
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +93 -34
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +90 -14
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +14 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +139 -37
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +84 -56
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +122 -11
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +96 -40
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +1025 -0
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +622 -0
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +35 -0
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +459 -0
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +459 -0
- package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/base/{ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json → ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json} +2 -2
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +24 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPActionCore.sol/IPActionCore.json → IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json} +141 -912
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +598 -0
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +35 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +435 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPActionYT.sol/IPActionYT.json → IPActionSwapYT.sol/IPActionSwapYT.json} +23 -11
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +323 -47
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +4 -0
- package/build/artifacts/contracts/{core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json → interfaces/IPGauge.sol/IPGauge.json} +5 -5
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +72 -29
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +0 -11
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +0 -37
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.json +1 -1
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +74 -0
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +93 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +427 -39
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +4 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +86 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +4 -0
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +37 -0
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +8 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +11 -5
- package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -1
- package/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol} +0 -0
- package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +1 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +1 -1
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +7 -7
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +7 -6
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -5
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -3
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +6 -3
- package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
- package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +22 -28
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +71 -13
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -2
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +4 -3
- package/contracts/core/Market/PendleMarket.sol +93 -57
- package/contracts/core/Market/PendleMarketFactory.sol +18 -33
- package/contracts/core/PendleRouter.sol +60 -52
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +12 -12
- package/contracts/core/YieldContracts/PendleYieldToken.sol +1 -1
- package/contracts/core/actions/ActionAddRemoveLiq.sol +366 -0
- package/contracts/core/actions/ActionCallback.sol +6 -6
- package/contracts/core/actions/ActionMintRedeem.sol +124 -0
- package/contracts/core/actions/ActionMisc.sol +24 -0
- package/contracts/core/actions/ActionSwapPT.sol +199 -0
- package/contracts/core/actions/{base/ActionSCYAndYTBase.sol → ActionSwapYT.sol} +109 -74
- package/contracts/core/actions/base/{ActionSCYAndPYBase.sol → ActionBaseMintRedeem.sol} +9 -8
- package/contracts/interfaces/IBenQiComptroller.sol +2 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +188 -0
- package/contracts/interfaces/IPActionMintRedeem.sol +115 -0
- package/contracts/interfaces/IPActionMisc.sol +9 -0
- package/contracts/interfaces/IPActionSwapPT.sol +69 -0
- package/contracts/interfaces/{IPActionYT.sol → IPActionSwapYT.sol} +12 -10
- package/contracts/interfaces/IPAllAction.sol +12 -3
- package/contracts/interfaces/IPGauge.sol +6 -0
- package/contracts/interfaces/IPGaugeController.sol +0 -2
- package/contracts/interfaces/IPMarket.sol +28 -10
- package/contracts/interfaces/IPMarketFactory.sol +1 -7
- package/contracts/interfaces/IPVeToken.sol +1 -1
- package/contracts/interfaces/IPVotingController.sol +0 -2
- package/contracts/interfaces/IRewardManager.sol +1 -1
- package/contracts/libraries/OracleLib.sol +214 -0
- package/contracts/libraries/RewardManagerAbstract.sol +1 -1
- package/contracts/libraries/math/MarketApproxLib.sol +227 -14
- package/contracts/libraries/math/MarketMathCore.sol +0 -33
- package/contracts/offchain-helpers/MarketMathStatic.sol +565 -0
- package/contracts/offchain-helpers/RouterStatic.sol +187 -251
- package/contracts/periphery/BoringOwnableUpgradeable.sol +62 -0
- package/deployments/43113-core.json +7 -8
- package/deployments/43113-markets/benqi-market-590025.json +8 -0
- package/deployments/43113-markets/benqi-market-c93916.json +8 -0
- package/deployments/80001-core.json +6 -7
- package/deployments/80001-markets/benqi-market-3b8BD1.json +8 -0
- package/deployments/80001-markets/benqi-market-b61e7f.json +8 -0
- package/package.json +11 -11
- package/typechain-types/ActionAddRemoveLiq.ts +1037 -0
- package/typechain-types/ActionBaseMintRedeem.ts +87 -0
- package/typechain-types/ActionCore.ts +21 -20
- package/typechain-types/ActionMintRedeem.ts +665 -0
- package/typechain-types/ActionMisc.ts +105 -0
- package/typechain-types/ActionSwapPT.ts +515 -0
- package/typechain-types/ActionSwapYT.ts +515 -0
- package/typechain-types/ActionYT.ts +5 -4
- package/typechain-types/BoringOwnable.ts +194 -0
- package/typechain-types/BoringOwnableData.ts +100 -0
- package/typechain-types/BoringOwnableUpgradeable.ts +194 -0
- package/typechain-types/BoringOwnableUpgradeableData.ts +100 -0
- package/typechain-types/CelerReceiverUpg.ts +124 -19
- package/typechain-types/CelerSenderUpg.ts +116 -11
- package/typechain-types/IBenQiComptroller.ts +39 -0
- package/typechain-types/IPActionAddRemoveLiq.ts +1018 -0
- package/typechain-types/IPActionCore.ts +21 -20
- package/typechain-types/IPActionMintRedeem.ts +646 -0
- package/typechain-types/IPActionMisc.ts +105 -0
- package/typechain-types/IPActionSwapPT.ts +496 -0
- package/typechain-types/IPActionSwapYT.ts +496 -0
- package/typechain-types/IPActionYT.ts +5 -4
- package/typechain-types/IPAllAction.ts +431 -193
- package/typechain-types/IPGauge.ts +87 -0
- package/typechain-types/IPMarket.ts +133 -50
- package/typechain-types/IPMarketFactory.ts +7 -17
- package/typechain-types/IPVeToken.ts +8 -8
- package/typechain-types/IPVotingController.ts +0 -20
- package/typechain-types/IPYieldToken.ts +3 -3
- package/typechain-types/IRewardManager.ts +3 -3
- package/typechain-types/MarketMathStatic.ts +198 -0
- package/typechain-types/OracleLib.ts +124 -0
- package/typechain-types/PendleGaugeControllerBaseUpg.ts +118 -15
- package/typechain-types/PendleGaugeControllerMainchainUpg.ts +136 -9
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +138 -11
- package/typechain-types/PendleMarket.ts +178 -59
- package/typechain-types/PendleMarketFactory.ts +135 -61
- package/typechain-types/PendleRouter.ts +201 -31
- package/typechain-types/PendleVotingControllerUpg.ts +325 -149
- package/typechain-types/PendleYieldContractFactory.ts +144 -21
- package/typechain-types/RouterStatic.ts +344 -64
- package/typechain-types/VotingControllerStorageUpg.ts +182 -113
- package/typechain-types/VotingEscrowPendleMainchain.ts +170 -63
- package/typechain-types/VotingEscrowPendleSidechain.ts +163 -17
- package/typechain-types/VotingEscrowTokenBase.ts +27 -8
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1083 -0
- package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +43 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionCore__factory.ts +6 -6
- package/typechain-types/factories/ActionMintRedeem__factory.ts +680 -0
- package/typechain-types/factories/ActionMisc__factory.ts +85 -0
- package/typechain-types/factories/ActionSwapPT__factory.ts +514 -0
- package/typechain-types/factories/ActionSwapYT__factory.ts +514 -0
- package/typechain-types/factories/ActionYT__factory.ts +2 -2
- package/typechain-types/factories/BoringOwnableData__factory.ts +90 -0
- package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +96 -0
- package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +143 -0
- package/typechain-types/factories/BoringOwnable__factory.ts +141 -0
- package/typechain-types/factories/CelerReceiverUpg__factory.ts +67 -5
- package/typechain-types/factories/CelerSenderUpg__factory.ts +63 -1
- package/typechain-types/factories/IBenQiComptroller__factory.ts +24 -0
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +1020 -0
- package/typechain-types/factories/IPActionCore__factory.ts +5 -5
- package/typechain-types/factories/IPActionMintRedeem__factory.ts +613 -0
- package/typechain-types/factories/IPActionMisc__factory.ts +47 -0
- package/typechain-types/factories/IPActionSwapPT__factory.ts +450 -0
- package/typechain-types/factories/IPActionSwapYT__factory.ts +450 -0
- package/typechain-types/factories/IPActionYT__factory.ts +1 -1
- package/typechain-types/factories/IPAllAction__factory.ts +323 -47
- package/typechain-types/factories/IPGauge__factory.ts +36 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +0 -11
- package/typechain-types/factories/IPMarket__factory.ts +72 -29
- package/typechain-types/factories/IPVeToken__factory.ts +1 -1
- package/typechain-types/factories/IPVotingController__factory.ts +0 -37
- package/typechain-types/factories/IPYieldToken__factory.ts +1 -1
- package/typechain-types/factories/IRewardManager__factory.ts +1 -1
- package/typechain-types/factories/MarketMathStatic__factory.ts +146 -0
- package/typechain-types/factories/OracleLib__factory.ts +124 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
- package/typechain-types/factories/PendleEulerSCY__factory.ts +10 -1
- package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +65 -3
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +73 -13
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +79 -23
- package/typechain-types/factories/PendleMarketFactory__factory.ts +84 -86
- package/typechain-types/factories/PendleMarket__factory.ts +131 -37
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +141 -22
- package/typechain-types/factories/PendleSAvaxSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleSJoeSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +203 -129
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +97 -72
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +233 -39
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +126 -72
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +93 -41
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +90 -17
- package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +14 -1
- package/typechain-types/hardhat.d.ts +162 -0
- package/typechain-types/index.ts +36 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +0 -1801
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +0 -447
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +0 -24
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -874
- package/contracts/core/actions/ActionCore.sol +0 -382
- package/contracts/core/actions/ActionYT.sol +0 -93
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +0 -303
- package/contracts/interfaces/IPActionCore.sol +0 -306
- package/contracts/interfaces/IPRouterStatic.sol +0 -152
- package/deployments/43113-markets/benqi-market-599408.json +0 -7
- package/deployments/43113-markets/benqi-market-93bbf0.json +0 -7
- package/deployments/43113-markets/benqi-market-95E744.json +0 -7
- package/deployments/43113-markets/benqi-market-D91a3F.json +0 -7
- package/deployments/80001-markets/benqi-market-007811.json +0 -7
- package/deployments/80001-markets/benqi-market-3fe528.json +0 -7
- package/typechain-types/FeeDistributorAbstract.ts +0 -164
- package/typechain-types/IPVotingControllerStorage.ts +0 -169
- package/typechain-types/factories/FeeDistributorAbstract__factory.ts +0 -90
- package/typechain-types/factories/IPVotingControllerStorage__factory.ts +0 -107
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.15;
|
|
3
|
+
|
|
4
|
+
import "../libraries/math/MarketApproxLib.sol";
|
|
5
|
+
import "../interfaces/IPMarket.sol";
|
|
6
|
+
|
|
7
|
+
library MarketMathStatic {
|
|
8
|
+
using MarketMathCore for MarketState;
|
|
9
|
+
using MarketApproxLib for MarketState;
|
|
10
|
+
using Math for uint256;
|
|
11
|
+
using Math for int256;
|
|
12
|
+
using LogExpMath for int256;
|
|
13
|
+
using PYIndexLib for PYIndex;
|
|
14
|
+
using PYIndexLib for IPYieldToken;
|
|
15
|
+
|
|
16
|
+
function addLiquidityDualScyAndPtStatic(
|
|
17
|
+
address market,
|
|
18
|
+
uint256 scyDesired,
|
|
19
|
+
uint256 ptDesired
|
|
20
|
+
)
|
|
21
|
+
external
|
|
22
|
+
returns (
|
|
23
|
+
uint256 netLpOut,
|
|
24
|
+
uint256 scyUsed,
|
|
25
|
+
uint256 ptUsed
|
|
26
|
+
)
|
|
27
|
+
{
|
|
28
|
+
MarketState memory state = IPMarket(market).readState();
|
|
29
|
+
(, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
|
|
30
|
+
pyIndex(market),
|
|
31
|
+
scyDesired,
|
|
32
|
+
ptDesired,
|
|
33
|
+
block.timestamp
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function addLiquidityDualTokenAndPtStatic(
|
|
38
|
+
address market,
|
|
39
|
+
address tokenIn,
|
|
40
|
+
uint256 tokenDesired,
|
|
41
|
+
uint256 ptDesired
|
|
42
|
+
)
|
|
43
|
+
external
|
|
44
|
+
returns (
|
|
45
|
+
uint256 netLpOut,
|
|
46
|
+
uint256 tokenUsed,
|
|
47
|
+
uint256 ptUsed
|
|
48
|
+
)
|
|
49
|
+
{
|
|
50
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
51
|
+
|
|
52
|
+
uint256 scyDesired = SCY.previewDeposit(tokenIn, tokenDesired);
|
|
53
|
+
uint256 scyUsed;
|
|
54
|
+
|
|
55
|
+
MarketState memory state = IPMarket(market).readState();
|
|
56
|
+
(, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
|
|
57
|
+
pyIndex(market),
|
|
58
|
+
scyDesired,
|
|
59
|
+
ptDesired,
|
|
60
|
+
block.timestamp
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
tokenUsed = (tokenDesired * scyUsed).rawDivUp(scyDesired);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function addLiquiditySinglePtStatic(
|
|
67
|
+
address market,
|
|
68
|
+
uint256 netPtIn,
|
|
69
|
+
ApproxParams memory approxParams
|
|
70
|
+
)
|
|
71
|
+
external
|
|
72
|
+
returns (
|
|
73
|
+
uint256 netLpOut,
|
|
74
|
+
uint256 netScyFee,
|
|
75
|
+
uint256 priceImpact
|
|
76
|
+
)
|
|
77
|
+
{
|
|
78
|
+
MarketState memory state = IPMarket(market).readState();
|
|
79
|
+
|
|
80
|
+
(uint256 netPtSwap, , ) = state.approxSwapPtToAddLiquidity(
|
|
81
|
+
pyIndex(market),
|
|
82
|
+
netPtIn,
|
|
83
|
+
block.timestamp,
|
|
84
|
+
approxParams
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
uint256 netScyReceived;
|
|
88
|
+
(netScyReceived, netScyFee) = state.swapExactPtForScy(
|
|
89
|
+
pyIndex(market),
|
|
90
|
+
netPtSwap,
|
|
91
|
+
block.timestamp
|
|
92
|
+
);
|
|
93
|
+
(, netLpOut, , ) = state.addLiquidity(
|
|
94
|
+
pyIndex(market),
|
|
95
|
+
netScyReceived,
|
|
96
|
+
netPtIn - netPtSwap,
|
|
97
|
+
block.timestamp
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
priceImpact = calcPriceImpact(market, netPtSwap.neg());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function addLiquiditySingleScyStatic(
|
|
104
|
+
address market,
|
|
105
|
+
uint256 netScyIn,
|
|
106
|
+
ApproxParams memory approxParams
|
|
107
|
+
)
|
|
108
|
+
public
|
|
109
|
+
returns (
|
|
110
|
+
uint256 netLpOut,
|
|
111
|
+
uint256 netScyFee,
|
|
112
|
+
uint256 priceImpact
|
|
113
|
+
)
|
|
114
|
+
{
|
|
115
|
+
MarketState memory state = IPMarket(market).readState();
|
|
116
|
+
|
|
117
|
+
(uint256 netPtReceived, , ) = state.approxSwapScyToAddLiquidity(
|
|
118
|
+
pyIndex(market),
|
|
119
|
+
netScyIn,
|
|
120
|
+
block.timestamp,
|
|
121
|
+
approxParams
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
uint256 netScySwap;
|
|
125
|
+
(netScySwap, netScyFee) = state.swapScyForExactPt(
|
|
126
|
+
pyIndex(market),
|
|
127
|
+
netPtReceived,
|
|
128
|
+
block.timestamp
|
|
129
|
+
);
|
|
130
|
+
(, netLpOut, , ) = state.addLiquidity(
|
|
131
|
+
pyIndex(market),
|
|
132
|
+
netScyIn - netScySwap,
|
|
133
|
+
netPtReceived,
|
|
134
|
+
block.timestamp
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
priceImpact = calcPriceImpact(market, netPtReceived.Int());
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function addLiquiditySingleBaseTokenStatic(
|
|
141
|
+
address market,
|
|
142
|
+
address baseToken,
|
|
143
|
+
uint256 netBaseTokenIn,
|
|
144
|
+
ApproxParams memory approxParams
|
|
145
|
+
)
|
|
146
|
+
external
|
|
147
|
+
returns (
|
|
148
|
+
uint256 netLpOut,
|
|
149
|
+
uint256 netScyFee,
|
|
150
|
+
uint256 priceImpact
|
|
151
|
+
)
|
|
152
|
+
{
|
|
153
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
154
|
+
|
|
155
|
+
return
|
|
156
|
+
addLiquiditySingleScyStatic(
|
|
157
|
+
market,
|
|
158
|
+
SCY.previewDeposit(baseToken, netBaseTokenIn),
|
|
159
|
+
approxParams
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function removeLiquidityDualScyAndPtStatic(address market, uint256 lpToRemove)
|
|
164
|
+
external
|
|
165
|
+
view
|
|
166
|
+
returns (uint256 netScyOut, uint256 netPtOut)
|
|
167
|
+
{
|
|
168
|
+
MarketState memory state = IPMarket(market).readState();
|
|
169
|
+
(netScyOut, netPtOut) = state.removeLiquidity(lpToRemove);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function removeLiquidityDualTokenAndPtStatic(
|
|
173
|
+
address market,
|
|
174
|
+
uint256 lpToRemove,
|
|
175
|
+
address tokenOut
|
|
176
|
+
) external view returns (uint256 netTokenOut, uint256 netPtOut) {
|
|
177
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
178
|
+
|
|
179
|
+
uint256 netScyOut;
|
|
180
|
+
MarketState memory state = IPMarket(market).readState();
|
|
181
|
+
(netScyOut, netPtOut) = state.removeLiquidity(lpToRemove);
|
|
182
|
+
|
|
183
|
+
netTokenOut = SCY.previewRedeem(tokenOut, netScyOut);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function removeLiquiditySinglePtStatic(
|
|
187
|
+
address market,
|
|
188
|
+
uint256 lpToRemove,
|
|
189
|
+
ApproxParams memory approxParams
|
|
190
|
+
)
|
|
191
|
+
external
|
|
192
|
+
returns (
|
|
193
|
+
uint256 netPtOut,
|
|
194
|
+
uint256 netScyFee,
|
|
195
|
+
uint256 priceImpact
|
|
196
|
+
)
|
|
197
|
+
{
|
|
198
|
+
MarketState memory state = IPMarket(market).readState();
|
|
199
|
+
|
|
200
|
+
(uint256 scyFromBurn, uint256 ptFromBurn) = state.removeLiquidity(lpToRemove);
|
|
201
|
+
uint256 ptFromSwap;
|
|
202
|
+
(ptFromSwap, , netScyFee) = state.approxSwapExactScyForPt(
|
|
203
|
+
pyIndex(market),
|
|
204
|
+
scyFromBurn,
|
|
205
|
+
block.timestamp,
|
|
206
|
+
approxParams
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
netPtOut = ptFromBurn + ptFromSwap;
|
|
210
|
+
priceImpact = calcPriceImpact(market, ptFromSwap.Int());
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function removeLiquiditySingleScyStatic(address market, uint256 lpToRemove)
|
|
214
|
+
public
|
|
215
|
+
returns (
|
|
216
|
+
uint256 netScyOut,
|
|
217
|
+
uint256 netScyFee,
|
|
218
|
+
uint256 priceImpact
|
|
219
|
+
)
|
|
220
|
+
{
|
|
221
|
+
MarketState memory state = IPMarket(market).readState();
|
|
222
|
+
|
|
223
|
+
(uint256 scyFromBurn, uint256 ptFromBurn) = state.removeLiquidity(lpToRemove);
|
|
224
|
+
uint256 scyFromSwap;
|
|
225
|
+
(scyFromSwap, netScyFee) = state.swapExactPtForScy(
|
|
226
|
+
pyIndex(market),
|
|
227
|
+
ptFromBurn,
|
|
228
|
+
block.timestamp
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
netScyOut = scyFromBurn + scyFromSwap;
|
|
232
|
+
priceImpact = calcPriceImpact(market, ptFromBurn.neg());
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function removeLiquiditySingleBaseTokenStatic(
|
|
236
|
+
address market,
|
|
237
|
+
uint256 lpToRemove,
|
|
238
|
+
address baseToken
|
|
239
|
+
)
|
|
240
|
+
external
|
|
241
|
+
returns (
|
|
242
|
+
uint256 netBaseTokenOut,
|
|
243
|
+
uint256 netScyFee,
|
|
244
|
+
uint256 priceImpact
|
|
245
|
+
)
|
|
246
|
+
{
|
|
247
|
+
uint256 netScyOut;
|
|
248
|
+
(netScyOut, netScyFee, priceImpact) = removeLiquiditySingleScyStatic(market, lpToRemove);
|
|
249
|
+
|
|
250
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
251
|
+
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function swapExactPtForScyStatic(address market, uint256 exactPtIn)
|
|
255
|
+
public
|
|
256
|
+
returns (
|
|
257
|
+
uint256 netScyOut,
|
|
258
|
+
uint256 netScyFee,
|
|
259
|
+
uint256 priceImpact
|
|
260
|
+
)
|
|
261
|
+
{
|
|
262
|
+
MarketState memory state = IPMarket(market).readState();
|
|
263
|
+
(netScyOut, netScyFee) = state.swapExactPtForScy(
|
|
264
|
+
pyIndex(market),
|
|
265
|
+
exactPtIn,
|
|
266
|
+
block.timestamp
|
|
267
|
+
);
|
|
268
|
+
priceImpact = calcPriceImpact(market, exactPtIn.neg());
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function swapScyForExactPtStatic(address market, uint256 exactPtOut)
|
|
272
|
+
external
|
|
273
|
+
returns (
|
|
274
|
+
uint256 netScyIn,
|
|
275
|
+
uint256 netScyFee,
|
|
276
|
+
uint256 priceImpact
|
|
277
|
+
)
|
|
278
|
+
{
|
|
279
|
+
MarketState memory state = IPMarket(market).readState();
|
|
280
|
+
(netScyIn, netScyFee) = state.swapScyForExactPt(
|
|
281
|
+
pyIndex(market),
|
|
282
|
+
exactPtOut,
|
|
283
|
+
block.timestamp
|
|
284
|
+
);
|
|
285
|
+
priceImpact = calcPriceImpact(market, exactPtOut.Int());
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function swapExactScyForPtStatic(
|
|
289
|
+
address market,
|
|
290
|
+
uint256 exactScyIn,
|
|
291
|
+
ApproxParams memory approxParams
|
|
292
|
+
)
|
|
293
|
+
public
|
|
294
|
+
returns (
|
|
295
|
+
uint256 netPtOut,
|
|
296
|
+
uint256 netScyFee,
|
|
297
|
+
uint256 priceImpact
|
|
298
|
+
)
|
|
299
|
+
{
|
|
300
|
+
MarketState memory state = IPMarket(market).readState();
|
|
301
|
+
(netPtOut, , netScyFee) = state.approxSwapExactScyForPt(
|
|
302
|
+
pyIndex(market),
|
|
303
|
+
exactScyIn,
|
|
304
|
+
block.timestamp,
|
|
305
|
+
approxParams
|
|
306
|
+
);
|
|
307
|
+
priceImpact = calcPriceImpact(market, netPtOut.Int());
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function swapPtForExactScyStatic(
|
|
311
|
+
address market,
|
|
312
|
+
uint256 exactScyOut,
|
|
313
|
+
ApproxParams memory approxParams
|
|
314
|
+
)
|
|
315
|
+
public
|
|
316
|
+
returns (
|
|
317
|
+
uint256 netPtIn,
|
|
318
|
+
uint256 netScyFee,
|
|
319
|
+
uint256 priceImpact
|
|
320
|
+
)
|
|
321
|
+
{
|
|
322
|
+
MarketState memory state = IPMarket(market).readState();
|
|
323
|
+
|
|
324
|
+
(netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
|
|
325
|
+
pyIndex(market),
|
|
326
|
+
exactScyOut,
|
|
327
|
+
block.timestamp,
|
|
328
|
+
approxParams
|
|
329
|
+
);
|
|
330
|
+
priceImpact = calcPriceImpact(market, netPtIn.neg());
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function swapExactBaseTokenForPtStatic(
|
|
334
|
+
address market,
|
|
335
|
+
address baseToken,
|
|
336
|
+
uint256 amountBaseToken,
|
|
337
|
+
ApproxParams memory approxParams
|
|
338
|
+
)
|
|
339
|
+
external
|
|
340
|
+
returns (
|
|
341
|
+
uint256 netPtOut,
|
|
342
|
+
uint256 netScyFee,
|
|
343
|
+
uint256 priceImpact
|
|
344
|
+
)
|
|
345
|
+
{
|
|
346
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
347
|
+
|
|
348
|
+
return
|
|
349
|
+
swapExactScyForPtStatic(
|
|
350
|
+
market,
|
|
351
|
+
SCY.previewDeposit(baseToken, amountBaseToken),
|
|
352
|
+
approxParams
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
function swapExactPtForBaseTokenStatic(
|
|
357
|
+
address market,
|
|
358
|
+
uint256 exactYtIn,
|
|
359
|
+
address baseToken
|
|
360
|
+
)
|
|
361
|
+
external
|
|
362
|
+
returns (
|
|
363
|
+
uint256 netBaseTokenOut,
|
|
364
|
+
uint256 netScyFee,
|
|
365
|
+
uint256 priceImpact
|
|
366
|
+
)
|
|
367
|
+
{
|
|
368
|
+
uint256 netScyOut;
|
|
369
|
+
(netScyOut, netScyFee, priceImpact) = swapExactPtForScyStatic(market, exactYtIn);
|
|
370
|
+
|
|
371
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
372
|
+
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
function swapScyForExactYtStatic(address market, uint256 exactYtOut)
|
|
376
|
+
external
|
|
377
|
+
returns (
|
|
378
|
+
uint256 netScyIn,
|
|
379
|
+
uint256 netScyFee,
|
|
380
|
+
uint256 priceImpact
|
|
381
|
+
)
|
|
382
|
+
{
|
|
383
|
+
MarketState memory state = IPMarket(market).readState();
|
|
384
|
+
|
|
385
|
+
PYIndex index = pyIndex(market);
|
|
386
|
+
|
|
387
|
+
uint256 scyReceived;
|
|
388
|
+
(scyReceived, netScyFee) = state.swapExactPtForScy(
|
|
389
|
+
pyIndex(market),
|
|
390
|
+
exactYtOut,
|
|
391
|
+
block.timestamp
|
|
392
|
+
);
|
|
393
|
+
|
|
394
|
+
uint256 totalScyNeed = index.assetToScyUp(exactYtOut);
|
|
395
|
+
netScyIn = totalScyNeed.subMax0(scyReceived);
|
|
396
|
+
|
|
397
|
+
priceImpact = calcPriceImpact(market, exactYtOut.neg());
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
function swapExactScyForYtStatic(
|
|
401
|
+
address market,
|
|
402
|
+
uint256 exactScyIn,
|
|
403
|
+
ApproxParams memory approxParams
|
|
404
|
+
)
|
|
405
|
+
public
|
|
406
|
+
returns (
|
|
407
|
+
uint256 netYtOut,
|
|
408
|
+
uint256 netScyFee,
|
|
409
|
+
uint256 priceImpact
|
|
410
|
+
)
|
|
411
|
+
{
|
|
412
|
+
MarketState memory state = IPMarket(market).readState();
|
|
413
|
+
PYIndex index = pyIndex(market);
|
|
414
|
+
|
|
415
|
+
(netYtOut, , netScyFee) = state.approxSwapExactScyForYt(
|
|
416
|
+
index,
|
|
417
|
+
exactScyIn,
|
|
418
|
+
block.timestamp,
|
|
419
|
+
approxParams
|
|
420
|
+
);
|
|
421
|
+
|
|
422
|
+
priceImpact = calcPriceImpact(market, netYtOut.neg());
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
function swapExactYtForScyStatic(address market, uint256 exactYtIn)
|
|
426
|
+
public
|
|
427
|
+
returns (
|
|
428
|
+
uint256 netScyOut,
|
|
429
|
+
uint256 netScyFee,
|
|
430
|
+
uint256 priceImpact
|
|
431
|
+
)
|
|
432
|
+
{
|
|
433
|
+
MarketState memory state = IPMarket(market).readState();
|
|
434
|
+
|
|
435
|
+
PYIndex index = pyIndex(market);
|
|
436
|
+
|
|
437
|
+
uint256 scyOwed;
|
|
438
|
+
(scyOwed, netScyFee) = state.swapScyForExactPt(index, exactYtIn, block.timestamp);
|
|
439
|
+
|
|
440
|
+
uint256 amountPYToRepayScyOwed = index.scyToAssetUp(scyOwed);
|
|
441
|
+
uint256 amountPYToRedeemScyOut = exactYtIn - amountPYToRepayScyOwed;
|
|
442
|
+
|
|
443
|
+
netScyOut = index.assetToScy(amountPYToRedeemScyOut);
|
|
444
|
+
priceImpact = calcPriceImpact(market, exactYtIn.Int());
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
function swapYtForExactScyStatic(
|
|
448
|
+
address market,
|
|
449
|
+
uint256 exactScyOut,
|
|
450
|
+
ApproxParams memory approxParams
|
|
451
|
+
)
|
|
452
|
+
external
|
|
453
|
+
returns (
|
|
454
|
+
uint256 netYtIn,
|
|
455
|
+
uint256 netScyFee,
|
|
456
|
+
uint256 priceImpact
|
|
457
|
+
)
|
|
458
|
+
{
|
|
459
|
+
MarketState memory state = IPMarket(market).readState();
|
|
460
|
+
|
|
461
|
+
PYIndex index = pyIndex(market);
|
|
462
|
+
|
|
463
|
+
(netYtIn, , netScyFee) = state.approxSwapYtForExactScy(
|
|
464
|
+
index,
|
|
465
|
+
exactScyOut,
|
|
466
|
+
block.timestamp,
|
|
467
|
+
approxParams
|
|
468
|
+
);
|
|
469
|
+
priceImpact = calcPriceImpact(market, netYtIn.Int());
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
function swapExactYtForBaseTokenStatic(
|
|
473
|
+
address market,
|
|
474
|
+
uint256 exactYtIn,
|
|
475
|
+
address baseToken
|
|
476
|
+
)
|
|
477
|
+
external
|
|
478
|
+
returns (
|
|
479
|
+
uint256 netBaseTokenOut,
|
|
480
|
+
uint256 netScyFee,
|
|
481
|
+
uint256 priceImpact
|
|
482
|
+
)
|
|
483
|
+
{
|
|
484
|
+
uint256 netScyOut;
|
|
485
|
+
(netScyOut, netScyFee, priceImpact) = swapExactYtForScyStatic(market, exactYtIn);
|
|
486
|
+
|
|
487
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
488
|
+
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
function swapExactBaseTokenForYtStatic(
|
|
492
|
+
address market,
|
|
493
|
+
address baseToken,
|
|
494
|
+
uint256 amountBaseToken,
|
|
495
|
+
ApproxParams memory approxParams
|
|
496
|
+
)
|
|
497
|
+
external
|
|
498
|
+
returns (
|
|
499
|
+
uint256 netPtOut,
|
|
500
|
+
uint256 netScyFee,
|
|
501
|
+
uint256 priceImpact
|
|
502
|
+
)
|
|
503
|
+
{
|
|
504
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
505
|
+
|
|
506
|
+
return
|
|
507
|
+
swapExactScyForYtStatic(
|
|
508
|
+
market,
|
|
509
|
+
SCY.previewDeposit(baseToken, amountBaseToken),
|
|
510
|
+
approxParams
|
|
511
|
+
);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
function pyIndex(address market) public returns (PYIndex index) {
|
|
515
|
+
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
516
|
+
|
|
517
|
+
return YT.newIndex();
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
function getExchangeRate(address market) public returns (uint256) {
|
|
521
|
+
return getTradeExchangeRateIncludeFee(market, 0);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
function getTradeExchangeRateIncludeFee(address market, int256 netPtOut)
|
|
525
|
+
public
|
|
526
|
+
returns (uint256)
|
|
527
|
+
{
|
|
528
|
+
int256 netPtToAccount = netPtOut;
|
|
529
|
+
MarketState memory state = IPMarket(market).readState();
|
|
530
|
+
MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
|
|
531
|
+
|
|
532
|
+
int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
|
|
533
|
+
state.totalPt,
|
|
534
|
+
comp.totalAsset,
|
|
535
|
+
comp.rateScalar,
|
|
536
|
+
comp.rateAnchor,
|
|
537
|
+
netPtToAccount
|
|
538
|
+
);
|
|
539
|
+
|
|
540
|
+
if (netPtToAccount > 0) {
|
|
541
|
+
int256 postFeeExchangeRate = preFeeExchangeRate.divDown(comp.feeRate);
|
|
542
|
+
require(postFeeExchangeRate >= Math.IONE, "exchange rate below 1");
|
|
543
|
+
return postFeeExchangeRate.Uint();
|
|
544
|
+
} else {
|
|
545
|
+
return preFeeExchangeRate.mulDown(comp.feeRate).Uint();
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
function calcPriceImpact(address market, int256 netPtOut)
|
|
550
|
+
public
|
|
551
|
+
returns (uint256 priceImpact)
|
|
552
|
+
{
|
|
553
|
+
uint256 preTradeRate = getExchangeRate(market);
|
|
554
|
+
uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
|
|
555
|
+
|
|
556
|
+
priceImpact = (tradedRate.Int() - preTradeRate.Int()).abs().divDown(preTradeRate);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
function getPtImpliedYield(address market) public view returns (int256) {
|
|
560
|
+
MarketState memory state = IPMarket(market).readState();
|
|
561
|
+
|
|
562
|
+
int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
|
|
563
|
+
return lnImpliedRate.exp();
|
|
564
|
+
}
|
|
565
|
+
}
|