@gearbox-protocol/sdk 3.0.0-next.55 → 3.0.0-next.56

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 (158) hide show
  1. package/contracts/index.sol +5 -0
  2. package/lib/core/creditAccount.d.ts +1 -2
  3. package/lib/core/creditAccount.js +0 -7
  4. package/lib/core/creditManager.js +1 -1
  5. package/lib/core/trade.d.ts +9 -8
  6. package/lib/core/trade.js +25 -22
  7. package/lib/parsers/convexBaseRewardPoolAdapterParser.js +10 -8
  8. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +9 -6
  9. package/lib/parsers/convexBoosterAdapterParser.js +6 -6
  10. package/lib/parsers/convexBoosterAdapterParser.spec.js +4 -4
  11. package/lib/parsers/curveAdapterParser.js +10 -10
  12. package/lib/parsers/curveAdapterParser.spec.js +6 -2
  13. package/lib/parsers/lidoAdapterParser.js +3 -2
  14. package/lib/parsers/lidoAdapterParser.spec.js +2 -2
  15. package/lib/parsers/uniV2AdapterParser.js +4 -3
  16. package/lib/parsers/uniV2AdapterParser.spec.js +3 -2
  17. package/lib/parsers/uniV3AdapterParser.js +8 -6
  18. package/lib/parsers/uniV3AdapterParser.spec.js +3 -2
  19. package/lib/parsers/wstETHAdapterParser.js +6 -4
  20. package/lib/parsers/wstETHAdapterParser.spec.js +4 -4
  21. package/lib/parsers/yearnAdapterParser.spec.js +4 -4
  22. package/lib/parsers/yearnV2AdapterParser.js +13 -3
  23. package/lib/pathfinder/core.d.ts +8 -9
  24. package/lib/pathfinder/pathfinder.d.ts +37 -10
  25. package/lib/pathfinder/pathfinder.js +45 -33
  26. package/lib/pathfinder/pathfinder.spec.js +4 -2
  27. package/lib/payload/creditAccount.d.ts +1 -2
  28. package/lib/types/IAaveV2_LendingPoolAdapter.d.ts +171 -0
  29. package/lib/types/IAaveV2_WrappedATokenAdapter.d.ts +290 -0
  30. package/lib/types/IBalancerV2Vault.sol/IBalancerV2Vault.d.ts +308 -0
  31. package/lib/types/IBalancerV2Vault.sol/IBalancerV2VaultGetters.d.ts +112 -0
  32. package/lib/types/IBalancerV2Vault.sol/index.d.ts +2 -0
  33. package/lib/types/IBalancerV2Vault.sol/index.js +2 -0
  34. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.d.ts +466 -0
  35. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.js +2 -0
  36. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.d.ts +43 -0
  37. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.js +2 -0
  38. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.d.ts +27 -0
  39. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.js +2 -0
  40. package/lib/types/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  41. package/lib/types/IBalancerV2VaultAdapter.sol/index.js +2 -0
  42. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.d.ts +216 -0
  43. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.js +2 -0
  44. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.d.ts +27 -0
  45. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.js +2 -0
  46. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  47. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.js +2 -0
  48. package/lib/types/IConvexV1BaseRewardPoolAdapter.d.ts +30 -30
  49. package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.d.ts +21 -17
  50. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3.d.ts +45 -85
  51. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3Events.d.ts +24 -26
  52. package/lib/types/ICreditFacadeV3Multicall.d.ts +32 -40
  53. package/lib/types/ICreditManagerV3.sol/ICreditManagerV3.d.ts +99 -71
  54. package/lib/types/ICurveV1Adapter.d.ts +41 -105
  55. package/lib/types/ICurveV1_2AssetsAdapter.d.ts +41 -105
  56. package/lib/types/ICurveV1_3AssetsAdapter.d.ts +41 -105
  57. package/lib/types/ICurveV1_4AssetsAdapter.d.ts +41 -105
  58. package/lib/types/IDataCompressorV2_10.d.ts +1 -27
  59. package/lib/types/IDataCompressorV3_00.d.ts +1 -27
  60. package/lib/types/IERC4626Adapter.d.ts +238 -0
  61. package/lib/types/IERC4626Adapter.js +2 -0
  62. package/lib/types/ILidoV1Adapter.d.ts +9 -9
  63. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.d.ts +39 -14
  64. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.d.ts +5 -3
  65. package/lib/types/IUniswapV2Adapter.sol/IUniswapV2Adapter.d.ts +10 -9
  66. package/lib/types/IUniswapV3Adapter.sol/IUniswapV3Adapter.d.ts +27 -21
  67. package/lib/types/IYearnV2Adapter.d.ts +22 -22
  68. package/lib/types/IwstETHV1Adapter.d.ts +17 -17
  69. package/lib/types/factories/IAaveV2_LendingPoolAdapter__factory.d.ts +158 -0
  70. package/lib/types/factories/IAaveV2_LendingPoolAdapter__factory.js +215 -0
  71. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.d.ts +252 -0
  72. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.js +341 -0
  73. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.d.ts +78 -0
  74. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.js +111 -0
  75. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.d.ts +360 -0
  76. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.js +475 -0
  77. package/lib/types/factories/IBalancerV2Vault.sol/index.d.ts +2 -0
  78. package/lib/types/factories/IBalancerV2Vault.sol/index.js +10 -0
  79. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.d.ts +23 -0
  80. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.js +38 -0
  81. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.d.ts +12 -0
  82. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.js +24 -0
  83. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.d.ts +514 -0
  84. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.js +675 -0
  85. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  86. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.js +12 -0
  87. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.d.ts +196 -0
  88. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.js +267 -0
  89. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.d.ts +16 -0
  90. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.js +30 -0
  91. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  92. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.js +10 -0
  93. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.d.ts +18 -6
  94. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.js +22 -6
  95. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.d.ts +10 -2
  96. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.js +12 -2
  97. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.d.ts +13 -18
  98. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.js +14 -20
  99. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.d.ts +13 -70
  100. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.js +14 -86
  101. package/lib/types/factories/ICreditFacadeV3Multicall__factory.d.ts +22 -24
  102. package/lib/types/factories/ICreditFacadeV3Multicall__factory.js +28 -31
  103. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.d.ts +153 -135
  104. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.js +191 -168
  105. package/lib/types/factories/ICurveV1Adapter__factory.d.ts +13 -71
  106. package/lib/types/factories/ICurveV1Adapter__factory.js +14 -91
  107. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.d.ts +13 -71
  108. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.js +14 -91
  109. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.d.ts +13 -71
  110. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.js +14 -91
  111. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.d.ts +13 -71
  112. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.js +14 -91
  113. package/lib/types/factories/IDataCompressorV2_10__factory.d.ts +0 -42
  114. package/lib/types/factories/IDataCompressorV2_10__factory.js +0 -54
  115. package/lib/types/factories/IDataCompressorV3_00__factory.d.ts +0 -84
  116. package/lib/types/factories/IDataCompressorV3_00__factory.js +0 -108
  117. package/lib/types/factories/IERC4626Adapter__factory.d.ts +220 -0
  118. package/lib/types/factories/IERC4626Adapter__factory.js +297 -0
  119. package/lib/types/factories/ILidoV1Adapter__factory.d.ts +6 -2
  120. package/lib/types/factories/ILidoV1Adapter__factory.js +8 -2
  121. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.d.ts +5 -0
  122. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.js +6 -0
  123. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.d.ts +45 -0
  124. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.js +59 -0
  125. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.d.ts +5 -1
  126. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.js +6 -1
  127. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.d.ts +12 -4
  128. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.js +14 -4
  129. package/lib/types/factories/IYearnV2Adapter__factory.d.ts +21 -13
  130. package/lib/types/factories/IYearnV2Adapter__factory.js +27 -15
  131. package/lib/types/factories/IwstETHV1Adapter__factory.d.ts +12 -4
  132. package/lib/types/factories/IwstETHV1Adapter__factory.js +16 -4
  133. package/lib/types/factories/index.d.ts +7 -2
  134. package/lib/types/factories/index.js +12 -5
  135. package/lib/types/factories/{IRouter__factory.d.ts → interfaces/IRouter__factory.d.ts} +61 -6
  136. package/lib/types/factories/{IRouter__factory.js → interfaces/IRouter__factory.js} +77 -6
  137. package/lib/types/factories/interfaces/index.d.ts +1 -0
  138. package/lib/types/factories/interfaces/index.js +8 -0
  139. package/lib/types/index.d.ts +39 -17
  140. package/lib/types/index.js +39 -23
  141. package/lib/types/{IRouter.d.ts → interfaces/IRouter.d.ts} +37 -34
  142. package/lib/types/interfaces/IRouter.js +2 -0
  143. package/lib/types/interfaces/index.d.ts +1 -0
  144. package/lib/types/interfaces/index.js +2 -0
  145. package/package.json +6 -6
  146. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3.d.ts +0 -370
  147. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.d.ts +0 -133
  148. package/lib/types/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  149. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.d.ts +0 -143
  150. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.js +0 -188
  151. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.d.ts +0 -366
  152. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.js +0 -479
  153. package/lib/types/factories/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  154. package/lib/types/factories/IWithdrawalManagerV3.sol/index.js +0 -10
  155. /package/lib/types/{IRouter.js → IAaveV2_LendingPoolAdapter.js} +0 -0
  156. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3.js → IAaveV2_WrappedATokenAdapter.js} +0 -0
  157. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.js → IBalancerV2Vault.sol/IBalancerV2Vault.js} +0 -0
  158. /package/lib/types/{IWithdrawalManagerV3.sol/index.js → IBalancerV2Vault.sol/IBalancerV2VaultGetters.js} +0 -0
