@pendle/core-v2 4.0.5 → 4.0.6

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 (46) hide show
  1. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwapBase.dbg.json +1 -1
  2. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwapL1.dbg.json +1 -1
  3. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwapL1.json +2 -2
  4. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwapL2.dbg.json +1 -1
  5. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwapL2.json +2 -2
  6. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol/IExecutorHelper.json +168 -0
  8. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol/IExecutorHelperL2.dbg.json +1 -1
  9. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol/IExecutorHelperL2.json +378 -0
  10. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol/InputScalingHelper.dbg.json +1 -1
  11. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol/InputScalingHelper.json +2 -2
  12. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  13. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol/ScalingDataLib.json +2 -2
  14. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol/CalldataReader.dbg.json +1 -1
  15. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol/CalldataReader.json +2 -2
  16. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol/CalldataWriter.dbg.json +1 -1
  17. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol/CalldataWriter.json +2 -2
  18. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol/Common.dbg.json +1 -1
  19. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol/Common.json +2 -2
  20. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol/DexScaler.dbg.json +1 -1
  21. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol/DexScaler.json +2 -2
  22. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol/ExecutorReader.dbg.json +1 -1
  23. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol/ExecutorReader.json +2 -2
  24. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol/InputScalingHelperL2.dbg.json +1 -1
  25. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol/InputScalingHelperL2.json +2 -2
  26. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol/ScalingDataL2Lib.dbg.json +1 -1
  27. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol/ScalingDataL2Lib.json +2 -2
  28. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol +58 -1
  29. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol +107 -1
  30. package/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol +14 -0
  31. package/contracts/router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol +32 -0
  32. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol +6 -0
  33. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol +59 -2
  34. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol +22 -1
  35. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol +24 -0
  36. package/deployments/1-core.json +1 -1
  37. package/deployments/10-core.json +1 -1
  38. package/deployments/42161-core.json +1 -1
  39. package/deployments/56-core.json +1 -1
  40. package/package.json +1 -1
  41. package/typechain-types/IExecutorHelper.ts +273 -0
  42. package/typechain-types/IExecutorHelperL2.ts +455 -0
  43. package/typechain-types/factories/IExecutorHelperL2__factory.ts +378 -0
  44. package/typechain-types/factories/IExecutorHelper__factory.ts +168 -0
  45. package/typechain-types/factories/PendleSwapL1__factory.ts +1 -1
  46. package/typechain-types/factories/PendleSwapL2__factory.ts +1 -1
