@pendle/core-v2 1.3.0-mainnet → 2.0.0-mainnet

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 (413) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +3 -3
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +3 -3
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  37. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  46. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +1 -41
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -41
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -41
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -41
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  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 +4 -0
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.json +50 -0
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +1163 -0
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  87. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  90. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  92. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  94. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +4 -0
  95. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.json +66 -0
  96. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +4 -0
  97. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +476 -0
  98. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +4 -0
  99. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +590 -0
  100. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +4 -0
  101. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +1017 -0
  102. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +50 -2
  105. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +4 -0
  118. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.json +308 -0
  119. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +4 -0
  120. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.json +43 -0
  121. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +4 -0
  122. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.json +201 -0
  123. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +4 -0
  124. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.json +45 -0
  125. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +4 -0
  126. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.json +48 -0
  127. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +4 -0
  129. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.json +93 -0
  130. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +4 -0
  131. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.json +87 -0
  132. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +338 -16
  134. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +105 -224
  136. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +56 -12
  138. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +52 -8
  140. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +231 -8
  142. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +675 -241
  144. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +4 -0
  147. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.json +40 -0
  148. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +1 -1
  151. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +4 -0
  154. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.json +679 -0
  155. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +4 -0
  156. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.json +143 -0
  157. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  158. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  159. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  160. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -28
  161. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  162. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  163. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  164. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  165. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +144 -60
  166. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  167. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +345 -62
  168. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  169. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +107 -260
  170. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  171. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +57 -18
  172. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  173. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +54 -65
  174. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  175. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +342 -44
  176. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  177. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +76 -67
  178. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +4 -0
  179. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.json +141 -0
  180. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  181. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -15
  182. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  183. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  184. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  185. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  186. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  187. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
  188. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
  189. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
  190. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
  191. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +4 -0
  192. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +56 -0
  193. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.dbg.json +4 -0
  194. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.json +72 -0
  195. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
  196. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
  197. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  198. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  199. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  200. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  201. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  202. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
  203. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  204. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  205. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  206. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  207. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +0 -1
  208. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
  209. package/contracts/core/StandardizedYield/StEthHelper.sol +4 -4
  210. package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +142 -0
  211. package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +222 -0
  212. package/contracts/core/StandardizedYield/implementations/GLP/README.md +61 -0
  213. package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +114 -0
  214. package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +63 -0
  215. package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +200 -0
  216. package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +485 -0
  217. package/contracts/core/libraries/Errors.sol +5 -0
  218. package/contracts/core/libraries/TokenHelper.sol +10 -0
  219. package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
  220. package/contracts/interfaces/GMX/IGlpManager.sol +8 -0
  221. package/contracts/interfaces/GMX/IRewardRouterV2.sol +43 -0
  222. package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
  223. package/contracts/interfaces/IAddressProvider.sol +7 -0
  224. package/contracts/interfaces/IDiamondCut.sol +36 -0
  225. package/contracts/interfaces/IDiamondLoupe.sol +38 -0
  226. package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
  227. package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
  228. package/contracts/interfaces/IPActionMisc.sol +18 -4
  229. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  230. package/contracts/interfaces/IPActionSwapYT.sol +28 -4
  231. package/contracts/interfaces/IPAllAction.sol +5 -3
  232. package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
  233. package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
  234. package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
  235. package/contracts/offchain-helpers/AddressProvider.sol +16 -0
  236. package/contracts/offchain-helpers/MarketMathStatic.sol +15 -0
  237. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  238. package/contracts/offchain-helpers/RouterStatic.sol +22 -0
  239. package/contracts/router/ActionAddRemoveLiq.sol +116 -6
  240. package/contracts/router/ActionMintRedeem.sol +12 -202
  241. package/contracts/router/ActionMisc.sol +45 -19
  242. package/contracts/router/ActionSwapPT.sol +0 -5
  243. package/contracts/router/ActionSwapYT.sol +103 -13
  244. package/contracts/router/PendleRouter.sol +211 -72
  245. package/contracts/router/{ActionCallback.sol → base/ActionBaseCallback.sol} +47 -47
  246. package/contracts/router/base/ActionBaseMintRedeem.sol +105 -60
  247. package/contracts/router/base/CallbackHelper.sol +137 -44
  248. package/contracts/router/base/MarketApproxLib.sol +227 -350
  249. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  250. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +69 -0
  251. package/contracts/router/swap-aggregator/IPSwapAggregator.sol +25 -0
  252. package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +47 -0
  253. package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +214 -0
  254. package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
  255. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  256. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
  257. package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
  258. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  259. package/deployments/1-core.json +2 -1
  260. package/deployments/1-markets/BALANCER-LP-AURA-WSTETH-WETH-JUN272024.json +11 -0
  261. package/deployments/1-offchain-helper.json +4 -0
  262. package/deployments/42161-core.json +26 -0
  263. package/deployments/42161-markets/GLP-28MARCH2024.json +10 -0
  264. package/deployments/42161-offchain-helper.json +4 -0
  265. package/package.json +1 -1
  266. package/typechain-types/ActionAddRemoveLiq.ts +203 -23
  267. package/typechain-types/ActionBaseCallback.ts +115 -0
  268. package/typechain-types/ActionMintRedeem.ts +29 -230
  269. package/typechain-types/ActionMisc.ts +77 -27
  270. package/typechain-types/ActionSwapPT.ts +26 -31
  271. package/typechain-types/ActionSwapYT.ts +202 -21
  272. package/typechain-types/AddressProvider.ts +280 -0
  273. package/typechain-types/GLPPreviewHelper.ts +121 -0
  274. package/typechain-types/GMXPreviewHelper.ts +121 -0
  275. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  276. package/typechain-types/IAddressProvider.ts +123 -0
  277. package/typechain-types/IAggregationExecutor.ts +182 -0
  278. package/typechain-types/IDiamondCut.ts +152 -0
  279. package/typechain-types/IDiamondLoupe.ts +190 -0
  280. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  281. package/typechain-types/IGMXVault.ts +494 -0
  282. package/typechain-types/IGlpManager.ts +115 -0
  283. package/typechain-types/IHashflow.ts +159 -0
  284. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  285. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  286. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  287. package/typechain-types/IPActionAddRemoveLiq.ts +213 -14
  288. package/typechain-types/IPActionMintRedeem.ts +29 -211
  289. package/typechain-types/IPActionMisc.ts +77 -27
  290. package/typechain-types/IPActionSwapPT.ts +26 -12
  291. package/typechain-types/IPActionSwapYT.ts +168 -12
  292. package/typechain-types/IPAllAction.ts +445 -227
  293. package/typechain-types/IPInterestManagerYTV2.ts +117 -0
  294. package/typechain-types/IPMsgReceiverApp.ts +5 -5
  295. package/typechain-types/IPSwapAggregator.ts +126 -0
  296. package/typechain-types/IPYieldTokenV2.ts +901 -0
  297. package/typechain-types/IRewardRouterV2.ts +346 -0
  298. package/typechain-types/ISwapAggregator.ts +124 -0
  299. package/typechain-types/IVaultPriceFeed.ts +114 -0
  300. package/typechain-types/InterestManagerYTV2.ts +157 -0
  301. package/typechain-types/PendleAura3EthSY.ts +0 -39
  302. package/typechain-types/PendleAuraCbethWstethSY.ts +0 -39
  303. package/typechain-types/PendleAuraWethWstethSY.ts +0 -39
  304. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +4 -4
  305. package/typechain-types/PendleGlpSY.ts +1463 -0
  306. package/typechain-types/PendleMsgReceiverAppUpg.ts +5 -5
  307. package/typechain-types/PendleMulticall.ts +110 -0
  308. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  309. package/typechain-types/PendleRouter.ts +109 -131
  310. package/typechain-types/PendleSwapAggregator.ts +126 -0
  311. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  312. package/typechain-types/PendleYieldTokenV2.ts +1298 -0
  313. package/typechain-types/RouterStatic.ts +92 -0
  314. package/typechain-types/SwapAggregator.ts +406 -0
  315. package/typechain-types/VotingEscrowPendleSidechain.ts +4 -5
  316. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +346 -68
  317. package/typechain-types/factories/ActionBaseCallback__factory.ts +156 -0
  318. package/typechain-types/factories/ActionMintRedeem__factory.ts +108 -266
  319. package/typechain-types/factories/ActionMisc__factory.ts +56 -17
  320. package/typechain-types/factories/ActionSwapPT__factory.ts +55 -71
  321. package/typechain-types/factories/ActionSwapYT__factory.ts +356 -48
  322. package/typechain-types/factories/AddressProvider__factory.ts +196 -0
  323. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  324. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  325. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  326. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  327. package/typechain-types/factories/Errors__factory.ts +49 -1
  328. package/typechain-types/factories/GLPPreviewHelper__factory.ts +65 -0
  329. package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
  330. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  331. package/typechain-types/factories/IAddressProvider__factory.ts +63 -0
  332. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  333. package/typechain-types/factories/IDiamondCut__factory.ts +105 -0
  334. package/typechain-types/factories/IDiamondLoupe__factory.ts +99 -0
  335. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  336. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  337. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  338. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  339. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  340. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  341. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  342. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +338 -16
  343. package/typechain-types/factories/IPActionMintRedeem__factory.ts +105 -224
  344. package/typechain-types/factories/IPActionMisc__factory.ts +55 -11
  345. package/typechain-types/factories/IPActionSwapPT__factory.ts +52 -8
  346. package/typechain-types/factories/IPActionSwapYT__factory.ts +231 -8
  347. package/typechain-types/factories/IPAllAction__factory.ts +675 -241
  348. package/typechain-types/factories/IPInterestManagerYTV2__factory.ts +59 -0
  349. package/typechain-types/factories/IPMsgReceiverApp__factory.ts +1 -1
  350. package/typechain-types/factories/IPSwapAggregator__factory.ts +71 -0
  351. package/typechain-types/factories/IPYieldTokenV2__factory.ts +694 -0
  352. package/typechain-types/factories/IRewardRouterV2__factory.ts +216 -0
  353. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  354. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  355. package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
  356. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -27
  357. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  358. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -40
  359. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -40
  360. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
  361. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -40
  362. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  363. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  364. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  365. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  366. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +2 -2
  367. package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
  368. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  369. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  370. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  371. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  372. package/typechain-types/factories/PendleMsgReceiverAppUpg__factory.ts +1 -1
  373. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  374. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  375. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  376. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  377. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  378. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  379. package/typechain-types/factories/PendleRouter__factory.ts +75 -74
  380. package/typechain-types/factories/PendleSwapAggregator__factory.ts +129 -0
  381. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  382. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  383. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  384. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  385. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1109 -0
  386. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  387. package/typechain-types/factories/RouterStatic__factory.ts +69 -1
  388. package/typechain-types/factories/SAPE__factory.ts +1 -1
  389. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  390. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  391. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +2 -2
  392. package/typechain-types/hardhat.d.ts +203 -59
  393. package/typechain-types/index.ts +50 -18
  394. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +0 -4
  395. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +0 -190
  396. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +0 -4
  397. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +0 -165
  398. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +0 -4
  399. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +0 -343
  400. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
  401. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
  402. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
  403. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
  404. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
  405. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
  406. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
  407. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +0 -24
  408. package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
  409. package/contracts/router/ActionSwapPTYT.sol +0 -108
  410. package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -341
  411. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
  412. package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
  413. package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
