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

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 (184) hide show
  1. package/dist/cjs/dev/AccountOpener.js +7 -13
  2. package/dist/cjs/history/classifyMulticallOperations.js +2 -0
  3. package/dist/cjs/history/mapOperations.js +7 -0
  4. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +10 -9
  5. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
  6. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +4 -5
  7. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +4 -9
  8. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +9 -5
  9. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +5 -10
  10. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +4 -5
  11. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -34
  12. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -34
  13. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -34
  14. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -29
  15. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -34
  16. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -34
  17. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +4 -5
  18. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +4 -5
  19. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +4 -5
  20. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
  21. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +5 -6
  22. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -5
  23. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +3 -4
  24. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +4 -5
  25. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +4 -5
  26. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +3 -4
  27. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +3 -4
  28. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +3 -4
  29. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +16 -11
  30. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +3 -4
  31. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +3 -4
  32. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +5 -10
  33. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +3 -4
  34. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +3 -4
  35. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +9 -5
  36. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
  37. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +4 -5
  38. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +3 -4
  39. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +4 -5
  40. package/dist/cjs/plugins/adapters/index.js +0 -2
  41. package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
  42. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +3 -8
  43. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +51 -59
  44. package/dist/cjs/preview/preview/unwrapNativeCollateral.js +10 -24
  45. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +3 -4
  46. package/dist/cjs/sdk/base/BaseContract.js +4 -2
  47. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
  48. package/dist/cjs/sdk/market/credit/CreditFacadeV310BaseContract.js +0 -31
  49. package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +0 -25
  50. package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
  51. package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
  52. package/dist/cjs/sdk/router/helpers.js +0 -5
  53. package/dist/cjs/sdk/utils/AddressMap.js +6 -0
  54. package/dist/cjs/sdk/utils/AssetsMap.js +61 -0
  55. package/dist/cjs/sdk/utils/index.js +2 -0
  56. package/dist/esm/dev/AccountOpener.js +8 -13
  57. package/dist/esm/history/classifyMulticallOperations.js +2 -0
  58. package/dist/esm/history/mapOperations.js +7 -0
  59. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +10 -9
  60. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
  61. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +4 -5
  62. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +4 -9
  63. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +9 -5
  64. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +5 -10
  65. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +4 -5
  66. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +3 -37
  67. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +3 -37
  68. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +3 -37
  69. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +3 -32
  70. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +3 -37
  71. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +3 -37
  72. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +4 -5
  73. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +4 -5
  74. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +4 -5
  75. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
  76. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +5 -6
  77. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -5
  78. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +3 -4
  79. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +4 -5
  80. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +4 -5
  81. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +3 -4
  82. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +3 -4
  83. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +3 -4
  84. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +16 -11
  85. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +3 -4
  86. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +3 -4
  87. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +5 -10
  88. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +3 -4
  89. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +3 -4
  90. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +9 -5
  91. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
  92. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +4 -5
  93. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +3 -4
  94. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +4 -5
  95. package/dist/esm/plugins/adapters/index.js +0 -1
  96. package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
  97. package/dist/esm/preview/prerequisites/buildPrerequisites.js +4 -8
  98. package/dist/esm/preview/preview/previewOpenCreditAccount.js +54 -67
  99. package/dist/esm/preview/preview/unwrapNativeCollateral.js +11 -25
  100. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -5
  101. package/dist/esm/sdk/base/BaseContract.js +4 -2
  102. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
  103. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +0 -33
  104. package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +1 -27
  105. package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
  106. package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
  107. package/dist/esm/sdk/router/helpers.js +0 -4
  108. package/dist/esm/sdk/utils/AddressMap.js +6 -0
  109. package/dist/esm/sdk/utils/AssetsMap.js +37 -0
  110. package/dist/esm/sdk/utils/index.js +1 -0
  111. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
  112. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
  113. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
  114. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
  115. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
  116. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
  117. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
  118. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
  119. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
  120. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
  121. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
  122. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +9 -11
  123. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
  124. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -1
  125. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -1
  126. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -1
  127. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -1
  128. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -1
  129. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +4 -8
  130. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +4 -9
  131. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +4 -8
  132. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +4 -5
  133. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +4 -8
  134. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +4 -8
  135. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -1
  136. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -1
  137. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -1
  138. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -1
  139. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -1
  140. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -1
  141. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -1
  142. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -1
  143. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -1
  144. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -1
  145. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -1
  146. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -1
  147. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -1
  148. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +2 -1
  149. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +2 -1
  150. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -1
  151. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -1
  152. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +2 -1
  153. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +2 -1
  154. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -1
  155. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -1
  156. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -1
  157. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -1
  158. package/dist/types/plugins/adapters/index.d.ts +0 -1
  159. package/dist/types/plugins/adapters/types.d.ts +10 -0
  160. package/dist/types/preview/parse/types-adapters.d.ts +5 -1
  161. package/dist/types/preview/parse/types-facades.d.ts +23 -1
  162. package/dist/types/preview/preview/types.d.ts +4 -0
  163. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +2 -2
  164. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  165. package/dist/types/sdk/accounts/types.d.ts +2 -2
  166. package/dist/types/sdk/base/BaseContract.d.ts +1 -1
  167. package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
  168. package/dist/types/sdk/base/types.d.ts +18 -0
  169. package/dist/types/sdk/market/credit/CreditFacadeV310BaseContract.d.ts +1 -13
  170. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +1 -13
  171. package/dist/types/sdk/pools/types.d.ts +1 -1
  172. package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
  173. package/dist/types/sdk/router/helpers.d.ts +1 -2
  174. package/dist/types/sdk/router/types.d.ts +1 -15
  175. package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
  176. package/dist/types/sdk/utils/AssetsMap.d.ts +26 -0
  177. package/dist/types/sdk/utils/index.d.ts +1 -0
  178. package/package.json +1 -1
  179. package/dist/cjs/plugins/adapters/balanceChanges.js +0 -47
  180. package/dist/cjs/preview/preview/extractExpectedBalanceChanges.js +0 -70
  181. package/dist/esm/plugins/adapters/balanceChanges.js +0 -21
  182. package/dist/esm/preview/preview/extractExpectedBalanceChanges.js +0 -46
  183. package/dist/types/plugins/adapters/balanceChanges.d.ts +0 -21
  184. package/dist/types/preview/preview/extractExpectedBalanceChanges.d.ts +0 -33
