@pendle/core-v2 0.8.0-beta-3 → 0.8.0-beta-5

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 (115) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +7 -2
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  9. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  11. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  16. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  17. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  19. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  24. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  26. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  29. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  33. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  35. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  37. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  44. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  45. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  46. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  47. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  48. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  49. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  50. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  51. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  52. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  53. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  54. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  55. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  56. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  57. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  58. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  59. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  60. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  61. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  62. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  81. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  82. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  83. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  84. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  85. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  86. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  87. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  88. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  89. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  90. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  91. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  92. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  93. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  94. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  95. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  96. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  97. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  98. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  99. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  100. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  101. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +191 -175
  102. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  103. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +2 -9
  104. package/contracts/core/PendleERC20Permit.sol +1 -1
  105. package/contracts/offchain-helpers/RouterStatic.sol +90 -25
  106. package/package.json +1 -1
  107. package/typechain-types/RouterStatic.ts +335 -317
  108. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  109. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  110. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  111. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  112. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +10 -1
  113. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  114. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  115. package/typechain-types/factories/RouterStatic__factory.ts +190 -174
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/e7b3e6f2a5d6184a47ffed58494b1475.json"
3
+ "buildInfo": "../../../build-info/7033d6fa08f4d79f81b857af32174eb3.json"
4
4
  }
@@ -20,6 +20,7 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
20
20
  string memory _name,
21
21
  string memory _symbol,
22
22
  address _qiToken,
23
+ bool isUnderlyingNative,
23
24
  address _WAVAX,
24
25
  uint256 _initialExchangeRateMantissa
25
26
  )
@@ -30,7 +31,7 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
30
31
 
31
32
  qiToken = _qiToken;
32
33
 
33
- underlying = _getUnderlyingOfQiToken();
34
+ underlying = isUnderlyingNative ? NATIVE : IQiErc20(qiToken).underlying();
34
35
  comptroller = IQiToken(qiToken).comptroller();
35
36
 
36
37
  QI = IBenQiComptroller(comptroller).qiAddress();
@@ -41,14 +42,6 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
41
42
  }
42
43
  }
43
44
 
44
- function _getUnderlyingOfQiToken() internal view returns (address) {
45
- try IQiErc20(qiToken).underlying() returns (address res) {
46
- return res;
47
- } catch {
48
- return NATIVE;
49
- }
50
- }
51
-
52
45
  /*///////////////////////////////////////////////////////////////
53
46
  DEPOSIT/REDEEM USING BASE TOKENS
54
47
  //////////////////////////////////////////////////////////////*/
@@ -28,7 +28,7 @@ contract PendleERC20Permit is PendleERC20, IERC20Permit, EIP712 {
28
28
  string memory name_,
29
29
  string memory symbol_,
30
30
  uint8 decimals_
31
- ) PendleERC20(name_, symbol_, decimals) EIP712(name_, "1") {}
31
+ ) PendleERC20(name_, symbol_, decimals_) EIP712(name_, "1") {}
32
32
 
