@gearbox-protocol/sdk 14.12.0-next.6 → 14.12.0-next.8

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 (139) hide show
  1. package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
  2. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  3. package/dist/cjs/plugins/adapters/balanceChanges.js +47 -0
  4. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +35 -0
  5. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +20 -0
  6. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +20 -0
  7. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +16 -0
  8. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +23 -0
  9. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +29 -2
  10. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +27 -0
  11. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +27 -0
  12. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +27 -0
  13. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +27 -0
  14. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +27 -0
  15. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +27 -0
  16. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +15 -0
  17. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +16 -0
  18. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +15 -0
  19. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
  20. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +22 -0
  21. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +11 -0
  22. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +12 -0
  23. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +16 -0
  24. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +16 -0
  25. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +12 -0
  26. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +11 -0
  27. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +13 -0
  28. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +53 -0
  29. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +12 -0
  30. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +23 -1
  31. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +22 -0
  32. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +11 -0
  33. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +11 -0
  34. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +16 -0
  35. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
  36. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +15 -0
  37. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +11 -0
  38. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +16 -0
  39. package/dist/cjs/plugins/adapters/index.js +2 -0
  40. package/dist/cjs/preview/index.js +0 -2
  41. package/dist/cjs/preview/preview/errors.js +16 -0
  42. package/dist/cjs/preview/preview/extractExpectedBalanceChanges.js +33 -11
  43. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +46 -7
  44. package/dist/cjs/preview/preview/unwrapNativeCollateral.js +59 -0
  45. package/dist/cjs/sdk/market/credit/CreditFacadeV310BaseContract.js +31 -0
  46. package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +25 -0
  47. package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
  48. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  49. package/dist/esm/plugins/adapters/balanceChanges.js +21 -0
  50. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +35 -0
  51. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +23 -1
  52. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +23 -1
  53. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +19 -1
  54. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +27 -1
  55. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +31 -2
  56. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +30 -1
  57. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +30 -1
  58. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +30 -1
  59. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +30 -1
  60. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +30 -1
  61. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +30 -1
  62. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +18 -1
  63. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +20 -1
  64. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +18 -1
  65. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
  66. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +25 -1
  67. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +14 -1
  68. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +15 -1
  69. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +19 -1
  70. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +19 -1
  71. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +15 -1
  72. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +14 -1
  73. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +16 -1
  74. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +56 -1
  75. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +15 -1
  76. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +26 -2
  77. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +25 -1
  78. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +14 -1
  79. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +11 -0
  80. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +16 -0
  81. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
  82. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +18 -1
  83. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +14 -1
  84. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +19 -1
  85. package/dist/esm/plugins/adapters/index.js +1 -0
  86. package/dist/esm/preview/index.js +0 -1
  87. package/dist/esm/preview/preview/errors.js +15 -0
  88. package/dist/esm/preview/preview/extractExpectedBalanceChanges.js +33 -11
  89. package/dist/esm/preview/preview/previewOpenCreditAccount.js +54 -8
  90. package/dist/esm/preview/preview/unwrapNativeCollateral.js +35 -0
  91. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +33 -0
  92. package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +27 -1
  93. package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
  94. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  95. package/dist/types/plugins/adapters/balanceChanges.d.ts +21 -0
  96. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +22 -2
  97. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +3 -2
  98. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +3 -2
  99. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +3 -2
  100. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +3 -2
  101. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +7 -6
  102. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -2
  103. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -1
  104. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -2
  105. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +3 -2
  106. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -2
  107. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -2
  108. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +3 -2
  109. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +3 -2
  110. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +3 -2
  111. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +3 -2
  112. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +3 -2
  113. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +3 -2
  114. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +3 -2
  115. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +3 -2
  116. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +3 -2
  117. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +3 -2
  118. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +3 -2
  119. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +3 -2
  120. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +3 -2
  121. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +3 -2
  122. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +14 -3
  123. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +3 -2
  124. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +3 -2
  125. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +2 -1
  126. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +2 -1
  127. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +3 -2
  128. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +3 -2
  129. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +3 -2
  130. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +3 -2
  131. package/dist/types/plugins/adapters/index.d.ts +1 -0
  132. package/dist/types/preview/index.d.ts +0 -1
  133. package/dist/types/preview/preview/errors.d.ts +12 -0
  134. package/dist/types/preview/preview/extractExpectedBalanceChanges.d.ts +26 -14
  135. package/dist/types/preview/preview/types.d.ts +5 -1
  136. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
  137. package/dist/types/sdk/market/credit/CreditFacadeV310BaseContract.d.ts +13 -1
  138. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +13 -1
  139. package/package.json +1 -1
