@pendle/core-v2 0.17.5-testnet → 0.17.7-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/README.md +28 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +22 -28
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +3 -22
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- 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/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.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 -2
- 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 +2 -2
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.json +2 -2
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +2 -18
- package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.json +2 -2
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +187 -1
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +0 -19
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.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/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +160 -60
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +1 -4
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +6 -5
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +1 -4
- package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +1 -1
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +9 -6
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +9 -21
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +0 -3
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +0 -3
- package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +34 -54
- package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +6 -25
- package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +20 -38
- package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +1 -1
- package/contracts/core/BulkSeller/BulkSeller.sol +35 -42
- package/contracts/core/BulkSeller/BulkSellerFactory.sol +5 -9
- package/contracts/core/BulkSeller/BulkSellerMathCore.sol +6 -5
- package/contracts/core/StandardizedYield/SYBase.sol +5 -23
- package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +1 -3
- package/contracts/core/StandardizedYield/implementations/Ape/PendleApeStakingSY.sol +184 -0
- package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol +1 -3
- package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +1 -1
- package/contracts/core/YieldContracts/PendleYieldToken.sol +6 -6
- package/contracts/core/erc20/PendleERC20.sol +2 -2
- package/contracts/core/erc20/PendleERC20Permit.sol +1 -1
- package/contracts/core/libraries/ArrayLib.sol +1 -1
- package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
- package/contracts/core/libraries/Errors.sol +2 -1
- package/contracts/core/libraries/MiniHelpers.sol +1 -0
- package/contracts/core/libraries/TokenHelper.sol +4 -5
- package/contracts/interfaces/Curve/ICrvPool.sol +3 -4
- package/contracts/interfaces/Curve/ITriCrvPool.sol +1 -4
- package/contracts/interfaces/IApeStaking.sol +27 -0
- package/contracts/interfaces/IBoringOwnableUpgradeable.sol +2 -2
- package/contracts/interfaces/ILayerZeroEndpoint.sol +1 -1
- package/contracts/interfaces/ILayerZeroReceiver.sol +8 -3
- package/contracts/interfaces/IPBulkSeller.sol +30 -6
- package/contracts/interfaces/IPBulkSellerFactory.sol +0 -2
- package/contracts/interfaces/IPMarket.sol +2 -12
- package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
- package/contracts/interfaces/IPMsgSendEndpoint.sol +1 -1
- package/contracts/interfaces/IPVeToken.sol +1 -1
- package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
- package/contracts/interfaces/IStETH.sol +1 -1
- package/contracts/interfaces/IStargateLPStaking.sol +1 -1
- package/contracts/interfaces/IStargatePool.sol +1 -1
- package/contracts/interfaces/IStargateRouter.sol +1 -1
- package/contracts/interfaces/IWXBTRFLY.sol +1 -1
- package/contracts/offchain-helpers/MarketMathStatic.sol +140 -37
- package/contracts/offchain-helpers/RouterStatic.sol +48 -27
- package/contracts/router/ActionAddRemoveLiq.sol +2 -2
- package/contracts/router/ActionMintRedeem.sol +4 -4
- package/contracts/router/ActionSwapPT.sol +4 -4
- package/contracts/router/ActionSwapPTYT.sol +1 -1
- package/contracts/router/ActionSwapYT.sol +8 -8
- package/contracts/router/base/ActionBaseMintRedeem.sol +6 -7
- package/contracts/router/base/MarketApproxLib.sol +14 -8
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +1 -1
- package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +1 -1
- package/contracts/router/kyberswap/IMultihopRouter.sol +1 -1
- package/deployments/43113-core.json +1 -1
- package/deployments/43113-markets/APE-30-MARCH.json +10 -0
- package/package.json +1 -1
- package/typechain-types/BulkSeller.ts +59 -6
- package/typechain-types/BulkSellerFactory.ts +0 -16
- package/typechain-types/IApeStaking.ts +274 -0
- package/typechain-types/IPBulkSeller.ts +178 -9
- package/typechain-types/IPBulkSellerFactory.ts +0 -16
- package/typechain-types/PendleApeStakingSY.ts +1251 -0
- package/typechain-types/RouterStatic.ts +40 -20
- package/typechain-types/SYBaseAutoCompound.ts +1203 -0
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionMisc__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +1 -1
- package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerFactory__factory.ts +2 -21
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +21 -27
- package/typechain-types/factories/Errors__factory.ts +1 -17
- package/typechain-types/factories/IApeStaking__factory.ts +127 -0
- package/typechain-types/factories/IPBulkSellerFactory__factory.ts +0 -19
- package/typechain-types/factories/IPBulkSeller__factory.ts +187 -1
- package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleApeStakingSY__factory.ts +1065 -0
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
- package/typechain-types/factories/PendleERC20__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleLooksStakingSY__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/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +101 -1
- package/typechain-types/factories/SYBaseAutoCompound__factory.ts +942 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
|
@@ -46,7 +46,8 @@ library MarketMathStatic {
|
|
|
46
46
|
uint256 netLpOut,
|
|
47
47
|
uint256 netPtToSwap,
|
|
48
48
|
uint256 netSyFee,
|
|
49
|
-
uint256 priceImpact
|
|
49
|
+
uint256 priceImpact,
|
|
50
|
+
uint256 exchangeRateAfter
|
|
50
51
|
)
|
|
51
52
|
{
|
|
52
53
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -72,7 +73,8 @@ library MarketMathStatic {
|
|
|
72
73
|
block.timestamp
|
|
73
74
|
);
|
|
74
75
|
|
|
75
|
-
priceImpact =
|
|
76
|
+
priceImpact = calcPriceImpactPt(market, netPtToSwap.neg());
|
|
77
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
/// @dev netPtFromSwap is the parameter to approx
|
|
@@ -86,7 +88,8 @@ library MarketMathStatic {
|
|
|
86
88
|
uint256 netLpOut,
|
|
87
89
|
uint256 netPtFromSwap,
|
|
88
90
|
uint256 netSyFee,
|
|
89
|
-
uint256 priceImpact
|
|
91
|
+
uint256 priceImpact,
|
|
92
|
+
uint256 exchangeRateAfter
|
|
90
93
|
)
|
|
91
94
|
{
|
|
92
95
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -108,7 +111,8 @@ library MarketMathStatic {
|
|
|
108
111
|
);
|
|
109
112
|
(, netLpOut, , ) = state.addLiquidity(netSyIn - netSySwap, netPtFromSwap, block.timestamp);
|
|
110
113
|
|
|
111
|
-
priceImpact =
|
|
114
|
+
priceImpact = calcPriceImpactPt(market, netPtFromSwap.Int());
|
|
115
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
112
116
|
}
|
|
113
117
|
|
|
114
118
|
function removeLiquidityDualSyAndPtStatic(address market, uint256 netLpToRemove)
|
|
@@ -131,7 +135,8 @@ library MarketMathStatic {
|
|
|
131
135
|
uint256 netPtOut,
|
|
132
136
|
uint256 netPtFromSwap,
|
|
133
137
|
uint256 netSyFee,
|
|
134
|
-
uint256 priceImpact
|
|
138
|
+
uint256 priceImpact,
|
|
139
|
+
uint256 exchangeRateAfter
|
|
135
140
|
)
|
|
136
141
|
{
|
|
137
142
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -145,7 +150,11 @@ library MarketMathStatic {
|
|
|
145
150
|
);
|
|
146
151
|
|
|
147
152
|
netPtOut = ptFromBurn + netPtFromSwap;
|
|
148
|
-
priceImpact =
|
|
153
|
+
priceImpact = calcPriceImpactPt(market, netPtFromSwap.Int());
|
|
154
|
+
|
|
155
|
+
// Execute swap to calculate exchangeRateAfter
|
|
156
|
+
state.swapSyForExactPt(pyIndex(market), netPtFromSwap, block.timestamp);
|
|
157
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
149
158
|
}
|
|
150
159
|
|
|
151
160
|
function removeLiquiditySingleSyStatic(address market, uint256 netLpToRemove)
|
|
@@ -153,7 +162,8 @@ library MarketMathStatic {
|
|
|
153
162
|
returns (
|
|
154
163
|
uint256 netSyOut,
|
|
155
164
|
uint256 netSyFee,
|
|
156
|
-
uint256 priceImpact
|
|
165
|
+
uint256 priceImpact,
|
|
166
|
+
uint256 exchangeRateAfter
|
|
157
167
|
)
|
|
158
168
|
{
|
|
159
169
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -171,7 +181,8 @@ library MarketMathStatic {
|
|
|
171
181
|
);
|
|
172
182
|
|
|
173
183
|
netSyOut = syFromBurn + syFromSwap;
|
|
174
|
-
priceImpact =
|
|
184
|
+
priceImpact = calcPriceImpactPt(market, ptFromBurn.neg());
|
|
185
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
175
186
|
}
|
|
176
187
|
}
|
|
177
188
|
|
|
@@ -180,7 +191,8 @@ library MarketMathStatic {
|
|
|
180
191
|
returns (
|
|
181
192
|
uint256 netSyOut,
|
|
182
193
|
uint256 netSyFee,
|
|
183
|
-
uint256 priceImpact
|
|
194
|
+
uint256 priceImpact,
|
|
195
|
+
uint256 exchangeRateAfter
|
|
184
196
|
)
|
|
185
197
|
{
|
|
186
198
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -189,7 +201,8 @@ library MarketMathStatic {
|
|
|
189
201
|
exactPtIn,
|
|
190
202
|
block.timestamp
|
|
191
203
|
);
|
|
192
|
-
priceImpact =
|
|
204
|
+
priceImpact = calcPriceImpactPt(market, exactPtIn.neg());
|
|
205
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
193
206
|
}
|
|
194
207
|
|
|
195
208
|
function swapSyForExactPtStatic(address market, uint256 exactPtOut)
|
|
@@ -197,7 +210,8 @@ library MarketMathStatic {
|
|
|
197
210
|
returns (
|
|
198
211
|
uint256 netSyIn,
|
|
199
212
|
uint256 netSyFee,
|
|
200
|
-
uint256 priceImpact
|
|
213
|
+
uint256 priceImpact,
|
|
214
|
+
uint256 exchangeRateAfter
|
|
201
215
|
)
|
|
202
216
|
{
|
|
203
217
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -206,7 +220,8 @@ library MarketMathStatic {
|
|
|
206
220
|
exactPtOut,
|
|
207
221
|
block.timestamp
|
|
208
222
|
);
|
|
209
|
-
priceImpact =
|
|
223
|
+
priceImpact = calcPriceImpactPt(market, exactPtOut.Int());
|
|
224
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
210
225
|
}
|
|
211
226
|
|
|
212
227
|
/// @dev netPtOut is the parameter to approx
|
|
@@ -219,7 +234,8 @@ library MarketMathStatic {
|
|
|
219
234
|
returns (
|
|
220
235
|
uint256 netPtOut,
|
|
221
236
|
uint256 netSyFee,
|
|
222
|
-
uint256 priceImpact
|
|
237
|
+
uint256 priceImpact,
|
|
238
|
+
uint256 exchangeRateAfter
|
|
223
239
|
)
|
|
224
240
|
{
|
|
225
241
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -229,7 +245,11 @@ library MarketMathStatic {
|
|
|
229
245
|
block.timestamp,
|
|
230
246
|
approxParams
|
|
231
247
|
);
|
|
232
|
-
priceImpact =
|
|
248
|
+
priceImpact = calcPriceImpactPt(market, netPtOut.Int());
|
|
249
|
+
|
|
250
|
+
// Execute swap to calculate exchangeRateAfter
|
|
251
|
+
state.swapSyForExactPt(pyIndex(market), netPtOut, block.timestamp);
|
|
252
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
233
253
|
}
|
|
234
254
|
|
|
235
255
|
/// @dev netPtIn is the parameter to approx
|
|
@@ -242,7 +262,8 @@ library MarketMathStatic {
|
|
|
242
262
|
returns (
|
|
243
263
|
uint256 netPtIn,
|
|
244
264
|
uint256 netSyFee,
|
|
245
|
-
uint256 priceImpact
|
|
265
|
+
uint256 priceImpact,
|
|
266
|
+
uint256 exchangeRateAfter
|
|
246
267
|
)
|
|
247
268
|
{
|
|
248
269
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -253,7 +274,11 @@ library MarketMathStatic {
|
|
|
253
274
|
block.timestamp,
|
|
254
275
|
approxParams
|
|
255
276
|
);
|
|
256
|
-
priceImpact =
|
|
277
|
+
priceImpact = calcPriceImpactPt(market, netPtIn.neg());
|
|
278
|
+
|
|
279
|
+
// Execute swap to calculate exchangeRateAfter
|
|
280
|
+
state.swapExactPtForSy(pyIndex(market), netPtIn, block.timestamp);
|
|
281
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
257
282
|
}
|
|
258
283
|
|
|
259
284
|
function swapSyForExactYtStatic(address market, uint256 exactYtOut)
|
|
@@ -261,11 +286,13 @@ library MarketMathStatic {
|
|
|
261
286
|
returns (
|
|
262
287
|
uint256 netSyIn,
|
|
263
288
|
uint256 netSyFee,
|
|
264
|
-
uint256 priceImpact
|
|
289
|
+
uint256 priceImpact,
|
|
290
|
+
uint256 exchangeRateAfter
|
|
265
291
|
)
|
|
266
292
|
{
|
|
267
|
-
|
|
293
|
+
priceImpact = calcPriceImpactYt(market, exactYtOut.neg());
|
|
268
294
|
|
|
295
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
269
296
|
PYIndex index = pyIndex(market);
|
|
270
297
|
|
|
271
298
|
uint256 syReceived;
|
|
@@ -278,7 +305,7 @@ library MarketMathStatic {
|
|
|
278
305
|
uint256 totalSyNeed = index.assetToSyUp(exactYtOut);
|
|
279
306
|
netSyIn = totalSyNeed.subMax0(syReceived);
|
|
280
307
|
|
|
281
|
-
|
|
308
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
282
309
|
}
|
|
283
310
|
|
|
284
311
|
/// @dev netYtOut is the parameter to approx
|
|
@@ -291,7 +318,8 @@ library MarketMathStatic {
|
|
|
291
318
|
returns (
|
|
292
319
|
uint256 netYtOut,
|
|
293
320
|
uint256 netSyFee,
|
|
294
|
-
uint256 priceImpact
|
|
321
|
+
uint256 priceImpact,
|
|
322
|
+
uint256 exchangeRateAfter
|
|
295
323
|
)
|
|
296
324
|
{
|
|
297
325
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -304,7 +332,11 @@ library MarketMathStatic {
|
|
|
304
332
|
approxParams
|
|
305
333
|
);
|
|
306
334
|
|
|
307
|
-
priceImpact =
|
|
335
|
+
priceImpact = calcPriceImpactYt(market, netYtOut.neg());
|
|
336
|
+
|
|
337
|
+
// Execute swap to calculate exchangeRateAfter
|
|
338
|
+
state.swapSyForExactPt(index, netYtOut, block.timestamp);
|
|
339
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
308
340
|
}
|
|
309
341
|
|
|
310
342
|
function swapExactYtForSyStatic(address market, uint256 exactYtIn)
|
|
@@ -312,9 +344,12 @@ library MarketMathStatic {
|
|
|
312
344
|
returns (
|
|
313
345
|
uint256 netSyOut,
|
|
314
346
|
uint256 netSyFee,
|
|
315
|
-
uint256 priceImpact
|
|
347
|
+
uint256 priceImpact,
|
|
348
|
+
uint256 exchangeRateAfter
|
|
316
349
|
)
|
|
317
350
|
{
|
|
351
|
+
priceImpact = calcPriceImpactYt(market, exactYtIn.Int());
|
|
352
|
+
|
|
318
353
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
319
354
|
|
|
320
355
|
PYIndex index = pyIndex(market);
|
|
@@ -326,7 +361,7 @@ library MarketMathStatic {
|
|
|
326
361
|
uint256 amountPYToRedeemSyOut = exactYtIn - amountPYToRepaySyOwed;
|
|
327
362
|
|
|
328
363
|
netSyOut = index.assetToSy(amountPYToRedeemSyOut);
|
|
329
|
-
|
|
364
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
330
365
|
}
|
|
331
366
|
|
|
332
367
|
/// @dev netYtIn is the parameter to approx
|
|
@@ -339,7 +374,8 @@ library MarketMathStatic {
|
|
|
339
374
|
returns (
|
|
340
375
|
uint256 netYtIn,
|
|
341
376
|
uint256 netSyFee,
|
|
342
|
-
uint256 priceImpact
|
|
377
|
+
uint256 priceImpact,
|
|
378
|
+
uint256 exchangeRateAfter
|
|
343
379
|
)
|
|
344
380
|
{
|
|
345
381
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -352,7 +388,11 @@ library MarketMathStatic {
|
|
|
352
388
|
block.timestamp,
|
|
353
389
|
approxParams
|
|
354
390
|
);
|
|
355
|
-
priceImpact =
|
|
391
|
+
priceImpact = calcPriceImpactYt(market, netYtIn.Int());
|
|
392
|
+
|
|
393
|
+
// Execute swap to calculate exchangeRateAfter
|
|
394
|
+
state.swapSyForExactPt(index, netYtIn, block.timestamp);
|
|
395
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
356
396
|
}
|
|
357
397
|
|
|
358
398
|
// totalPtToSwap is the param to approx
|
|
@@ -366,7 +406,8 @@ library MarketMathStatic {
|
|
|
366
406
|
uint256 netYtOut,
|
|
367
407
|
uint256 totalPtToSwap,
|
|
368
408
|
uint256 netSyFee,
|
|
369
|
-
uint256 priceImpact
|
|
409
|
+
uint256 priceImpact,
|
|
410
|
+
uint256 exchangeRateAfter
|
|
370
411
|
)
|
|
371
412
|
{
|
|
372
413
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -378,7 +419,11 @@ library MarketMathStatic {
|
|
|
378
419
|
block.timestamp,
|
|
379
420
|
approxParams
|
|
380
421
|
);
|
|
381
|
-
priceImpact =
|
|
422
|
+
priceImpact = calcPriceImpactPY(market, totalPtToSwap.neg());
|
|
423
|
+
|
|
424
|
+
// Execute swap to calculate exchangeRateAfter
|
|
425
|
+
state.swapExactPtForSy(index, totalPtToSwap, block.timestamp);
|
|
426
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
382
427
|
}
|
|
383
428
|
|
|
384
429
|
// totalPtSwapped is the param to approx
|
|
@@ -392,7 +437,8 @@ library MarketMathStatic {
|
|
|
392
437
|
uint256 netPtOut,
|
|
393
438
|
uint256 totalPtSwapped,
|
|
394
439
|
uint256 netSyFee,
|
|
395
|
-
uint256 priceImpact
|
|
440
|
+
uint256 priceImpact,
|
|
441
|
+
uint256 exchangeRateAfter
|
|
396
442
|
)
|
|
397
443
|
{
|
|
398
444
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
@@ -405,7 +451,11 @@ library MarketMathStatic {
|
|
|
405
451
|
approxParams
|
|
406
452
|
);
|
|
407
453
|
|
|
408
|
-
priceImpact =
|
|
454
|
+
priceImpact = calcPriceImpactPY(market, totalPtSwapped.Int());
|
|
455
|
+
|
|
456
|
+
// Execute swap to calculate exchangeRateAfter
|
|
457
|
+
state.swapSyForExactPt(index, totalPtSwapped, block.timestamp);
|
|
458
|
+
exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
|
|
409
459
|
}
|
|
410
460
|
|
|
411
461
|
function pyIndex(address market) public returns (PYIndex index) {
|
|
@@ -414,15 +464,17 @@ library MarketMathStatic {
|
|
|
414
464
|
return YT.newIndex();
|
|
415
465
|
}
|
|
416
466
|
|
|
417
|
-
function getExchangeRate(address market) public returns (uint256) {
|
|
418
|
-
return getTradeExchangeRateExcludeFee(market);
|
|
419
|
-
}
|
|
420
|
-
|
|
421
467
|
function getTradeExchangeRateExcludeFee(address market) public returns (uint256) {
|
|
422
468
|
if (IPMarket(market).isExpired()) return Math.ONE;
|
|
423
469
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
424
|
-
|
|
470
|
+
return _getTradeExchangeRateExcludeFee(market, state);
|
|
471
|
+
}
|
|
425
472
|
|
|
473
|
+
function _getTradeExchangeRateExcludeFee(address market, MarketState memory state)
|
|
474
|
+
public
|
|
475
|
+
returns (uint256)
|
|
476
|
+
{
|
|
477
|
+
MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
|
|
426
478
|
int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
|
|
427
479
|
state.totalPt,
|
|
428
480
|
comp.totalAsset,
|
|
@@ -460,14 +512,40 @@ library MarketMathStatic {
|
|
|
460
512
|
}
|
|
461
513
|
}
|
|
462
514
|
|
|
463
|
-
function
|
|
515
|
+
function calcPriceImpactPt(address market, int256 netPtOut)
|
|
464
516
|
public
|
|
465
517
|
returns (uint256 priceImpact)
|
|
466
518
|
{
|
|
467
|
-
uint256 preTradeRate = getTradeExchangeRateIncludeFee(market,
|
|
519
|
+
uint256 preTradeRate = getTradeExchangeRateIncludeFee(market, _getSign(netPtOut));
|
|
468
520
|
uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
|
|
521
|
+
priceImpact = _calculateImpact(preTradeRate, tradedRate);
|
|
522
|
+
}
|
|
469
523
|
|
|
470
|
-
|
|
524
|
+
function calcPriceImpactYt(address market, int256 netPtOut)
|
|
525
|
+
public
|
|
526
|
+
returns (uint256 priceImpact)
|
|
527
|
+
{
|
|
528
|
+
uint256 ytPreTradeRate = _calcVirtualYTPrice(
|
|
529
|
+
getTradeExchangeRateIncludeFee(market, _getSign(netPtOut))
|
|
530
|
+
);
|
|
531
|
+
uint256 ytTradedRate = _calcVirtualYTPrice(
|
|
532
|
+
getTradeExchangeRateIncludeFee(market, netPtOut)
|
|
533
|
+
);
|
|
534
|
+
priceImpact = _calculateImpact(ytPreTradeRate, ytTradedRate);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
function calcPriceImpactPY(address market, int256 netPtOut)
|
|
538
|
+
public
|
|
539
|
+
returns (uint256 priceImpact)
|
|
540
|
+
{
|
|
541
|
+
uint256 ptPreTradeRate = getTradeExchangeRateIncludeFee(market, _getSign(netPtOut));
|
|
542
|
+
uint256 ytPreTradeRate = _calcVirtualYTPrice(ptPreTradeRate);
|
|
543
|
+
uint256 ptTradeRate = getTradeExchangeRateIncludeFee(market, netPtOut);
|
|
544
|
+
uint256 ytTradeRate = _calcVirtualYTPrice(ptTradeRate);
|
|
545
|
+
|
|
546
|
+
uint256 pyPreTradeRate = ytPreTradeRate.divDown(ptPreTradeRate);
|
|
547
|
+
uint256 pyTradeRate = ytTradeRate.divDown(ptTradeRate);
|
|
548
|
+
priceImpact = _calculateImpact(pyPreTradeRate, pyTradeRate);
|
|
471
549
|
}
|
|
472
550
|
|
|
473
551
|
function getPtImpliedYield(address market) public view returns (int256) {
|
|
@@ -476,4 +554,29 @@ library MarketMathStatic {
|
|
|
476
554
|
int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
|
|
477
555
|
return lnImpliedRate.exp();
|
|
478
556
|
}
|
|
557
|
+
|
|
558
|
+
function _calcVirtualYTPrice(uint256 ptAssetExchangeRate)
|
|
559
|
+
private
|
|
560
|
+
pure
|
|
561
|
+
returns (uint256 ytAssetExchangeRate)
|
|
562
|
+
{
|
|
563
|
+
// 1 asset = EX pt
|
|
564
|
+
// 1 pt = 1/EX Asset
|
|
565
|
+
// 1 yt + 1/EX Asset = 1 Asset
|
|
566
|
+
// 1 yt = 1 Asset - 1/EX Asset
|
|
567
|
+
// 1 yt = (EX - 1) / EX Asset
|
|
568
|
+
return (ptAssetExchangeRate - Math.ONE).divDown(ptAssetExchangeRate);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
function _getSign(int256 netPtOut) private pure returns (int256) {
|
|
572
|
+
return netPtOut > 0 ? int256(1) : int256(-1);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
function _calculateImpact(uint256 rateBefore, uint256 rateTraded)
|
|
576
|
+
private
|
|
577
|
+
pure
|
|
578
|
+
returns (uint256 impact)
|
|
579
|
+
{
|
|
580
|
+
impact = (rateBefore.Int() - rateTraded.Int()).abs().divDown(rateBefore);
|
|
581
|
+
}
|
|
479
582
|
}
|
|
@@ -158,7 +158,7 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
158
158
|
sy = address(SY);
|
|
159
159
|
state = _market.readState(address(this));
|
|
160
160
|
impliedYield = getPtImpliedYield(market);
|
|
161
|
-
exchangeRate = MarketMathStatic.
|
|
161
|
+
exchangeRate = MarketMathStatic.getTradeExchangeRateExcludeFee(market);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// ============= USER INFO =============
|
|
@@ -325,7 +325,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
325
325
|
uint256 netLpOut,
|
|
326
326
|
uint256 netPtToSwap,
|
|
327
327
|
uint256 netSyFee,
|
|
328
|
-
uint256 priceImpact
|
|
328
|
+
uint256 priceImpact,
|
|
329
|
+
uint256 exchangeRateAfter
|
|
329
330
|
)
|
|
330
331
|
{
|
|
331
332
|
return
|
|
@@ -338,7 +339,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
338
339
|
uint256 netLpOut,
|
|
339
340
|
uint256 netPtFromSwap,
|
|
340
341
|
uint256 netSyFee,
|
|
341
|
-
uint256 priceImpact
|
|
342
|
+
uint256 priceImpact,
|
|
343
|
+
uint256 exchangeRateAfter
|
|
342
344
|
)
|
|
343
345
|
{
|
|
344
346
|
return
|
|
@@ -356,7 +358,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
356
358
|
uint256 netLpOut,
|
|
357
359
|
uint256 netPtFromSwap,
|
|
358
360
|
uint256 netSyFee,
|
|
359
|
-
uint256 priceImpact
|
|
361
|
+
uint256 priceImpact,
|
|
362
|
+
uint256 exchangeRateAfter
|
|
360
363
|
)
|
|
361
364
|
{
|
|
362
365
|
uint256 netSyIn = previewDepositStatic(
|
|
@@ -400,7 +403,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
400
403
|
uint256 netPtOut,
|
|
401
404
|
uint256 netPtFromSwap,
|
|
402
405
|
uint256 netSyFee,
|
|
403
|
-
uint256 priceImpact
|
|
406
|
+
uint256 priceImpact,
|
|
407
|
+
uint256 exchangeRateAfter
|
|
404
408
|
)
|
|
405
409
|
{
|
|
406
410
|
return
|
|
@@ -416,7 +420,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
416
420
|
returns (
|
|
417
421
|
uint256 netSyOut,
|
|
418
422
|
uint256 netSyFee,
|
|
419
|
-
uint256 priceImpact
|
|
423
|
+
uint256 priceImpact,
|
|
424
|
+
uint256 exchangeRateAfter
|
|
420
425
|
)
|
|
421
426
|
{
|
|
422
427
|
return MarketMathStatic.removeLiquiditySingleSyStatic(market, netLpToRemove);
|
|
@@ -432,12 +437,13 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
432
437
|
returns (
|
|
433
438
|
uint256 netBaseTokenOut,
|
|
434
439
|
uint256 netSyFee,
|
|
435
|
-
uint256 priceImpact
|
|
440
|
+
uint256 priceImpact,
|
|
441
|
+
uint256 exchangeRateAfter
|
|
436
442
|
)
|
|
437
443
|
{
|
|
438
444
|
uint256 netSyOut;
|
|
439
445
|
|
|
440
|
-
(netSyOut, netSyFee, priceImpact) = MarketMathStatic.removeLiquiditySingleSyStatic(
|
|
446
|
+
(netSyOut, netSyFee, priceImpact, exchangeRateAfter) = MarketMathStatic.removeLiquiditySingleSyStatic(
|
|
441
447
|
market,
|
|
442
448
|
netLpToRemove
|
|
443
449
|
);
|
|
@@ -450,7 +456,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
450
456
|
returns (
|
|
451
457
|
uint256 netSyOut,
|
|
452
458
|
uint256 netSyFee,
|
|
453
|
-
uint256 priceImpact
|
|
459
|
+
uint256 priceImpact,
|
|
460
|
+
uint256 exchangeRateAfter
|
|
454
461
|
)
|
|
455
462
|
{
|
|
456
463
|
return MarketMathStatic.swapExactPtForSyStatic(market, exactPtIn);
|
|
@@ -461,7 +468,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
461
468
|
returns (
|
|
462
469
|
uint256 netSyIn,
|
|
463
470
|
uint256 netSyFee,
|
|
464
|
-
uint256 priceImpact
|
|
471
|
+
uint256 priceImpact,
|
|
472
|
+
uint256 exchangeRateAfter
|
|
465
473
|
)
|
|
466
474
|
{
|
|
467
475
|
return MarketMathStatic.swapSyForExactPtStatic(market, exactPtOut);
|
|
@@ -472,7 +480,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
472
480
|
returns (
|
|
473
481
|
uint256 netPtOut,
|
|
474
482
|
uint256 netSyFee,
|
|
475
|
-
uint256 priceImpact
|
|
483
|
+
uint256 priceImpact,
|
|
484
|
+
uint256 exchangeRateAfter
|
|
476
485
|
)
|
|
477
486
|
{
|
|
478
487
|
return
|
|
@@ -484,7 +493,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
484
493
|
returns (
|
|
485
494
|
uint256 netPtIn,
|
|
486
495
|
uint256 netSyFee,
|
|
487
|
-
uint256 priceImpact
|
|
496
|
+
uint256 priceImpact,
|
|
497
|
+
uint256 exchangeRateAfter
|
|
488
498
|
)
|
|
489
499
|
{
|
|
490
500
|
return
|
|
@@ -501,7 +511,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
501
511
|
returns (
|
|
502
512
|
uint256 netPtOut,
|
|
503
513
|
uint256 netSyFee,
|
|
504
|
-
uint256 priceImpact
|
|
514
|
+
uint256 priceImpact,
|
|
515
|
+
uint256 exchangeRateAfter
|
|
505
516
|
)
|
|
506
517
|
{
|
|
507
518
|
uint256 netSyIn = previewDepositStatic(
|
|
@@ -523,11 +534,12 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
523
534
|
returns (
|
|
524
535
|
uint256 netBaseTokenOut,
|
|
525
536
|
uint256 netSyFee,
|
|
526
|
-
uint256 priceImpact
|
|
537
|
+
uint256 priceImpact,
|
|
538
|
+
uint256 exchangeRateAfter
|
|
527
539
|
)
|
|
528
540
|
{
|
|
529
541
|
uint256 netSyOut;
|
|
530
|
-
(netSyOut, netSyFee, priceImpact) = MarketMathStatic.swapExactPtForSyStatic(
|
|
542
|
+
(netSyOut, netSyFee, priceImpact, exchangeRateAfter) = MarketMathStatic.swapExactPtForSyStatic(
|
|
531
543
|
market,
|
|
532
544
|
exactPtIn
|
|
533
545
|
);
|
|
@@ -540,7 +552,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
540
552
|
returns (
|
|
541
553
|
uint256 netSyIn,
|
|
542
554
|
uint256 netSyFee,
|
|
543
|
-
uint256 priceImpact
|
|
555
|
+
uint256 priceImpact,
|
|
556
|
+
uint256 exchangeRateAfter
|
|
544
557
|
)
|
|
545
558
|
{
|
|
546
559
|
return MarketMathStatic.swapSyForExactYtStatic(market, exactYtOut);
|
|
@@ -551,7 +564,9 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
551
564
|
returns (
|
|
552
565
|
uint256 netYtOut,
|
|
553
566
|
uint256 netSyFee,
|
|
554
|
-
uint256 priceImpact
|
|
567
|
+
uint256 priceImpact,
|
|
568
|
+
uint256 exchangeRateAfter
|
|
569
|
+
|
|
555
570
|
)
|
|
556
571
|
{
|
|
557
572
|
return
|
|
@@ -563,7 +578,9 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
563
578
|
returns (
|
|
564
579
|
uint256 netSyOut,
|
|
565
580
|
uint256 netSyFee,
|
|
566
|
-
uint256 priceImpact
|
|
581
|
+
uint256 priceImpact,
|
|
582
|
+
uint256 exchangeRateAfter
|
|
583
|
+
|
|
567
584
|
)
|
|
568
585
|
{
|
|
569
586
|
return MarketMathStatic.swapExactYtForSyStatic(market, exactYtIn);
|
|
@@ -574,7 +591,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
574
591
|
returns (
|
|
575
592
|
uint256 netYtIn,
|
|
576
593
|
uint256 netSyFee,
|
|
577
|
-
uint256 priceImpact
|
|
594
|
+
uint256 priceImpact,
|
|
595
|
+
uint256 exchangeRateAfter
|
|
578
596
|
)
|
|
579
597
|
{
|
|
580
598
|
return
|
|
@@ -591,11 +609,12 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
591
609
|
returns (
|
|
592
610
|
uint256 netBaseTokenOut,
|
|
593
611
|
uint256 netSyFee,
|
|
594
|
-
uint256 priceImpact
|
|
612
|
+
uint256 priceImpact,
|
|
613
|
+
uint256 exchangeRateAfter
|
|
595
614
|
)
|
|
596
615
|
{
|
|
597
616
|
uint256 netSyOut;
|
|
598
|
-
(netSyOut, netSyFee, priceImpact) = MarketMathStatic.swapExactYtForSyStatic(
|
|
617
|
+
(netSyOut, netSyFee, priceImpact, exchangeRateAfter) = MarketMathStatic.swapExactYtForSyStatic(
|
|
599
618
|
market,
|
|
600
619
|
exactYtIn
|
|
601
620
|
);
|
|
@@ -613,7 +632,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
613
632
|
returns (
|
|
614
633
|
uint256 netYtOut,
|
|
615
634
|
uint256 netSyFee,
|
|
616
|
-
uint256 priceImpact
|
|
635
|
+
uint256 priceImpact,
|
|
636
|
+
uint256 exchangeRateAfter
|
|
617
637
|
)
|
|
618
638
|
{
|
|
619
639
|
uint256 netSyIn = previewDepositStatic(
|
|
@@ -632,7 +652,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
632
652
|
uint256 netYtOut,
|
|
633
653
|
uint256 totalPtToSwap,
|
|
634
654
|
uint256 netSyFee,
|
|
635
|
-
uint256 priceImpact
|
|
655
|
+
uint256 priceImpact,
|
|
656
|
+
uint256 exchangeRateAfter
|
|
636
657
|
)
|
|
637
658
|
{
|
|
638
659
|
return MarketMathStatic.swapExactPtForYt(market, exactPtIn, getDefaultApproxParams());
|
|
@@ -644,7 +665,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
644
665
|
uint256 netPtOut,
|
|
645
666
|
uint256 totalPtSwapped,
|
|
646
667
|
uint256 netSyFee,
|
|
647
|
-
uint256 priceImpact
|
|
668
|
+
uint256 priceImpact,
|
|
669
|
+
uint256 exchangeRateAfter
|
|
648
670
|
)
|
|
649
671
|
{
|
|
650
672
|
return MarketMathStatic.swapExactYtForPt(market, exactYtIn, getDefaultApproxParams());
|
|
@@ -778,7 +800,7 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
778
800
|
public
|
|
779
801
|
returns (uint256 priceImpact)
|
|
780
802
|
{
|
|
781
|
-
return MarketMathStatic.
|
|
803
|
+
return MarketMathStatic.calcPriceImpactPt(market, netPtOut);
|
|
782
804
|
}
|
|
783
805
|
|
|
784
806
|
// either but not both pyToken or market must be != 0
|
|
@@ -803,7 +825,7 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
803
825
|
address bulk,
|
|
804
826
|
uint256 netSyOut
|
|
805
827
|
) public view returns (uint256 netTokenIn) {
|
|
806
|
-
uint256 pivotAmount =
|
|
828
|
+
uint256 pivotAmount = 10 ** IERC20Metadata(tokenIn).decimals();
|
|
807
829
|
|
|
808
830
|
uint256 low = pivotAmount;
|
|
809
831
|
{
|
|
@@ -885,7 +907,6 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
|
|
|
885
907
|
return (address(0), 0, 0);
|
|
886
908
|
}
|
|
887
909
|
|
|
888
|
-
|
|
889
910
|
// Liquidity check
|
|
890
911
|
uint256 postFeeRateTokenToSy = state.rateTokenToSy.mulDown(Math.ONE - state.feeRate);
|
|
891
912
|
uint256 postFeeRateSyToToken = state.rateSyToToken.mulDown(Math.ONE - state.feeRate);
|
|
@@ -76,7 +76,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
76
76
|
|
|
77
77
|
/**
|
|
78
78
|
* @notice Adds liquidity to SY/PT market using PT + any token.
|
|
79
|
-
* @dev Input token is first swapped to SY-mintable token using Kyber, then SY is minted from
|
|
79
|
+
* @dev Input token is first swapped to SY-mintable token using Kyber, then SY is minted from
|
|
80
80
|
* such. Finally the SY/PT pair is added to the market
|
|
81
81
|
* @param input data for input token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
82
82
|
* @param netPtDesired maximum PT to be used
|
|
@@ -218,7 +218,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
/**
|
|
221
|
-
* @notice Adds liquidity using a single token input. The input token is first swapped through
|
|
221
|
+
* @notice Adds liquidity using a single token input. The input token is first swapped through
|
|
222
222
|
* Kyberswap to a SY-mintable token, the rest is the same as `addLiquiditySingleSy()`
|
|
223
223
|
* @param guessPtReceivedFromSy approximate PT output for the SY-to-PT swap
|
|
224
224
|
* @param input data for input token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
@@ -31,7 +31,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* @notice redeems SY for SY-mintable tokens, then (if needed) swaps resulting tokens for
|
|
34
|
+
* @notice redeems SY for SY-mintable tokens, then (if needed) swaps resulting tokens for
|
|
35
35
|
* desired output token through Kyberswap
|
|
36
36
|
* @param output data for desired output token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
37
37
|
*/
|
|
@@ -47,7 +47,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* @notice mints PY from any input token
|
|
50
|
-
* @dev swaps input token through Kyberswap to SY-mintable tokens first, then mints SY, finally
|
|
50
|
+
* @dev swaps input token through Kyberswap to SY-mintable tokens first, then mints SY, finally
|
|
51
51
|
* mints PY from SY
|
|
52
52
|
* @param input data for input token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
53
53
|
* @dev reverts if PY is expired
|
|
@@ -68,7 +68,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
70
|
* @notice redeems PY for token
|
|
71
|
-
* @dev redeems PT(+YT) for SY first, then redeems SY, finally swaps resulting tokens to output
|
|
71
|
+
* @dev redeems PT(+YT) for SY first, then redeems SY, finally swaps resulting tokens to output
|
|
72
72
|
* token through Kyberswap (if needed)
|
|
73
73
|
* @param output data for desired output token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
74
74
|
*/
|
|
@@ -166,7 +166,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
166
166
|
uint256[] amounts;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
/**
|
|
169
|
+
/**
|
|
170
170
|
* @notice A function to:
|
|
171
171
|
- Redeem all of caller's due interest and rewards in SYs, YTs, and markets
|
|
172
172
|
- Redeem SYs themselves
|