@@ -1,103 +1,242 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
- import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
5
4
  import "@openzeppelin/contracts/proxy/Proxy.sol";
6
5
  import "../interfaces/IPAllAction.sol";
7
- import "../interfaces/IPMarketSwapCallback.sol";
8
- import "../core/libraries/Errors.sol";
9
-
10
- /// @dev this contract will be deployed behind an ERC1967 proxy
11
- /// calls to the ERC1967 proxy will be resolved at this contract, and proxied again to the
12
- /// corresponding implementation contracts
6
+ import "../interfaces/IDiamondLoupe.sol";
7
+ import "../interfaces/IDiamondCut.sol";
13
8
 
14
9
  // solhint-disable no-empty-blocks
15
- contract PendleRouter is Proxy {
16
- address public immutable ACTION_MINT_REDEEM;
17
- address public immutable ACTION_ADD_REMOVE_LIQ;
18
- address public immutable ACTION_SWAP_PT;
19
- address public immutable ACTION_SWAP_YT;
20
- address public immutable ACTION_SWAP_PTYT;
21
- address public immutable ACTION_CALLBACK;
22
- address public immutable ACTION_MISC;
10
+ contract PendleRouter is Proxy, IDiamondLoupe {
11
+ address internal immutable ACTION_MINT_REDEEM;
12
+ address internal immutable ACTION_ADD_REMOVE_LIQ;
13
+ address internal immutable ACTION_SWAP_PT;
14
+ address internal immutable ACTION_SWAP_YT;
15
+ address internal immutable ACTION_MISC;
16
+
17
+ event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);
23
18
 
24
19
  constructor(
25
20
  address _ACTION_MINT_REDEEM,
26
21
  address _ACTION_ADD_REMOVE_LIQ,
27
22
  address _ACTION_SWAP_PT,
28
23
  address _ACTION_SWAP_YT,
29
- address _ACTION_SWAP_PTYT,
30
- address _ACTION_CALLBACK,
31
24
  address _ACTION_MISC
32
25
  ) {
33
26
  ACTION_MINT_REDEEM = _ACTION_MINT_REDEEM;
34
27
  ACTION_ADD_REMOVE_LIQ = _ACTION_ADD_REMOVE_LIQ;
35
28
  ACTION_SWAP_PT = _ACTION_SWAP_PT;
36
29
  ACTION_SWAP_YT = _ACTION_SWAP_YT;
37
- ACTION_SWAP_PTYT = _ACTION_SWAP_PTYT;
38
- ACTION_CALLBACK = _ACTION_CALLBACK;
39
30
  ACTION_MISC = _ACTION_MISC;
31
+ _emitEvents();
32
+ }
33
+
34
+ function _emitEvents() internal {
35
+ Facet[] memory facets_ = facets();
36
+
37
+ uint256 nFacets = facets_.length;
38
+
39
+ IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](nFacets);
40
+ for (uint256 i; i < nFacets; ) {
41
+ cuts[i].facetAddress = facets_[i].facetAddress;
42
+ cuts[i].action = IDiamondCut.FacetCutAction.Add;
43
+ cuts[i].functionSelectors = facets_[i].functionSelectors;
44
+ unchecked {
45
+ ++i;
46
+ }
47
+ }
48
+
49
+ emit DiamondCut(cuts, address(0), "");
40
50
  }