@@ -1,7 +1,10 @@
1
1
  import { iBalancerV3RouterAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import { MissingSerializedParamsError } from "../../../sdk/index.js";
4
6
  import { iBalancerV3RouterAbi } from "../abi/targetContractAbi.js";
7
+ import { clampToLeftover } from "../balanceChanges.js";
5
8
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
9
  var BalancerV3PoolStatus = /* @__PURE__ */ ((BalancerV3PoolStatus2) => {
7
10
  BalancerV3PoolStatus2[BalancerV3PoolStatus2["NOT_ALLOWED"] = 0] = "NOT_ALLOWED";
@@ -69,6 +72,25 @@ class BalancerV3RouterAdapterContract extends AbstractAdapterContract {
69
72
  }))
70
73
  };
71
74
  }
75
+ previewDecodedBalanceChanges(balances, decoded) {
76
+ switch (decoded.functionName) {
77
+ case "swapSingleTokenDiffIn": {
78
+ const [, tokenIn, , leftoverAmount] = decoded.args;
79
+ return clampToLeftover(balances, tokenIn, leftoverAmount);
80
+ }
81
+ // BPT (pool token) is spent down to the leftover
82
+ case "removeLiquiditySingleTokenDiff": {
83
+ const [pool, leftoverAmount] = decoded.args;
84
+ return clampToLeftover(balances, pool, leftoverAmount);
85
+ }
86
+ case "addLiquidityUnbalancedDiff":
87
+ throw new Error(
88
+ `previewBalanceChanges cannot resolve pool tokens for addLiquidityUnbalancedDiff on ${this.contractType} adapter at ${this.address}`
89
+ );
90
+ default:
91
+ return super.previewDecodedBalanceChanges(balances, decoded);
92
+ }
93
+ }
72
94
  }
73
95
  export {
74
96
  BalancerV3PoolStatus,
@@ -1,7 +1,10 @@
1
1
  import { iBalancerV3WrapperAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import { MissingSerializedParamsError } from "../../../sdk/index.js";
4
6
  import { iBalancerV3WrapperAbi } from "../abi/targetContractAbi.js";
7
+ import { clampToLeftover } from "../balanceChanges.js";
5
8
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
9
  const abi = iBalancerV3WrapperAdapterAbi;
7
10
  const protocolAbi = iBalancerV3WrapperAbi;
@@ -32,6 +35,25 @@ class BalancerV3WrapperAdapterContract extends AbstractAdapterContract {
32
35
  balancerPoolToken: this.#balancerPoolToken ? this.labelAddress(this.#balancerPoolToken) : void 0
33
36
  };
34
37
  }
38
+ previewDecodedBalanceChanges(balances, decoded) {
39
+ switch (decoded.functionName) {
40
+ // mint spends the pool token, burn spends the wrapper (target contract)
41
+ case "mintDiff": {
42
+ const [leftoverAmount] = decoded.args;
43
+ return clampToLeftover(
44
+ balances,
45
+ this.balancerPoolToken,
46
+ leftoverAmount
47
+ );
48
+ }
49
+ case "burnDiff": {
50
+ const [leftoverAmount] = decoded.args;
51
+ return clampToLeftover(balances, this.targetContract, leftoverAmount);
52
+ }
53
+ default:
54
+ return super.previewDecodedBalanceChanges(balances, decoded);
55
+ }
56
+ }
35
57
  }
