@pendle/core-v2 2.15.1 → 2.16.0

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.
Files changed (342) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  24. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +4 -0
  38. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +1189 -0
  39. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  41. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  43. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  45. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  47. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +4 -0
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +322 -0
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +4 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.json +24 -0
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +4 -0
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.json +24 -0
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +4 -0
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.json +10 -0
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +4 -0
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.json +234 -0
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  100. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  102. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  105. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  106. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  107. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +4 -0
  114. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.json +1172 -0
  115. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  142. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  144. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
  147. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  148. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  151. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  154. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  156. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  160. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  161. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  162. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  171. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  173. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  174. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  175. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  191. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  200. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  201. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  202. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  203. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  204. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  205. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  206. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  207. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +4 -0
  208. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +10 -0
  209. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  210. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  211. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  212. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  213. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  214. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  215. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  216. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  217. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  218. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  219. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  220. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  221. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  222. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  223. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  224. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  225. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  226. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  227. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  228. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  229. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  230. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  231. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  232. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  233. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  234. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  235. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  236. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  237. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +4 -0
  238. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +60 -0
  239. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  240. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IAggregationExecutor.sol → IAggregationExecutor.sol}/IAggregationExecutor.json +1 -1
  241. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +4 -0
  242. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IExecutorHelper1.sol/IExecutorHelper1.json → IExecutorHelper.sol/IExecutorHelper.json} +147 -2
  243. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +4 -0
  244. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{ethereum/IHashflow.sol → IHashflow.sol}/IHashflow.json +1 -1
  245. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  246. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IMetaAggregationRouterV2.sol → IMetaAggregationRouterV2.sol}/IMetaAggregationRouterV2.json +1 -1
  247. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +4 -0
  248. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.json → KyberInputScalingHelper.sol/KyberInputScalingHelper.json} +2 -2
  249. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +4 -0
  250. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.json +10 -0
  251. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol +153 -0
  252. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
  253. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +629 -0
  254. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol +113 -0
  255. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol +381 -0
  256. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol +206 -0
  257. package/contracts/interfaces/Balancer/IERC4626LinearPool.sol +181 -0
  258. package/contracts/interfaces/Balancer/IVault.sol +13 -0
  259. package/contracts/offchain-helpers/MarketExchangeRateLib.sol +43 -0
  260. package/contracts/router/swap-aggregator/{PendleSwapEthereum.sol → PendleSwap.sol} +8 -12
  261. package/contracts/router/swap-aggregator/kyberswap/{arbitrum/IExecutorHelper1.sol → IExecutorHelper.sol} +65 -21
  262. package/contracts/router/swap-aggregator/kyberswap/{arbitrum/IMetaAggregationRouterV2.sol → IMetaAggregationRouterV2.sol} +4 -3
  263. package/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol +235 -0
  264. package/contracts/router/swap-aggregator/kyberswap/{arbitrum/ScaleDataHelperArbitrum.sol → ScalingDataLib.sol} +56 -25
  265. package/deployments/1-core.json +1 -1
  266. package/deployments/1-markets/BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json +10 -0
  267. package/deployments/1-markets/STETH-DEC2027.json +10 -0
  268. package/deployments/42161-core.json +1 -1
  269. package/package.json +1 -1
  270. package/typechain-types/BbAPoolHelper.ts +89 -0
  271. package/typechain-types/BbAWethHelper.ts +89 -0
  272. package/typechain-types/ComposableStablePreview.ts +501 -0
  273. package/typechain-types/IERC4626LinearPool.ts +1649 -0
  274. package/typechain-types/IExecutorHelper.ts +863 -0
  275. package/typechain-types/{CamelotV1PreviewHelper.ts → LinearPreview.ts} +49 -118
  276. package/typechain-types/{PendleCamelotV1SY.ts → PendleAuraBbAWethSwethSY.ts} +199 -383
  277. package/typechain-types/PendleSwap.ts +126 -0
  278. package/typechain-types/factories/BbAPoolHelper__factory.ts +36 -0
  279. package/typechain-types/factories/BbAWethHelper__factory.ts +36 -0
  280. package/typechain-types/factories/ComposableStablePreview__factory.ts +379 -0
  281. package/typechain-types/factories/IERC4626LinearPool__factory.ts +1187 -0
  282. package/typechain-types/factories/IExecutorHelper__factory.ts +548 -0
  283. package/typechain-types/factories/LinearPreview__factory.ts +284 -0
  284. package/typechain-types/factories/MetaStablePreview__factory.ts +1 -1
  285. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1266 -0
  286. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  287. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  288. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  289. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  290. package/typechain-types/factories/PendleSwap__factory.ts +110 -0
  291. package/typechain-types/hardhat.d.ts +99 -0
  292. package/typechain-types/index.ts +16 -0
  293. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +0 -4
  294. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +0 -160
  295. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +0 -4
  296. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +0 -10
  297. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.dbg.json +0 -4
  298. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.json +0 -76
  299. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.dbg.json +0 -4
  300. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.json +0 -76
  301. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
  302. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper1.sol/IExecutorHelper1.dbg.json +0 -4
  303. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.dbg.json +0 -4
  304. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.json +0 -40
  305. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.dbg.json +0 -4
  306. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.json +0 -101
  307. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
  308. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.dbg.json +0 -4
  309. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.dbg.json +0 -4
  310. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.json +0 -10
  311. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
  312. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.json +0 -65
  313. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +0 -4
  314. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +0 -388
  315. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IHashflow.sol/IHashflow.dbg.json +0 -4
  316. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
  317. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +0 -215
  318. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.dbg.json +0 -4
  319. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.json +0 -10
  320. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.dbg.json +0 -4
  321. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.json +0 -10
  322. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +0 -39
  323. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +0 -68
  324. package/contracts/router/swap-aggregator/PendleSwapArbitrum.sol +0 -45
  325. package/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol +0 -10
  326. package/contracts/router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol +0 -200
  327. package/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol +0 -17
  328. package/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol +0 -191
  329. package/contracts/router/swap-aggregator/kyberswap/ethereum/IHashflow.sol +0 -30
  330. package/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol +0 -41
  331. package/contracts/router/swap-aggregator/kyberswap/ethereum/KyberHelperEthereum.sol +0 -201
  332. package/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol +0 -147
  333. package/typechain-types/IPVotingEscrowSidechain.ts +0 -155
  334. package/typechain-types/PendleCamelotRewardHelper.ts +0 -347
  335. package/typechain-types/PendleCamelotV1RouterHelper.ts +0 -133
  336. package/typechain-types/factories/CamelotV1PreviewHelper__factory.ts +0 -400
  337. package/typechain-types/factories/IPVotingEscrowSidechain__factory.ts +0 -112
  338. package/typechain-types/factories/PendleCamelotRewardHelper__factory.ts +0 -317
  339. package/typechain-types/factories/PendleCamelotV1RouterHelper__factory.ts +0 -95
  340. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +0 -1448
  341. /package/contracts/router/swap-aggregator/kyberswap/{arbitrum/IAggregationExecutor.sol → IAggregationExecutor.sol} +0 -0
  342. /package/contracts/router/swap-aggregator/kyberswap/{arbitrum/IHashflow.sol → IHashflow.sol} +0 -0