41
51
 
42
52
  receive() external payable virtual override {}
43
53
 
44
- function getRouterImplementation(bytes4 sig) public view returns (address) {
45
- if (
46
- sig == IPActionMintRedeem.mintSyFromToken.selector ||
47
- sig == IPActionMintRedeem.redeemSyToToken.selector ||
48
- sig == IPActionMintRedeem.mintPyFromToken.selector ||
49
- sig == IPActionMintRedeem.redeemPyToToken.selector ||
50
- sig == IPActionMintRedeem.mintPyFromSy.selector ||
51
- sig == IPActionMintRedeem.redeemPyToSy.selector ||
52
- sig == IPActionMintRedeem.redeemDueInterestAndRewards.selector ||
53
- sig == IPActionMintRedeem.redeemDueInterestAndRewardsThenSwapAll.selector
54
- ) {
55
- return ACTION_MINT_REDEEM;
56
- } else if (
57
- sig == IPActionAddRemoveLiq.addLiquidityDualSyAndPt.selector ||
58
- sig == IPActionAddRemoveLiq.addLiquidityDualTokenAndPt.selector ||
59
- sig == IPActionAddRemoveLiq.addLiquiditySinglePt.selector ||
60
- sig == IPActionAddRemoveLiq.addLiquiditySingleSy.selector ||
61
- sig == IPActionAddRemoveLiq.addLiquiditySingleToken.selector ||
62
- sig == IPActionAddRemoveLiq.removeLiquidityDualSyAndPt.selector ||
63
- sig == IPActionAddRemoveLiq.removeLiquidityDualTokenAndPt.selector ||
64
- sig == IPActionAddRemoveLiq.removeLiquiditySinglePt.selector ||
65
- sig == IPActionAddRemoveLiq.removeLiquiditySingleSy.selector ||
66
- sig == IPActionAddRemoveLiq.removeLiquiditySingleToken.selector
67
- ) {
68
- return ACTION_ADD_REMOVE_LIQ;
69
- } else if (
70
- sig == IPActionSwapPT.swapExactPtForSy.selector ||
71
- sig == IPActionSwapPT.swapPtForExactSy.selector ||
72
- sig == IPActionSwapPT.swapSyForExactPt.selector ||
73
- sig == IPActionSwapPT.swapExactSyForPt.selector ||
74
- sig == IPActionSwapPT.swapExactTokenForPt.selector ||
75
- sig == IPActionSwapPT.swapExactPtForToken.selector
76
- ) {
77
- return ACTION_SWAP_PT;
78
- } else if (
79
- sig == IPActionSwapYT.swapExactYtForSy.selector ||
80
- sig == IPActionSwapYT.swapSyForExactYt.selector ||
81
- sig == IPActionSwapYT.swapExactSyForYt.selector ||
82
- sig == IPActionSwapYT.swapExactTokenForYt.selector ||
83
- sig == IPActionSwapYT.swapExactYtForToken.selector ||
84
- sig == IPActionSwapYT.swapYtForExactSy.selector
85
- ) {
86
- return ACTION_SWAP_YT;
87
- } else if (
88
- sig == IPActionSwapPTYT.swapExactPtForYt.selector ||
89
- sig == IPActionSwapPTYT.swapExactYtForPt.selector
90
- ) {
91
- return ACTION_SWAP_PTYT;
92
- } else if (sig == IPMarketSwapCallback.swapCallback.selector) {
93
- return ACTION_CALLBACK;
94
- } else if (sig == IPActionMisc.consult.selector) {
95
- return ACTION_MISC;
54
+ /// @notice Gets all facet addresses and their four byte function selectors.
55
+ /// @return facets_ Facet
56
+ function facets() public view returns (Facet[] memory facets_) {
57
+ address[] memory facetAddresses_ = facetAddresses();
58
+ uint256 numFacets = facetAddresses_.length;
59
+
60
+ facets_ = new Facet[](numFacets);
61
+ for (uint256 i; i < numFacets; ) {
62
+ facets_[i].facetAddress = facetAddresses_[i];
63
+ facets_[i].functionSelectors = facetFunctionSelectors(facetAddresses_[i]);
64
+ unchecked {
65
+ i++;
66
+ }
67
+ }
68
+ }
69
+
70
+ function facetFunctionSelectors(address facet) public view returns (bytes4[] memory res) {
71
+ if (facet == ACTION_ADD_REMOVE_LIQ) {
72
+ res = new bytes4[](12);
73
+ res[0] = 0x97ee279e; // addLiquidityDualSyAndPt
74
+ res[1] = 0xcb591eb2; // addLiquidityDualTokenAndPt
75
+ res[2] = 0x3af1f329; // addLiquiditySinglePt
76
+ res[3] = 0x409c7a89; // addLiquiditySingleSy
77
+ res[4] = 0x015491d1; // addLiquiditySingleToken
78
+ res[5] = 0xb7d75b8b; // removeLiquidityDualSyAndPt
79
+ res[6] = 0xe6eaba01; // removeLiquidityDualTokenAndPt
80
+ res[7] = 0x694ab559; // removeLiquiditySinglePt
81
+ res[8] = 0x178d29d3; // removeLiquiditySingleSy
82
+ res[9] = 0x690807ad; // removeLiquiditySingleToken
83
+ res[10] = 0xdfbc814e; // addLiquiditySingleTokenKeepYt
84
+ res[11] = 0x844384aa; // addLiquiditySingleSyKeepYt
85
+ return res;
86
+ }
87
+ if (facet == ACTION_MINT_REDEEM) {
88
+ res = new bytes4[](7);
89
+ res[0] = 0x1a8631b2; // mintPyFromSy
90
+ res[1] = 0x46eb2db6; // mintPyFromToken
91
+ res[2] = 0x443e6512; // mintSyFromToken
92
+ res[3] = 0xf7e375e8; // redeemDueInterestAndRewards
93
+ res[4] = 0x339748cb; // redeemPyToSy
94
+ res[5] = 0x527df199; // redeemPyToToken
95
+ res[6] = 0x85b29936; // redeemSyToToken
96
+ return res;
97
+ }
98
+ if (facet == ACTION_SWAP_PT) {
99
+ res = new bytes4[](6);
100
+ res[0] = 0x2032aecd; // swapExactPtForSy
101
+ res[1] = 0xb85f50ba; // swapExactPtForToken
102
+ res[2] = 0x83c71b69; // swapExactSyForPt
103
+ res[3] = 0xa5f9931b; // swapExactTokenForPt
104
+ res[4] = 0xdd371acd; // swapPtForExactSy
105
+ res[5] = 0x6b8bdf32; // swapSyForExactPt
106
+ return res;
107
+ }
108
+ if (facet == ACTION_SWAP_YT) {
109
+ res = new bytes4[](9);
110
+ res[0] = 0xfa483e72; // swapCallback
111
+ res[1] = 0xc861a898; // swapExactPtForYt
112
+ res[2] = 0x448b9b95; // swapExactYtForPt
113
+ res[3] = 0xfdd71f43; // swapExactSyForYt
114
+ res[4] = 0xc4a9c7de; // swapExactTokenForYt
115
+ res[5] = 0x357d6540; // swapExactYtForSy
116
+ res[6] = 0xd6308fa4; // swapExactYtForToken
117
+ res[7] = 0xbf1bd434; // swapSyForExactYt
118
+ res[8] = 0xe15cc098; // swapYtForExactSy
119
+ return res;
120
+ }
121
+ if (facet == ACTION_MISC) {
122
+ res = new bytes4[](2);
123
+ res[0] = 0xacdb32df; // approveInf
124
+ res[1] = 0xd617b03b; // batchExec
125
+ return res;
126
+ }
127
+ if (facet == address(this)) {
128
+ res = new bytes4[](4);
129
+ res[0] = 0xcdffacc6; // facetAddress
130
+ res[1] = 0x52ef6b2c; // facetAddresses
131
+ res[2] = 0xadfca15e; // facetFunctionSelectors
132
+ res[3] = 0x7a0ed627; // facets
133
+ return res;
134
+ }
135
+ revert Errors.RouterInvalidFacet(facet);
136
+ }
137
+
138
+ function facetAddress(bytes4 sig) public view returns (address) {
139
+ if (sig < 0x97ee279e) {
140
+ if (sig < 0x46eb2db6) {
141
+ if (sig < 0x357d6540) {
142
+ if (sig < 0x1a8631b2) {
143
+ if (sig == 0x015491d1) return ACTION_ADD_REMOVE_LIQ; // addLiquiditySingleToken 5
144
+ if (sig == 0x178d29d3) return ACTION_ADD_REMOVE_LIQ; // removeLiquiditySingleSy 6
145
+ } else {
146
+ if (sig == 0x1a8631b2) return ACTION_MINT_REDEEM; // mintPyFromSy 5
147
+ if (sig == 0x2032aecd) return ACTION_SWAP_PT; // swapExactPtForSy 6
148
+ if (sig == 0x339748cb) return ACTION_MINT_REDEEM; // redeemPyToSy 7
149
+ }
150
+ } else {
151
+ if (sig < 0x409c7a89) {
152
+ if (sig == 0x357d6540) return ACTION_SWAP_YT; // swapExactYtForSy 5
153
+ if (sig == 0x3af1f329) return ACTION_ADD_REMOVE_LIQ; // addLiquiditySinglePt 6
154
+ } else {
155
+ if (sig == 0x409c7a89) return ACTION_ADD_REMOVE_LIQ; // addLiquiditySingleSy 5
156
+ if (sig == 0x443e6512) return ACTION_MINT_REDEEM; // mintSyFromToken 6
157
+ if (sig == 0x448b9b95) return ACTION_SWAP_YT; // swapExactYtForPt 7
158
+ }
159
+ }
160
+ } else {
161
+ if (sig < 0x6b8bdf32) {
162
+ if (sig < 0x52ef6b2c) {
163
+ if (sig == 0x46eb2db6) return ACTION_MINT_REDEEM; // mintPyFromToken 5
164
+ if (sig == 0x527df199) return ACTION_MINT_REDEEM; // redeemPyToToken 6
165
+ } else {
166
+ if (sig == 0x690807ad) return ACTION_ADD_REMOVE_LIQ; // removeLiquiditySingleToken 5
167
+ if (sig == 0x694ab559) return ACTION_ADD_REMOVE_LIQ; // removeLiquiditySinglePt 6
168
+ if (sig == 0x52ef6b2c) return address(this); // facetAddresses 7
169
+ }
170
+ } else {
171
+ if (sig < 0x83c71b69) {
172
+ if (sig == 0x6b8bdf32) return ACTION_SWAP_PT; // swapSyForExactPt 5
173
+ if (sig == 0x7a0ed627) return address(this); // facets 6
174
+ } else {
175
+ if (sig == 0x85b29936) return ACTION_MINT_REDEEM; // redeemSyToToken 5
176
+ if (sig == 0x844384aa) return ACTION_ADD_REMOVE_LIQ; // addLiquiditySingleSyKeepYt 6
177
+ if (sig == 0x83c71b69) return ACTION_SWAP_PT; // swapExactSyForPt 7
178
+ }
179
+ }
180
+ }
181
+ } else {
182
+ if (sig < 0xcdffacc6) {
183
+ if (sig < 0xb85f50ba) {
184
+ if (sig < 0xacdb32df) {
185
+ if (sig == 0xa5f9931b) return ACTION_SWAP_PT; // swapExactTokenForPt 5
186
+ if (sig == 0x97ee279e) return ACTION_ADD_REMOVE_LIQ; // addLiquidityDualSyAndPt 6
187
+ } else {
188
+ if (sig == 0xb7d75b8b) return ACTION_ADD_REMOVE_LIQ; // removeLiquidityDualSyAndPt 5
189
+ if (sig == 0xacdb32df) return ACTION_MISC; // approveInf 6
190
+ if (sig == 0xadfca15e) return address(this); // facetFunctionSelectors 7
191
+ }
192
+ } else {
193
+ if (sig < 0xc4a9c7de) {
194
+ if (sig == 0xb85f50ba) return ACTION_SWAP_PT; // swapExactPtForToken 5
195
+ if (sig == 0xbf1bd434) return ACTION_SWAP_YT; // swapSyForExactYt 6
196
+ } else {
197
+ if (sig == 0xc4a9c7de) return ACTION_SWAP_YT; // swapExactTokenForYt 5
198
+ if (sig == 0xcb591eb2) return ACTION_ADD_REMOVE_LIQ; // addLiquidityDualTokenAndPt 6
199
+ if (sig == 0xc861a898) return ACTION_SWAP_YT; // swapExactPtForYt 7
200
+ }
201
+ }
202
+ } else {
203
+ if (sig < 0xe15cc098) {
204
+ if (sig < 0xd6308fa4) {
205
+ if (sig == 0xd617b03b) return ACTION_MISC; // batchExec 5
206
+ if (sig == 0xcdffacc6) return address(this); // facetAddress 6
207
+ } else {
208
+ if (sig == 0xd6308fa4) return ACTION_SWAP_YT; // swapExactYtForToken 5
209
+ if (sig == 0xdfbc814e) return ACTION_ADD_REMOVE_LIQ; // addLiquiditySingleTokenKeepYt 6
210
+ if (sig == 0xdd371acd) return ACTION_SWAP_PT; // swapPtForExactSy 7
211
+ }
212
+ } else {
213
+ if (sig < 0xf7e375e8) {
214
+ if (sig == 0xe6eaba01) return ACTION_ADD_REMOVE_LIQ; // removeLiquidityDualTokenAndPt 5
215
+ if (sig == 0xe15cc098) return ACTION_SWAP_YT; // swapYtForExactSy 6
216
+ } else {
217
+ if (sig == 0xfa483e72) return ACTION_SWAP_YT; // swapCallback 5
218
+ if (sig == 0xf7e375e8) return ACTION_MINT_REDEEM; // redeemDueInterestAndRewards 6
219
+ if (sig == 0xfdd71f43) return ACTION_SWAP_YT; // swapExactSyForYt 7
220
+ }
221
+ }
222
+ }
96
223
  }
97
224
  revert Errors.RouterInvalidAction(sig);
225
+ // NUM_FUNC: 40 AVG:5.80 STD:0.75 WORST_CASE:7 STOP_BRANCH:3
226
+ }
227
+
228
+ function facetAddresses() public view returns (address[] memory) {
229
+ address[] memory res = new address[](6);
230
+ res[0] = ACTION_ADD_REMOVE_LIQ;
231
+ res[1] = ACTION_MINT_REDEEM;
232
+ res[2] = ACTION_SWAP_PT;
233
+ res[3] = ACTION_SWAP_YT;
234
+ res[4] = ACTION_MISC;
235
+ res[5] = address(this);
236
+ return res;
98
237
  }
99
238
 
100
239
  function _implementation() internal view override returns (address) {
101
- return getRouterImplementation(msg.sig);
240
+ return facetAddress(msg.sig);
102
241
  }
103
242
  }
@@ -1,24 +1,24 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
- import "../interfaces/IPMarketFactory.sol";
5
- import "../interfaces/IPMarket.sol";
6
- import "../interfaces/IPMarketSwapCallback.sol";
7
- import "../core/libraries/Errors.sol";
4
+ import "../..//interfaces/IPMarketFactory.sol";
5
+ import "../..//interfaces/IPMarket.sol";
6
+ import "../..//interfaces/IPMarketSwapCallback.sol";
7
+ import "../..//core/libraries/Errors.sol";
8
8
 
9
- import "./base/MarketApproxLib.sol";
10
- import "./base/ActionBaseMintRedeem.sol";
11
- import "./base/CallbackHelper.sol";
9
+ import "./MarketApproxLib.sol";
10
+ import "./ActionBaseMintRedeem.sol";
11
+ import "./CallbackHelper.sol";
12
12
 
13
13
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
14
14
 
15
- contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
15
+ abstract contract ActionBaseCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
16
16
  using Math for int256;
17
17
  using Math for uint256;
18
18
  using PYIndexLib for PYIndex;
19
19
  using PYIndexLib for IPYieldToken;
20
20
 
21
- address public immutable marketFactory;
21
+ address internal immutable marketFactory;
22
22
 
23
23
  modifier onlyPendleMarket(address caller) {
24
24
  if (!IPMarketFactory(marketFactory).isValidMarket(caller))
@@ -38,19 +38,18 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
38
38
  int256 ptToAccount,
39
39
  int256 syToAccount,
40
40
  bytes calldata data
41
- ) external override onlyPendleMarket(msg.sender) {
42
- address market = msg.sender;
41
+ ) external override {
43
42
  ActionType swapType = _getActionType(data);
44
43
  if (swapType == ActionType.SwapExactSyForYt) {
45
- _callbackSwapExactSyForYt(market, ptToAccount, syToAccount, data);
44
+ _callbackSwapExactSyForYt(ptToAccount, syToAccount, data);
46
45
  } else if (swapType == ActionType.SwapSyForExactYt) {
47
- _callbackSwapSyForExactYt(market, ptToAccount, syToAccount, data);
46
+ _callbackSwapSyForExactYt(ptToAccount, syToAccount, data);
48
47
  } else if (swapType == ActionType.SwapYtForSy) {
49
- _callbackSwapYtForSy(market, ptToAccount, syToAccount, data);
48
+ _callbackSwapYtForSy(ptToAccount, syToAccount, data);
50
49
  } else if (swapType == ActionType.SwapExactYtForPt) {
51
- _callbackSwapExactYtForPt(market, ptToAccount, syToAccount, data);
50
+ _callbackSwapExactYtForPt(ptToAccount, syToAccount, data);
52
51
  } else if (swapType == ActionType.SwapExactPtForYt) {
53
- _callbackSwapExactPtForYt(market, ptToAccount, syToAccount, data);
52
+ _callbackSwapExactPtForYt(ptToAccount, syToAccount, data);
54
53
  } else {
55
54
  assert(false);
56
55
  }
@@ -58,37 +57,33 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
58
57
 
59
58
  /// @dev refer to _swapExactSyForYt
60
59
  function _callbackSwapExactSyForYt(
61
- address market,
62
60
  int256 ptToAccount,
63
61
  int256, /*syToAccount*/
64
62
  bytes calldata data
65
63
  ) internal {
66
- (, , IPYieldToken YT) = IPMarket(market).readTokens();
67
- (address receiver, uint256 minYtOut) = _decodeSwapExactSyForYt(data);
64
+ (address receiver, uint256 minYtOut, IPYieldToken YT) = _decodeSwapExactSyForYt(data);
68
65
 
69
66
  uint256 ptOwed = ptToAccount.abs();
70
- uint256 netPyOut = YT.mintPY(market, receiver);
67
+ uint256 netPyOut = YT.mintPY(msg.sender, receiver);
71
68
 
72
69
  if (netPyOut < ptOwed) revert Errors.RouterInsufficientPtRepay(netPyOut, ptOwed);
73
70
  if (netPyOut < minYtOut) revert Errors.RouterInsufficientYtOut(netPyOut, minYtOut);
74
71
  }
75
72
 
76
- struct VarsSwapSyForExactYt {
77
- address payer;
78
- address receiver;
79
- uint256 maxSyToPull;
80
- }
81
-
82
73
  /// @dev refer to _swapSyForExactYt
74
+ /// @dev we require msg.sender to be market here to make sure payer is the original msg.sender
83
75
  function _callbackSwapSyForExactYt(
84
- address market,
85
76
  int256 ptToAccount,
86
77
  int256 syToAccount,
87
78
  bytes calldata data
88
- ) internal {
89
- VarsSwapSyForExactYt memory vars;
90
- (vars.payer, vars.receiver, vars.maxSyToPull) = _decodeSwapSyForExactYt(data);
91
- (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
79
+ ) internal onlyPendleMarket(msg.sender) {
80
+ (
81
+ address payer,
82
+ address receiver,
83
+ uint256 maxSyToPull,
84
+ IStandardizedYield SY,
85
+ IPYieldToken YT
86
+ ) = _decodeSwapSyForExactYt(data);
92
87
 
93
88
  /// ------------------------------------------------------------
94
89
  /// calc totalSyNeed
@@ -103,29 +98,27 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
103
98
  uint256 syReceived = syToAccount.Uint();
104
99
  uint256 netSyToPull = totalSyNeed.subMax0(syReceived);
105
100
 
106
- if (netSyToPull > vars.maxSyToPull)
107
- revert Errors.RouterExceededLimitSyIn(netSyToPull, vars.maxSyToPull);
101
+ if (netSyToPull > maxSyToPull)
102
+ revert Errors.RouterExceededLimitSyIn(netSyToPull, maxSyToPull);
108
103
 
109
104
  /// ------------------------------------------------------------
110
105
  /// mint & transfer
111
106
  /// ------------------------------------------------------------
112
107
  if (netSyToPull > 0) {
113
- _transferFrom(IERC20(SY), vars.payer, address(YT), netSyToPull);
108
+ _transferFrom(IERC20(SY), payer, address(YT), netSyToPull);
114
109
  }
115
110
 
116
- uint256 netPyOut = YT.mintPY(market, vars.receiver);
111
+ uint256 netPyOut = YT.mintPY(msg.sender, receiver);
117
112
  if (netPyOut < ptOwed) revert Errors.RouterInsufficientPtRepay(netPyOut, ptOwed);
118
113
  }
119
114
 
120
115
  /// @dev refer to _swapExactYtForSy or _swapYtForExactSy
121
116
  function _callbackSwapYtForSy(
122
- address market,
123
117
  int256 ptToAccount,
124
118
  int256 syToAccount,
125
119
  bytes calldata data
126
120
  ) internal {
127
- (address receiver, uint256 minSyOut) = _decodeSwapYtForSy(data);
128
- (, , IPYieldToken YT) = IPMarket(market).readTokens();
121
+ (address receiver, uint256 minSyOut, IPYieldToken YT) = _decodeSwapYtForSy(data);
129
122
  PYIndex pyIndex = YT.newIndex();
130
123
 
131
124
  uint256 syOwed = syToAccount.neg().Uint();
@@ -133,7 +126,7 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
133
126
  address[] memory receivers = new address[](2);
134
127
  uint256[] memory amountPYToRedeems = new uint256[](2);
135
128
 
136
- (receivers[0], amountPYToRedeems[0]) = (market, pyIndex.syToAssetUp(syOwed));
129
+ (receivers[0], amountPYToRedeems[0]) = (msg.sender, pyIndex.syToAssetUp(syOwed));
137
130
  (receivers[1], amountPYToRedeems[1]) = (
138
131
  receiver,
139
132
  ptToAccount.Uint() - amountPYToRedeems[0]
@@ -145,34 +138,41 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
145
138
  }
146
139
 
147
140
  function _callbackSwapExactPtForYt(
148
- address market,
149
141
  int256 ptToAccount,
150
142
  int256, /*syToAccount*/
151
143
  bytes calldata data
152
144
  ) internal {
153
- (address receiver, uint256 exactPtIn, uint256 minYtOut) = _decodeSwapExactPtForYt(data);
145
+ (
146
+ address receiver,
147
+ uint256 exactPtIn,
148
+ uint256 minYtOut,
149
+ IPYieldToken YT
150
+ ) = _decodeSwapExactPtForYt(data);
154
151
  uint256 netPtOwed = ptToAccount.abs();
155
- (, , IPYieldToken YT) = IPMarket(market).readTokens();
156
152
 
157
- uint256 netPyOut = YT.mintPY(market, receiver);
153
+ uint256 netPyOut = YT.mintPY(msg.sender, receiver);
158
154
  if (netPyOut < minYtOut) revert Errors.RouterInsufficientYtOut(netPyOut, minYtOut);
159
155
  if (exactPtIn + netPyOut < netPtOwed)
160
156
  revert Errors.RouterInsufficientPtRepay(exactPtIn + netPyOut, netPtOwed);
161
157
  }
162
158
 
163
159
  function _callbackSwapExactYtForPt(
164
- address market,
165
160
  int256 ptToAccount,
166
161
  int256 syToAccount,
167
162
  bytes calldata data
168
163
  ) internal {
169
- (address receiver, uint256 exactYtIn, uint256 minPtOut) = _decodeSwapExactYtForPt(data);
170
- (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
164
+ (
165
+ address receiver,
166
+ uint256 exactYtIn,
167
+ uint256 minPtOut,
168
+ IPPrincipalToken PT,
169
+ IPYieldToken YT
170
+ ) = _decodeSwapExactYtForPt(data);
171
171
 
172
172
  uint256 netSyOwed = syToAccount.abs();
173
173
 
174
174
  _transferOut(address(PT), address(YT), exactYtIn);
175
- uint256 netSyToMarket = YT.redeemPY(market);
175
+ uint256 netSyToMarket = YT.redeemPY(msg.sender);
176
176
 
177
177
  if (netSyToMarket < netSyOwed)
178
178
  revert Errors.RouterInsufficientSyRepay(netSyToMarket, netSyOwed);