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

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 (161) 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.d.ts +1 -0
  5. package/lib/core/creditManager.js +7 -1
  6. package/lib/core/trade.d.ts +9 -8
  7. package/lib/core/trade.js +25 -22
  8. package/lib/core/transactions.d.ts +16 -1
  9. package/lib/core/transactions.js +27 -1
  10. package/lib/parsers/convexBaseRewardPoolAdapterParser.js +10 -8
  11. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +9 -6
  12. package/lib/parsers/convexBoosterAdapterParser.js +6 -6
  13. package/lib/parsers/convexBoosterAdapterParser.spec.js +4 -4
  14. package/lib/parsers/curveAdapterParser.js +10 -10
  15. package/lib/parsers/curveAdapterParser.spec.js +6 -2
  16. package/lib/parsers/lidoAdapterParser.js +3 -2
  17. package/lib/parsers/lidoAdapterParser.spec.js +2 -2
  18. package/lib/parsers/uniV2AdapterParser.js +4 -3
  19. package/lib/parsers/uniV2AdapterParser.spec.js +3 -2
  20. package/lib/parsers/uniV3AdapterParser.js +8 -6
  21. package/lib/parsers/uniV3AdapterParser.spec.js +3 -2
  22. package/lib/parsers/wstETHAdapterParser.js +6 -4
  23. package/lib/parsers/wstETHAdapterParser.spec.js +4 -4
  24. package/lib/parsers/yearnAdapterParser.spec.js +4 -4
  25. package/lib/parsers/yearnV2AdapterParser.js +13 -3
  26. package/lib/pathfinder/core.d.ts +8 -9
  27. package/lib/pathfinder/pathfinder.d.ts +37 -10
  28. package/lib/pathfinder/pathfinder.js +45 -33
  29. package/lib/pathfinder/pathfinder.spec.js +4 -2
  30. package/lib/payload/creditAccount.d.ts +1 -2
  31. package/lib/types/IAaveV2_LendingPoolAdapter.d.ts +171 -0
  32. package/lib/types/IAaveV2_WrappedATokenAdapter.d.ts +290 -0
  33. package/lib/types/IBalancerV2Vault.sol/IBalancerV2Vault.d.ts +308 -0
  34. package/lib/types/IBalancerV2Vault.sol/IBalancerV2VaultGetters.d.ts +112 -0
  35. package/lib/types/IBalancerV2Vault.sol/index.d.ts +2 -0
  36. package/lib/types/IBalancerV2Vault.sol/index.js +2 -0
  37. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.d.ts +466 -0
  38. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.js +2 -0
  39. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.d.ts +43 -0
  40. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.js +2 -0
  41. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.d.ts +27 -0
  42. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.js +2 -0
  43. package/lib/types/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  44. package/lib/types/IBalancerV2VaultAdapter.sol/index.js +2 -0
  45. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.d.ts +216 -0
  46. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.js +2 -0
  47. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.d.ts +27 -0
  48. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.js +2 -0
  49. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  50. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.js +2 -0
  51. package/lib/types/IConvexV1BaseRewardPoolAdapter.d.ts +30 -30
  52. package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.d.ts +21 -17
  53. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3.d.ts +45 -85
  54. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3Events.d.ts +24 -26
  55. package/lib/types/ICreditFacadeV3Multicall.d.ts +32 -40
  56. package/lib/types/ICreditManagerV3.sol/ICreditManagerV3.d.ts +99 -71
  57. package/lib/types/ICurveV1Adapter.d.ts +41 -105
  58. package/lib/types/ICurveV1_2AssetsAdapter.d.ts +41 -105
  59. package/lib/types/ICurveV1_3AssetsAdapter.d.ts +41 -105
  60. package/lib/types/ICurveV1_4AssetsAdapter.d.ts +41 -105
  61. package/lib/types/IDataCompressorV2_10.d.ts +1 -27
  62. package/lib/types/IDataCompressorV3_00.d.ts +1 -27
  63. package/lib/types/IERC4626Adapter.d.ts +238 -0
  64. package/lib/types/IERC4626Adapter.js +2 -0
  65. package/lib/types/ILidoV1Adapter.d.ts +9 -9
  66. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.d.ts +39 -14
  67. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.d.ts +5 -3
  68. package/lib/types/IUniswapV2Adapter.sol/IUniswapV2Adapter.d.ts +10 -9
  69. package/lib/types/IUniswapV3Adapter.sol/IUniswapV3Adapter.d.ts +27 -21
  70. package/lib/types/IYearnV2Adapter.d.ts +22 -22
  71. package/lib/types/IwstETHV1Adapter.d.ts +17 -17
  72. package/lib/types/factories/IAaveV2_LendingPoolAdapter__factory.d.ts +158 -0
  73. package/lib/types/factories/IAaveV2_LendingPoolAdapter__factory.js +215 -0
  74. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.d.ts +252 -0
  75. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.js +341 -0
  76. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.d.ts +78 -0
  77. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.js +111 -0
  78. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.d.ts +360 -0
  79. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.js +475 -0
  80. package/lib/types/factories/IBalancerV2Vault.sol/index.d.ts +2 -0
  81. package/lib/types/factories/IBalancerV2Vault.sol/index.js +10 -0
  82. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.d.ts +23 -0
  83. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.js +38 -0
  84. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.d.ts +12 -0
  85. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.js +24 -0
  86. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.d.ts +514 -0
  87. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.js +675 -0
  88. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  89. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.js +12 -0
  90. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.d.ts +196 -0
  91. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.js +267 -0
  92. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.d.ts +16 -0
  93. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.js +30 -0
  94. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  95. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.js +10 -0
  96. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.d.ts +18 -6
  97. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.js +22 -6
  98. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.d.ts +10 -2
  99. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.js +12 -2
  100. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.d.ts +13 -18
  101. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.js +14 -20
  102. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.d.ts +13 -70
  103. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.js +14 -86
  104. package/lib/types/factories/ICreditFacadeV3Multicall__factory.d.ts +22 -24
  105. package/lib/types/factories/ICreditFacadeV3Multicall__factory.js +28 -31
  106. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.d.ts +153 -135
  107. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.js +191 -168
  108. package/lib/types/factories/ICurveV1Adapter__factory.d.ts +13 -71
  109. package/lib/types/factories/ICurveV1Adapter__factory.js +14 -91
  110. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.d.ts +13 -71
  111. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.js +14 -91
  112. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.d.ts +13 -71
  113. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.js +14 -91
  114. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.d.ts +13 -71
  115. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.js +14 -91
  116. package/lib/types/factories/IDataCompressorV2_10__factory.d.ts +0 -42
  117. package/lib/types/factories/IDataCompressorV2_10__factory.js +0 -54
  118. package/lib/types/factories/IDataCompressorV3_00__factory.d.ts +0 -84
  119. package/lib/types/factories/IDataCompressorV3_00__factory.js +0 -108
  120. package/lib/types/factories/IERC4626Adapter__factory.d.ts +220 -0
  121. package/lib/types/factories/IERC4626Adapter__factory.js +297 -0
  122. package/lib/types/factories/ILidoV1Adapter__factory.d.ts +6 -2
  123. package/lib/types/factories/ILidoV1Adapter__factory.js +8 -2
  124. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.d.ts +5 -0
  125. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.js +6 -0
  126. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.d.ts +45 -0
  127. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.js +59 -0
  128. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.d.ts +5 -1
  129. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.js +6 -1
  130. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.d.ts +12 -4
  131. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.js +14 -4
  132. package/lib/types/factories/IYearnV2Adapter__factory.d.ts +21 -13
  133. package/lib/types/factories/IYearnV2Adapter__factory.js +27 -15
  134. package/lib/types/factories/IwstETHV1Adapter__factory.d.ts +12 -4
  135. package/lib/types/factories/IwstETHV1Adapter__factory.js +16 -4
  136. package/lib/types/factories/index.d.ts +7 -2
  137. package/lib/types/factories/index.js +12 -5
  138. package/lib/types/factories/{IRouter__factory.d.ts → interfaces/IRouter__factory.d.ts} +61 -6
  139. package/lib/types/factories/{IRouter__factory.js → interfaces/IRouter__factory.js} +77 -6
  140. package/lib/types/factories/interfaces/index.d.ts +1 -0
  141. package/lib/types/factories/interfaces/index.js +8 -0
  142. package/lib/types/index.d.ts +39 -17
  143. package/lib/types/index.js +39 -23
  144. package/lib/types/{IRouter.d.ts → interfaces/IRouter.d.ts} +37 -34
  145. package/lib/types/interfaces/IRouter.js +2 -0
  146. package/lib/types/interfaces/index.d.ts +1 -0
  147. package/lib/types/interfaces/index.js +2 -0
  148. package/package.json +6 -6
  149. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3.d.ts +0 -370
  150. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.d.ts +0 -133
  151. package/lib/types/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  152. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.d.ts +0 -143
  153. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.js +0 -188
  154. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.d.ts +0 -366
  155. package/lib/types/factories/IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.js +0 -479
  156. package/lib/types/factories/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  157. package/lib/types/factories/IWithdrawalManagerV3.sol/index.js +0 -10
  158. /package/lib/types/{IRouter.js → IAaveV2_LendingPoolAdapter.js} +0 -0
  159. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3.js → IAaveV2_WrappedATokenAdapter.js} +0 -0
  160. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.js → IBalancerV2Vault.sol/IBalancerV2Vault.js} +0 -0
  161. /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;