33
33
  /**
34
34
  * @dev See {IERC20Permit-permit}.
@@ -13,7 +13,7 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
13
13
  import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
14
14
 
15
15
  /// EXCLUDED FROM ALL AUDITS, TO BE CALLED ONLY BY PENDLE's SDK
16
- contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, OwnableUpgradeable {
16
+ contract RouterStatic is IPRouterStatic {
17
17
  using MarketMathCore for MarketState;
18
18
  using MarketApproxLib for MarketState;
19
19
  using Math for uint256;
@@ -21,9 +21,9 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
21
21
  using LogExpMath for int256;
22
22
  using SCYIndexLib for SCYIndex;
23
23
 
24
- IPYieldContractFactory public immutable yieldContractFactory;
25
- IPMarketFactory public immutable marketFactory;
26
- ApproxParams public approxParams =
24
+ IPYieldContractFactory internal immutable yieldContractFactory;
25
+ IPMarketFactory internal immutable marketFactory;
26
+ ApproxParams internal approxParams =
27
27
  ApproxParams({
28
28
  guessMin: 0,
29
29
  guessMax: type(uint256).max,
@@ -32,18 +32,11 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
32
32
  eps: 1e15
33
33
  });
34
34
 
35
- constructor(IPYieldContractFactory _yieldContractFactory, IPMarketFactory _marketFactory)
36
- initializer
37
- {
35
+ constructor(IPYieldContractFactory _yieldContractFactory, IPMarketFactory _marketFactory) {
38
36
  yieldContractFactory = _yieldContractFactory;
39
37
  marketFactory = _marketFactory;
40
38
  }
41
39
 
42
- function initialize() external initializer {
43
- __UUPSUpgradeable_init();
44
- __Ownable_init();
45
- }
46
-
47
40
  // ============= SYSTEM INFO =============
48
41
 
49
42
  function getPYInfo(address py)
@@ -176,7 +169,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
176
169
  }
177
170
 
178
171
  function swapExactPtForScyStatic(address market, uint256 exactPtIn)
179
- external
172
+ public
180
173
  view
181
174
  returns (uint256 netScyOut, uint256 netScyFee)
182
175
  {
@@ -202,7 +195,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
202
195
  }
203
196
 
204
197
  function swapExactScyForPtStatic(address market, uint256 exactScyIn)
205
- external
198
+ public
206
199
  view
207
200
  returns (uint256 netPtOut, uint256 netScyFee)
208
201
  {
@@ -215,6 +208,43 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
215
208
  );
216
209
  }
217
210
 
211
+ function swapPtForExactScyStatic(address market, uint256 exactScyOut)
212
+ public
213
+ view
214
+ returns (uint256 netPtIn, uint256 netScyFee)
215
+ {
216
+ MarketState memory state = IPMarket(market).readState(false);
217
+
218
+ (netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
219
+ scyIndex(market),
220
+ exactScyOut,
221
+ block.timestamp,
222
+ approxParams
223
+ );
224
+ }
225
+
226
+ function swapExactBaseTokenForPtStatic(
227
+ address market,
228
+ address baseToken,
229
+ uint256 amountBaseToken
230
+ ) external view returns (uint256 netPtOut, uint256 netScyFee) {
231
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
232
+
233
+ return swapExactScyForPtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
234
+ }
235
+
236
+ function swapExactPtForBaseTokenStatic(
237
+ address market,
238
+ uint256 exactYtIn,
239
+ address baseToken
240
+ ) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
241
+ uint256 netScyOut;
242
+ (netScyOut, netScyFee) = swapExactPtForScyStatic(market, exactYtIn);
243
+
244
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
245
+ netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
246
+ }
247
+
218
248
  function swapScyForExactYtStatic(address market, uint256 exactYtOut)
219
249
  external
220
250
  view
@@ -236,7 +266,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
236
266
  }
237
267
 
238
268
  function swapExactScyForYtStatic(address market, uint256 exactScyIn)
239
- external
269
+ public
240
270
  view
241
271
  returns (uint256 netYtOut, uint256 netScyFee)
242
272
  {
@@ -252,7 +282,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
252
282
  }
253
283
 
254
284
  function swapExactYtForScyStatic(address market, uint256 exactYtIn)
255
- external
285
+ public
256
286
  view
257
287
  returns (uint256 netScyOut, uint256 netScyFee)
258
288
  {
@@ -286,10 +316,32 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
286
316
  );
287
317
  }
288
318
 
319
+ function swapExactYtForBaseTokenStatic(
320
+ address market,
321
+ uint256 exactYtIn,
322
+ address baseToken
323
+ ) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
324
+ uint256 netScyOut;
325
+ (netScyOut, netScyFee) = swapExactYtForScyStatic(market, exactYtIn);
326
+
327
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
328
+ netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
329
+ }
330
+
331
+ function swapExactBaseTokenForYtStatic(
332
+ address market,
333
+ address baseToken,
334
+ uint256 amountBaseToken
335
+ ) external view returns (uint256 netPtOut, uint256 netScyFee) {
336
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
337
+
338
+ return swapExactScyForYtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
339
+ }
340
+
289
341
  // ============= OTHER HELPERS =============
290
342
 
291
- function previewMintPY(address YT, uint256 amountScyToMint)
292
- external
343
+ function mintPYFromScyStatic(address YT, uint256 amountScyToMint)
344
+ public
293
345
  returns (uint256 amountPY)
294
346
  {
295
347
  IPYieldToken _YT = IPYieldToken(YT);
@@ -297,14 +349,32 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
297
349
  return amountScyToMint.mulDown(_YT.scyIndexCurrent());
298
350
  }
299
351
 
300
- function previewRedeemPY(address YT, uint256 amountPYToRedeem)
301
- external
352
+ function redeemPYToScyStatic(address YT, uint256 amountPYToRedeem)
353
+ public
302
354
  returns (uint256 amountPY)
303
355
  {
304
356
  IPYieldToken _YT = IPYieldToken(YT);
305
357
  return amountPYToRedeem.divDown(_YT.scyIndexCurrent());
306
358
  }
307
359
 
360
+ function mintPYFromBaseStatic(
361
+ address YT,
362
+ address baseToken,
363
+ uint256 amountBaseToken
364
+ ) external returns (uint256 amountPY) {
365
+ ISuperComposableYield SCY = ISuperComposableYield(IPYieldToken(YT).SCY());
366
+ return mintPYFromScyStatic(YT, SCY.previewDeposit(baseToken, amountBaseToken));
367
+ }
368
+
369
+ function redeemPYToBaseStatic(
370
+ address YT,
371
+ uint256 amountPYToRedeem,
372
+ address baseToken
373
+ ) external returns (uint256 amountBaseToken) {
374
+ ISuperComposableYield SCY = ISuperComposableYield(IPYieldToken(YT).SCY());
375
+ return SCY.previewRedeem(baseToken, redeemPYToScyStatic(YT, amountPYToRedeem));
376
+ }
377
+
308
378
  function scyIndex(address market) public view returns (SCYIndex index) {
309
379
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
310
380
 
@@ -406,9 +476,4 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
406
476
  userPYInfo.unclaimedInterest.amount > 0 ||
407
477
  userPYInfo.unclaimedRewards.length > 0);
408
478
  }
409
-
410
- // ============= UPGRADES =============
411
-
412
- // solhint-disable-next-line no-empty-blocks
413
- function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
414
479
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "0.8.0-beta-3",
5
+ "version": "0.8.0-beta-5",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",