@@ -25,7 +25,6 @@ var import_integrations_v3 = require("@gearbox-protocol/integrations-v3");
25
25
  var import_viem = require("viem");
26
26
  var import_sdk = require("../../../sdk/index.js");
27
27
  var import_targetContractAbi = require("../abi/targetContractAbi.js");
28
- var import_balanceChanges = require("../balanceChanges.js");
29
28
  var import_AbstractAdapter = require("./AbstractAdapter.js");
30
29
  const abi = import_integrations_v3.iUniswapV3AdapterAbi;
31
30
  const protocolAbi = import_targetContractAbi.iUniswapV3Abi;
@@ -72,19 +71,24 @@ class UniswapV3AdapterContract extends import_AbstractAdapter.AbstractAdapterCon
72
71
  }))
73
72
  };
74
73
  }
75
- previewDecodedBalanceChanges(balances, decoded) {
74
+ decodeDiffLeftovers(decoded, balances) {
76
75
  switch (decoded.functionName) {
77
76
  case "exactDiffInputSingle": {
78
77
  const [params] = decoded.args;
79
- return (0, import_balanceChanges.clampToLeftover)(balances, params.tokenIn, params.leftoverAmount);
78
+ return [
79
+ {
80
+ tokenIn: params.tokenIn,
81
+ leftoverAmount: params.leftoverAmount
82
+ }
83
+ ];
80
84
  }
81
85
  case "exactDiffInput": {
82
86
  const [params] = decoded.args;
83
87
  const tokenIn = `0x${params.path.replace("0x", "").slice(0, 40)}`;
84
- return (0, import_balanceChanges.clampToLeftover)(balances, tokenIn, params.leftoverAmount);
88
+ return [{ tokenIn, leftoverAmount: params.leftoverAmount }];
85
89
  }
86
90
  default:
87
- return super.previewDecodedBalanceChanges(balances, decoded);
91
+ return super.decodeDiffLeftovers(decoded, balances);
88
92
  }
89
93
  }
90
94
  stringifyFunctionParams(params) {
@@ -24,7 +24,6 @@ module.exports = __toCommonJS(UniswapV4AdapterContract_exports);
24
24
  var import_integrations_v3 = require("@gearbox-protocol/integrations-v3");
25
25
  var import_viem = require("viem");
26
26
  var import_sdk = require("../../../sdk/index.js");
27
- var import_balanceChanges = require("../balanceChanges.js");
28
27
  var import_transferHelpers = require("../transferHelpers.js");
29
28
  var import_AbstractAdapter = require("./AbstractAdapter.js");
30
29
  const abi = import_integrations_v3.iUniswapV4AdapterAbi;
@@ -82,18 +81,19 @@ class UniswapV4AdapterContract extends import_AbstractAdapter.AbstractAdapterCon
82
81
  classifyLegacyOperation(_parsed, transfers) {
83
82
  return { operation: "UniswapSwap", ...(0, import_transferHelpers.swapFromTransfers)(transfers) };
84
83
  }
85
- previewDecodedBalanceChanges(balances, decoded) {
84
+ decodeDiffLeftovers(decoded, balances) {
86
85
  switch (decoded.functionName) {
87
86
  case "swapExactInputSingleDiff": {
88
87
  const [poolKey, zeroForOne, leftoverAmount] = decoded.args;
89
- return (0, import_balanceChanges.clampToLeftover)(
90
- balances,
91
- zeroForOne ? poolKey.token0 : poolKey.token1,
92
- leftoverAmount
93
- );
88
+ return [
89
+ {
90
+ tokenIn: zeroForOne ? poolKey.token0 : poolKey.token1,
91
+ leftoverAmount
92
+ }
93
+ ];
94
94
  }
95
95
  default:
96
- return super.previewDecodedBalanceChanges(balances, decoded);
96
+ return super.decodeDiffLeftovers(decoded, balances);
97
97
  }
98
98
  }
99
99
  }
@@ -24,7 +24,6 @@ module.exports = __toCommonJS(UpshiftVaultAdapterContract_exports);
24
24
  var import_integrations_v3 = require("@gearbox-protocol/integrations-v3");
25
25
  var import_viem = require("viem");
26
26
  var import_sdk = require("../../../sdk/index.js");
27
- var import_balanceChanges = require("../balanceChanges.js");
28
27
  var import_AbstractAdapter = require("./AbstractAdapter.js");
29
28
  const abi = import_integrations_v3.iUpshiftVaultAdapterAbi;
30
29
  const protocolAbi = import_integrations_v3.iUpshiftVaultGatewayAbi;
@@ -71,18 +70,18 @@ class UpshiftVaultAdapterContract extends import_AbstractAdapter.AbstractAdapter
71
70
  stakedPhantomToken: this.#stakedPhantomToken ? this.labelAddress(this.#stakedPhantomToken) : void 0
72
71
  };
73
72
  }