@@ -51,6 +51,7 @@ export declare class CreditManagerData {
51
51
  encodeRevertIfReceivedLessThanV2(assets: Array<Asset>): MultiCall;
52
52
  encodeRevertIfReceivedLessThanV3(assets: Array<Asset>): MultiCall;
53
53
  encodeUpdateQuotaV3(token: string, quotaChange: bigint, minQuota: bigint): MultiCall;
54
+ encodeWithdrawCollateralV3(token: string, amount: bigint, to: string): MultiCall;
54
55
  static withdrawAllAndUnwrap_Convex(address: string, claim: boolean): MultiCall;
55
56
  }
56
57
  export declare class ChartsCreditManagerData {
@@ -200,10 +200,16 @@ class CreditManagerData {
200
200
  callData: types_1.ICreditFacadeV3Multicall__factory.createInterface().encodeFunctionData("updateQuota", [token, quotaChange, minQuota]),
201
201
  };
202
202
  }
203
+ encodeWithdrawCollateralV3(token, amount, to) {
204
+ return {
205
+ target: this.creditFacade,
206
+ callData: types_1.ICreditFacadeV3Multicall__factory.createInterface().encodeFunctionData("withdrawCollateral", [token, amount, to]),
207
+ };
208
+ }
203
209
  static withdrawAllAndUnwrap_Convex(address, claim) {
204
210
  return {
205
211
  target: address,
206
- callData: types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface().encodeFunctionData("withdrawAllAndUnwrap", [claim]),
212
+ callData: types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface().encodeFunctionData("withdrawDiffAndUnwrap", [1, claim]),
207
213
  };
208
214
  }