@@ -0,0 +1,181 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IERC4626LinearPool {
5
+ event Approval(address indexed owner, address indexed spender, uint256 value);
6
+ event PausedStateChanged(bool paused);
7
+ event RecoveryModeStateChanged(bool enabled);
8
+ event SwapFeePercentageChanged(uint256 swapFeePercentage);
9
+ event TargetsSet(address indexed token, uint256 lowerTarget, uint256 upperTarget);
10
+ event Transfer(address indexed from, address indexed to, uint256 value);
11
+
12
+ struct SwapRequest {
13
+ uint8 kind;
14
+ address tokenIn;
15
+ address tokenOut;
16
+ uint256 amount;
17
+ bytes32 poolId;
18
+ uint256 lastChangeBlock;
19
+ address from;
20
+ address to;
21
+ bytes userData;
22
+ }
23
+
24
+ function DOMAIN_SEPARATOR() external view returns (bytes32);
25
+
26
+ function allowance(address owner, address spender) external view returns (uint256);
27
+
28
+ function approve(address spender, uint256 amount) external returns (bool);
29
+
30
+ function balanceOf(address account) external view returns (uint256);
31
+
32
+ function decimals() external view returns (uint8);
33
+
34
+ function decreaseAllowance(address spender, uint256 amount) external returns (bool);
35
+
36
+ function disableRecoveryMode() external;
37
+
38
+ function enableRecoveryMode() external;
39
+
40
+ function getActionId(bytes4 selector) external view returns (bytes32);
41
+
42
+ function getAuthorizer() external view returns (address);
43
+
44
+ function getBptIndex() external pure returns (uint256);
45
+
46
+ function getDomainSeparator() external view returns (bytes32);
47
+
48
+ function getMainIndex() external view returns (uint256);
49
+
50
+ function getMainToken() external view returns (address);
51
+
52
+ function getNextNonce(address account) external view returns (uint256);
53
+
54
+ function getOwner() external view returns (address);
55
+
56
+ function getPausedState()
57
+ external
58
+ view
59
+ returns (
60
+ bool paused,
61
+ uint256 pauseWindowEndTime,
62
+ uint256 bufferPeriodEndTime
63
+ );
64
+
65
+ function getPoolId() external view returns (bytes32);
66
+
67
+ function getProtocolFeesCollector() external view returns (address);
68
+
69
+ function getRate() external view returns (uint256);
70
+
71
+ function getScalingFactors() external view returns (uint256[] memory);
72
+
73
+ function getSwapFeePercentage() external view returns (uint256);
74
+
75
+ function getTargets() external view returns (uint256 lowerTarget, uint256 upperTarget);
76
+
77
+ function getVault() external view returns (address);
78
+
79
+ function getVirtualSupply() external view returns (uint256);
80
+
81
+ function getWrappedIndex() external view returns (uint256);
82
+
83
+ function getWrappedToken() external view returns (address);
84
+
85
+ function getWrappedTokenRate() external view returns (uint256);
86
+
87
+ function inRecoveryMode() external view returns (bool);
88
+
89
+ function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
90
+
91
+ function initialize() external;
92
+
93
+ function name() external view returns (string memory);
94
+
95
+ function nonces(address owner) external view returns (uint256);
96
+
97
+ function onExitPool(
98
+ bytes32 poolId,
99
+ address sender,
100
+ address,
101
+ uint256[] memory balances,
102
+ uint256,
103
+ uint256,
104
+ bytes memory userData
105
+ ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFees);
106
+
107
+ function onJoinPool(
108
+ bytes32 poolId,
109
+ address sender,
110
+ address recipient,
111
+ uint256[] memory balances,
112
+ uint256,
113
+ uint256,
114
+ bytes memory userData
115
+ ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFees);
116
+
117
+ function onSwap(
118
+ SwapRequest memory request,
119
+ uint256[] memory balances,
120
+ uint256 indexIn,
121
+ uint256 indexOut
122
+ ) external returns (uint256);
123
+
124
+ function onSwap(
125
+ SwapRequest memory request,
126
+ uint256 balanceTokenIn,
127
+ uint256 balanceTokenOut
128
+ ) external returns (uint256);
129
+
130
+ function pause() external;
131
+
132
+ function permit(
133
+ address owner,
134
+ address spender,
135
+ uint256 value,
136
+ uint256 deadline,
137
+ uint8 v,
138
+ bytes32 r,
139
+ bytes32 s
140
+ ) external;
141
+
142
+ function queryExit(
143
+ bytes32,
144
+ address sender,
145
+ address,
146
+ uint256[] memory balances,
147
+ uint256,
148
+ uint256,
149
+ bytes memory userData
150
+ ) external returns (uint256 bptIn, uint256[] memory amountsOut);
151
+
152
+ function queryJoin(
153
+ bytes32,
154
+ address sender,
155
+ address,
156
+ uint256[] memory balances,
157
+ uint256,
158
+ uint256,
159
+ bytes memory userData
160
+ ) external returns (uint256 bptOut, uint256[] memory amountsIn);
161
+
162
+ function setSwapFeePercentage(uint256 swapFeePercentage) external;
163
+
164
+ function setTargets(uint256 newLowerTarget, uint256 newUpperTarget) external;
165
+
166
+ function symbol() external view returns (string memory);
167
+
168
+ function totalSupply() external view returns (uint256);
169
+
170
+ function transfer(address recipient, uint256 amount) external returns (bool);
171
+
172
+ function transferFrom(
173
+ address sender,
174
+ address recipient,
175
+ uint256 amount
176
+ ) external returns (bool);
177
+
178
+ function unpause() external;
179
+
180
+ function version() external view returns (string memory);
181
+ }
@@ -27,6 +27,19 @@ interface IVault {
27
27
  bool fromInternalBalance;
28
28
  }