74
- previewDecodedBalanceChanges(balances, decoded) {
73
+ decodeDiffLeftovers(decoded, balances) {
75
74
  switch (decoded.functionName) {
76
75
  case "depositDiff": {
77
76
  const [leftoverAmount] = decoded.args;
78
- return (0, import_balanceChanges.clampToLeftover)(balances, this.asset, leftoverAmount);
77
+ return [{ tokenIn: this.asset, leftoverAmount }];
79
78
  }
80
79
  case "redeemDiff": {
81
80
  const [leftoverAmount] = decoded.args;
82
- return (0, import_balanceChanges.clampToLeftover)(balances, this.vault, leftoverAmount);
81
+ return [{ tokenIn: this.vault, leftoverAmount }];
83
82
  }
84
83
  default:
85
- return super.previewDecodedBalanceChanges(balances, decoded);
84
+ return super.decodeDiffLeftovers(decoded, balances);
86
85
  }
87
86
  }
88
87
  }
@@ -25,7 +25,6 @@ var import_integrations_v3 = require("@gearbox-protocol/integrations-v3");
25
25
  var import_viem = require("viem");
26
26
  var import_sdk = require("../../../sdk/index.js");
27
27
  var import_targetContractAbi = require("../abi/targetContractAbi.js");
28
- var import_balanceChanges = require("../balanceChanges.js");
29
28
  var import_AbstractAdapter = require("./AbstractAdapter.js");
30
29
  const abi = import_integrations_v3.iVelodromeV2RouterAdapterAbi;
31
30
  const protocolAbi = import_targetContractAbi.iVelodromeV2RouterAbi;
@@ -75,14 +74,14 @@ class VelodromeV2RouterAdapterContract extends import_AbstractAdapter.AbstractAd
75
74
  }))
76
75
  };
77
76
  }