209
215
  }
@@ -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
  });
@@ -2,7 +2,7 @@ import { SupportedContract } from "@gearbox-protocol/sdk-gov";
2
2
  import { Asset } from "./assets";
3
3
  import { EVMTx, EVMTxProps } from "./eventOrTx";
4
4
  export interface TxSerialized {
5
- type: "TxAddLiquidity" | "TxRemoveLiquidity" | "TxSwap" | "TxAddCollateral" | "TxIncreaseBorrowAmount" | "TxDecreaseBorrowAmount" | "TxOpenAccount" | "TxRepayAccount" | "TxCloseAccount" | "TxApprove" | "TxOpenMultitokenAccount" | "TxClaimReward" | "TxClaimNFT" | "TxClaimGearRewards" | "TxEnableTokens" | "TxUpdateQuota" | "TxGaugeStake" | "TxGaugeUnstake" | "TxGaugeClaim" | "TxGaugeVote";
5
+ type: "TxAddLiquidity" | "TxRemoveLiquidity" | "TxSwap" | "TxAddCollateral" | "TxIncreaseBorrowAmount" | "TxDecreaseBorrowAmount" | "TxOpenAccount" | "TxRepayAccount" | "TxCloseAccount" | "TxApprove" | "TxOpenMultitokenAccount" | "TxClaimReward" | "TxClaimNFT" | "TxClaimGearRewards" | "TxEnableTokens" | "TxUpdateQuota" | "TxGaugeStake" | "TxGaugeUnstake" | "TxGaugeClaim" | "TxGaugeVote" | "TxWithdrawCollateral";
6
6
  content: string;
7
7
  }