36
58
  export {
37
59
  BalancerV3WrapperAdapterContract
@@ -1,7 +1,10 @@
1
1
  import { iCamelotV3AdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import { MissingSerializedParamsError } from "../../../sdk/index.js";
4
6
  import { iCamelotV3RouterAbi } from "../abi/targetContractAbi.js";
7
+ import { clampToLeftover } from "../balanceChanges.js";
5
8
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
9
  const abi = iCamelotV3AdapterAbi;
7
10
  const protocolAbi = iCamelotV3RouterAbi;
@@ -45,6 +48,21 @@ class CamelotV3AdapterContract extends AbstractAdapterContract {
45
48
  }))
46
49
  };
47
50
  }
51
+ previewDecodedBalanceChanges(balances, decoded) {
52
+ switch (decoded.functionName) {
53
+ case "exactDiffInputSingle": {
54
+ const [params] = decoded.args;
55
+ return clampToLeftover(balances, params.tokenIn, params.leftoverAmount);
56
+ }
57
+ case "exactDiffInput": {
58
+ const [params] = decoded.args;
59
+ const tokenIn = `0x${params.path.replace("0x", "").slice(0, 40)}`;
60
+ return clampToLeftover(balances, tokenIn, params.leftoverAmount);
61
+ }
62
+ default:
63
+ return super.previewDecodedBalanceChanges(balances, decoded);
64
+ }
65
+ }
48
66
  }
49
67
  export {
50
68
  CamelotV3AdapterContract
@@ -1,9 +1,13 @@
1
1
  import { iConvexV1BaseRewardPoolAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters, zeroAddress } from "viem";
2
+ import {
3
+ decodeAbiParameters,
4
+ zeroAddress
5
+ } from "viem";
3
6
  import {
4
7
  MissingSerializedParamsError
5
8
  } from "../../../sdk/index.js";
6
9
  import { iBaseRewardPoolAbi } from "../abi/targetContractAbi.js";
10
+ import { clampToLeftover, copyBalances } from "../balanceChanges.js";
7
11
  import {
8
12
  allTransfersAsTokenAmounts,
9
13
  fnSigToName,
@@ -113,6 +117,28 @@ class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapterContract {
113
117
  withdrawAmount: swap.toAmount
114
118
  };
115
119
  }
120
+ previewDecodedBalanceChanges(balances, decoded) {
121
+ switch (decoded.functionName) {
122
+ case "stakeDiff": {
123
+ const [leftoverAmount] = decoded.args;
124
+ return clampToLeftover(balances, this.stakingToken, leftoverAmount);
125
+ }
126
+ case "withdrawDiff":
127
+ case "withdrawDiffAndUnwrap": {
128
+ const [leftoverAmount] = decoded.args;
129
+ return clampToLeftover(
130
+ balances,
131
+ this.stakedPhantomToken,
132
+ leftoverAmount
133
+ );
134
+ }
135
+ // no accrued rewards on a freshly opened account
136
+ case "getReward":
137
+ return copyBalances(balances);
138
+ default:
139
+ return super.previewDecodedBalanceChanges(balances, decoded);
140
+ }
141
+ }
116
142
  }
117
143
  export {
118
144
  ConvexV1BaseRewardPoolAdapterContract
@@ -1,9 +1,12 @@
1
- import { iConvexV1BoosterAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
1
+ import {
2
+ decodeAbiParameters
3
+ } from "viem";
3
4
  import {
4
5
  MissingSerializedParamsError
5
6
  } from "../../../sdk/index.js";
7
+ import { iConvexV1BoosterAdapterAbi } from "../abi/iConvexV1BoosterAdapter.js";
6
8
  import { iBoosterAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover } from "../balanceChanges.js";
7
10
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iConvexV1BoosterAdapterAbi;
@@ -81,6 +84,32 @@ class ConvexV1BoosterAdapterContract extends AbstractAdapterContract {
81
84
  }
82
85
  return super.classifyLegacyOperation(parsed, transfers);
83
86
  }
87
+ previewDecodedBalanceChanges(balances, decoded) {
88
+ switch (decoded.functionName) {
89
+ // deposit spends the curve LP token, withdraw spends the convex token
90
+ case "depositDiff": {
91
+ const [pid, leftoverAmount] = decoded.args;
92
+ const pool = this.#mustFindPool(Number(pid));
93
+ return clampToLeftover(balances, pool.curveToken, leftoverAmount);
94
+ }
95
+ case "withdrawDiff": {
96
+ const [pid, leftoverAmount] = decoded.args;
97
+ const pool = this.#mustFindPool(Number(pid));
98
+ return clampToLeftover(balances, pool.convexToken, leftoverAmount);
99
+ }
100
+ default:
101
+ return super.previewDecodedBalanceChanges(balances, decoded);
102
+ }
103
+ }
104
+ #mustFindPool(pid) {
105
+ const pool = this.supportedPools.find((p) => p.pid === pid);
106
+ if (!pool) {
107
+ throw new Error(
108
+ `convex pool with pid ${pid} not found on booster adapter at ${this.address}`
109
+ );
110
+ }
111
+ return pool;
112
+ }
84
113
  }