78
- previewDecodedBalanceChanges(balances, decoded) {
77
+ decodeDiffLeftovers(decoded, balances) {
79
78
  switch (decoded.functionName) {
80
79
  case "swapDiffTokensForTokens": {
81
80
  const [leftoverAmount, , routes] = decoded.args;
82
- return (0, import_balanceChanges.clampToLeftover)(balances, routes[0].from, leftoverAmount);
81
+ return [{ tokenIn: routes[0].from, leftoverAmount }];
83
82
  }
84
83
  default:
85
- return super.previewDecodedBalanceChanges(balances, decoded);
84
+ return super.decodeDiffLeftovers(decoded, balances);
86
85
  }
87
86
  }
88
87
  }
@@ -25,7 +25,6 @@ var import_integrations_v3 = require("@gearbox-protocol/integrations-v3");
25
25
  var import_viem = require("viem");
26
26
  var import_sdk = require("../../../sdk/index.js");
27
27
  var import_targetContractAbi = require("../abi/targetContractAbi.js");
28
- var import_balanceChanges = require("../balanceChanges.js");
29
28
  var import_transferHelpers = require("../transferHelpers.js");
30
29
  var import_AbstractAdapter = require("./AbstractAdapter.js");
31
30
  const abi = import_integrations_v3.iwstEthv1AdapterAbi;
@@ -66,19 +65,19 @@ class WstETHV1AdapterContract extends import_AbstractAdapter.AbstractAdapterCont
66
65
  }
67
66
  return super.classifyLegacyOperation(parsed, transfers);
68
67
  }
69
- previewDecodedBalanceChanges(balances, decoded) {
68
+ decodeDiffLeftovers(decoded, balances) {
70
69
  switch (decoded.functionName) {
71
70
  case "wrapDiff": {
72
71
  const [leftoverAmount] = decoded.args;
73
- return (0, import_balanceChanges.clampToLeftover)(balances, this.stETH, leftoverAmount);
72
+ return [{ tokenIn: this.stETH, leftoverAmount }];
74
73
  }
75
74
  // wstETH is the adapter's target contract
76
75
  case "unwrapDiff": {
77
76
  const [leftoverAmount] = decoded.args;
78
- return (0, import_balanceChanges.clampToLeftover)(balances, this.targetContract, leftoverAmount);
77
+ return [{ tokenIn: this.targetContract, leftoverAmount }];
79
78
  }
80
79
  default:
81
- return super.previewDecodedBalanceChanges(balances, decoded);
80
+ return super.decodeDiffLeftovers(decoded, balances);
82
81
  }
83
82
  }
84
83
  }
@@ -17,7 +17,6 @@ var adapters_exports = {};
17
17
  module.exports = __toCommonJS(adapters_exports);
18
18
  __reExport(adapters_exports, require("./AdaptersPlugin.js"), module.exports);
19
19
  __reExport(adapters_exports, require("./abi/index.js"), module.exports);
20
- __reExport(adapters_exports, require("./balanceChanges.js"), module.exports);
21
20
  __reExport(adapters_exports, require("./contracts/index.js"), module.exports);
22
21
  __reExport(adapters_exports, require("./createAdapter.js"), module.exports);
23
22
  __reExport(adapters_exports, require("./legacyAdapterOperations.js"), module.exports);
@@ -27,7 +26,6 @@ __reExport(adapters_exports, require("./types.js"), module.exports);
27
26
  0 && (module.exports = {
28
27
  ...require("./AdaptersPlugin.js"),
29
28
  ...require("./abi/index.js"),
30
- ...require("./balanceChanges.js"),
31
29
  ...require("./contracts/index.js"),
32
30
  ...require("./createAdapter.js"),
33
31
  ...require("./legacyAdapterOperations.js"),
@@ -35,7 +35,8 @@ function classifyInnerOperations(calls, props) {
35
35
  version: call.version,
36
36
  label: call.label,
37
37
  adapterFunctionName: call.functionName,
38
- adapterArgs: call.rawArgs
38
+ adapterArgs: call.rawArgs,
39
+ calldata: call.calldata
39
40
  });
40
41
  continue;
41
42
  }
@@ -82,6 +83,18 @@ function classifyFacadeInnerCall(call, underlying) {
82
83
  token: rawArgs.token,
83
84
  change: rawArgs.quotaChange
84
85
  };