8
8
  export declare class TxSerializer {
@@ -237,4 +237,19 @@ export declare class TxGaugeVote extends EVMTx {
237
237
  toString(): string;
238
238
  serialize(): TxSerialized;
239
239
  }
240
+ interface WithdrawCollateralProps extends EVMTxProps {
241
+ amount: bigint;
242
+ token: string;
243
+ to: string;
244
+ creditManager: string;
245
+ }
246
+ export declare class TxWithdrawCollateral extends EVMTx {
247
+ readonly amount: bigint;
248
+ readonly token: string;
249
+ readonly to: string;
250
+ readonly creditManager: string;
251
+ constructor(opts: WithdrawCollateralProps);
252
+ toString(): string;
253
+ serialize(): TxSerialized;
254
+ }
240
255
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TxGaugeVote = exports.TxGaugeClaim = exports.TxGaugeUnstake = exports.TxGaugeStake = exports.TxUpdateQuota = exports.TxEnableTokens = exports.TxApprove = exports.TxCloseAccount = exports.TxRepayAccount = exports.TxClaimGearRewards = exports.TxClaimNFT = exports.TxClaimReward = exports.TxOpenMultitokenAccount = exports.TxOpenAccount = exports.TxDecreaseBorrowAmount = exports.TxIncreaseBorrowAmount = exports.TxAddCollateral = exports.TXSwap = exports.TxRemoveLiquidity = exports.TxAddLiquidity = exports.TxSerializer = void 0;
3
+ exports.TxWithdrawCollateral = exports.TxGaugeVote = exports.TxGaugeClaim = exports.TxGaugeUnstake = exports.TxGaugeStake = exports.TxUpdateQuota = exports.TxEnableTokens = exports.TxApprove = exports.TxCloseAccount = exports.TxRepayAccount = exports.TxClaimGearRewards = exports.TxClaimNFT = exports.TxClaimReward = exports.TxOpenMultitokenAccount = exports.TxOpenAccount = exports.TxDecreaseBorrowAmount = exports.TxIncreaseBorrowAmount = exports.TxAddCollateral = exports.TXSwap = exports.TxRemoveLiquidity = exports.TxAddLiquidity = exports.TxSerializer = void 0;
4
4
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
5
5
  const contractsRegister_1 = require("../contracts/contractsRegister");
6
6
  const math_1 = require("../utils/math");
@@ -53,6 +53,8 @@ class TxSerializer {
53
53
  return new TxGaugeClaim(params);
54
54
  case "TxGaugeVote":
55
55
  return new TxGaugeVote(params);
56
+ case "TxWithdrawCollateral":
57
+ return new TxWithdrawCollateral(params);
56
58
  default:
57
59
  throw new Error(`Unknown transaction for parsing: ${e.type}`);
58
60
  }
@@ -501,3 +503,27 @@ class TxGaugeVote extends eventOrTx_1.EVMTx {
501
503
  }
502
504
  }
503
505
  exports.TxGaugeVote = TxGaugeVote;
506
+ class TxWithdrawCollateral extends eventOrTx_1.EVMTx {
507
+ amount;
508
+ token;
509
+ to;
510
+ creditManager;
511
+ constructor(opts) {
512
+ super(opts);
513
+ this.amount = opts.amount;
514
+ this.token = opts.token;
515
+ this.to = opts.to;
516
+ this.creditManager = opts.creditManager;
517
+ }
518
+ toString() {
519
+ const [symbol, decimals] = (0, sdk_gov_1.extractTokenData)(this.token);
520
+ return `Credit account ${(0, contractsRegister_1.getContractName)(this.creditManager)}: withdrawn ${(0, sdk_gov_1.formatBN)(this.amount, decimals || 18)} ${symbol}`;
521
+ }
522
+ serialize() {
523
+ return {
524
+ type: "TxWithdrawCollateral",
525
+ content: JSON.stringify(this),
526
+ };
527
+ }
528
+ }
529
+ exports.TxWithdrawCollateral = TxWithdrawCollateral;
@@ -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)");