@pendle/core-v2 4.5.1-beta-3 → 4.5.1-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 (35) hide show
  1. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  2. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.json +44 -34
  3. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  4. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +44 -34
  5. package/build/artifacts/contracts/interfaces/IPReflector.sol/IPReflector.dbg.json +4 -0
  6. package/build/artifacts/contracts/interfaces/IPReflector.sol/IPReflector.json +30 -0
  7. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  8. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
  9. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
  10. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +46 -36
  11. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  12. package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -7
  13. package/contracts/interfaces/IPActionMiscV3.sol +4 -3
  14. package/contracts/interfaces/IPReflector.sol +6 -0
  15. package/contracts/router/ActionMiscV3.sol +14 -27
  16. package/contracts/router/Reflector.sol +21 -13
  17. package/deployments/1-core.json +2 -1
  18. package/deployments/10-core.json +2 -1
  19. package/deployments/42161-core.json +2 -1
  20. package/deployments/5000-core.json +2 -1
  21. package/deployments/56-core.json +2 -1
  22. package/package.json +2 -2
  23. package/typechain-types/ActionMiscV3.ts +55 -44
  24. package/typechain-types/IPActionMiscV3.ts +55 -44
  25. package/typechain-types/IPAllActionV3.ts +55 -44
  26. package/typechain-types/IPReflector.ts +95 -0
  27. package/typechain-types/Reflector.ts +1 -4
  28. package/typechain-types/factories/ActionMiscV3__factory.ts +45 -35
  29. package/typechain-types/factories/IPActionMiscV3__factory.ts +44 -34
  30. package/typechain-types/factories/IPAllActionV3__factory.ts +44 -34
  31. package/typechain-types/factories/IPReflector__factory.ts +42 -0
  32. package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
  33. package/typechain-types/factories/Reflector__factory.ts +1 -6
  34. package/typechain-types/hardhat.d.ts +9 -18
  35. package/typechain-types/index.ts +2 -4
@@ -3,7 +3,7 @@ pragma solidity ^0.8.17;
3
3
 
4
4
  import "./base/ActionBase.sol";
5
5
  import "../interfaces/IPActionMiscV3.sol";
6
- import "./Reflector.sol";
6
+ import "../interfaces/IPReflector.sol";
7
7
 
8
8
  contract ActionMiscV3 is IPActionMiscV3, ActionBase {
9
9
  function mintSyFromToken(
@@ -117,8 +117,6 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
117
117
  netTokenOut = IStandardizedYield(SY).redeem(receiver, netSyInterm, tokenRedeemSy, minTokenOut, true);
118
118
  }
119
119
 
120
- // double check event orders
121
-
122
120
  function exitPreExpToToken(
123
121
  address receiver,
124
122
  address market,
@@ -251,17 +249,6 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
251
249
  p.totalSyOut = p.netSyFromRemove + p.netSyFromRedeem;
252
250
  }
253
251
 
254
- function multicallAlpha(
255
- address payable reflector,
256
- bytes calldata selfCall,
257
- bytes calldata reflectCall
258
- ) external payable returns (bytes memory selfRes, bytes memory reflectRes) {
259
- (, selfRes) = _delegateToSelf(selfCall, false);
260
- reflectRes = _callToReflector(reflector, reflectCall);
261
-
262
- // ? We don't need to check balance here, can trust SDK?
263
- }
264
-
265
252
  // ----------------- MISC FUNCTIONS -----------------
266
253
 
267
254
  function boostMarkets(address[] memory markets) external {
@@ -279,6 +266,17 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
279
266
  }
280
267
  }
281
268
 
269
+ function callAndReflect(
270
+ address payable reflector,
271
+ bytes calldata selfCall1,
272
+ bytes calldata selfCall2,
273
+ bytes calldata reflectCall
274
+ ) external payable returns (bytes memory selfRes1, bytes memory selfRes2, bytes memory reflectRes) {
275
+ (, selfRes1) = _delegateToSelf(selfCall1, false);
276
+ if (selfCall2.length > 0) (, selfRes2) = _delegateToSelf(selfCall2, false);
277
+ reflectRes = _callToReflector(reflector, reflectCall);
278
+ }
279
+
282
280
  function simulate(address target, bytes calldata data) external payable {
283
281
  (bool success, bytes memory result) = target.delegatecall(data);
284
282
  revert Errors.SimulationResults(success, result);
@@ -298,18 +296,7 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
298
296
  }