86
+ case "storeExpectedBalances": {
87
+ const balanceDeltas = rawArgs.balanceDeltas;
88
+ return {
89
+ operation: "StoreExpectedBalances",
90
+ deltas: balanceDeltas.map(({ token, amount }) => ({
91
+ token,
92
+ balance: amount
93
+ }))
94
+ };
95
+ }
96
+ case "compareBalances":
97
+ return { operation: "CompareBalances" };
85
98
  default:
86
99
  return null;
87
100
  }
@@ -219,24 +219,19 @@ async function buildPrerequisites(input) {
219
219
  }
220
220
  async function collateralPrerequisites(spenderOptions, multicall, ctx) {
221
221
  const { sdk, wallet } = ctx;
222
- const required = /* @__PURE__ */ new Map();
222
+ const required = new import_sdk.AssetsMap();
223
223
  for (const op of multicall) {
224
224
  if (op.operation !== "AddCollateral" || op.amount === 0n) {
225
225
  continue;
226
226
  }
227
- const key = op.token.toLowerCase();
228
- const existing = required.get(key);
229
- required.set(key, {
230
- token: op.token,
231
- amount: (existing?.amount ?? 0n) + op.amount
232
- });
227
+ required.inc(op.token, op.amount);
233
228
  }
234
229
  if (required.size === 0) {
235
230
  return [];
236
231
  }
237
232
  const spender = await sdk.accounts.getApprovalAddress(spenderOptions);
238
233
  const prereqs = [];
239
- for (const { token, amount } of required.values()) {
234
+ for (const [token, amount] of required.entries()) {
240
235
  prereqs.push(
241
236
  new import_AllowancePrerequisite.AllowancePrerequisite({
242
237
  token,
@@ -23,48 +23,77 @@ __export(previewOpenCreditAccount_exports, {
23
23
  module.exports = __toCommonJS(previewOpenCreditAccount_exports);
24
24
  var import_adapters = require("../../plugins/adapters/index.js");
25
25
  var import_sdk = require("../../sdk/index.js");
26
- var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
27
26
  var import_unwrapNativeCollateral = require("./unwrapNativeCollateral.js");
28
27
  function previewOpenCreditAccount(input, operation) {
29
- const { sdk, to, calldata, value = 0n } = input;
28
+ const { sdk, value = 0n } = input;
30
29
  const market = sdk.marketRegister.findByCreditManager(
31
30
  operation.creditManager
32
31
  );
33
- const collateralByToken = new import_sdk.AddressMap();
34
- const balances = new import_sdk.AddressMap();
35
- const addBalance = (token, amount) => {
36
- balances.upsert(token, (balances.get(token) ?? 0n) + amount);
37
- };
32
+ const collateralBalances = new import_sdk.AssetsMap();
33
+ const balances = new import_sdk.AssetsMap();
38
34
  let debt = 0n;
39
35
  const quotas = [];
36
+ let inBracket = false;
37
+ let storeSeen = false;
40
38
  for (const op of operation.multicall) {
41
39
  switch (op.operation) {
42
- case "AddCollateral": {
43
- const balance = collateralByToken.get(op.token)?.balance ?? 0n;
44
- collateralByToken.upsert(op.token, {
45
- token: op.token,
46
- balance: balance + op.amount
47
- });
48
- addBalance(op.token, op.amount);
40
+ case "AddCollateral":
41
+ collateralBalances.inc(op.token, op.amount);
42
+ balances.inc(op.token, op.amount);
49
43
  break;
50
- }
51
44
  case "WithdrawCollateral":
52
- addBalance(op.token, -op.amount);
45
+ balances.dec(op.token, op.amount);
53
46
  break;
54
47
  case "IncreaseBorrowedAmount":
55
48
  debt += op.amount;
56
- addBalance(op.token, op.amount);
49
+ balances.inc(op.token, op.amount);
57
50
  break;
58
51
  case "DecreaseBorrowedAmount":
59
52
  debt -= op.amount;
60
- addBalance(op.token, -op.amount);
53
+ balances.dec(op.token, op.amount);
61
54
  break;
62
55
  case "UpdateQuota":
63
56
  quotas.push({ token: op.token, balance: op.change });
64
57
  break;
58
+ case "StoreExpectedBalances":
59
+ if (storeSeen) {
60
+ throw new Error(
61
+ "malformed multicall: duplicate storeExpectedBalances call"
62
+ );
63
+ }
64
+ storeSeen = true;
65
+ inBracket = true;
66
+ for (const { token, balance } of op.deltas) {
67
+ balances.inc(token, balance);
68
+ }
69
+ break;
70
+ case "CompareBalances":
71
+ if (!inBracket) {
72
+ throw new Error(
73
+ "malformed multicall: compareBalances without a preceding storeExpectedBalances"
74
+ );
75
+ }
76
+ inBracket = false;
77
+ break;
78
+ case "Execute":
79
+ if (inBracket) {
80
+ const adapter = sdk.getContract(op.adapter);
81
+ if (!(adapter instanceof import_adapters.AbstractAdapterContract)) {
82
+ throw new Error(
83
+ `call to ${op.adapter} between storeExpectedBalances and compareBalances is not an adapter call`
84
+ );
85
+ }
86
+ adapter.previewBalanceChanges(balances, op.calldata);
87
+ }
88
+ break;
65
89
  }
66
90
  }
67
- let collateral = collateralByToken.values();
91
+ if (inBracket) {
92
+ throw new Error(
93
+ "malformed multicall: storeExpectedBalances without a matching compareBalances"
94
+ );
95
+ }
96
+ let collateral = collateralBalances.toAssets();
68
97
  const collateralValue = collateral.reduce(
69
98
  (acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
70
99
  0n
@@ -74,39 +103,11 @@ function previewOpenCreditAccount(input, operation) {
74
103
  value,
75
104
  sdk.addressProvider.getAddress(import_sdk.AP_WETH_TOKEN, import_sdk.NO_VERSION)
76
105
  );
77
- const parsed = sdk.parseFunctionDataV2(to, calldata);
78
- const innerCalls = parsed.rawArgs.calls ?? [];
79
- const expected = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls);
80
- let finalBalances = balances;
81
- if (expected) {
82
- const rawCalls = extractRawInnerCalls(sdk, to, calldata);
83
- if (rawCalls.length !== innerCalls.length) {
84
- throw new Error(
85
- `raw and parsed inner calls of ${to} are misaligned: ${rawCalls.length} raw vs ${innerCalls.length} parsed`
86
- );
87
- }
88
- const snapshot = (0, import_adapters.copyBalances)(balances);
89
- for (let i = expected.startIndex + 1; i < expected.endIndex; i++) {
90
- const call = rawCalls[i];
91
- const adapter = sdk.getContract(call.target);
92
- if (!(adapter instanceof import_adapters.AbstractAdapterContract)) {
93
- throw new Error(
94
- `call to ${call.target} between storeExpectedBalances and compareBalances is not an adapter call`
95
- );
96
- }
97
- finalBalances = adapter.previewBalanceChanges(
98
- finalBalances,
99
- call.callData
100
- );
101
- }
102
- for (const { token, balance } of expected.deltas) {
103
- finalBalances.upsert(token, (snapshot.get(token) ?? 0n) + balance);
104
- }
105
- }
106
- const assets = finalBalances.entries().filter(([, balance]) => balance > 1n).map(([token, balance]) => ({ token, balance }));
106
+ const assets = balances.entries().filter(([, balance]) => balance > 1n).map(([token, balance]) => ({ token, balance }));
107
107
  return {
108
108
  operation: operation.operation,
109
- target: inferTargetAsset(operation.multicall, finalBalances),
109
+ creditManager: operation.creditManager,
110
+ target: inferTargetAsset(operation.multicall, balances),
110
111
  collateral,
111
112
  collateralValue,
112
113
  debt,
@@ -114,15 +115,6 @@ function previewOpenCreditAccount(input, operation) {
114
115
  assets
115
116
  };
116
117
  }
117
- function extractRawInnerCalls(sdk, to, calldata) {
118
- const entry = sdk.getContract(to);
119
- if (entry instanceof import_sdk.CreditFacadeV310BaseContract || entry instanceof import_sdk.SecuritizeRWAFactory) {
120
- return entry.extractRawInnerCalls(calldata);
121
- }
122
- throw new Error(
123
- `cannot extract raw inner calls from ${to}: neither a credit facade nor a supported RWA factory`
124
- );
125
- }
126
118
  function inferTargetAsset(multicall, balances) {
127
119
  for (const op of multicall) {
128
120
  if (op.operation === "UpdateQuota" && op.change > 0n) {
@@ -21,37 +21,23 @@ __export(unwrapNativeCollateral_exports, {
21
21
  unwrapNativeCollateral: () => unwrapNativeCollateral
22
22
  });
23
23
  module.exports = __toCommonJS(unwrapNativeCollateral_exports);
24
- var import_viem = require("viem");
25
24
  var import_sdk = require("../../sdk/index.js");
26
25
  var import_errors = require("./errors.js");
27
26
  function unwrapNativeCollateral(collateral, nativeAmount, wethToken) {
28
27
  if (nativeAmount === 0n) {
29
28
  return collateral;
30
29
  }
31
- let unwrapped = false;
32
- const result = [];
33
- for (const asset of collateral) {
34
- const isWeth = !unwrapped && (0, import_viem.isAddressEqual)(asset.token, wethToken);
35
- if (!isWeth) {
36
- result.push(asset);
37
- continue;
38
- }
39
- if (asset.balance < nativeAmount) {
40
- throw new import_errors.InvalidTransactionValueError(nativeAmount, asset.balance);
41
- }
42
- result.push({ token: import_sdk.NATIVE_ADDRESS, balance: nativeAmount });
43
- if (asset.balance > nativeAmount) {
44
- result.push({
45
- token: asset.token,
46
- balance: asset.balance - nativeAmount
47
- });
48
- }
49
- unwrapped = true;
30
+ const balances = new import_sdk.AssetsMap(collateral);
31
+ const wethBalance = balances.get(wethToken) ?? 0n;
32
+ if (wethBalance < nativeAmount) {
33
+ throw new import_errors.InvalidTransactionValueError(nativeAmount, wethBalance);
50
34
  }
51
- if (!unwrapped) {
52
- throw new import_errors.InvalidTransactionValueError(nativeAmount, 0n);
53
- }
54
- return result;
35
+ balances.upsert(
36
+ wethToken,
37
+ wethBalance === nativeAmount ? void 0 : wethBalance - nativeAmount
38
+ );
39
+ balances.inc(import_sdk.NATIVE_ADDRESS, nativeAmount);
40
+ return balances.toAssets();
55
41
  }
56
42
  // Annotate the CommonJS export names for ESM import in node:
57
43
  0 && (module.exports = {
@@ -36,7 +36,6 @@ var import_base = require("../base/index.js");
36
36
  var import_chains = require("../chain/chains.js");
37
37
  var import_constants = require("../constants/index.js");
38
38
  var import_market = require("../market/index.js");
39
- var import_router = require("../router/index.js");
40
39
  var import_utils = require("../utils/index.js");
41
40
  var import_viem2 = require("../utils/viem/index.js");
42
41
  var import_multicall_utils = require("./multicall-utils.js");
@@ -1723,10 +1722,10 @@ class CreditAccountsServiceV310 extends import_base.SDKConstruct {
1723
1722
  return calls;
1724
1723
  }
1725
1724
  #prepareUpdateQuotas(creditFacade, { averageQuota, minQuota }) {
1726
- const minRecord = (0, import_router.assetsMap)(minQuota);
1725
+ const minRecord = new import_utils.AssetsMap(minQuota);
1727
1726
  const calls = averageQuota.map((q) => {
1728
- const minAsset = minRecord.get(q.token);
1729
- const min = minAsset && minAsset?.balance > 0 ? minAsset.balance : 0n;
1727
+ const minBalance = minRecord.get(q.token);
1728
+ const min = minBalance && minBalance > 0n ? minBalance : 0n;
1730
1729
  return {
1731
1730
  target: creditFacade,
1732
1731
  callData: (0, import_viem.encodeFunctionData)({
@@ -244,6 +244,7 @@ class BaseContract extends import_Construct.Construct {
244
244
  const functionName = (0, import_utils.getFunctionSignature)(this.abi, calldata);
245
245
  return this.wrapParseCallV2(
246
246
  functionName,
247
+ calldata,
247
248
  this.parseFunctionParamsV2(decoded, strict)
248
249
  );
249
250
  } catch (e) {
@@ -257,7 +258,7 @@ class BaseContract extends import_Construct.Construct {
257
258
  this.logger?.warn(e);
258
259
  const selector = calldata.slice(0, 10);
259
260
  const data = `0x${calldata.slice(10)}`;
260
- return this.wrapParseCallV2(`unknown function ${selector}`, {
261
+ return this.wrapParseCallV2(`unknown function ${selector}`, calldata, {
261
262
  _data: data
262
263
  });
263
264
  }
@@ -270,7 +271,7 @@ class BaseContract extends import_Construct.Construct {
270
271
  parseFunctionParamsV2(params, _strict) {
271
272
  return (0, import_utils.functionArgsToRecord)(this.abi, params.functionName, params.args);
272
273
  }
273
- wrapParseCallV2(functionName, rawArgs) {
274
+ wrapParseCallV2(functionName, calldata, rawArgs) {
274
275
  return {
275
276
  chainId: this.chainId,
276
277
  target: this.address,
@@ -278,6 +279,7 @@ class BaseContract extends import_Construct.Construct {
278
279
  label: this.labelAddress(this.address, true),
279
280
  version: this.version,
280
281
  functionName,
282
+ calldata,
281
283
  rawArgs
282
284
  };
283
285
  }
@@ -184,6 +184,7 @@ class ChainContractsRegister {
184
184
  label: this.labelAddress(address, true),
185
185
  version: 0,
186
186
  functionName: `unknown function ${selector}`,
187
+ calldata,
187
188
  rawArgs: { _data: data }
188
189
  };
189
190
  }
@@ -22,7 +22,6 @@ __export(CreditFacadeV310BaseContract_exports, {
22
22
  creditFacadeV310Abi: () => abi
23
23
  });
24
24
  module.exports = __toCommonJS(CreditFacadeV310BaseContract_exports);
25
- var import_viem = require("viem");
26
25
  var import_generated = require("../../../abi/310/generated.js");
27
26
  var import_iPausable = require("../../../abi/iPausable.js");
28
27
  var import_base = require("../../base/index.js");
@@ -35,36 +34,6 @@ class CreditFacadeV310BaseContract extends import_base.BaseContract {
35
34
  constructor(options, args) {
36
35
  super(options, { ...args, abi });
37
36
  }
38
- /**
39
- * Decodes entry-point calldata with the facade ABI and returns the untouched
40
- * inner multicall structs (targets with still-ABI-encoded `callData`).
41
- *
42
- * Unlike {@link ChainContractsRegister.parseMultiCallV2}, the inner calls are
43
- * not decoded, so callers can re-decode them with a specific contract's ABI.
44
- *
45
- * @throws When the calldata cannot be decoded or the function has no inner
46
- * multicall argument.
47
- */
48
- extractRawInnerCalls(calldata) {
49
- const decoded = (0, import_viem.decodeFunctionData)({ abi: this.abi, data: calldata });
50
- switch (decoded.functionName) {
51
- case "openCreditAccount":
52
- case "closeCreditAccount":
53
- case "botMulticall":
54
- case "multicall": {
55
- const [, calls] = decoded.args;
56
- return [...calls];
57
- }
58
- case "liquidateCreditAccount": {
59
- const [, , calls] = decoded.args;
60
- return [...calls];
61
- }
62
- default:
63
- throw new Error(
64
- `function ${decoded.functionName} on ${this.name} has no inner multicall`
65
- );
66
- }
67
- }
68
37
  parseFunctionParamsV2(params, strict) {
69
38
  switch (params.functionName) {
70
39
  case "openCreditAccount": {
@@ -70,31 +70,6 @@ class SecuritizeRWAFactory extends import_base.BaseContract {
70
70
  operators: [...t.operators]
71
71
  }));
72
72
  }
73
- /**
74
- * Decodes entry-point calldata with the factory ABI and returns the
75
- * untouched inner multicall structs (targets with still-ABI-encoded
76
- * `callData`).
77
- *
78
- * Unlike {@link ChainContractsRegister.parseMultiCallV2}, the inner calls are
79
- * not decoded, so callers can re-decode them with a specific contract's ABI.
80
- *
81
- * @throws When the calldata cannot be decoded or the function has no inner
82
- * multicall argument.
83
- */
84
- extractRawInnerCalls(calldata) {
85
- const decoded = (0, import_viem.decodeFunctionData)({ abi: this.abi, data: calldata });
86
- switch (decoded.functionName) {
87
- case "openCreditAccount":
88
- case "multicall": {
89
- const [, calls] = decoded.args;
90
- return [...calls];
91
- }
92
- default:
93
- throw new Error(
94
- `function ${decoded.functionName} on ${this.name} has no inner multicall`
95
- );
96
- }
97
- }
98
73
  parseFunctionParamsV2(params, strict) {
99
74
  switch (params.functionName) {
100
75
  case "openCreditAccount": {