85
114
  export {
86
115
  ConvexV1BoosterAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iCurveV1_2AssetsAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iCurvePool_2Abi, iCurvePoolAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
7
10
  import { classifyCurveOperation } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iCurveV1_2AssetsAdapterAbi;
@@ -86,6 +89,32 @@ class Curve2AssetsAdapterContract extends AbstractAdapterContract {
86
89
  classifyLegacyOperation(parsed, transfers) {
87
90
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
88
91
  }
92
+ previewDecodedBalanceChanges(balances, decoded) {
93
+ switch (decoded.functionName) {
94
+ case "exchange_diff": {
95
+ const [i, , leftoverAmount] = decoded.args;
96
+ return clampToLeftover(
97
+ balances,
98
+ curveCoin(this.tokens, i),
99
+ leftoverAmount
100
+ );
101
+ }
102
+ case "add_diff_liquidity_one_coin": {
103
+ const [leftoverAmount, i] = decoded.args;
104
+ return clampToLeftover(
105
+ balances,
106
+ curveCoin(this.tokens, i),
107
+ leftoverAmount
108
+ );
109
+ }
110
+ case "remove_diff_liquidity_one_coin": {
111
+ const [leftoverAmount] = decoded.args;
112
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
113
+ }
114
+ default:
115
+ return super.previewDecodedBalanceChanges(balances, decoded);
116
+ }
117
+ }
89
118
  }
90
119
  export {
91
120
  Curve2AssetsAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iCurveV1_3AssetsAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iCurvePool_3Abi, iCurvePoolAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
7
10
  import { classifyCurveOperation } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iCurveV1_3AssetsAdapterAbi;
@@ -86,6 +89,32 @@ class Curve3AssetsAdapterContract extends AbstractAdapterContract {
86
89
  classifyLegacyOperation(parsed, transfers) {
87
90
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
88
91
  }
92
+ previewDecodedBalanceChanges(balances, decoded) {
93
+ switch (decoded.functionName) {
94
+ case "exchange_diff": {
95
+ const [i, , leftoverAmount] = decoded.args;
96
+ return clampToLeftover(
97
+ balances,
98
+ curveCoin(this.tokens, i),
99
+ leftoverAmount
100
+ );
101
+ }
102
+ case "add_diff_liquidity_one_coin": {
103
+ const [leftoverAmount, i] = decoded.args;
104
+ return clampToLeftover(
105
+ balances,
106
+ curveCoin(this.tokens, i),
107
+ leftoverAmount
108
+ );
109
+ }
110
+ case "remove_diff_liquidity_one_coin": {
111
+ const [leftoverAmount] = decoded.args;
112
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
113
+ }
114
+ default:
115
+ return super.previewDecodedBalanceChanges(balances, decoded);
116
+ }
117
+ }
89
118
  }
90
119
  export {
91
120
  Curve3AssetsAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iCurveV1_4AssetsAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iCurvePool_4Abi, iCurvePoolAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
7
10
  import { classifyCurveOperation } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iCurveV1_4AssetsAdapterAbi;
@@ -91,6 +94,32 @@ class Curve4AssetsAdapterContract extends AbstractAdapterContract {
91
94
  classifyLegacyOperation(parsed, transfers) {
92
95
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
93
96
  }
97
+ previewDecodedBalanceChanges(balances, decoded) {
98
+ switch (decoded.functionName) {
99
+ case "exchange_diff": {
100
+ const [i, , leftoverAmount] = decoded.args;
101
+ return clampToLeftover(
102
+ balances,
103
+ curveCoin(this.tokens, i),
104
+ leftoverAmount
105
+ );
106
+ }
107
+ case "add_diff_liquidity_one_coin": {
108
+ const [leftoverAmount, i] = decoded.args;
109
+ return clampToLeftover(
110
+ balances,
111
+ curveCoin(this.tokens, i),
112
+ leftoverAmount
113
+ );
114
+ }
115
+ case "remove_diff_liquidity_one_coin": {
116
+ const [leftoverAmount] = decoded.args;
117
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
118
+ }
119
+ default:
120
+ return super.previewDecodedBalanceChanges(balances, decoded);
121
+ }
122
+ }
94
123
  }
95
124
  export {
96
125
  Curve4AssetsAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iCurveV1AdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iCurvePoolAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
7
10
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
8
11
  const abi = iCurveV1AdapterAbi;
9
12
  const protocolAbi = iCurvePoolAbi;
@@ -88,6 +91,32 @@ class CurveV1AdapterDeposit extends AbstractAdapterContract {
88
91
  `classifyLegacyOperation is not supported for legacy adapter: ${this.contractType}`
89
92
  );
90
93
  }
94
+ previewDecodedBalanceChanges(balances, decoded) {
95
+ switch (decoded.functionName) {
96
+ case "exchange_diff": {
97
+ const [i, , leftoverAmount] = decoded.args;
98
+ return clampToLeftover(
99
+ balances,
100
+ curveCoin(this.tokens, i),
101
+ leftoverAmount
102
+ );
103
+ }
104
+ case "add_diff_liquidity_one_coin": {
105
+ const [leftoverAmount, i] = decoded.args;
106
+ return clampToLeftover(
107
+ balances,
108
+ curveCoin(this.tokens, i),
109
+ leftoverAmount
110
+ );
111
+ }
112
+ case "remove_diff_liquidity_one_coin": {
113
+ const [leftoverAmount] = decoded.args;
114
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
115
+ }
116
+ default:
117
+ return super.previewDecodedBalanceChanges(balances, decoded);
118
+ }
119
+ }
91
120
  }
92
121
  export {
93
122
  CurveV1AdapterDeposit
@@ -1,9 +1,12 @@
1
1
  import { iCurveV1_2AssetsAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iCurvePool_2Abi, iCurvePoolAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
7
10
  import { classifyCurveOperation } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iCurveV1_2AssetsAdapterAbi;
@@ -69,6 +72,32 @@ class CurveV1AdapterStETHContract extends AbstractAdapterContract {
69
72
  classifyLegacyOperation(parsed, transfers) {
70
73
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
71
74
  }
75
+ previewDecodedBalanceChanges(balances, decoded) {
76
+ switch (decoded.functionName) {
77
+ case "exchange_diff": {
78
+ const [i, , leftoverAmount] = decoded.args;
79
+ return clampToLeftover(
80
+ balances,
81
+ curveCoin(this.tokens, i),
82
+ leftoverAmount
83
+ );
84
+ }
85
+ case "add_diff_liquidity_one_coin": {
86
+ const [leftoverAmount, i] = decoded.args;
87
+ return clampToLeftover(
88
+ balances,
89
+ curveCoin(this.tokens, i),
90
+ leftoverAmount
91
+ );
92
+ }
93
+ case "remove_diff_liquidity_one_coin": {
94
+ const [leftoverAmount] = decoded.args;
95
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
96
+ }
97
+ default:
98
+ return super.previewDecodedBalanceChanges(balances, decoded);
99
+ }
100
+ }
72
101
  }
73
102
  export {
74
103
  CurveV1AdapterStETHContract
@@ -1,5 +1,7 @@
1
1
  import { iCurveV1StableNgAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
@@ -7,6 +9,7 @@ import {
7
9
  iCurvePoolAbi,
8
10
  iCurvePoolStableNGAbi
9
11
  } from "../abi/targetContractAbi.js";
12
+ import { clampToLeftover, curveCoin } from "../balanceChanges.js";
10
13
  import { classifyCurveOperation } from "../transferHelpers.js";
11
14
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
12
15
  const abi = iCurveV1StableNgAdapterAbi;
@@ -102,6 +105,32 @@ class CurveV1StableNGAdapterContract extends AbstractAdapterContract {
102
105
  classifyLegacyOperation(parsed, transfers) {
103
106
  return classifyCurveOperation(parsed.functionName, transfers) ?? super.classifyLegacyOperation(parsed, transfers);
104
107
  }
108
+ previewDecodedBalanceChanges(balances, decoded) {
109
+ switch (decoded.functionName) {
110
+ case "exchange_diff": {
111
+ const [i, , leftoverAmount] = decoded.args;
112
+ return clampToLeftover(
113
+ balances,
114
+ curveCoin(this.tokens, i),
115
+ leftoverAmount
116
+ );
117
+ }
118
+ case "add_diff_liquidity_one_coin": {
119
+ const [leftoverAmount, i] = decoded.args;
120
+ return clampToLeftover(
121
+ balances,
122
+ curveCoin(this.tokens, i),
123
+ leftoverAmount
124
+ );
125
+ }
126
+ case "remove_diff_liquidity_one_coin": {
127
+ const [leftoverAmount] = decoded.args;
128
+ return clampToLeftover(balances, this.lpToken, leftoverAmount);
129
+ }
130
+ default:
131
+ return super.previewDecodedBalanceChanges(balances, decoded);
132
+ }
133
+ }
105
134
  }
106
135
  export {
107
136
  CurveV1StableNGAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iDaiUsdsAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iDaiUsdsAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover } from "../balanceChanges.js";
7
10
  import { swapFromTransfers } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = iDaiUsdsAdapterAbi;
@@ -53,6 +56,20 @@ class DaiUsdsAdapterContract extends AbstractAdapterContract {
53
56
  }
54
57
  return super.classifyLegacyOperation(parsed, transfers);
55
58
  }
59
+ previewDecodedBalanceChanges(balances, decoded) {
60
+ switch (decoded.functionName) {
61
+ case "daiToUsdsDiff": {
62
+ const [leftoverAmount] = decoded.args;
63
+ return clampToLeftover(balances, this.dai, leftoverAmount);
64
+ }
65
+ case "usdsToDaiDiff": {
66
+ const [leftoverAmount] = decoded.args;
67
+ return clampToLeftover(balances, this.usds, leftoverAmount);
68
+ }
69
+ default:
70
+ return super.previewDecodedBalanceChanges(balances, decoded);
71
+ }
72
+ }
56
73
  }
57
74
  export {
58
75
  DaiUsdsAdapterContract
@@ -1,9 +1,13 @@
1
1
  import { ierc4626AdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters, zeroAddress } from "viem";
2
+ import {
3
+ decodeAbiParameters,
4
+ zeroAddress
5
+ } from "viem";
3
6
  import {
4
7
  MissingSerializedParamsError
5
8
  } from "../../../sdk/index.js";
6
9
  import { iERC4626Abi } from "../abi/targetContractAbi.js";
10
+ import { clampToLeftover } from "../balanceChanges.js";
7
11
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
8
12
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
13
  const abi = ierc4626AdapterAbi;
@@ -70,6 +74,21 @@ class ERC4626AdapterContract extends AbstractAdapterContract {
70
74
  }
71
75
  return super.classifyLegacyOperation(parsed, transfers);
72
76
  }
77
+ previewDecodedBalanceChanges(balances, decoded) {
78
+ const share = this.#vault && this.#vault !== zeroAddress ? this.#vault : this.targetContract;
79
+ switch (decoded.functionName) {
80
+ case "depositDiff": {
81
+ const [leftoverAmount] = decoded.args;
82
+ return clampToLeftover(balances, this.asset, leftoverAmount);
83
+ }
84
+ case "redeemDiff": {
85
+ const [leftoverAmount] = decoded.args;
86
+ return clampToLeftover(balances, share, leftoverAmount);
87
+ }
88
+ default:
89
+ return super.previewDecodedBalanceChanges(balances, decoded);
90
+ }
91
+ }
73
92
  }
74
93
  export {
75
94
  ERC4626AdapterContract
@@ -1,9 +1,12 @@
1
1
  import { erc4626ReferralAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iERC4626ReferralAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover } from "../balanceChanges.js";
7
10
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
8
11
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
9
12
  const abi = erc4626ReferralAdapterAbi;
@@ -53,6 +56,20 @@ class ERC4626ReferralAdapterContract extends AbstractAdapterContract {
53
56
  }
54
57
  return super.classifyLegacyOperation(parsed, transfers);
55
58
  }
59
+ previewDecodedBalanceChanges(balances, decoded) {
60
+ switch (decoded.functionName) {
61
+ case "depositDiff": {
62
+ const [leftoverAmount] = decoded.args;
63
+ return clampToLeftover(balances, this.asset, leftoverAmount);
64
+ }
65
+ case "redeemDiff": {
66
+ const [leftoverAmount] = decoded.args;
67
+ return clampToLeftover(balances, this.targetContract, leftoverAmount);
68
+ }
69
+ default:
70
+ return super.previewDecodedBalanceChanges(balances, decoded);
71
+ }
72
+ }
56
73
  }
57
74
  export {
58
75
  ERC4626ReferralAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iFluidDexAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iFluidDexAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover } from "../balanceChanges.js";
7
10
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
8
11
  const abi = iFluidDexAdapterAbi;
9
12
  const protocolAbi = iFluidDexAbi;
@@ -41,6 +44,20 @@ class FluidDexAdapterContract extends AbstractAdapterContract {
41
44
  token1: this.#token1 ? this.labelAddress(this.#token1) : void 0
42
45
  };
43
46
  }
47
+ previewDecodedBalanceChanges(balances, decoded) {
48
+ switch (decoded.functionName) {
49
+ case "swapInDiff": {
50
+ const [swap0to1, leftoverAmount] = decoded.args;
51
+ return clampToLeftover(
52
+ balances,
53
+ swap0to1 ? this.token0 : this.token1,
54
+ leftoverAmount
55
+ );
56
+ }
57
+ default:
58
+ return super.previewDecodedBalanceChanges(balances, decoded);
59
+ }
60
+ }
44
61
  }