299
297
  }
300
298
 
301
- function _callToReflector(address payable reflector, bytes memory data) internal returns (bytes memory result) {
302
- // TODO: should we allow arbitrary passing?
303
- // TODO: is the payable necessary?
304
-
305
- bool success;
306
- (success, result) = Reflector(reflector).reflect(data);
307
-
308
- if (!success) {
309
- assembly {
310
- // We use Yul's revert() to bubble up errors from the target contract.
311
- revert(add(32, result), mload(result))
312
- }
313
- }
299
+ function _callToReflector(address payable reflector, bytes memory data) internal returns (bytes memory) {
300
+ return IPReflector(reflector).reflect(data);
314
301
  }
315
302
  }
@@ -2,25 +2,33 @@
2
2
  pragma solidity ^0.8.17;
3
3
 
4
4
  import "../interfaces/IPAllActionV3.sol";
5
+ import "../interfaces/IPReflector.sol";
5
6
  import "../core/libraries/TokenHelper.sol";
6
7
 
7
- contract Reflector is TokenHelper {
8
+ contract Reflector is TokenHelper, IPReflector {
8
9
  using SafeERC20 for IERC20;
9
10
 
10
11
  mapping(address => bool) internal approved;
11
12
 
12
13
  receive() external payable {}
13
14
 
14
- function reflect(bytes calldata inputData) external returns (bool success, bytes memory result) {
15
- (uint256 value, bytes memory newCalldata) = _process1(inputData);
15
+ function reflect(bytes calldata inputData) external returns (bytes memory result) {
16
+ (uint256 value, bytes memory newCalldata) = _getNewCalldata(inputData);
17
+ bool success;
18
+
16
19
  (success, result) = msg.sender.call{value: value}(newCalldata);
20
+ if (!success) {
21
+ assembly {
22
+ // We use Yul's revert() to bubble up errors from the target contract.
23
+ revert(add(32, result), mload(result))
24
+ }
25
+ }
17
26
  }
18
27
 
19
- function _process1(bytes calldata inputData) internal returns (uint256 value, bytes memory newCalldata) {
28
+ function _getNewCalldata(bytes calldata inputData) internal returns (uint256 value, bytes memory newCalldata) {
20
29
  bytes4 selector = bytes4(inputData[:4]);
21
30
  bytes calldata data = inputData[4:];
22
31
 
23
- // TODO: can we do nicer here?
24
32
  if (selector == IPActionAddRemoveLiqV3.addLiquiditySingleToken.selector) {
25
33
  (
26
34
  address v1,
@@ -31,30 +39,30 @@ contract Reflector is TokenHelper {
31
39
  LimitOrderData memory v6
32
40
  ) = abi.decode(data, (address, address, uint256, ApproxParams, TokenInput, LimitOrderData));
33
41
 
34
- value = _process2(v5);
42
+ value = _scaleTokenInputAndGetValue(v5);
35
43
  newCalldata = abi.encodeWithSelector(selector, v1, v2, v3, v4, v5, v6);
36
- _safeApproveInf(v5.tokenIn, msg.sender);
37
44
  } else if (selector == IPActionAddRemoveLiqV3.addLiquiditySingleTokenKeepYt.selector) {
38
45
  (address v1, address v2, uint256 v3, uint256 v4, TokenInput memory v5) = abi.decode(
39
46
  data,
40
47
  (address, address, uint256, uint256, TokenInput)
41
48
  );
42
49
 
43
- value = _process2(v5);
50
+ value = _scaleTokenInputAndGetValue(v5);
44
51
  newCalldata = abi.encodeWithSelector(selector, v1, v2, v3, v4, v5);
45
52
  } else {
46
53
  revert("UNSUPPORTED_SELECTOR");
47
54
  }
48
55
  }
49
56
 
50
- function _process2(TokenInput memory inp) internal returns (uint256 ethValue) {
51
- assert(inp.swapData.swapType == SwapType.NONE);
57
+ function _scaleTokenInputAndGetValue(TokenInput memory inp) internal returns (uint256 ethValue) {
58
+ require(inp.swapData.swapType == SwapType.NONE, "SWAP_NOT_ALLOWED"); // the exit call should already swap
52
59
 
53
60
  inp.netTokenIn = _selfBalance(inp.tokenIn);
54
- ethValue = inp.tokenIn == NATIVE ? inp.netTokenIn : 0;
55
61
 
56
- if (inp.tokenIn != NATIVE && !approved[inp.tokenIn]) {
57
- IERC20(inp.tokenIn).safeApprove(msg.sender, type(uint256).max);
62
+ if (inp.tokenIn == NATIVE) {
63
+ ethValue = inp.netTokenIn;
64
+ } else if (!approved[inp.tokenIn]) {
65
+ IERC20(inp.tokenIn).forceApprove(msg.sender, type(uint256).max);
58
66
  approved[inp.tokenIn] = true;
59
67
  }
60
68
  }
@@ -35,5 +35,6 @@
35
35
  "votingController": "0x44087E105137a5095c008AaB6a6530182821F2F0",
36
36
  "gaugeController": "0x47D74516B33eD5D70ddE7119A40839f6Fcc24e57",
37
37
  "feeDistributor": "0xd7b34a6fDCb2A7ceD2115FF7f5fdD72aa6aA4dE2",
38
- "feeDistributorV2": "0x8C237520a8E14D658170A633D96F8e80764433b9"
38
+ "feeDistributorV2": "0x8C237520a8E14D658170A633D96F8e80764433b9",
39
+ "reflector": "0x0AAa61F1024543e8E764Db981A9F27C12c9Ab8A4"
39
40
  }
@@ -31,5 +31,6 @@
31
31
  "proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
32
32
  "receiverEndpoint": "0xED18de5442297a4Ec1ce59C7c7d9427Adc2A012b",
33
33
  "vePendle": "0xd5C47D2383Fddc19596489280C0A33AC42b2bB18",
34
- "gaugeController": "0x6875e4A945E498FE1B90BbB13CFbAF0b68658C9C"
34
+ "gaugeController": "0x6875e4A945E498FE1B90BbB13CFbAF0b68658C9C",
35
+ "reflector": "0x0AAa61F1024543e8E764Db981A9F27C12c9Ab8A4"
35
36
  }
@@ -33,5 +33,6 @@
33
33
  "vePendle": "0x3209E9412cca80B18338f2a56ADA59c484c39644",
34
34
  "gaugeController": "0x1e56299ebc8a1010cec26005d12e3e5c5cc2db00",
35
35
  "arbMerkleDistribution": "0x23a102e78D1FF1645a3666691495174764a5FCAF",
36
- "linearDistributor": "0x83d85AEDD308261d847C3eb8d7146457bD8F38E8"
36
+ "linearDistributor": "0x83d85AEDD308261d847C3eb8d7146457bD8F38E8",
37
+ "reflector": "0x0AAa61F1024543e8E764Db981A9F27C12c9Ab8A4"
37
38
  }
@@ -27,5 +27,6 @@
27
27
  "proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
28
28
  "receiverEndpoint": "0xf799E4c029d14f41Dc1918C9A4C67242F565710e",
29
29
  "vePendle": "0x30c6d4e892871220B5Ab66c10db577da96Fb974b",
30
- "gaugeController": "0x428f2f93afAc3F96B0DE59854038c585e06165C8"
30
+ "gaugeController": "0x428f2f93afAc3F96B0DE59854038c585e06165C8",
31
+ "reflector": "0x0AAa61F1024543e8E764Db981A9F27C12c9Ab8A4"
31
32
  }
@@ -31,5 +31,6 @@
31
31
  "proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
32
32
  "receiverEndpoint": "0x998CF52b2585e05494BF9F2bF502351a9C7FdA8f",
33
33
  "vePendle": "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B",
34
- "gaugeController": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0"
34
+ "gaugeController": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0",
35
+ "reflector": "0x0AAa61F1024543e8E764Db981A9F27C12c9Ab8A4"
35
36
  }
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.5.1-beta-3",
5
+ "version": "4.5.1-beta-5",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",
@@ -49,4 +49,4 @@
49
49
  "@openzeppelin/contracts": "4.9.3",
50
50
  "@openzeppelin/contracts-upgradeable": "4.9.3"
51
51
  }
52
- }
52
+ }
@@ -234,6 +234,7 @@ export interface ActionMiscV3Interface extends utils.Interface {
234
234
  contractName: "ActionMiscV3";
235
235
  functions: {
236
236
  "boostMarkets(address[])": FunctionFragment;
237
+ "callAndReflect(address,bytes,bytes,bytes)": FunctionFragment;
237
238
  "exitPostExpToSy(address,address,uint256,uint256,uint256)": FunctionFragment;
238
239
  "exitPostExpToToken(address,address,uint256,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
239
240
  "exitPreExpToSy(address,address,uint256,uint256,uint256,uint256,(address,uint256,((uint256,uint256,uint256,uint8,address,address,address,address,uint256,uint256,uint256,bytes),bytes,uint256)[],((uint256,uint256,uint256,uint8,address,address,address,address,uint256,uint256,uint256,bytes),bytes,uint256)[],bytes))": FunctionFragment;
@@ -242,7 +243,6 @@ export interface ActionMiscV3Interface extends utils.Interface {
242
243
  "mintPyFromToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
243
244
  "mintSyFromToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
244
245
  "multicall((bool,bytes)[])": FunctionFragment;
245
- "multicallAlpha(address,bytes,bytes)": FunctionFragment;
246
246
  "redeemDueInterestAndRewards(address,address[],address[],address[])": FunctionFragment;
247
247
  "redeemPyToSy(address,address,uint256,uint256)": FunctionFragment;
248
248
  "redeemPyToToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
@@ -256,6 +256,10 @@ export interface ActionMiscV3Interface extends utils.Interface {
256
256
  functionFragment: "boostMarkets",
257
257
  values: [string[]]
258
258
  ): string;
259
+ encodeFunctionData(
260
+ functionFragment: "callAndReflect",
261
+ values: [string, BytesLike, BytesLike, BytesLike]
262
+ ): string;
259
263
  encodeFunctionData(
260
264
  functionFragment: "exitPostExpToSy",
261
265
  values: [string, string, BigNumberish, BigNumberish, BigNumberish]
@@ -304,10 +308,6 @@ export interface ActionMiscV3Interface extends utils.Interface {
304
308
  functionFragment: "multicall",
305
309
  values: [IPActionMiscV3.Call3Struct[]]
306
310
  ): string;
307
- encodeFunctionData(
308
- functionFragment: "multicallAlpha",
309
- values: [string, BytesLike, BytesLike]
310
- ): string;
311
311
  encodeFunctionData(
312
312
  functionFragment: "redeemDueInterestAndRewards",
313
313
  values: [string, string[], string[], string[]]
@@ -341,6 +341,10 @@ export interface ActionMiscV3Interface extends utils.Interface {
341
341
  functionFragment: "boostMarkets",
342
342
  data: BytesLike
343
343
  ): Result;
344
+ decodeFunctionResult(
345
+ functionFragment: "callAndReflect",
346
+ data: BytesLike
347
+ ): Result;
344
348
  decodeFunctionResult(
345
349
  functionFragment: "exitPostExpToSy",
346
350
  data: BytesLike
@@ -370,10 +374,6 @@ export interface ActionMiscV3Interface extends utils.Interface {
370
374
  data: BytesLike
371
375
  ): Result;
372
376
  decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
373
- decodeFunctionResult(
374
- functionFragment: "multicallAlpha",
375
- data: BytesLike
376
- ): Result;
377
377
  decodeFunctionResult(
378
378
  functionFragment: "redeemDueInterestAndRewards",
379
379
  data: BytesLike
@@ -628,6 +628,14 @@ export interface ActionMiscV3 extends BaseContract {
628
628
  overrides?: Overrides & { from?: string | Promise<string> }
629
629
  ): Promise<ContractTransaction>;
630
630
 
631
+ callAndReflect(
632
+ reflector: string,
633
+ selfCall1: BytesLike,
634
+ selfCall2: BytesLike,
635
+ reflectCall: BytesLike,
636
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
637
+ ): Promise<ContractTransaction>;
638
+
631
639
  exitPostExpToSy(
632
640
  receiver: string,
633
641
  market: string,
@@ -697,13 +705,6 @@ export interface ActionMiscV3 extends BaseContract {
697
705
  overrides?: PayableOverrides & { from?: string | Promise<string> }
698
706
  ): Promise<ContractTransaction>;
699
707
 
700
- multicallAlpha(
701
- reflector: string,
702
- selfCall: BytesLike,
703
- reflectCall: BytesLike,
704
- overrides?: PayableOverrides & { from?: string | Promise<string> }
705
- ): Promise<ContractTransaction>;
706
-
707
708
  redeemDueInterestAndRewards(
708
709
  user: string,
709
710
  sys: string[],
@@ -764,6 +765,14 @@ export interface ActionMiscV3 extends BaseContract {
764
765
  overrides?: Overrides & { from?: string | Promise<string> }
765
766
  ): Promise<ContractTransaction>;
766
767
 
768
+ callAndReflect(
769
+ reflector: string,
770
+ selfCall1: BytesLike,
771
+ selfCall2: BytesLike,
772
+ reflectCall: BytesLike,
773
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
774
+ ): Promise<ContractTransaction>;
775
+
767
776
  exitPostExpToSy(
768
777
  receiver: string,
769
778
  market: string,
@@ -833,13 +842,6 @@ export interface ActionMiscV3 extends BaseContract {
833
842
  overrides?: PayableOverrides & { from?: string | Promise<string> }
834
843
  ): Promise<ContractTransaction>;
835
844
 
836
- multicallAlpha(
837
- reflector: string,
838
- selfCall: BytesLike,
839
- reflectCall: BytesLike,
840
- overrides?: PayableOverrides & { from?: string | Promise<string> }
841
- ): Promise<ContractTransaction>;
842
-
843
845
  redeemDueInterestAndRewards(
844
846
  user: string,
845
847
  sys: string[],
@@ -897,6 +899,20 @@ export interface ActionMiscV3 extends BaseContract {
897
899
  callStatic: {
898
900
  boostMarkets(markets: string[], overrides?: CallOverrides): Promise<void>;
899
901
 
902
+ callAndReflect(
903
+ reflector: string,
904
+ selfCall1: BytesLike,
905
+ selfCall2: BytesLike,
906
+ reflectCall: BytesLike,
907
+ overrides?: CallOverrides
908
+ ): Promise<
909
+ [string, string, string] & {
910
+ selfRes1: string;
911
+ selfRes2: string;
912
+ reflectRes: string;
913
+ }
914
+ >;
915
+
900
916
  exitPostExpToSy(
901
917
  receiver: string,
902
918
  market: string,
@@ -978,13 +994,6 @@ export interface ActionMiscV3 extends BaseContract {
978
994
  overrides?: CallOverrides
979
995
  ): Promise<IPActionMiscV3.ResultStructOutput[]>;
980
996
 
981
- multicallAlpha(
982
- reflector: string,
983
- selfCall: BytesLike,
984
- reflectCall: BytesLike,
985
- overrides?: CallOverrides
986
- ): Promise<[string, string] & { selfRes: string; reflectRes: string }>;
987
-
988
997
  redeemDueInterestAndRewards(
989
998
  user: string,
990
999
  sys: string[],
@@ -1228,6 +1237,14 @@ export interface ActionMiscV3 extends BaseContract {
1228
1237
  overrides?: Overrides & { from?: string | Promise<string> }
1229
1238
  ): Promise<BigNumber>;
1230
1239
 
1240
+ callAndReflect(
1241
+ reflector: string,
1242
+ selfCall1: BytesLike,
1243
+ selfCall2: BytesLike,
1244
+ reflectCall: BytesLike,
1245
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
1246
+ ): Promise<BigNumber>;
1247
+
1231
1248
  exitPostExpToSy(
1232
1249
  receiver: string,
1233
1250
  market: string,
@@ -1297,13 +1314,6 @@ export interface ActionMiscV3 extends BaseContract {
1297
1314
  overrides?: PayableOverrides & { from?: string | Promise<string> }
1298
1315
  ): Promise<BigNumber>;
1299
1316
 
1300
- multicallAlpha(
1301
- reflector: string,
1302
- selfCall: BytesLike,
1303
- reflectCall: BytesLike,
1304
- overrides?: PayableOverrides & { from?: string | Promise<string> }
1305
- ): Promise<BigNumber>;
1306
-
1307
1317
  redeemDueInterestAndRewards(
1308
1318
  user: string,
1309
1319
  sys: string[],
@@ -1365,6 +1375,14 @@ export interface ActionMiscV3 extends BaseContract {
1365
1375
  overrides?: Overrides & { from?: string | Promise<string> }
1366
1376
  ): Promise<PopulatedTransaction>;
1367
1377
 
1378
+ callAndReflect(
1379
+ reflector: string,
1380
+ selfCall1: BytesLike,
1381
+ selfCall2: BytesLike,
1382
+ reflectCall: BytesLike,
1383
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
1384
+ ): Promise<PopulatedTransaction>;
1385
+
1368
1386
  exitPostExpToSy(
1369
1387
  receiver: string,
1370
1388
  market: string,
@@ -1434,13 +1452,6 @@ export interface ActionMiscV3 extends BaseContract {
1434
1452
  overrides?: PayableOverrides & { from?: string | Promise<string> }
1435
1453
  ): Promise<PopulatedTransaction>;
1436
1454
 
1437
- multicallAlpha(
1438
- reflector: string,
1439
- selfCall: BytesLike,
1440
- reflectCall: BytesLike,
1441
- overrides?: PayableOverrides & { from?: string | Promise<string> }
1442
- ): Promise<PopulatedTransaction>;
1443
-
1444
1455
  redeemDueInterestAndRewards(
1445
1456
  user: string,
1446
1457
  sys: string[],
@@ -234,6 +234,7 @@ export interface IPActionMiscV3Interface extends utils.Interface {
234
234
  contractName: "IPActionMiscV3";
235
235
  functions: {
236
236
  "boostMarkets(address[])": FunctionFragment;
237
+ "callAndReflect(address,bytes,bytes,bytes)": FunctionFragment;
237
238
  "exitPostExpToSy(address,address,uint256,uint256,uint256)": FunctionFragment;
238
239
  "exitPostExpToToken(address,address,uint256,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
239
240
  "exitPreExpToSy(address,address,uint256,uint256,uint256,uint256,(address,uint256,((uint256,uint256,uint256,uint8,address,address,address,address,uint256,uint256,uint256,bytes),bytes,uint256)[],((uint256,uint256,uint256,uint8,address,address,address,address,uint256,uint256,uint256,bytes),bytes,uint256)[],bytes))": FunctionFragment;
@@ -242,7 +243,6 @@ export interface IPActionMiscV3Interface extends utils.Interface {
242
243
  "mintPyFromToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
243
244
  "mintSyFromToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
244
245
  "multicall((bool,bytes)[])": FunctionFragment;
245
- "multicallAlpha(address,bytes,bytes)": FunctionFragment;
246
246
  "redeemDueInterestAndRewards(address,address[],address[],address[])": FunctionFragment;
247
247
  "redeemPyToSy(address,address,uint256,uint256)": FunctionFragment;
248
248
  "redeemPyToToken(address,address,uint256,(address,uint256,address,address,(uint8,address,bytes,bool)))": FunctionFragment;
@@ -256,6 +256,10 @@ export interface IPActionMiscV3Interface extends utils.Interface {
256
256
  functionFragment: "boostMarkets",
257
257
  values: [string[]]
258
258
  ): string;
259
+ encodeFunctionData(
260
+ functionFragment: "callAndReflect",
261
+ values: [string, BytesLike, BytesLike, BytesLike]
262
+ ): string;
259
263
  encodeFunctionData(
260
264
  functionFragment: "exitPostExpToSy",
261
265
  values: [string, string, BigNumberish, BigNumberish, BigNumberish]
@@ -304,10 +308,6 @@ export interface IPActionMiscV3Interface extends utils.Interface {
304
308
  functionFragment: "multicall",
305
309
  values: [IPActionMiscV3.Call3Struct[]]
306
310
  ): string;
307
- encodeFunctionData(
308
- functionFragment: "multicallAlpha",
309
- values: [string, BytesLike, BytesLike]
310
- ): string;
311
311
  encodeFunctionData(
312
312
  functionFragment: "redeemDueInterestAndRewards",
313
313
  values: [string, string[], string[], string[]]
@@ -341,6 +341,10 @@ export interface IPActionMiscV3Interface extends utils.Interface {
341
341
  functionFragment: "boostMarkets",
342
342
  data: BytesLike
343
343
  ): Result;
344
+ decodeFunctionResult(
345
+ functionFragment: "callAndReflect",
346
+ data: BytesLike
347
+ ): Result;
344
348
  decodeFunctionResult(
345
349
  functionFragment: "exitPostExpToSy",
346
350
  data: BytesLike
@@ -370,10 +374,6 @@ export interface IPActionMiscV3Interface extends utils.Interface {
370
374
  data: BytesLike
371
375
  ): Result;
372
376
  decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
373
- decodeFunctionResult(
374
- functionFragment: "multicallAlpha",
375
- data: BytesLike
376
- ): Result;
377
377
  decodeFunctionResult(
378
378
  functionFragment: "redeemDueInterestAndRewards",
379
379
  data: BytesLike
@@ -628,6 +628,14 @@ export interface IPActionMiscV3 extends BaseContract {
628
628
  overrides?: Overrides & { from?: string | Promise<string> }
629
629
  ): Promise<ContractTransaction>;
630
630
 
631
+ callAndReflect(
632
+ reflector: string,
633
+ selfCall1: BytesLike,
634
+ selfCall2: BytesLike,
635
+ reflectCall: BytesLike,
636
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
637
+ ): Promise<ContractTransaction>;
638
+
631
639
  exitPostExpToSy(
632
640
  receiver: string,
633
641
  market: string,
@@ -697,13 +705,6 @@ export interface IPActionMiscV3 extends BaseContract {
697
705
  overrides?: PayableOverrides & { from?: string | Promise<string> }
698
706
  ): Promise<ContractTransaction>;
699
707
 
700
- multicallAlpha(
701
- reflector: string,
702
- selfCall: BytesLike,
703
- reflectCall: BytesLike,
704
- overrides?: PayableOverrides & { from?: string | Promise<string> }
705
- ): Promise<ContractTransaction>;
706
-
707
708
  redeemDueInterestAndRewards(
708
709
  user: string,
709
710
  sys: string[],
@@ -764,6 +765,14 @@ export interface IPActionMiscV3 extends BaseContract {
764
765
  overrides?: Overrides & { from?: string | Promise<string> }
765
766
  ): Promise<ContractTransaction>;
766
767
 
768
+ callAndReflect(
769
+ reflector: string,
770
+ selfCall1: BytesLike,
771
+ selfCall2: BytesLike,
772
+ reflectCall: BytesLike,
773
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
774
+ ): Promise<ContractTransaction>;
775
+
767
776
  exitPostExpToSy(
768
777
  receiver: string,
769
778
  market: string,
@@ -833,13 +842,6 @@ export interface IPActionMiscV3 extends BaseContract {
833
842
  overrides?: PayableOverrides & { from?: string | Promise<string> }
834
843
  ): Promise<ContractTransaction>;
835
844
 
836
- multicallAlpha(
837
- reflector: string,
838
- selfCall: BytesLike,
839
- reflectCall: BytesLike,
840
- overrides?: PayableOverrides & { from?: string | Promise<string> }
841
- ): Promise<ContractTransaction>;
842
-
843
845
  redeemDueInterestAndRewards(
844
846
  user: string,
845
847
  sys: string[],
@@ -897,6 +899,20 @@ export interface IPActionMiscV3 extends BaseContract {
897
899
  callStatic: {
898
900
  boostMarkets(markets: string[], overrides?: CallOverrides): Promise<void>;
899
901
 
902
+ callAndReflect(
903
+ reflector: string,
904
+ selfCall1: BytesLike,
905
+ selfCall2: BytesLike,
906
+ reflectCall: BytesLike,
907
+ overrides?: CallOverrides
908
+ ): Promise<
909
+ [string, string, string] & {
910
+ selfRes1: string;
911
+ selfRes2: string;
912
+ reflectRes: string;
913
+ }
914
+ >;
915
+
900
916
  exitPostExpToSy(
901
917
  receiver: string,
902
918
  market: string,
@@ -978,13 +994,6 @@ export interface IPActionMiscV3 extends BaseContract {
978
994
  overrides?: CallOverrides
979
995
  ): Promise<IPActionMiscV3.ResultStructOutput[]>;
980
996
 
981
- multicallAlpha(
982
- reflector: string,
983
- selfCall: BytesLike,
984
- reflectCall: BytesLike,
985
- overrides?: CallOverrides
986
- ): Promise<[string, string] & { selfRes: string; reflectRes: string }>;
987
-
988
997
  redeemDueInterestAndRewards(
989
998
  user: string,
990
999
  sys: string[],
@@ -1228,6 +1237,14 @@ export interface IPActionMiscV3 extends BaseContract {
1228
1237
  overrides?: Overrides & { from?: string | Promise<string> }
1229
1238
  ): Promise<BigNumber>;
1230
1239
 
1240
+ callAndReflect(
1241
+ reflector: string,
1242
+ selfCall1: BytesLike,
1243
+ selfCall2: BytesLike,
1244
+ reflectCall: BytesLike,
1245
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
1246
+ ): Promise<BigNumber>;
1247
+
1231
1248
  exitPostExpToSy(
1232
1249
  receiver: string,
1233
1250
  market: string,
@@ -1297,13 +1314,6 @@ export interface IPActionMiscV3 extends BaseContract {
1297
1314
  overrides?: PayableOverrides & { from?: string | Promise<string> }
1298
1315
  ): Promise<BigNumber>;
1299
1316
 
1300
- multicallAlpha(
1301
- reflector: string,
1302
- selfCall: BytesLike,
1303
- reflectCall: BytesLike,
1304
- overrides?: PayableOverrides & { from?: string | Promise<string> }
1305
- ): Promise<BigNumber>;
1306
-
1307
1317
  redeemDueInterestAndRewards(
1308
1318
  user: string,
1309
1319
  sys: string[],
@@ -1365,6 +1375,14 @@ export interface IPActionMiscV3 extends BaseContract {
1365
1375
  overrides?: Overrides & { from?: string | Promise<string> }
1366
1376
  ): Promise<PopulatedTransaction>;
1367
1377
 
1378
+ callAndReflect(
1379
+ reflector: string,
1380
+ selfCall1: BytesLike,
1381
+ selfCall2: BytesLike,
1382
+ reflectCall: BytesLike,
1383
+ overrides?: PayableOverrides & { from?: string | Promise<string> }
1384
+ ): Promise<PopulatedTransaction>;
1385
+
1368
1386
  exitPostExpToSy(
1369
1387
  receiver: string,
1370
1388
  market: string,
@@ -1434,13 +1452,6 @@ export interface IPActionMiscV3 extends BaseContract {
1434
1452
  overrides?: PayableOverrides & { from?: string | Promise<string> }
1435
1453
  ): Promise<PopulatedTransaction>;
1436
1454
 
1437
- multicallAlpha(
1438
- reflector: string,
1439
- selfCall: BytesLike,
1440
- reflectCall: BytesLike,
1441
- overrides?: PayableOverrides & { from?: string | Promise<string> }
1442
- ): Promise<PopulatedTransaction>;
1443
-
1444
1455
  redeemDueInterestAndRewards(
1445
1456
  user: string,
1446
1457
  sys: string[],