@@ -232,9 +232,12 @@ interface IExecutorHelperL2 {
232
232
 
233
233
  struct VelocoreV2 {
234
234
  address vault;
235
+ uint256 amount;
235
236
  address tokenIn;
236
237
  address tokenOut;
237
- uint256 amount;
238
+ address stablePool; // if not empty then use stable pool
239
+ address wrapToken;
240
+ bool isConvertFirst;
238
241
  }
239
242
 
240
243
  struct MaticMigrate {
@@ -252,6 +255,46 @@ interface IExecutorHelperL2 {
252
255
  address toToken;
253
256
  }
254
257
 
258
+ struct BalancerV1 {
259
+ address pool;
260
+ uint256 amount;
261
+ address tokenIn;
262
+ address tokenOut;
263
+ }
264
+
265
+ struct SwaapV2 {
266
+ address router;
267
+ uint256 amount;
268
+ bytes data;
269
+ address tokenIn;
270
+ address tokenOut;
271
+ address recipient;
272
+ }
273
+
274
+ struct ArbswapStable {
275
+ address pool;
276
+ uint256 dx;
277
+ uint256 tokenIndexFrom;
278
+ address tokenIn;
279
+ address tokenOut;
280
+ }
281
+
282
+ struct BancorV2 {
283
+ address pool;
284
+ address[] swapPath;
285
+ uint256 amount;
286
+ address recipient;
287
+ }
288
+
289
+ struct Ambient {
290
+ address pool;
291
+ uint128 qty;
292
+ address base;
293
+ address quote;
294
+ uint256 poolIdx;
295
+ uint8 settleFlags;
296
+ }
297
+
255
298
  function executeUniswap(
256
299
  uint256 index,
257
300
  bytes memory data,
@@ -557,4 +600,67 @@ interface IExecutorHelperL2 {
557
600
  bool getPoolOnly,
558
601
  address nextPool
559
602
  ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
603
+
604
+ function executeBalancerV1(
605
+ uint256 index,
606
+ bytes memory data,
607
+ uint256 previousAmountOut,
608
+ address tokenIn,
609
+ bool getPoolOnly,
610
+ address nextPool
611
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
612
+
613
+ function executeSwaapV2(
614
+ uint256 index,
615
+ bytes memory data,
616
+ uint256 previousAmountOut,
617
+ address tokenIn,
618
+ bool getPoolOnly,
619
+ address nextPool
620
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
621
+
622
+ function executeNomiswapStable(
623
+ uint256 index,
624
+ bytes memory data,
625
+ uint256 previousAmountOut,
626
+ address tokenIn,
627
+ bool getPoolOnly,
628
+ address nextPool
629
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
630
+
631
+ function executeArbswapStable(
632
+ uint256 index,
633
+ bytes memory data,
634
+ uint256 previousAmountOut,
635
+ address tokenIn,
636
+ bool getPoolOnly,
637
+ address nextPool
638
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
639
+
640
+ function executeBancorV2(
641
+ uint256 index,
642
+ bytes memory data,
643
+ uint256 previousAmountOut,
644
+ address tokenIn,
645
+ bool getPoolOnly,
646
+ address nextPool
647
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
648
+
649
+ function executeBancorV3(
650
+ uint256 index,
651
+ bytes memory data,
652
+ uint256 previousAmountOut,
653
+ address tokenIn,
654
+ bool getPoolOnly,
655
+ address nextPool
656
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
657
+
658
+ function executeAmbient(
659
+ uint256 index,
660
+ bytes memory data,
661
+ uint256 previousAmountOut,
662
+ address tokenIn,
663
+ bool getPoolOnly,
664
+ address nextPool
665
+ ) external payable returns (address tokenOut, uint256 tokenAmountOut, address pool);
560
666
  }
@@ -248,6 +248,20 @@ library InputScalingHelper {
248
248
  swap.data = ScalingDataLib.newMantis(swap.data, oldAmount, newAmount); // @dev using Mantis struct because Solidly V2 and Mantis have same fields
249
249
  } else if (functionSelector == IExecutorHelper.executeKokonut.selector) {
250
250
  swap.data = ScalingDataLib.newKokonut(swap.data, oldAmount, newAmount);
251
+ } else if (functionSelector == IExecutorHelper.executeBalancerV1.selector) {
252
+ swap.data = ScalingDataLib.newBalancerV1(swap.data, oldAmount, newAmount);
253
+ } else if (functionSelector == IExecutorHelper.executeSwaapV2.selector) {
254
+ revert("InputScalingHelper: Can not scale SwaapV2 swap");
255
+ } else if (functionSelector == IExecutorHelper.executeNomiswapStable.selector) {
256
+ swap.data = ScalingDataLib.newMantis(swap.data, oldAmount, newAmount); // @dev using Mantis struct because NomiswapV2 and Mantis have same fields
257
+ } else if (functionSelector == IExecutorHelper.executeArbswapStable.selector) {
258
+ swap.data = ScalingDataLib.newArbswapStable(swap.data, oldAmount, newAmount);
259
+ } else if (functionSelector == IExecutorHelper.executeBancorV2.selector) {
260
+ swap.data = ScalingDataLib.newBancorV2(swap.data, oldAmount, newAmount);
261
+ } else if (functionSelector == IExecutorHelper.executeBancorV3.selector) {
262
+ swap.data = ScalingDataLib.newMantis(swap.data, oldAmount, newAmount); // @dev using Mantis struct because Bancor V3 and Mantis have same fields
263
+ } else if (functionSelector == IExecutorHelper.executeAmbient.selector) {
264
+ swap.data = ScalingDataLib.newAmbient(swap.data, oldAmount, newAmount);
251
265
  } else {
252
266
  revert("AggregationExecutor: Dex type not supported");
253
267
  }
@@ -241,4 +241,36 @@ library ScalingDataLib {
241
241
  kokonut.dx = (kokonut.dx * newAmount) / oldAmount;
242
242
  return abi.encode(kokonut);
243
243
  }
244
+
245
+ function newBalancerV1(
246
+ bytes memory data,
247
+ uint256 oldAmount,
248
+ uint256 newAmount
249
+ ) internal pure returns (bytes memory) {
250
+ IExecutorHelper.BalancerV1 memory balancerV1 = abi.decode(data, (IExecutorHelper.BalancerV1));
251
+ balancerV1.amount = (balancerV1.amount * newAmount) / oldAmount;
252
+ return abi.encode(balancerV1);
253
+ }
254
+
255
+ function newArbswapStable(
256
+ bytes memory data,
257
+ uint256 oldAmount,
258
+ uint256 newAmount
259
+ ) internal pure returns (bytes memory) {
260
+ IExecutorHelper.ArbswapStable memory arbswapStable = abi.decode(data, (IExecutorHelper.ArbswapStable));
261
+ arbswapStable.dx = (arbswapStable.dx * newAmount) / oldAmount;
262
+ return abi.encode(arbswapStable);
263
+ }
264
+
265
+ function newBancorV2(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
266
+ IExecutorHelper.BancorV2 memory bancorV2 = abi.decode(data, (IExecutorHelper.BancorV2));
267
+ bancorV2.amount = (bancorV2.amount * newAmount) / oldAmount;
268
+ return abi.encode(bancorV2);
269
+ }
270
+
271
+ function newAmbient(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
272
+ IExecutorHelper.Ambient memory ambient = abi.decode(data, (IExecutorHelper.Ambient));
273
+ ambient.qty = uint128((uint256(ambient.qty) * newAmount) / oldAmount);
274
+ return abi.encode(ambient);
275
+ }
244
276
  }
@@ -55,6 +55,12 @@ library CalldataReader {
55
55
  return (uint32(bytes4(ret)), startByte);
56
56
  }
57
57
 
58
+ function _readUint128(bytes memory data, uint256 startByte) internal pure returns (uint128, uint256) {
59
+ bytes memory ret;
60
+ (ret, startByte) = _calldataVal(data, startByte, 16);
61
+ return (uint128(bytes16(ret)), startByte);
62
+ }
63
+
58
64
  function _readUint160(bytes memory data, uint256 startByte) internal pure returns (uint160, uint256) {
59
65
  bytes memory ret;
60
66
  (ret, startByte) = _calldataVal(data, startByte, 20);
@@ -361,9 +361,8 @@ library DexScaler {
361
361
 
362
362
  (, startByte) = data._readPool(startByte); // pool
363
363
 
364
- (, startByte) = data._readAddress(startByte); // tokenOut
365
-
366
364
  (uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
365
+
367
366
  return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleVelocoreV2");
368
367
  }
369
368
 
@@ -379,4 +378,62 @@ library DexScaler {
379
378
  (uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
380
379
  return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleKokonut");
381
380
  }
381
+
382
+ function scaleBalancerV1(
383
+ bytes memory data,
384
+ uint256 oldAmount,
385
+ uint256 newAmount
386
+ ) internal pure returns (bytes memory) {
387
+ uint256 startByte;
388
+
389
+ (, startByte) = data._readPool(startByte); // pool
390
+
391
+ (uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
392
+
393
+ return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleBalancerV1");
394
+ }
395
+
396
+ function scaleArbswapStable(
397
+ bytes memory data,
398
+ uint256 oldAmount,
399
+ uint256 newAmount
400
+ ) internal pure returns (bytes memory) {
401
+ uint256 startByte;
402
+
403
+ (, startByte) = data._readPool(startByte); // pool
404
+
405
+ (uint256 dx, ) = data._readUint128AsUint256(startByte); // dx
406
+
407
+ return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (dx * newAmount) / oldAmount, "scaleArbswapStable");
408
+ }
409
+
410
+ function scaleBancorV2(
411
+ bytes memory data,
412
+ uint256 oldAmount,
413
+ uint256 newAmount
414
+ ) internal pure returns (bytes memory) {
415
+ uint256 startByte;
416
+
417
+ (, startByte) = data._readPool(startByte); // pool
418
+
419
+ (, startByte) = data._readAddressArray(startByte); // swapPath
420
+
421
+ (uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
422
+
423
+ return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleBancorV2");
424
+ }
425
+
426
+ function scaleAmbient(
427
+ bytes memory data,
428
+ uint256 oldAmount,
429
+ uint256 newAmount
430
+ ) internal pure returns (bytes memory) {
431
+ uint256 startByte;
432
+
433
+ (, startByte) = data._readPool(startByte); // pool
434
+
435
+ (uint128 qty, ) = data._readUint128(startByte); // amount
436
+
437
+ return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (qty * newAmount) / oldAmount, "scaleAmbient");
438
+ }
382
439
  }
@@ -62,7 +62,14 @@ library InputScalingHelperL2 {
62
62
  VelocoreV2,
63
63
  Smardex,
64
64
  SolidlyV2,
65
- Kokonut
65
+ Kokonut,
66
+ BalancerV1,
67
+ SwaapV2,
68
+ NomiswapStable,
69
+ ArbswapStable,
70
+ BancorV2,
71
+ BancorV3,
72
+ Ambient
66
73
  }
67
74
 
68
75
  function _getScaledInputData(bytes calldata inputData, uint256 newAmount) internal pure returns (bytes memory) {
@@ -317,6 +324,20 @@ library InputScalingHelperL2 {
317
324
  swap.data = swap.data.newMantis(oldAmount, newAmount); // @dev use identical calldata structure as Mantis
318
325
  } else if (DexIndex(functionSelectorIndex) == DexIndex.Kokonut) {
319
326
  swap.data = swap.data.newKokonut(oldAmount, newAmount);
327
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.BalancerV1) {
328
+ swap.data = swap.data.newBalancerV1(oldAmount, newAmount);
329
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.SwaapV2) {
330
+ revert("InputScalingHelper: Can not scale SwaapV2 swap");
331
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.NomiswapStable) {
332
+ swap.data = swap.data.newMantis(oldAmount, newAmount); // @dev use identical calldata structure as Mantis
333
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.ArbswapStable) {
334
+ swap.data = swap.data.newArbswapStable(oldAmount, newAmount);
335
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.BancorV2) {
336
+ swap.data = swap.data.newBancorV2(oldAmount, newAmount);
337
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.BancorV3) {
338
+ swap.data = swap.data.newMantis(oldAmount, newAmount); // @dev use identical calldata structure as Mantis
339
+ } else if (DexIndex(functionSelectorIndex) == DexIndex.Ambient) {
340
+ swap.data = swap.data.newAmbient(oldAmount, newAmount);
320
341
  } else {
321
342
  revert("InputScaleHelper: Dex type not supported");
322
343
  }
@@ -170,4 +170,28 @@ library ScalingDataL2Lib {
170
170
  function newKokonut(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
171
171
  return data.scaleKokonut(oldAmount, newAmount);
172
172
  }
173
+
174
+ function newBalancerV1(
175
+ bytes memory data,
176
+ uint256 oldAmount,
177
+ uint256 newAmount
178
+ ) internal pure returns (bytes memory) {
179
+ return data.scaleBalancerV1(oldAmount, newAmount);
180
+ }
181
+
182
+ function newArbswapStable(
183
+ bytes memory data,
184
+ uint256 oldAmount,
185
+ uint256 newAmount
186
+ ) internal pure returns (bytes memory) {
187
+ return data.scaleArbswapStable(oldAmount, newAmount);
188
+ }
189
+
190
+ function newBancorV2(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
191
+ return data.scaleBancorV2(oldAmount, newAmount);
192
+ }
193
+
194
+ function newAmbient(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
195
+ return data.scaleAmbient(oldAmount, newAmount);
196
+ }
173
197
  }
@@ -24,7 +24,7 @@
24
24
  "bulkSellerOffchain": "0x9ACc60F915dFcd190D270fc92567aE71776bd320",
25
25
  "router": "0x00000000005BBB0EF59571E58418F9a4357b68A0",
26
26
  "routerStatic": "0x263833d47eA3fA4a30f269323aba6a107f9eB14C",
27
- "pendleSwap": "0x324D838b26Eb73786bDBBc53bb0682F1EBB50603",
27
+ "pendleSwap": "0x1f5B1f22585f430C3a1a7D16e1E1100945965e35",
28
28
  "routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
29
29
  "ptOracle": "0xbbd487268A295531d299c125F3e5f749884A3e30",
30
30
  "yieldContractFactoryV3": "0xdF3601014686674e53d1Fa52F7602525483F9122",
@@ -21,7 +21,7 @@
21
21
  "marketFactory": "0x17F100fB4bE2707675c6439468d38249DD993d58",
22
22
  "router": "0x00000000005BBB0EF59571E58418F9a4357b68A0",
23
23
  "routerStatic": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0",
24
- "pendleSwap": "0x85D0C209FC632e6908D78BE08646dE3e39A58453",
24
+ "pendleSwap": "0x7076dEE976098B444f68C6382E8f062237879a9F",
25
25
  "routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
26
26
  "ptOracle": "0x0b692f06CA82e3075dC537224450885Fd138e655",
27
27
  "externalRewardDistributor": "0x1fBaCedf510dAA79dfD9B41227A7ba192d5D548D",
@@ -21,7 +21,7 @@
21
21
  "marketFactory": "0xf5a7De2D276dbda3EEf1b62A9E718EFf4d29dDC8",
22
22
  "router": "0x00000000005BBB0EF59571E58418F9a4357b68A0",
23
23
  "routerStatic": "0xAdB09F65bd90d19e3148D9ccb693F3161C6DB3E8",
24
- "pendleSwap": "0x8e09Aa43885d99701AB047dA2aC98aECC13807B0",
24
+ "pendleSwap": "0x1f5B1f22585f430C3a1a7D16e1E1100945965e35",
25
25
  "routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
26
26
  "ptOracle": "0x7e16e4253CE4a1C96422a9567B23b4b5Ebc207F1",
27
27
  "yieldContractFactoryV3": "0xEb38531db128EcA928aea1B1CE9E5609B15ba146",
@@ -21,7 +21,7 @@
21
21
  "marketFactory": "0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E",
22
22
  "router": "0x00000000005BBB0EF59571E58418F9a4357b68A0",
23
23
  "routerStatic": "0x2700ADB035F82a11899ce1D3f1BF8451c296eABb",
24
- "pendleSwap": "0xD85d2F484DF4329746325e7398f3fC3E1915a173",
24
+ "pendleSwap": "0x8536b3519eaE59741B340bccE6c522c545606C59",
25
25
  "routerHelper": "0x09D65812dCD0f276e052583d41885cA5C7Dd0086",
26
26
  "ptOracle": "0x70ee0A6DB4F5a2Dc4d9c0b57bE97B9987e75BAFD",
27
27
  "yieldContractFactoryV3": "0x40Ae6da2d92aa3DCb7f8d7a7209FD12BDfcb7C85",
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": "4.0.5",
5
+ "version": "4.0.6",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",