@@ -24,6 +24,10 @@ import {IDegenNFTV2} from "@gearbox-protocol/core-v2/contracts/interfaces/IDegen
24
24
  import {IGearStakingV3} from "@gearbox-protocol/core-v3/contracts/interfaces/IGearStakingV3.sol";
25
25
 
26
26
  // Adapters
27
+ import {IAaveV2_LendingPoolAdapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/aave/IAaveV2_LendingPoolAdapter.sol";
28
+ import {IAaveV2_WrappedATokenAdapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/aave/IAaveV2_WrappedATokenAdapter.sol";
29
+ import {IBalancerV2VaultAdapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/balancer/IBalancerV2VaultAdapter.sol";
30
+ import {ICompoundV2_CTokenAdapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/compound/ICompoundV2_CTokenAdapter.sol";
27
31
  import {ILidoV1Adapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/lido/ILidoV1Adapter.sol";
28
32
  import {IBaseRewardPool} from "@gearbox-protocol/integrations-v3/contracts/integrations/convex/IBaseRewardPool.sol";
29
33
  import {IConvexToken} from "@gearbox-protocol/integrations-v3/contracts/integrations/convex/IConvexToken.sol";
@@ -32,6 +36,7 @@ import {IConvexV1BaseRewardPoolAdapter} from
32
36
  "@gearbox-protocol/integrations-v3/contracts/interfaces/convex/IConvexV1BaseRewardPoolAdapter.sol";
33
37
  import {IConvexV1BoosterAdapter} from
34
38
  "@gearbox-protocol/integrations-v3/contracts/interfaces/convex/IConvexV1BoosterAdapter.sol";
39
+ import {IERC4626Adapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/erc4626/IERC4626Adapter.sol";
35
40
 
36
41
  import {IInterestRateModel} from "@gearbox-protocol/core-v2/contracts/interfaces/IInterestRateModel.sol";
37
42
  import {IUniswapV2Adapter} from "@gearbox-protocol/integrations-v3/contracts/interfaces/uniswap/IUniswapV2Adapter.sol";
@@ -1,5 +1,5 @@
1
1
  import { LpTokensAPY } from "../apy";
2
- import { CaTokenBalance, CreditAccountDataPayload, ScheduledWithdrawal } from "../payload/creditAccount";
2
+ import { CaTokenBalance, CreditAccountDataPayload } from "../payload/creditAccount";
3
3
  import { QuotaInfo } from "../payload/creditManager";
4
4
  import { TokenData } from "../tokens/tokenData";
5
5
  import { Asset, AssetWithAmountInTarget } from "./assets";
@@ -73,7 +73,6 @@ export declare class CreditAccountData {
73
73
  readonly allBalances: Record<string, CaTokenBalance>;
74
74
  readonly forbiddenTokens: Record<string, true>;
75
75
  readonly quotedTokens: Record<string, true>;
76
- readonly schedultedWithdrawals: Array<ScheduledWithdrawal>;
77
76
  constructor(payload: CreditAccountDataPayload);
78
77
  setDeleteInProgress(d: boolean): void;
79
78
  static sortBalances(balances: Record<string, bigint>, prices: Record<string, bigint>, tokens: Record<string, TokenData>): Array<[string, bigint]>;
@@ -38,7 +38,6 @@ class CreditAccountData {
38
38
  allBalances = {};
39
39
  forbiddenTokens = {};
40
40
  quotedTokens = {};
41
- schedultedWithdrawals;
42
41
  constructor(payload) {
43
42
  this.isSuccessful = payload.isSuccessful;
44
43
  this.addr = payload.addr.toLowerCase();
@@ -96,12 +95,6 @@ class CreditAccountData {
96
95
  }
97
96
  this.allBalances[token] = balance;
98
97
  });
99
- this.schedultedWithdrawals = payload.schedultedWithdrawals.map(w => ({
100
- tokenIndex: w.tokenIndex,
101
- maturity: w.maturity,
102
- token: w.token.toLowerCase(),
103
- amount: (0, sdk_gov_1.toBigInt)(w.amount),
104
- }));
105
98
  }
106
99
  setDeleteInProgress(d) {
107
100
  this.isDeleting = d;
@@ -203,7 +203,7 @@ class CreditManagerData {
203
203
  static withdrawAllAndUnwrap_Convex(address, claim) {
204
204
  return {
205
205
  target: address,
206
- callData: types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface().encodeFunctionData("withdrawAllAndUnwrap", [claim]),
206
+ callData: types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface().encodeFunctionData("withdrawDiffAndUnwrap", [1, claim]),
207
207
  };
208
208
  }
209
209
  }
@@ -8,29 +8,30 @@ interface Info {
8
8
  }
9
9
  export type TradeOperations = "farmWithdraw" | "farmDeposit" | "swap";
10
10
  export interface GetTradesProps {
11
- from: string;
12
- to: string;
11
+ tokenIn: string;
12
+ tokenOut: string;
13
13
  amount: bigint;
14
14
  results: Array<PathFinderResult>;
15
15
  creditManager: CreditManagerData;
16
16
  currentContracts: Record<SupportedContract, string>;
17
- swapType: SwapOperation;
17
+ swapOperation: SwapOperation;
18
18
  swapName: TradeOperations;
19
19
  }
20
20
  export declare class Trade {
21
21
  readonly helper: Info;
22
22
  readonly tradePath: PathFinderResult;
23
- readonly swapType: SwapOperation;
23
+ readonly swapOperation: SwapOperation;
24
24
  readonly sourceAmount: bigint;
25
- readonly expectedAmount: bigint;
25
+ readonly minExpectedAmount: bigint;
26
+ readonly averageExpectedAmount: bigint;
26
27
  readonly rate: bigint;
27
- readonly tokenFrom: string;
28
- readonly tokenTo: string;
28
+ readonly tokenIn: string;
29
+ readonly tokenOut: string;
29
30
  readonly operationName: TradeOperations;
30
31
  private constructor();
31
32
  getName(): string;
32
33
  toString(): string;
33
- static getTrades({ from, to, amount, results, creditManager, currentContracts, swapType, swapName, }: GetTradesProps): Trade[];
34
+ static getTrades({ tokenIn, tokenOut, amount, results, creditManager, currentContracts, swapOperation, swapName, }: GetTradesProps): Trade[];
34
35
  static getCallInfo(calls: Array<MultiCall>, creditManager: string, currentContracts: Record<SupportedContract, string>): Info[];
35
36
  private static getContractSymbol;
36
37
  static sortTrades(trades: Array<Trade>, swapStrategy: string): Trade[];
package/lib/core/trade.js CHANGED
@@ -7,50 +7,53 @@ const core_1 = require("../pathfinder/core");
7
7
  class Trade {
8
8
  helper;
9
9
  tradePath;
10
- swapType;
10
+ swapOperation;
11
11
  sourceAmount;
12
- expectedAmount;
12
+ minExpectedAmount;
13
+ averageExpectedAmount;
13
14
  rate;
14
- tokenFrom;
15
- tokenTo;
15
+ tokenIn;
16
+ tokenOut;
16
17
  operationName;
17
18
  constructor(props) {
18
19
  this.helper = props.adapter;
19
20
  this.tradePath = props.tradePath;
20
- this.swapType = props.swapType;
21
+ this.swapOperation = props.swapOperation;
21
22
  this.sourceAmount = props.sourceAmount;
22
- this.expectedAmount = props.expectedAmount;
23
- this.rate = (sdk_gov_1.WAD * props.expectedAmount) / props.sourceAmount;
24
- this.tokenFrom = props.tokenFrom;
25
- this.tokenTo = props.tokenTo;
23
+ this.minExpectedAmount = props.minExpectedAmount;
24
+ this.averageExpectedAmount = props.averageExpectedAmount;
25
+ this.rate = (sdk_gov_1.WAD * props.minExpectedAmount) / props.sourceAmount;
26
+ this.tokenIn = props.tokenIn;
27
+ this.tokenOut = props.tokenOut;
26
28
  this.operationName = props.swapName;
27
29
  }
28
30
  getName() {
29
31
  return this.helper.name;
30
32
  }
31
33
  toString() {
32
- const symbolFrom = sdk_gov_1.tokenSymbolByAddress[this.tokenFrom.toLowerCase()];
33
- const symbolTo = sdk_gov_1.tokenSymbolByAddress[this.tokenTo.toLowerCase()];
34
+ const symbolFrom = sdk_gov_1.tokenSymbolByAddress[this.tokenIn.toLowerCase()];
35
+ const symbolTo = sdk_gov_1.tokenSymbolByAddress[this.tokenOut.toLowerCase()];
34
36
  if (!symbolFrom)
35
- throw new Error(`Unknown token: ${this.tokenFrom}`);
37
+ throw new Error(`Unknown token: ${this.tokenIn}`);
36
38
  if (!symbolTo)
37
- throw new Error(`Unknown token: ${this.tokenTo}`);
39
+ throw new Error(`Unknown token: ${this.tokenOut}`);
38
40
  const decimalsFrom = sdk_gov_1.decimals[symbolFrom];
39
41
  const decimalsTo = sdk_gov_1.decimals[symbolTo];
40
- return `${this.operationName} ${(0, sdk_gov_1.formatBN)(this.sourceAmount, decimalsFrom)} ${symbolFrom} ⇒ ${(0, sdk_gov_1.formatBN)(this.expectedAmount, decimalsTo)} ${symbolTo} on ${this.helper.name}`;
42
+ return `${this.operationName} ${(0, sdk_gov_1.formatBN)(this.sourceAmount, decimalsFrom)} ${symbolFrom} ⇒ ${(0, sdk_gov_1.formatBN)(this.minExpectedAmount, decimalsTo)} ${symbolTo} on ${this.helper.name}`;
41
43
  }
42
- static getTrades({ from, to, amount, results, creditManager, currentContracts, swapType, swapName, }) {
44
+ static getTrades({ tokenIn, tokenOut, amount, results, creditManager, currentContracts, swapOperation, swapName, }) {
43
45
  const trades = results.reduce((acc, tradePath) => {
44
46
  const { calls } = tradePath;
45
47
  const callInfo = Trade.getCallInfo(calls, creditManager.address, currentContracts);
46
48
  const trade = new Trade({
47
49
  tradePath,
48
50
  adapter: callInfo[0],
49
- swapType,
51
+ swapOperation,
50
52
  sourceAmount: amount,
51
- expectedAmount: tradePath.amount,
52
- tokenFrom: from,
53
- tokenTo: to,
53
+ minExpectedAmount: tradePath.minAmount,
54
+ averageExpectedAmount: tradePath.amount,
55
+ tokenIn,
56
+ tokenOut,
54
57
  swapName,
55
58
  });
56
59
  acc.push(trade);
@@ -86,13 +89,13 @@ class Trade {
86
89
  static sortTrades(trades, swapStrategy) {
87
90
  if (trades.length === 0)
88
91
  return [];
89
- const { swapType } = trades[0];
92
+ const { swapOperation } = trades[0];
90
93
  const sorted = [...trades].sort((a, b) => {
91
94
  const aSelected = a.getName().toLowerCase().search(swapStrategy.toLowerCase()) >= 0;
92
95
  const bSelected = b.getName().toLowerCase().search(swapStrategy.toLowerCase()) >= 0;
93
96
  if ((aSelected && bSelected) || (!aSelected && !bSelected)) {
94
- const sign = a.expectedAmount > b.expectedAmount ? -1 : 1;
95
- return swapType === core_1.SwapOperation.EXACT_INPUT ? sign : -sign;
97
+ const sign = a.minExpectedAmount > b.minExpectedAmount ? -1 : 1;
98
+ return swapOperation === core_1.SwapOperation.EXACT_INPUT ? sign : -sign;
96
99
  }
97
100
  return aSelected ? -1 : 1;
98
101
  });
@@ -14,21 +14,23 @@ class ConvexBaseRewardPoolAdapterParser extends abstractParser_1.AbstractParser
14
14
  parse(calldata) {
15
15
  const { functionFragment, functionName } = this.parseSelector(calldata);
16
16
  switch (functionFragment.name) {
17
- case "stake":
18
- case "stakeAll": {
17
+ case "stake": {
19
18
  const [amount] = this.decodeFunctionData(functionFragment, calldata);
20
- const amountStr = amount ? `amount: ${this.formatAmount(amount)}` : "";
21
- return `${functionName}(${amountStr})`;
19
+ return `${functionName}(amount: ${this.formatAmount(amount)})`;
20
+ }
21
+ case "stakeDiff": {
22
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
23
+ return `${functionName}(leftoverAmount: ${this.formatAmount(leftoverAmount)})`;
22
24
  }
23
25
  case "withdraw":
24
26
  case "withdrawAndUnwrap": {
25
27
  const [amount, claim] = this.decodeFunctionData(functionFragment, calldata);
26
28
  return `${functionName}(amount: ${this.formatAmount(amount)}, claim: ${claim})`;
27
29
  }
28
- case "withdrawAll":
29
- case "withdrawAllAndUnwrap": {
30
- const [claim] = this.decodeFunctionData(functionFragment, calldata);
31
- return `${functionName}(claim: ${claim})`;
30
+ case "withdrawDiff":
31
+ case "withdrawDiffAndUnwrap": {
32
+ const [leftoverAmount, claim] = this.decodeFunctionData(functionFragment, calldata);
33
+ return `${functionName}(leftoverAmount: ${this.formatAmount(leftoverAmount)}, claim: ${claim})`;
32
34
  }
33
35
  case "rewardRate":
34
36
  return `${functionName}()`;
@@ -10,15 +10,18 @@ describe("ConvexV1BaseRewardPoolAdapterParser test", () => {
10
10
  const ifc = types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface();
11
11
  let parsed = parser.parse(ifc.encodeFunctionData("stake", [(sdk_gov_1.WAD * 199n) / 10n]));
12
12
  (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].stake(amount: 19.90 [19900000000000000000])", "Incorrect parse stake");
13
- parsed = parser.parse(ifc.encodeFunctionData("stakeAll"));
14
- (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].stakeAll()", "Incorrect parse stakeAll");
13
+ parsed = parser.parse(ifc.encodeFunctionData("stakeDiff", [(sdk_gov_1.WAD * 199n) / 10n]));
14
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].stakeDiff(leftoverAmount: 19.90 [19900000000000000000])", "Incorrect parse stakeDiff");
15
15
  parsed = parser.parse(ifc.encodeFunctionData("withdraw", [(sdk_gov_1.WAD * 199n) / 1000n, false]));
16
16
  (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdraw(amount: 0.19 [199000000000000000], claim: false)", "Incorrect parse withdraw");
17
17
  parsed = parser.parse(ifc.encodeFunctionData("withdrawAndUnwrap", [(sdk_gov_1.WAD * 2n) / 1000n, true]));
18
18
  (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAndUnwrap(amount: 0.002 [2000000000000000], claim: true)", "Incorrect parse withdrawAndUnwrap");
19
- parsed = parser.parse(ifc.encodeFunctionData("withdrawAll", [false]));
20
- (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAll(claim: false)", "Incorrect parse withdrawAll");
21
- parsed = parser.parse(ifc.encodeFunctionData("withdrawAllAndUnwrap", [true]));
22
- (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAllAndUnwrap(claim: true)", "Incorrect parse withdrawAllAndUnwrap");
19
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawDiff", [(sdk_gov_1.WAD * 2n) / 1000n, false]));
20
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawDiff(leftoverAmount: 0.002 [2000000000000000], claim: false)", "Incorrect parse withdrawDiff");
21
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawDiffAndUnwrap", [
22
+ (sdk_gov_1.WAD * 2n) / 1000n,
23
+ true,
24
+ ]));
25
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawDiffAndUnwrap(leftoverAmount: 0.002 [2000000000000000], claim: true)", "Incorrect parse withdrawDiffAndUnwrap");
23
26
  });
24
27
  });
@@ -18,17 +18,17 @@ class ConvexBoosterAdapterParser extends abstractParser_1.AbstractParser {
18
18
  const [pid, amount, stake] = this.decodeFunctionData(functionFragment, calldata);
19
19
  return `${functionName}(pid: ${this.formatPid(pid)}, amount: ${this.formatAmount(amount, pid)}, stake: ${stake})`;
20
20
  }
21
- case "depositAll": {
22
- const [pid, stake] = this.decodeFunctionData(functionFragment, calldata);
23
- return `${functionName}(pid: ${this.formatPid(pid)}, stake: ${stake})`;
21
+ case "depositDiff": {
22
+ const [pid, leftoverAmount, stake] = this.decodeFunctionData(functionFragment, calldata);
23
+ return `${functionName}(pid: ${this.formatPid(pid)}, leftoverAmount: ${this.formatAmount(leftoverAmount, pid)}, stake: ${stake})`;
24
24
  }
25
25
  case "withdraw": {
26
26
  const [pid, amount] = this.decodeFunctionData(functionFragment, calldata);
27
27
  return `${functionName}(pid: ${this.formatPid(pid)}, amount: ${this.formatAmount(amount, pid)})`;
28
28
  }
29
- case "withdrawAll": {
30
- const [pid] = this.decodeFunctionData(functionFragment, calldata);
31
- return `${functionName}(pid: ${this.formatPid(pid)})`;
29
+ case "withdrawDiff": {
30
+ const [pid, leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
31
+ return `${functionName}(pid: ${this.formatPid(pid)}, leftoverAmount: ${this.formatAmount(leftoverAmount, pid)})`;
32
32
  }
33
33
  default:
34
34
  return `${functionName}: Unknown operation ${functionFragment.name} with calldata ${calldata}`;
@@ -10,11 +10,11 @@ describe("ConvexV1BaseRewardPoolAdapterParser test", () => {
10
10
  const ifc = types_1.IConvexV1BoosterAdapter__factory.createInterface();
11
11
  let parsed = parser.parse(ifc.encodeFunctionData("deposit", [9, sdk_gov_1.WAD * 19999n, false]));
12
12
  (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].deposit(pid: 9 [CONVEX_3CRV_POOL], amount: 19.99K [19999000000000000000000], stake: false)", "Incorrect parse deposit");
13
- parsed = parser.parse(ifc.encodeFunctionData("depositAll", [32, true]));
14
- (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].depositAll(pid: 32 [CONVEX_FRAX3CRV_POOL], stake: true)", "Incorrect parse depositAll");
13
+ parsed = parser.parse(ifc.encodeFunctionData("depositDiff", [32, sdk_gov_1.WAD * 19999n, true]));
14
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].depositDiff(pid: 32 [CONVEX_FRAX3CRV_POOL], leftoverAmount: 19.99K [19999000000000000000000], stake: true)", "Incorrect parse depositDiff");
15
15
  parsed = parser.parse(ifc.encodeFunctionData("withdraw", [9, (sdk_gov_1.WAD * 555n) / 10n]));
16
16
  (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].withdraw(pid: 9 [CONVEX_3CRV_POOL], amount: 55.50 [55500000000000000000])", "Incorrect parse withdraw");
17
- parsed = parser.parse(ifc.encodeFunctionData("withdrawAll", [32]));
18
- (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].withdrawAll(pid: 32 [CONVEX_FRAX3CRV_POOL])", "Incorrect parse withdrawAll");
17
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawDiff", [32, (sdk_gov_1.WAD * 555n) / 10n]));
18
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].withdrawDiff(pid: 32 [CONVEX_FRAX3CRV_POOL], leftoverAmount: 55.50 [55500000000000000000])", "Incorrect parse withdrawDiff");
19
19
  });
20
20
  });
@@ -44,26 +44,26 @@ class CurveAdapterParser extends abstractParser_1.AbstractParser {
44
44
  : this.getTokenByIndex(j);
45
45
  return `${functionName}(i ,j: ${iSym} => ${jSym}, dx: ${this.formatBN(dx, iSym)}, min_dy: ${this.formatBN(min_dy, jSym)})`;
46
46
  }
47
- case "exchange_all":
48
- case "exchange_all_underlying": {
49
- const [i, j, rateMinRAY] = this.decodeFunctionData(functionFragment, calldata);
50
- const iSym = functionFragment.name === "exchange_all_underlying"
47
+ case "exchange_diff":
48
+ case "exchange_diff_underlying": {
49
+ const [i, j, leftoverAmount, rateMinRAY] = this.decodeFunctionData(functionFragment, calldata);
50
+ const iSym = functionFragment.name === "exchange_diff_underlying"
51
51
  ? this.getUnderlyingTokenByIndex(i)
52
52
  : this.getTokenByIndex(i);
53
- const jSym = functionFragment.name === "exchange_all_underlying"
53
+ const jSym = functionFragment.name === "exchange_diff_underlying"
54
54
  ? this.getUnderlyingTokenByIndex(j)
55
55
  : this.getTokenByIndex(j);
56
- return `${functionName}(i: ${iSym}, j: ${jSym}, rateMinRAY: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}`;
56
+ return `${functionName}(i: ${iSym}, j: ${jSym}, leftoverAmount: ${this.formatBN(leftoverAmount, iSym)}, rateMinRAY: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}`;
57
57
  }
58
58
  case "add_liquidity_one_coin": {
59
59
  const [amount, i, minAmount] = this.decodeFunctionData(functionFragment, calldata);
60
60
  const iSym = this.getTokenByIndex(i);
61
61
  return `${functionName}(amount: ${this.formatBN(amount, iSym)}, i: ${iSym}, minAmount: ${this.formatBN(minAmount, this.lpToken)})`;
62
62
  }
63
- case "add_all_liquidity_one_coin":
64
- case "remove_all_liquidity_one_coin": {
65
- const [i, rateMinRAY] = this.decodeFunctionData(functionFragment, calldata);
66
- return `${functionName}(i: ${this.getTokenByIndex(i)}, rateMinRAY: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)})`;
63
+ case "add_diff_liquidity_one_coin":
64
+ case "remove_diff_liquidity_one_coin": {
65
+ const [leftoverAmount, i, rateMinRAY] = this.decodeFunctionData(functionFragment, calldata);
66
+ return `${functionName}(leftoverAmount: ${this.formatBN(leftoverAmount, i)}, i: ${this.getTokenByIndex(i)}, rateMinRAY: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)})`;
67
67
  }
68
68
  case "add_liquidity": {
69
69
  const [amounts, minAmount] = this.decodeFunctionData(functionFragment, calldata);
@@ -19,8 +19,12 @@ describe("CurveAdapterParser test", () => {
19
19
  (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].exchange_underlying(i ,j: FRAX => DAI, dx: 3.00 [3000000000000000000], min_dy: 32.00 [32000000000000000000])", "Curve2AssetsAdapter: Incorrect parse exchange_underlying");
20
20
  parsed = parser.parse(ifc.encodeFunctionData("add_liquidity_one_coin", [sdk_gov_1.WAD * 3n, 0, sdk_gov_1.WAD * 2n]));
21
21
  (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_liquidity_one_coin(amount: 3.00 [3000000000000000000], i: FRAX, minAmount: 2.00 [2000000000000000000])", "Curve2AssetsAdapter: Incorrect parse add_liquidity_one_coin");
22
- parsed = parser.parse(ifc.encodeFunctionData("add_all_liquidity_one_coin", [0, sdk_gov_1.RAY * 912n]));
23
- (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_all_liquidity_one_coin(i: FRAX, rateMinRAY: 912.00)", "Curve2AssetsAdapter: Incorrect parse add_all_liquidity_one_coin");
22
+ parsed = parser.parse(ifc.encodeFunctionData("add_diff_liquidity_one_coin", [
23
+ sdk_gov_1.WAD * 3n,
24
+ 0,
25
+ sdk_gov_1.RAY * 912n,
26
+ ]));
27
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_diff_liquidity_one_coin(leftoverAmount: 3.00 [3000000000000000000], i: FRAX, rateMinRAY: 912.00)", "Curve2AssetsAdapter: Incorrect parse add_diff_liquidity_one_coin");
24
28
  parsed = parser.parse(ifc.encodeFunctionData("remove_liquidity_one_coin(uint256,uint256,uint256)", [sdk_gov_1.WAD * 100n, 0, sdk_gov_1.WAD * 10n]));
25
29
  (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].remove_liquidity_one_coin(amount: 100.00 [100000000000000000000],i: FRAX, min_amount: 10.00 [10000000000000000000])", "Curve2AssetsAdapter: Incorrect parse remove_liquidity_one_coin");
26
30
  parsed = parser.parse(ifc.encodeFunctionData("add_liquidity", [
@@ -17,8 +17,9 @@ class LidoAdapterParser extends abstractParser_1.AbstractParser {
17
17
  const [amount] = this.decodeFunctionData(functionFragment, calldata);
18
18
  return `${functionName}(amount: ${this.formatBN(amount, "STETH")})`;
19
19
  }
20
- case "submitAll": {
21
- return `${functionName}()`;
20
+ case "submitDiff": {
21
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
22
+ return `${functionName}(leftoverAmount: ${this.formatBN(leftoverAmount, "STETH")})`;
22
23
  }
23
24
  default:
24
25
  return `${functionName}: Unknown operation ${functionFragment.name} with calldata ${calldata}`;
@@ -11,7 +11,7 @@ describe("LidoAdapterParser test", () => {
11
11
  let parsed = parser.parse(ifc.encodeFunctionData("submit", [sdk_gov_1.WAD * 1020n]));
12
12
  (0, chai_1.expect)(parsed).to.be.eq("LidoV1Adapter[LIDO_STETH_GATEWAY].submit(amount: 1.02K [1020000000000000000000])", "Incorrect parse submit(amount)");
13
13
  parser = new lidoAdapterParser_1.LidoAdapterParser("LIDO_STETH_GATEWAY", true);
14
- parsed = parser.parse(ifc.encodeFunctionData("submitAll"));
15
- (0, chai_1.expect)(parsed).to.be.eq("Contract[LIDO_STETH_GATEWAY].submitAll()", "Incorrect parse submitAll()");
14
+ parsed = parser.parse(ifc.encodeFunctionData("submitDiff", [sdk_gov_1.WAD * 1020n]));
15
+ (0, chai_1.expect)(parsed).to.be.eq("Contract[LIDO_STETH_GATEWAY].submitDiff(leftoverAmount: 1.02K [1020000000000000000000])", "Incorrect parse submitDiff(leftoverAmount)");
16
16
  });
17
17
  });
@@ -39,9 +39,10 @@ class UniswapV2AdapterParser extends abstractParser_1.AbstractParser {
39
39
  const amountInMaxStr = this.formatBN(amountInMax, tokenOut);
40
40
  return `${functionName}(amountOut: ${amountOutStr}, amountInMax: ${amountInMaxStr}, path: [${pathStr}])`;
41
41
  }
42
- case "swapAllTokensForTokens": {
43
- const [rateMinRAY, path] = this.decodeFunctionData(functionFragment, calldata);
44
- return `${functionName}(rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: [${path
42
+ case "swapDiffTokensForTokens": {
43
+ const [leftoverAmount, rateMinRAY, path] = this.decodeFunctionData(functionFragment, calldata);
44
+ const tokenIn = this.tokenSymbol(path[0]);
45
+ return `${functionName}(leftoverAmount: ${this.formatBN(leftoverAmount, tokenIn)}, rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: [${path
45
46
  .map(r => this.tokenSymbol(r))
46
47
  .join(" => ")}])`;
47
48
  }
@@ -32,7 +32,8 @@ describe("UniswapV2AdapterParser test", () => {
32
32
  45033,
33
33
  ]));
34
34
  (0, chai_1.expect)(parsed).to.be.eq("UniswapV2Adapter[UNISWAP_V2_ROUTER].swapTokensForExactTokens(amountOut: 234.50K [234500000000], amountInMax: 17.70K [17700000000000000000000], path: [USDC => DAI => FRAX])", "Incorrect parse swapTokensForExactTokens");
35
- parsed = parser.parse(ifc.encodeFunctionData("swapAllTokensForTokens", [
35
+ parsed = parser.parse(ifc.encodeFunctionData("swapDiffTokensForTokens", [
36
+ BigInt(1e6) * 234500n,
36
37
  sdk_gov_1.RAY * 3240n,
37
38
  [
38
39
  sdk_gov_1.tokenDataByNetwork.Mainnet.USDC,
@@ -41,6 +42,6 @@ describe("UniswapV2AdapterParser test", () => {
41
42
  ],
42
43
  45033,
43
44
  ]));
44
- (0, chai_1.expect)(parsed).to.be.eq("UniswapV2Adapter[UNISWAP_V2_ROUTER].swapAllTokensForTokens(rate: 3.24K, path: [USDC => DAI => FRAX])", "Incorrect parse swapAllTokensForTokens");
45
+ (0, chai_1.expect)(parsed).to.be.eq("UniswapV2Adapter[UNISWAP_V2_ROUTER].swapDiffTokensForTokens(leftoverAmount: 234.50K [234500000000], rate: 3.24K, path: [USDC => DAI => FRAX])", "Incorrect parse swapDiffTokensForTokens");
45
46
  });
46
47
  });
@@ -22,11 +22,12 @@ class UniswapV3AdapterParser extends abstractParser_1.AbstractParser {
22
22
  const amountOutMinimumStr = this.formatBN(amountOutMinimum, tokenOut);
23
23
  return `${functionName}(amountIn: ${amountInStr}, amountOutMinimum: ${amountOutMinimumStr}, path: ${tokenInSym} ==(fee: ${fee})==> ${tokenOutSym})`;
24
24
  }
25
- case "exactAllInputSingle": {
26
- const { params: { tokenIn, tokenOut, fee, rateMinRAY }, } = this.decodeFunctionData(functionFragment, calldata);
25
+ case "exactDiffInputSingle": {
26
+ const { params: { tokenIn, tokenOut, fee, leftoverAmount, rateMinRAY }, } = this.decodeFunctionData(functionFragment, calldata);
27
27
  const tokenInSym = this.tokenSymbol(tokenIn);
28
28
  const tokenOutSym = this.tokenSymbol(tokenOut);
29
- return `${functionName}(rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: ${tokenInSym} ==(fee: ${fee})==> ${tokenOutSym})`;
29
+ const leftoverAmountStr = this.formatBN(leftoverAmount, tokenIn);
30
+ return `${functionName}(leftoverAmount: ${leftoverAmountStr}, rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: ${tokenInSym} ==(fee: ${fee})==> ${tokenOutSym})`;
30
31
  }
31
32
  case "exactInput": {
32
33
  const { params: { amountIn, amountOutMinimum, path }, } = this.decodeFunctionData(functionFragment, calldata);
@@ -35,10 +36,11 @@ class UniswapV3AdapterParser extends abstractParser_1.AbstractParser {
35
36
  const amountOutMinimumStr = this.formatBN(amountOutMinimum, this.tokenSymbol(`0x${path.slice(-40, path.length)}`));
36
37
  return `${functionName}(amountIn: ${amountInStr}, amountOutMinimum: ${amountOutMinimumStr}, path: ${pathStr}`;
37
38
  }
38
- case "exactAllInput": {
39
- const { params: { rateMinRAY, path }, } = this.decodeFunctionData(functionFragment, calldata);
39
+ case "exactDiffInput": {
40
+ const { params: { leftoverAmount, rateMinRAY, path }, } = this.decodeFunctionData(functionFragment, calldata);
41
+ const leftoverAmountStr = this.formatBN(leftoverAmount, this.tokenSymbol(`0x${path.replace("0x", "").slice(0, 40)}`));
40
42
  const pathStr = this.trackInputPath(path);
41
- return `${functionName}(rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: ${pathStr}`;
43
+ return `${functionName}(leftoverAmount: ${leftoverAmountStr}, rate: ${(0, sdk_gov_1.formatBN)(rateMinRAY, 27)}, path: ${pathStr}`;
42
44
  }
43
45
  case "exactOutput": {
44
46
  const { params: { amountInMaximum, amountOut, path }, } = this.decodeFunctionData(functionFragment, calldata);
@@ -71,18 +71,19 @@ describe("UniswapV3AdapterParser test", () => {
71
71
  },
72
72
  ]));
73
73
  (0, chai_1.expect)(parsed).to.be.eq("UniswapV3Adapter[UNISWAP_V3_ROUTER].exactInput(amountIn: 12.39K [12399000000000000000000], amountOutMinimum: 122.00 [122000000], path: AAVE ==(fee: 3000)==> LINK ==(fee: 3000)==> USDC", "Incorrect parse swapExactTokensForTokens");
74
- parsed = parser.parse(ifc.encodeFunctionData("exactAllInput", [
74
+ parsed = parser.parse(ifc.encodeFunctionData("exactDiffInput", [
75
75
  {
76
76
  path: pathToUniV3Path([
77
77
  sdk_gov_1.tokenDataByNetwork.Mainnet.AAVE,
78
78
  sdk_gov_1.tokenDataByNetwork.Mainnet.LINK,
79
79
  sdk_gov_1.tokenDataByNetwork.Mainnet.USDC,
80
80
  ]),
81
+ leftoverAmount: sdk_gov_1.WAD * 12399n,
81
82
  rateMinRAY: sdk_gov_1.RAY * 1200n,
82
83
  deadline: 1232131,
83
84
  },
84
85
  ]));
85
- (0, chai_1.expect)(parsed).to.be.eq("UniswapV3Adapter[UNISWAP_V3_ROUTER].exactAllInput(rate: 1.20K, path: AAVE ==(fee: 3000)==> LINK ==(fee: 3000)==> USDC", "Incorrect parse swapExactTokensForTokens");
86
+ (0, chai_1.expect)(parsed).to.be.eq("UniswapV3Adapter[UNISWAP_V3_ROUTER].exactDiffInput(leftoverAmount: 12.39K [12399000000000000000000], rate: 1.20K, path: AAVE ==(fee: 3000)==> LINK ==(fee: 3000)==> USDC", "Incorrect parse swapExactTokensForTokens");
86
87
  // parsed = parser.parse(
87
88
  // ifc.encodeFunctionData("exactOutputSingle", [
88
89
  // {
@@ -20,15 +20,17 @@ class WstETHAdapterParser extends abstractParser_1.AbstractParser {
20
20
  const [amount] = this.decodeFunctionData(functionFragment, calldata);
21
21
  return `${functionName}(amount: ${this.formatBN(amount, "STETH")})`;
22
22
  }
23
- case "wrapAll": {
24
- return `${functionName}()`;
23
+ case "wrapDiff": {
24
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
25
+ return `${functionName}(leftoverAmount: ${this.formatBN(leftoverAmount, "STETH")})`;
25
26
  }
26
27
  case "unwrap": {
27
28
  const [amount] = this.decodeFunctionData(functionFragment, calldata);
28
29
  return `${functionName}(amount: ${this.formatBN(amount, "wstETH")})`;
29
30
  }
30
- case "unwrapAll": {
31
- return `${functionName}()`;
31
+ case "unwrapDiff": {
32
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
33
+ return `${functionName}(leftoverAmount: ${this.formatBN(leftoverAmount, "STETH")})`;
32
34
  }
33
35
  case "balanceOf": {
34
36
  const [address] = this.decodeFunctionData(functionFragment, calldata);
@@ -8,10 +8,10 @@ describe("WstETHAdapterParser test", () => {
8
8
  it("wrap / unwrap function works well", () => {
9
9
  let parser = new wstETHAdapterParser_1.WstETHAdapterParser("LIDO_WSTETH", false);
10
10
  const ifc = types_1.IwstETHV1Adapter__factory.createInterface();
11
- let parsed = parser.parse(ifc.encodeFunctionData("wrapAll"));
12
- (0, chai_1.expect)(parsed).to.be.eq("wstETHAdapter[LIDO_WSTETH].wrapAll()", "Incorrect parse wrapAll()");
13
- parsed = parser.parse(ifc.encodeFunctionData("unwrapAll"));
14
- (0, chai_1.expect)(parsed).to.be.eq("wstETHAdapter[LIDO_WSTETH].unwrapAll()", "Incorrect parse unwrapAll()");
11
+ let parsed = parser.parse(ifc.encodeFunctionData("wrapDiff", [sdk_gov_1.WAD * 1020n]));
12
+ (0, chai_1.expect)(parsed).to.be.eq("wstETHAdapter[LIDO_WSTETH].wrapDiff(leftoverAmount: 1.02K [1020000000000000000000])", "Incorrect parse wrapDiff()");
13
+ parsed = parser.parse(ifc.encodeFunctionData("unwrapDiff", [sdk_gov_1.WAD * 1020n]));
14
+ (0, chai_1.expect)(parsed).to.be.eq("wstETHAdapter[LIDO_WSTETH].unwrapDiff(leftoverAmount: 1.02K [1020000000000000000000])", "Incorrect parse unwrapDiff()");
15
15
  parser = new wstETHAdapterParser_1.WstETHAdapterParser("LIDO_WSTETH", true);
16
16
  parsed = parser.parse(ifc.encodeFunctionData("wrap", [sdk_gov_1.WAD * 1020n]));
17
17
  (0, chai_1.expect)(parsed).to.be.eq("Contract[LIDO_WSTETH].wrap(amount: 1.02K [1020000000000000000000])", "Incorrect parse wrap(amount)");
@@ -8,8 +8,8 @@ describe("YearnV2AdapterParser test", () => {
8
8
  it("deposit / withdraw functions works well", () => {
9
9
  let parser = new yearnV2AdapterParser_1.YearnV2AdapterParser("YEARN_CURVE_STETH_VAULT", false);
10
10
  const ifc = types_1.IYearnV2Adapter__factory.createInterface();
11
- let parsed = parser.parse(ifc.encodeFunctionData("deposit()"));
12
- (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].deposit()", "Incorrect parse deposit()");
11
+ let parsed = parser.parse(ifc.encodeFunctionData("depositDiff", [sdk_gov_1.WAD * 19000n]));
12
+ (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].depositDiff(leftoverAmount: 19.00K [19000000000000000000000])", "Incorrect parse depositDiff");
13
13
  parsed = parser.parse(ifc.encodeFunctionData("deposit(uint256)", [sdk_gov_1.WAD * 19000n]));
14
14
  (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].deposit(amount: 19.00K [19000000000000000000000])", "Incorrect parse deposit(amount)");
15
15
  parsed = parser.parse(ifc.encodeFunctionData("deposit(uint256,address)", [
@@ -17,8 +17,8 @@ describe("YearnV2AdapterParser test", () => {
17
17
  sdk_gov_1.DUMB_ADDRESS,
18
18
  ]));
19
19
  (0, chai_1.expect)(parsed).to.be.eq(`YearnV2Adapter[YEARN_CURVE_STETH_VAULT].deposit(amount: 19.00K [19000000000000000000000], address: ${sdk_gov_1.DUMB_ADDRESS})`, "Incorrect parse deposit(amount,address)");
20
- parsed = parser.parse(ifc.encodeFunctionData("withdraw()"));
21
- (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].withdraw()", "Incorrect parse withdraw()");
20
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawDiff", [sdk_gov_1.WAD * 19000n]));
21
+ (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].withdrawDiff(leftoverAmount: 19.00K [19000000000000000000000])", "Incorrect parse withdrawDiff");
22
22
  parsed = parser.parse(ifc.encodeFunctionData("withdraw(uint256)", [sdk_gov_1.WAD * 19000n]));
23
23
  (0, chai_1.expect)(parsed).to.be.eq("YearnV2Adapter[YEARN_CURVE_STETH_VAULT].withdraw(amount: 19.00K [19000000000000000000000])", "Incorrect parse withdraw(amount)");
24
24
  parsed = parser.parse(ifc.encodeFunctionData("withdraw(uint256,address)", [
@@ -7,7 +7,7 @@ const abstractParser_1 = require("./abstractParser");
7
7
  class YearnV2AdapterParser extends abstractParser_1.AbstractParser {
8
8
  constructor(contract, isContract) {
9
9
  super(contract);
10
- this.ifc = types_1.IYVault__factory.createInterface();
10
+ this.ifc = types_1.IYearnV2Adapter__factory.createInterface();
11
11
  if (!isContract)
12
12
  this.adapterName = "YearnV2Adapter";
13
13
  }
@@ -16,8 +16,6 @@ class YearnV2AdapterParser extends abstractParser_1.AbstractParser {
16
16
  switch (functionFragment.name) {
17
17
  case "deposit":
18
18
  case "withdraw":
19
- case "deposit(uint256)":
20
- case "withdraw(uint256)":
21
19
  case "withdraw(uint256,address,uint256)": {
22
20
  const [amount, address, maxLoss] = this.decodeFunctionData(functionFragment, calldata);
23
21
  const yvSym = this.tokenSymbol(sdk_gov_1.contractsByNetwork.Mainnet[this.contract]);
@@ -28,6 +26,18 @@ class YearnV2AdapterParser extends abstractParser_1.AbstractParser {
28
26
  const maxLossStr = maxLoss ? `, maxLoss: ${maxLoss}` : "";
29
27
  return `${functionName}(${amountStr}${addressStr}${maxLossStr})`;
30
28
  }
29
+ case "depositDiff": {
30
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
31
+ const yvSym = this.tokenSymbol(sdk_gov_1.contractsByNetwork.Mainnet[this.contract]);
32
+ const leftoverAmountStr = this.formatBN(leftoverAmount, yvSym);
33
+ return `${functionName}(leftoverAmount: ${leftoverAmountStr})`;
34
+ }
35
+ case "withdrawDiff": {
36
+ const [leftoverAmount] = this.decodeFunctionData(functionFragment, calldata);
37
+ const yvSym = this.tokenSymbol(sdk_gov_1.contractsByNetwork.Mainnet[this.contract]);
38
+ const leftoverAmountStr = this.formatBN(leftoverAmount, yvSym);
39
+ return `${functionName}(leftoverAmount: ${leftoverAmountStr})`;
40
+ }
31
41
  case "pricePerShare": {
32
42
  return `${functionName}()`;
33
43
  }
@@ -1,21 +1,20 @@
1
1
  import { ExcludeArrayProps } from "@gearbox-protocol/sdk-gov";
2
- import { MultiCallStructOutput, SwapTaskStructOutput } from "../types/IRouter";
2
+ import { MultiCallStructOutput, RouterResultStructOutput, SwapTaskStruct } from "../types/interfaces/IRouter";
3
+ import { BigintifyProps } from "../utils/types";
3
4
  export declare enum SwapOperation {
4
5
  EXACT_INPUT = 0,
5
6
  EXACT_INPUT_ALL = 1,
6
7
  EXACT_OUTPUT = 2
7
8
  }
8
9
  export type MultiCall = ExcludeArrayProps<MultiCallStructOutput>;
9
- export type SwapTask = ExcludeArrayProps<SwapTaskStructOutput>;
10
- export interface PathFinderResult {
11
- amount: bigint;
10
+ export type SwapTask = ExcludeArrayProps<SwapTaskStruct>;
11
+ export type PathFinderResult = Omit<BigintifyProps<ExcludeArrayProps<RouterResultStructOutput>>, "calls"> & {
12
12
  calls: Array<MultiCall>;
13
- }
14
- export interface PathFinderOpenStrategyResult {
13
+ };
14
+ export interface PathFinderOpenStrategyResult extends PathFinderResult {
15
15
  balances: Record<string, bigint>;
16
- calls: Array<MultiCall>;
16
+ minBalances: Record<string, bigint>;
17
17
  }
18
- export interface PathFinderCloseResult {
18
+ export interface PathFinderCloseResult extends PathFinderResult {
19
19
  underlyingBalance: bigint;
20
- calls: Array<MultiCall>;
21
20
  }