29
29
 
30
+ struct SwapRequest {
31
+ IVault.SwapKind kind;
32
+ IERC20 tokenIn;
33
+ IERC20 tokenOut;
34
+ uint256 amount;
35
+ // Misc data
36
+ bytes32 poolId;
37
+ uint256 lastChangeBlock;
38
+ address from;
39
+ address to;
40
+ bytes userData;
41
+ }
42
+
30
43
  function joinPool(
31
44
  bytes32 poolId,
32
45
  address sender,
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "../core/Market/MarketMathCore.sol";
5
+ import "../interfaces/IPMarket.sol";
6
+
7
+ library MarketExchangeRateLib {
8
+ using Math for int256;
9
+ using MarketMathCore for MarketState;
10
+ using MarketMathCore for MarketPreCompute;
11
+
12
+ function getMarketExchangeRate(address market) internal view returns (uint256) {
13
+ MarketState memory state = IPMarket(market).readState(address(0));
14
+ MarketPreCompute memory comp = state.getMarketPreCompute(
15
+ _getPYIndexCurrent(market),
16
+ block.timestamp
17
+ );
18
+
19
+ return
20
+ MarketMathCore
21
+ ._getExchangeRate(
22
+ state.totalPt,
23
+ comp.totalAsset,
24
+ comp.rateScalar,
25
+ comp.rateAnchor,
26
+ 0
27
+ )
28
+ .Uint();
29
+ }
30
+
31
+ function _getPYIndexCurrent(address market) private view returns (PYIndex) {
32
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
33
+ uint256 ytIndex = YT.pyIndexStored();
34
+ uint256 pyIndexCurrent;
35
+ if (YT.doCacheIndexSameBlock() && YT.pyIndexLastUpdatedBlock() == block.number) {
36
+ pyIndexCurrent = ytIndex;
37
+ } else {
38
+ uint256 syIndex = SY.exchangeRate();
39
+ pyIndexCurrent = Math.max(syIndex, ytIndex);
40
+ }
41
+ return PYIndex.wrap(pyIndexCurrent);
42
+ }
43
+ }
@@ -1,22 +1,18 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
- import "@openzeppelin/contracts/utils/Address.sol";
5
4
  import "../../core/libraries/TokenHelper.sol";
6
- import "../../core/libraries/Errors.sol";
7
5
  import "./IPSwapAggregator.sol";
8
- import "./1inch/OneInchAggregationRouterHelper.sol";
9
- import "./kyberswap/ethereum/KyberHelperEthereum.sol";
6
+ import "./kyberswap/KyberInputScalingHelper.sol";
10
7
 
11
- contract PendleSwapEthereum is
12
- IPSwapAggregator,
13
- TokenHelper,
14
- KyberHelperEthereum,
15
- OneInchAggregationRouterHelper
16
- {
8
+ contract PendleSwap is IPSwapAggregator, TokenHelper, KyberInputScalingHelper {
17
9
  using Address for address;
18
10
 
19
- function swap(address tokenIn, uint256 amountIn, SwapData calldata data) external payable {
11
+ function swap(
12
+ address tokenIn,
13
+ uint256 amountIn,
14
+ SwapData calldata data
15
+ ) external payable {
20
16
  _safeApproveInf(tokenIn, data.extRouter);
21
17
  data.extRouter.functionCallWithValue(
22
18
  data.needScale
@@ -34,7 +30,7 @@ contract PendleSwapEthereum is
34
30
  if (swapType == SwapType.KYBERSWAP) {
35
31
  scaledCallData = _getKyberScaledInputData(rawCallData, amountIn);
36
32
  } else if (swapType == SwapType.ONE_INCH) {
37
- scaledCallData = _get1inchScaledInputData(rawCallData, amountIn);
33
+ revert("not supported");
38
34
  } else {
39
35
  assert(false);
40
36
  }
@@ -1,9 +1,22 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.17;
3
3
 
4
- import "./IHashflow.sol";
4
+ interface IExecutorHelper {
5
+ struct Swap {
6
+ bytes data;
7
+ bytes4 functionSelector;
8
+ }
9
+
10
+ struct SwapExecutorDescription {
11
+ Swap[][] swapSequences;
12
+ address tokenIn;
13
+ address tokenOut;
14
+ uint256 minTotalAmountOut;
15
+ address to;
16
+ uint256 deadline;
17
+ bytes destTokenFeeData;
18
+ }
5
19
 
6
- interface IExecutorHelper1 {
7
20
  struct UniSwap {
8
21
  address pool;
9
22
  address tokenIn;
@@ -51,15 +64,6 @@ interface IExecutorHelper1 {
51
64
  uint160 sqrtPriceLimitX96;
52
65
  bool isUniV3; // true = UniV3, false = ProMM
53
66
  }
54
- struct SwapCallbackData {
55
- bytes path;
56
- address payer;
57
- }
58
- struct SwapCallbackDataPath {
59
- address pool;
60
- address tokenIn;
61
- address tokenOut;
62
- }
63
67
 
64
68
  struct BalancerV2 {
65
69
  address vault;
@@ -70,14 +74,6 @@ interface IExecutorHelper1 {
70
74
  uint256 limit;
71
75
  }
72
76
 
73
- struct KyberRFQ {
74
- address rfq;
75
- bytes order;
76
- bytes signature;
77
- uint256 amount;
78
- address payable target;
79
- }
80
-
81
77
  struct DODO {
82
78
  address recipient;
83
79
  address pool;
@@ -110,9 +106,27 @@ interface IExecutorHelper1 {
110
106
  bool useAtomicExchange;
111
107
  }
112
108
 
113
- struct Hashflow {
109
+ struct Platypus {
110
+ address pool;
111
+ address tokenIn;
112
+ address tokenOut;
113
+ address recipient;
114
+ uint256 collectAmount; // amount that should be transferred to the pool
115
+ uint256 limitReturnAmount;
116
+ }
117
+
118
+ struct PSM {
114
119
  address router;
115
- IHashflow.Quote quote;
120
+ address tokenIn;
121
+ address tokenOut;
122
+ uint256 amountIn;
123
+ address recipient;
124
+ }
125
+
126
+ struct WSTETH {
127
+ address pool;
128
+ uint256 amount;
129
+ bool isWrapping;
116
130
  }
117
131
 
118
132
  function executeUniSwap(
@@ -175,6 +189,18 @@ interface IExecutorHelper1 {
175
189
  uint256 previousAmountOut
176
190
  ) external payable returns (uint256);
177
191
 
192
+ function executePlatypusSwap(
193
+ uint256 index,
194
+ bytes memory data,
195
+ uint256 previousAmountOut
196
+ ) external payable returns (uint256);
197
+
198
+ function executeWrappedstETHSwap(
199
+ uint256 index,
200
+ bytes memory data,
201
+ uint256 previousAmountOut
202
+ ) external payable returns (uint256);
203
+
178
204
  function executeSynthetixSwap(
179
205
  uint256 index,
180
206
  bytes memory data,
@@ -187,9 +213,27 @@ interface IExecutorHelper1 {
187
213
  uint256 previousAmountOut
188
214
  ) external payable returns (uint256);
189
215
 
216
+ function executePSMSwap(
217
+ uint256 index,
218
+ bytes memory data,
219
+ uint256 previousAmountOut
220
+ ) external payable returns (uint256);
221
+
222
+ function executeFraxSwap(
223
+ uint256 index,
224
+ bytes memory data,
225
+ uint256 previousAmountOut
226
+ ) external payable returns (uint256);
227
+
190
228
  function executeCamelotSwap(
191
229
  uint256 index,
192
230
  bytes memory data,
193
231
  uint256 previousAmountOut
194
232
  ) external payable returns (uint256);
233
+
234
+ function executeKyberLimitOrder(
235
+ uint256 index,
236
+ bytes memory data,
237
+ uint256 previousAmountOut
238
+ ) external payable returns (uint256);
195
239
  }
@@ -28,9 +28,10 @@ interface IMetaAggregationRouterV2 {
28
28
  bytes clientData;
29
29
  }
30
30
 
31
- function swap(
32
- SwapExecutionParams calldata execution
33
- ) external payable returns (uint256, uint256);
31
+ function swap(SwapExecutionParams calldata execution)
32
+ external
33
+ payable
34
+ returns (uint256, uint256);
34
35
 
35
36
  function swapSimpleMode(
36
37
  IAggregationExecutor caller,
@@ -0,0 +1,235 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity 0.8.17;
4
+ import "./IMetaAggregationRouterV2.sol";
5
+ import "./IHashflow.sol";
6
+ import "./IExecutorHelper.sol";
7
+ import "./ScalingDataLib.sol";
8
+
9
+ abstract contract KyberInputScalingHelper {
10
+ uint256 private constant _PARTIAL_FILL = 0x01;
11
+ uint256 private constant _REQUIRES_EXTRA_ETH = 0x02;
12
+ uint256 private constant _SHOULD_CLAIM = 0x04;
13
+ uint256 private constant _BURN_FROM_MSG_SENDER = 0x08;
14
+ uint256 private constant _BURN_FROM_TX_ORIGIN = 0x10;
15
+ uint256 private constant _SIMPLE_SWAP = 0x20;
16
+
17
+ // fee data in case taking in dest token
18
+ struct PositiveSlippageFeeData {
19
+ uint256 partnerPSInfor; // [partnerReceiver (160 bit) + partnerPercent(96bits)]
20
+ uint256 expectedReturnAmount;
21
+ }
22
+
23
+ struct Swap {
24
+ bytes data;
25
+ bytes4 functionSelector;
26
+ }
27
+
28
+ struct SimpleSwapData {
29
+ address[] firstPools;
30
+ uint256[] firstSwapAmounts;
31
+ bytes[] swapDatas;
32
+ uint256 deadline;
33
+ bytes positiveSlippageData;
34
+ }
35
+
36
+ struct SwapExecutorDescription {
37
+ Swap[][] swapSequences;
38
+ address tokenIn;
39
+ address tokenOut;
40
+ uint256 minTotalAmountOut;
41
+ address to;
42
+ uint256 deadline;
43
+ bytes positiveSlippageData;
44
+ }
45
+
46
+ function _getKyberScaledInputData(bytes calldata inputData, uint256 newAmount)
47
+ internal
48
+ pure
49
+ returns (bytes memory)
50
+ {
51
+ bytes4 selector = bytes4(inputData[:4]);
52
+ bytes calldata dataToDecode = inputData[4:];
53
+
54
+ if (selector == IMetaAggregationRouterV2.swap.selector) {
55
+ IMetaAggregationRouterV2.SwapExecutionParams memory params = abi.decode(
56
+ dataToDecode,
57
+ (IMetaAggregationRouterV2.SwapExecutionParams)
58
+ );
59
+
60
+ (params.desc, params.targetData) = _getScaledInputDataV2(
61
+ params.desc,
62
+ params.targetData,
63
+ newAmount,
64
+ _flagsChecked(params.desc.flags, _SIMPLE_SWAP)
65
+ );
66
+ return abi.encodeWithSelector(selector, params);
67
+ } else if (selector == IMetaAggregationRouterV2.swapSimpleMode.selector) {
68
+ (
69
+ address callTarget,
70
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
71
+ bytes memory targetData,
72
+ bytes memory clientData
73
+ ) = abi.decode(
74
+ dataToDecode,
75
+ (address, IMetaAggregationRouterV2.SwapDescriptionV2, bytes, bytes)
76
+ );
77
+
78
+ (desc, targetData) = _getScaledInputDataV2(desc, targetData, newAmount, true);
79
+ return abi.encodeWithSelector(selector, callTarget, desc, targetData, clientData);
80
+ } else revert("InputScalingHelper: Invalid selector");
81
+ }
82
+
83
+ function _getScaledInputDataV2(
84
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
85
+ bytes memory executorData,
86
+ uint256 newAmount,
87
+ bool isSimpleMode
88
+ ) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory, bytes memory) {
89
+ uint256 oldAmount = desc.amount;
90
+ if (oldAmount == newAmount) {
91
+ return (desc, executorData);
92
+ }
93
+
94
+ // simple mode swap
95
+ if (isSimpleMode) {
96
+ return (
97
+ _scaledSwapDescriptionV2(desc, oldAmount, newAmount),
98
+ _scaledSimpleSwapData(executorData, oldAmount, newAmount)
99
+ );
100
+ }
101
+
102
+ //normal mode swap
103
+ return (
104
+ _scaledSwapDescriptionV2(desc, oldAmount, newAmount),
105
+ _scaledExecutorCallBytesData(executorData, oldAmount, newAmount)
106
+ );
107
+ }
108
+
109
+ /// @dev Scale the swap description
110
+ function _scaledSwapDescriptionV2(
111
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
112
+ uint256 oldAmount,
113
+ uint256 newAmount
114
+ ) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory) {
115
+ desc.minReturnAmount = (desc.minReturnAmount * newAmount) / oldAmount;
116
+ if (desc.minReturnAmount == 0) desc.minReturnAmount = 1;
117
+ desc.amount = newAmount;
118
+
119
+ uint256 nReceivers = desc.srcReceivers.length;
120
+ for (uint256 i = 0; i < nReceivers; ) {
121
+ desc.srcAmounts[i] = (desc.srcAmounts[i] * newAmount) / oldAmount;
122
+ unchecked {
123
+ ++i;
124
+ }
125
+ }
126
+ return desc;
127
+ }
128
+
129
+ /// @dev Scale the executorData in case swapSimpleMode
130
+ function _scaledSimpleSwapData(
131
+ bytes memory data,
132
+ uint256 oldAmount,
133
+ uint256 newAmount
134
+ ) internal pure returns (bytes memory) {
135
+ SimpleSwapData memory swapData = abi.decode(data, (SimpleSwapData));
136
+
137
+ uint256 nPools = swapData.firstPools.length;
138
+ for (uint256 i = 0; i < nPools; ) {
139
+ swapData.firstSwapAmounts[i] = (swapData.firstSwapAmounts[i] * newAmount) / oldAmount;
140
+ unchecked {
141
+ ++i;
142
+ }
143
+ }
144
+ swapData.positiveSlippageData = _scaledPositiveSlippageFeeData(
145
+ swapData.positiveSlippageData,
146
+ oldAmount,
147
+ newAmount
148
+ );
149
+ return abi.encode(swapData);
150
+ }
151
+
152
+ /// @dev Scale the executorData in case normal swap
153
+ function _scaledExecutorCallBytesData(
154
+ bytes memory data,
155
+ uint256 oldAmount,
156
+ uint256 newAmount
157
+ ) internal pure returns (bytes memory) {
158
+ SwapExecutorDescription memory executorDesc = abi.decode(data, (SwapExecutorDescription));
159
+ executorDesc.minTotalAmountOut = (executorDesc.minTotalAmountOut * newAmount) / oldAmount;
160
+ executorDesc.positiveSlippageData = _scaledPositiveSlippageFeeData(
161
+ executorDesc.positiveSlippageData,
162
+ oldAmount,
163
+ newAmount
164
+ );
165
+
166
+ uint256 nSequences = executorDesc.swapSequences.length;
167
+ for (uint256 i = 0; i < nSequences; ) {
168
+ Swap memory swap = executorDesc.swapSequences[i][0];
169
+ bytes4 functionSelector = swap.functionSelector;
170
+
171
+ if (functionSelector == IExecutorHelper.executeUniSwap.selector) {
172
+ swap.data = ScalingDataLib.newUniSwap(swap.data, oldAmount, newAmount);
173
+ } else if (functionSelector == IExecutorHelper.executeStableSwap.selector) {
174
+ swap.data = ScalingDataLib.newStableSwap(swap.data, oldAmount, newAmount);
175
+ } else if (functionSelector == IExecutorHelper.executeCurveSwap.selector) {
176
+ swap.data = ScalingDataLib.newCurveSwap(swap.data, oldAmount, newAmount);
177
+ } else if (functionSelector == IExecutorHelper.executeKyberDMMSwap.selector) {
178
+ swap.data = ScalingDataLib.newKyberDMM(swap.data, oldAmount, newAmount);
179
+ } else if (functionSelector == IExecutorHelper.executeUniV3ProMMSwap.selector) {
180
+ swap.data = ScalingDataLib.newUniV3ProMM(swap.data, oldAmount, newAmount);
181
+ } else if (functionSelector == IExecutorHelper.executeRfqSwap.selector) {
182
+ revert("InputScalingHelper: Can not scale RFQ swap");
183
+ } else if (functionSelector == IExecutorHelper.executeBalV2Swap.selector) {
184
+ swap.data = ScalingDataLib.newBalancerV2(swap.data, oldAmount, newAmount);
185
+ } else if (functionSelector == IExecutorHelper.executeWrappedstETHSwap.selector) {
186
+ swap.data = ScalingDataLib.newWrappedstETHSwap(swap.data, oldAmount, newAmount);
187
+ } else if (functionSelector == IExecutorHelper.executeDODOSwap.selector) {
188
+ swap.data = ScalingDataLib.newDODO(swap.data, oldAmount, newAmount);
189
+ } else if (functionSelector == IExecutorHelper.executeVelodromeSwap.selector) {
190
+ swap.data = ScalingDataLib.newVelodrome(swap.data, oldAmount, newAmount);
191
+ } else if (functionSelector == IExecutorHelper.executeGMXSwap.selector) {
192
+ swap.data = ScalingDataLib.newGMX(swap.data, oldAmount, newAmount);
193
+ } else if (functionSelector == IExecutorHelper.executeSynthetixSwap.selector) {
194
+ swap.data = ScalingDataLib.newSynthetix(swap.data, oldAmount, newAmount);
195
+ } else if (functionSelector == IExecutorHelper.executeHashflowSwap.selector) {
196
+ revert("InputScalingHelper: Can not scale RFQ swap");
197
+ } else if (functionSelector == IExecutorHelper.executeCamelotSwap.selector) {
198
+ swap.data = ScalingDataLib.newCamelot(swap.data, oldAmount, newAmount);
199
+ } else if (functionSelector == IExecutorHelper.executeKyberLimitOrder.selector) {
200
+ revert("InputScalingHelper: Can not scale RFQ swap");
201
+ } else if (functionSelector == IExecutorHelper.executePSMSwap.selector) {
202
+ swap.data = ScalingDataLib.newPSM(swap.data, oldAmount, newAmount);
203
+ } else if (functionSelector == IExecutorHelper.executeFraxSwap.selector) {
204
+ swap.data = ScalingDataLib.newFrax(swap.data, oldAmount, newAmount);
205
+ } else if (functionSelector == IExecutorHelper.executePlatypusSwap.selector) {
206
+ swap.data = ScalingDataLib.newPlatypus(swap.data, oldAmount, newAmount);
207
+ } else revert("AggregationExecutor: Dex type not supported");
208
+ unchecked {
209
+ ++i;
210
+ }
211
+ }
212
+ return abi.encode(executorDesc);
213
+ }
214
+
215
+ function _scaledPositiveSlippageFeeData(
216
+ bytes memory data,
217
+ uint256 oldAmount,
218
+ uint256 newAmount
219
+ ) internal pure returns (bytes memory newData) {
220
+ if (data.length > 32) {
221
+ PositiveSlippageFeeData memory psData = abi.decode(data, (PositiveSlippageFeeData));
222
+ psData.expectedReturnAmount = (psData.expectedReturnAmount * newAmount) / oldAmount;
223
+ data = abi.encode(psData);
224
+ } else if (data.length == 32) {
225
+ uint256 expectedReturnAmount = abi.decode(data, (uint256));
226
+ expectedReturnAmount = (expectedReturnAmount * newAmount) / oldAmount;
227
+ data = abi.encode(expectedReturnAmount);
228
+ }
229
+ return data;
230
+ }
231
+
232
+ function _flagsChecked(uint256 number, uint256 flag) internal pure returns (bool) {
233
+ return number & flag != 0;
234
+ }
235
+ }