45
62
  export {
46
63
  FluidDexAdapterContract
@@ -1,9 +1,12 @@
1
1
  import { iInfinifiGatewayAdapterAbi } from "@gearbox-protocol/integrations-v3";
2
- import { decodeAbiParameters } from "viem";
2
+ import {
3
+ decodeAbiParameters
4
+ } from "viem";
3
5
  import {
4
6
  MissingSerializedParamsError
5
7
  } from "../../../sdk/index.js";
6
8
  import { iInfinifiGatewayAbi } from "../abi/targetContractAbi.js";
9
+ import { clampToLeftover } from "../balanceChanges.js";
7
10
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
8
11
  const abi = iInfinifiGatewayAdapterAbi;
9
12
  const protocolAbi = iInfinifiGatewayAbi;
@@ -63,6 +66,27 @@ class InfinifiGatewayAdapterContract extends AbstractAdapterContract {
63
66
  )
64
67
  };
65
68
  }
69
+ previewDecodedBalanceChanges(balances, decoded) {
70
+ switch (decoded.functionName) {
71
+ case "mintDiff": {
72
+ const [leftoverAmount] = decoded.args;
73
+ return clampToLeftover(balances, this.usdc, leftoverAmount);
74
+ }
75
+ // redeem, stake and lock all spend iUSD
76
+ case "redeemDiff":
77
+ case "stakeDiff":
78
+ case "createPositionDiff": {
79
+ const [leftoverAmount] = decoded.args;
80
+ return clampToLeftover(balances, this.iusd, leftoverAmount);
81
+ }
82
+ case "unstakeDiff": {
83
+ const [leftoverAmount] = decoded.args;
84
+ return clampToLeftover(balances, this.siusd, leftoverAmount);
85
+ }
86
+ default:
87
+ return super.previewDecodedBalanceChanges(balances, decoded);
88
+ }
89
+ }
66
90
  }
67
91
  export {
68
92
  InfinifiGatewayAdapterContract