@pendle/core-v2 0.17.5-testnet → 0.17.6-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/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 +0 -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/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/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
|
@@ -4,17 +4,41 @@ pragma solidity 0.8.17;
|
|
|
4
4
|
import "../core/BulkSeller/BulkSellerMathCore.sol";
|
|
5
5
|
|
|
6
6
|
interface IPBulkSeller {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
uint256
|
|
11
|
-
|
|
7
|
+
event SwapExactTokenForSy(address receiver, uint256 netTokenIn, uint256 netSyOut);
|
|
8
|
+
event SwapExactSyForToken(address receiver, uint256 netSyIn, uint256 netTokenOut);
|
|
9
|
+
event RateUpdated(
|
|
10
|
+
uint256 newRateTokenToSy,
|
|
11
|
+
uint256 newRateSyToToken,
|
|
12
|
+
uint256 oldRateTokenToSy,
|
|
13
|
+
uint256 oldRateSyToToken
|
|
14
|
+
);
|
|
15
|
+
event ReBalanceTokenToSy(
|
|
16
|
+
uint256 netTokenDeposit,
|
|
17
|
+
uint256 netSyFromToken,
|
|
18
|
+
uint256 newTokenProp,
|
|
19
|
+
uint256 oldTokenProp
|
|
20
|
+
);
|
|
21
|
+
event ReBalanceSyToToken(
|
|
22
|
+
uint256 netSyRedeem,
|
|
23
|
+
uint256 netTokenFromSy,
|
|
24
|
+
uint256 newTokenProp,
|
|
25
|
+
uint256 oldTokenProp
|
|
26
|
+
);
|
|
27
|
+
event ReserveUpdated(uint256 totalToken, uint256 totalSy);
|
|
28
|
+
event FeeRateUpdated(uint256 newFeeRate, uint256 oldFeeRate);
|
|
12
29
|
|
|
13
30
|
function swapExactTokenForSy(
|
|
14
31
|
address receiver,
|
|
15
32
|
uint256 netTokenIn,
|
|
16
33
|
uint256 minSyOut
|
|
17
|
-
) external returns (uint256 netSyOut);
|
|
34
|
+
) external payable returns (uint256 netSyOut);
|
|
35
|
+
|
|
36
|
+
function swapExactSyForToken(
|
|
37
|
+
address receiver,
|
|
38
|
+
uint256 exactSyIn,
|
|
39
|
+
uint256 minTokenOut,
|
|
40
|
+
bool swapFromInternalBalance
|
|
41
|
+
) external returns (uint256 netTokenOut);
|
|
18
42
|
|
|
19
43
|
function SY() external view returns (address);
|
|
20
44
|
|
|
@@ -62,23 +62,13 @@ interface IPMarket is IERC20Metadata, IPGauge {
|
|
|
62
62
|
address receiver,
|
|
63
63
|
uint256 exactPtIn,
|
|
64
64
|
bytes calldata data
|
|
65
|
-
)
|
|
66
|
-
external
|
|
67
|
-
returns (
|
|
68
|
-
uint256 netSyOut,
|
|
69
|
-
uint256 netSyFee
|
|
70
|
-
);
|
|
65
|
+
) external returns (uint256 netSyOut, uint256 netSyFee);
|
|
71
66
|
|
|
72
67
|
function swapSyForExactPt(
|
|
73
68
|
address receiver,
|
|
74
69
|
uint256 exactPtOut,
|
|
75
70
|
bytes calldata data
|
|
76
|
-
)
|
|
77
|
-
external
|
|
78
|
-
returns (
|
|
79
|
-
uint256 netSyIn,
|
|
80
|
-
uint256 netSyFee
|
|
81
|
-
);
|
|
71
|
+
) external returns (uint256 netSyIn, uint256 netSyFee);
|
|
82
72
|
|
|
83
73
|
function redeemRewards(address user) external returns (uint256[] memory);
|
|
84
74
|
|
|
@@ -11,7 +11,7 @@ interface IStETH {
|
|
|
11
11
|
function burnShares(address _account, uint256 _sharesAmount)
|
|
12
12
|
external
|
|
13
13
|
returns (uint256 newTotalShares);
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
function sharesOf(address account) external view returns (uint256);
|
|
16
16
|
|
|
17
17
|
function getTotalShares() external view returns (uint256);
|
|
@@ -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
|
}
|