@gearbox-protocol/sdk 14.12.0-next.23 → 14.12.0-next.25

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 (100) hide show
  1. package/dist/cjs/dev/withdrawalUtils.js +35 -28
  2. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +31 -9
  3. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +8 -5
  4. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +6 -4
  5. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +6 -4
  6. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +6 -9
  7. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +7 -5
  8. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +6 -4
  9. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +6 -4
  10. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -4
  11. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +6 -4
  12. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
  13. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +8 -5
  14. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -3
  15. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -3
  16. package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +29 -0
  17. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +6 -4
  18. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +11 -4
  19. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -3
  20. package/dist/cjs/plugins/adapters/contracts/MidasGatewayAdapterContract.js +31 -4
  21. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -3
  22. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -3
  23. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +14 -16
  24. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -3
  25. package/dist/cjs/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -13
  26. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +7 -5
  27. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -3
  28. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -3
  29. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +6 -9
  30. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
  31. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +6 -4
  32. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -3
  33. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +6 -4
  34. package/dist/esm/dev/withdrawalUtils.js +35 -28
  35. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +31 -9
  36. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +8 -5
  37. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +6 -4
  38. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +6 -4
  39. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +6 -9
  40. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +7 -5
  41. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +6 -4
  42. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +6 -4
  43. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -4
  44. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +6 -4
  45. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
  46. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +8 -5
  47. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -3
  48. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -3
  49. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +32 -1
  50. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +6 -4
  51. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +11 -4
  52. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -3
  53. package/dist/esm/plugins/adapters/contracts/MidasGatewayAdapterContract.js +33 -5
  54. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -3
  55. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -3
  56. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +14 -16
  57. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -3
  58. package/dist/esm/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -13
  59. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +7 -5
  60. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -3
  61. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -3
  62. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +6 -9
  63. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
  64. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +6 -4
  65. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -3
  66. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +6 -4
  67. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +27 -7
  68. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +2 -3
  69. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -3
  70. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -3
  71. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -3
  72. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -3
  73. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -3
  74. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -3
  75. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -3
  76. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -3
  77. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -3
  78. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -3
  79. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -3
  80. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -3
  81. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +3 -2
  82. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -3
  83. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -3
  84. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -3
  85. package/dist/types/plugins/adapters/contracts/MidasGatewayAdapterContract.d.ts +2 -3
  86. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -3
  87. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -3
  88. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -3
  89. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +2 -3
  90. package/dist/types/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.d.ts +2 -3
  91. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -3
  92. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -3
  93. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +2 -3
  94. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +2 -3
  95. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -3
  96. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -3
  97. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -3
  98. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -3
  99. package/dist/types/plugins/adapters/types.d.ts +0 -10
  100. package/package.json +1 -1
@@ -53,28 +53,29 @@ class SecuritizeRedemptionGatewayAdapterContract extends AbstractAdapterContract
53
53
  redemptionPhantomToken: this.#redemptionPhantomToken ? this.labelAddress(this.#redemptionPhantomToken) : void 0
54
54
  };
55
55
  }
56
- decodeDiffLeftovers(decoded, balances) {
56
+ applyBalanceChanges(balances, decoded) {
57
57
  switch (decoded.functionName) {
58
- // exact-input redemption: burns dsTokenAmount of the DS token in
59
- // exchange for the redemption phantom token (which is credited by the
60
- // storeExpectedBalances bracket delta, not here)
61
58
  case "redeem": {
62
59
  const [dsTokenAmount] = decoded.args;
63
- const balance = balances.get(this.dsToken) ?? 0n;
64
- return [
65
- {
66
- tokenIn: this.dsToken,
67
- leftoverAmount: balance > dsTokenAmount ? balance - dsTokenAmount : 0n
68
- }
69
- ];
60
+ this.spendExact(balances, this.dsToken, dsTokenAmount);
61
+ break;
70
62
  }
71
63
  // diff-style redemption: spends the DS token down to the leftover
72
64
  case "redeemDiff": {
73
65
  const [leftoverAmount] = decoded.args;
74
- return [{ tokenIn: this.dsToken, leftoverAmount }];
66
+ this.setLeftover(balances, this.dsToken, leftoverAmount);
67
+ break;
75
68
  }
69
+ // TODO:
70
+ // `claim(address[] redeemers)` (the claim call emitted by the
71
+ // withdrawal compressor) cannot be previewed offline: the redemption
72
+ // phantom token burn (the compressor's `withdrawalTokenSpent`, i.e.
73
+ // each redeemer's `getRedemptionAmount()`) lives in per-redeemer clone
74
+ // contracts and is not recoverable from calldata. For claimable
75
+ // redeemers it equals the stablecoin credit, but that value is not in
76
+ // calldata either.
76
77
  default:
77
- return super.decodeDiffLeftovers(decoded, balances);
78
+ super.applyBalanceChanges(balances, decoded);
78
79
  }
79
80
  }
80
81
  }
@@ -81,21 +81,23 @@ class StakingRewardsAdapterContract extends AbstractAdapterContract {
81
81
  referral: this.#referral
82
82
  };
83
83
  }
84
- decodeDiffLeftovers(decoded, balances) {
84
+ applyBalanceChanges(balances, decoded) {
85
85
  switch (decoded.functionName) {
86
86
  case "stakeDiff": {
87
87
  const [leftoverAmount] = decoded.args;
88
- return [{ tokenIn: this.stakingToken, leftoverAmount }];
88
+ this.setLeftover(balances, this.stakingToken, leftoverAmount);
89
+ break;
89
90
  }
90
91
  case "withdrawDiff": {
91
92
  const [leftoverAmount] = decoded.args;
92
- return [{ tokenIn: this.stakedPhantomToken, leftoverAmount }];
93
+ this.setLeftover(balances, this.stakedPhantomToken, leftoverAmount);
94
+ break;
93
95
  }
94
96
  // no accrued rewards on a freshly opened account
95
97
  case "getReward":
96
- return [];
98
+ break;
97
99
  default:
98
- return super.decodeDiffLeftovers(decoded, balances);
100
+ super.applyBalanceChanges(balances, decoded);
99
101
  }
100
102
  }
101
103
  }
@@ -60,14 +60,15 @@ class TraderJoeRouterAdapterContract extends AbstractAdapterContract {
60
60
  }))
61
61
  };
62
62
  }
63
- decodeDiffLeftovers(decoded, balances) {
63
+ applyBalanceChanges(balances, decoded) {
64
64
  switch (decoded.functionName) {
65
65
  case "swapDiffTokensForTokens": {
66
66
  const [leftoverAmount, , path] = decoded.args;
67
- return [{ tokenIn: path.tokenPath[0], leftoverAmount }];
67
+ this.setLeftover(balances, path.tokenPath[0], leftoverAmount);
68
+ break;
68
69
  }
69
70
  default:
70
- return super.decodeDiffLeftovers(decoded, balances);
71
+ super.applyBalanceChanges(balances, decoded);
71
72
  }
72
73
  }
73
74
  }
@@ -72,14 +72,15 @@ class UniswapV2AdapterContract extends AbstractAdapterContract {
72
72
  classifyLegacyOperation(_parsed, transfers) {
73
73
  return { operation: "UniswapSwap", ...swapFromTransfers(transfers) };
74
74
  }
75
- decodeDiffLeftovers(decoded, balances) {
75
+ applyBalanceChanges(balances, decoded) {
76
76
  switch (decoded.functionName) {
77
77
  case "swapDiffTokensForTokens": {
78
78
  const [leftoverAmount, , path] = decoded.args;
79
- return [{ tokenIn: path[0], leftoverAmount }];
79
+ this.setLeftover(balances, path[0], leftoverAmount);
80
+ break;
80
81
  }
81
82
  default:
82
- return super.decodeDiffLeftovers(decoded, balances);
83
+ super.applyBalanceChanges(balances, decoded);
83
84
  }
84
85
  }
85
86
  }
@@ -50,24 +50,21 @@ class UniswapV3AdapterContract extends AbstractAdapterContract {
50
50
  }))
51
51
  };
52
52
  }
53
- decodeDiffLeftovers(decoded, balances) {
53
+ applyBalanceChanges(balances, decoded) {
54
54
  switch (decoded.functionName) {
55
55
  case "exactDiffInputSingle": {
56
56
  const [params] = decoded.args;
57
- return [
58
- {
59
- tokenIn: params.tokenIn,
60
- leftoverAmount: params.leftoverAmount
61
- }
62
- ];
57
+ this.setLeftover(balances, params.tokenIn, params.leftoverAmount);
58
+ break;
63
59
  }
64
60
  case "exactDiffInput": {
65
61
  const [params] = decoded.args;
66
62
  const tokenIn = `0x${params.path.replace("0x", "").slice(0, 40)}`;
67
- return [{ tokenIn, leftoverAmount: params.leftoverAmount }];
63
+ this.setLeftover(balances, tokenIn, params.leftoverAmount);
64
+ break;
68
65
  }
69
66
  default:
70
- return super.decodeDiffLeftovers(decoded, balances);
67
+ super.applyBalanceChanges(balances, decoded);
71
68
  }
72
69
  }
73
70
  stringifyFunctionParams(params) {
@@ -63,19 +63,19 @@ class UniswapV4AdapterContract extends AbstractAdapterContract {
63
63
  classifyLegacyOperation(_parsed, transfers) {
64
64
  return { operation: "UniswapSwap", ...swapFromTransfers(transfers) };
65
65
  }
66
- decodeDiffLeftovers(decoded, balances) {
66
+ applyBalanceChanges(balances, decoded) {
67
67
  switch (decoded.functionName) {
68
68
  case "swapExactInputSingleDiff": {
69
69
  const [poolKey, zeroForOne, leftoverAmount] = decoded.args;
70
- return [
71
- {
72
- tokenIn: zeroForOne ? poolKey.token0 : poolKey.token1,
73
- leftoverAmount
74
- }
75
- ];
70
+ this.setLeftover(
71
+ balances,
72
+ zeroForOne ? poolKey.token0 : poolKey.token1,
73
+ leftoverAmount
74
+ );
75
+ break;
76
76
  }
77
77
  default:
78
- return super.decodeDiffLeftovers(decoded, balances);
78
+ super.applyBalanceChanges(balances, decoded);
79
79
  }
80
80
  }
81
81
  }
@@ -54,18 +54,20 @@ class UpshiftVaultAdapterContract extends AbstractAdapterContract {
54
54
  stakedPhantomToken: this.#stakedPhantomToken ? this.labelAddress(this.#stakedPhantomToken) : void 0
55
55
  };
56
56
  }
57
- decodeDiffLeftovers(decoded, balances) {
57
+ applyBalanceChanges(balances, decoded) {
58
58
  switch (decoded.functionName) {
59
59
  case "depositDiff": {
60
60
  const [leftoverAmount] = decoded.args;
61
- return [{ tokenIn: this.asset, leftoverAmount }];
61
+ this.setLeftover(balances, this.asset, leftoverAmount);
62
+ break;
62
63
  }
63
64
  case "redeemDiff": {
64
65
  const [leftoverAmount] = decoded.args;
65
- return [{ tokenIn: this.vault, leftoverAmount }];
66
+ this.setLeftover(balances, this.vault, leftoverAmount);
67
+ break;
66
68
  }
67
69
  default:
68
- return super.decodeDiffLeftovers(decoded, balances);
70
+ super.applyBalanceChanges(balances, decoded);
69
71
  }
70
72
  }
71
73
  }
@@ -53,14 +53,15 @@ class VelodromeV2RouterAdapterContract extends AbstractAdapterContract {
53
53
  }))
54
54
  };
55
55
  }
56
- decodeDiffLeftovers(decoded, balances) {
56
+ applyBalanceChanges(balances, decoded) {
57
57
  switch (decoded.functionName) {
58
58
  case "swapDiffTokensForTokens": {
59
59
  const [leftoverAmount, , routes] = decoded.args;
60
- return [{ tokenIn: routes[0].from, leftoverAmount }];
60
+ this.setLeftover(balances, routes[0].from, leftoverAmount);
61
+ break;
61
62
  }
62
63
  default:
63
- return super.decodeDiffLeftovers(decoded, balances);
64
+ super.applyBalanceChanges(balances, decoded);
64
65
  }
65
66
  }
66
67
  }
@@ -46,19 +46,21 @@ class WstETHV1AdapterContract extends AbstractAdapterContract {
46
46
  }
47
47
  return super.classifyLegacyOperation(parsed, transfers);
48
48
  }
49
- decodeDiffLeftovers(decoded, balances) {
49
+ applyBalanceChanges(balances, decoded) {
50
50
  switch (decoded.functionName) {
51
51
  case "wrapDiff": {
52
52
  const [leftoverAmount] = decoded.args;
53
- return [{ tokenIn: this.stETH, leftoverAmount }];
53
+ this.setLeftover(balances, this.stETH, leftoverAmount);
54
+ break;
54
55
  }
55
56
  // wstETH is the adapter's target contract
56
57
  case "unwrapDiff": {
57
58
  const [leftoverAmount] = decoded.args;
58
- return [{ tokenIn: this.targetContract, leftoverAmount }];
59
+ this.setLeftover(balances, this.targetContract, leftoverAmount);
60
+ break;
59
61
  }
60
62
  default:
61
- return super.decodeDiffLeftovers(decoded, balances);
63
+ super.applyBalanceChanges(balances, decoded);
62
64
  }
63
65
  }
64
66
  }
@@ -1,9 +1,9 @@
1
1
  import { type Abi, type Address, type DecodeFunctionDataReturnType, type Hex } from "viem";
2
2
  import { type CallTrace } from "../../../common-utils/utils/trace.js";
3
- import type { AddressMap, AssetsMap, ConstructOptions, ParsedCallV2, RelaxedBaseParams } from "../../../sdk/index.js";
3
+ import type { AssetsMap, ConstructOptions, ParsedCallV2, RelaxedBaseParams } from "../../../sdk/index.js";
4
4
  import { BaseContract } from "../../../sdk/index.js";
5
5
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
6
- import type { AdapterContractStateHuman, AdapterContractType, AdapterProtocolOperation, DiffLeftover } from "../types.js";
6
+ import type { AdapterContractStateHuman, AdapterContractType, AdapterProtocolOperation } from "../types.js";
7
7
  export interface ConcreteAdapterContractOptions {
8
8
  baseParams: RelaxedBaseParams;
9
9
  }
@@ -37,8 +37,10 @@ export declare class AbstractAdapterContract<const abi extends Abi | readonly un
37
37
  */
38
38
  parseProtocolCall(trace: CallTrace, strict?: boolean): AdapterProtocolOperation | undefined;
39
39
  /**
40
- * Applies the balance changes implied by a router-generated diff-style
41
- * adapter call to a map of credit-account token balances.
40
+ * Applies the balance changes implied by an adapter call to a map of
41
+ * credit-account token balances. Handles both router-generated diff-style
42
+ * calls and exact-input calls (e.g. those emitted by the withdrawal
43
+ * compressor).
42
44
  *
43
45
  * @param balances - Token balances before the call. Mutated in place.
44
46
  * @param calldata - Raw ABI-encoded adapter calldata.
@@ -47,13 +49,31 @@ export declare class AbstractAdapterContract<const abi extends Abi | readonly un
47
49
  */
48
50
  previewBalanceChanges(balances: AssetsMap, calldata: Hex): void;
49
51
  /**
50
- * Resolves which tokens the diff-style call spends down to which leftovers.
52
+ * Applies the balance changes of a decoded adapter call to the running
53
+ * balances, mutating them in place. Overrides should express changes via
54
+ * {@link setLeftover} (diff-style calls) and {@link spendExact}
55
+ * (exact-input calls), and should resolve all tokens/amounts before the
56
+ * first write so a throw never leaves balances partially mutated.
51
57
  *
58
+ * @param _balances - Token balances before the call. Mutated in place.
52
59
  * @param decoded - The viem-decoded adapter call
53
- * @param _balances - Token balances before the call
54
60
  * @throws When the adapter (or the specific function) has no balance-changes support
55
61
  */
56
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, _balances: AddressMap<bigint>): DiffLeftover[];
62
+ protected applyBalanceChanges(_balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
63
+ /**
64
+ * Diff-call semantics of a diff-style adapter call: the call spends the
65
+ * consumed token down to the exact `leftoverAmount` encoded in its
66
+ * calldata, so the post-call balance of `tokenIn` is `leftoverAmount`
67
+ * regardless of the actual amount spent.
68
+ */
69
+ protected setLeftover(balances: AssetsMap, tokenIn: Address, leftoverAmount: bigint): void;
70
+ /**
71
+ * Exact-input call semantics: spends exactly `amount` of `tokenIn` from
72
+ * the running balance, clamping at zero. Used for non-diff adapter calls
73
+ * (e.g. those generated by the withdrawal compressor) whose spent amount
74
+ * is present in calldata.
75
+ */
76
+ protected spendExact(balances: AssetsMap, tokenIn: Address, amount: bigint): void;
57
77
  /**
58
78
  * Classifies an adapter call into a {@link LegacyAdapterOperation} using the
59
79
  * parsed call and credit-account transfer deltas.
@@ -1,14 +1,13 @@
1
1
  import type { Abi, Address, DecodeFunctionDataReturnType } from "viem";
2
- import type { AddressMap, ParsedCallV2 } from "../../../sdk/index.js";
2
+ import type { AssetsMap, ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  export declare abstract class AbstractCurveAdapterContract<const abi extends Abi | readonly unknown[], const protocolAbi extends Abi | readonly unknown[]> extends AbstractAdapterContract<abi, protocolAbi> {
7
6
  abstract get tokens(): readonly Address[];
8
7
  abstract get lpToken(): Address;
9
8
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L132-L164 */
10
9
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
11
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
10
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
12
11
  /**
13
12
  * Resolves a Curve pool coin index to its token address.
14
13
  *
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import type { AssetsMap, ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  export declare enum BalancerV3PoolStatus {
@@ -452,6 +451,6 @@ export declare class BalancerV3RouterAdapterContract extends AbstractAdapterCont
452
451
  status: BalancerV3PoolStatus | undefined;
453
452
  }[] | undefined;
454
453
  };
455
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
454
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
456
455
  }
457
456
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import type { AssetsMap, ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -165,6 +164,6 @@ export declare class BalancerV3WrapperAdapterContract extends AbstractAdapterCon
165
164
  targetContract?: string;
166
165
  balancerPoolToken: string | undefined;
167
166
  };
168
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
167
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
169
168
  }
170
169
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import type { AddressMap, ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import type { AssetsMap, ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  export interface CamelotPool {
@@ -656,6 +655,6 @@ export declare class CamelotV3AdapterContract extends AbstractAdapterContract<ab
656
655
  token1: string;
657
656
  }[] | undefined;
658
657
  };
659
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
658
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
660
659
  }
661
660
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -691,6 +690,6 @@ export declare class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapt
691
690
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L76-L83
692
691
  */
693
692
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
694
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
693
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
695
694
  }
696
695
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  interface ConvexV1BoosterPool {
@@ -422,6 +421,6 @@ export declare class ConvexV1BoosterAdapterContract extends AbstractAdapterContr
422
421
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L84-L91
423
422
  */
424
423
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
425
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
424
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
426
425
  }
427
426
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -206,6 +205,6 @@ export declare class DaiUsdsAdapterContract extends AbstractAdapterContract<abi,
206
205
  };
207
206
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L51-L68 */
208
207
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
209
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
208
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
210
209
  }
211
210
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -679,6 +678,6 @@ export declare class ERC4626AdapterContract extends AbstractAdapterContract<abi,
679
678
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
680
679
  */
681
680
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
682
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
681
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
683
682
  }
684
683
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -300,6 +299,6 @@ export declare class ERC4626ReferralAdapterContract extends AbstractAdapterContr
300
299
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
301
300
  */
302
301
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
303
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
302
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
304
303
  }
305
304
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -253,6 +252,6 @@ export declare class FluidDexAdapterContract extends AbstractAdapterContract<abi
253
252
  token0: string | undefined;
254
253
  token1: string | undefined;
255
254
  };
256
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
255
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
257
256
  }
258
257
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -484,6 +483,6 @@ export declare class InfinifiGatewayAdapterContract extends AbstractAdapterContr
484
483
  siusd: string | undefined;
485
484
  allowedLockedTokens: string[] | undefined;
486
485
  };
487
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
486
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
488
487
  }
489
488
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -250,6 +249,6 @@ export declare class KelpLRTDepositPoolAdapterContract extends AbstractAdapterCo
250
249
  targetContract?: string;
251
250
  allowedAssets: string[] | undefined;
252
251
  };
253
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
252
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
254
253
  }
255
254
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -215,6 +214,6 @@ export declare class LidoV1AdapterContract extends AbstractAdapterContract<abi,
215
214
  };
216
215
  /** @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type.go#L277-L282 */
217
216
  classifyLegacyOperation(_parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
218
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
217
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
219
218
  }
220
219
  export {};
@@ -1,5 +1,5 @@
1
- import { type Address } from "viem";
2
- import { type ConstructOptions } from "../../../sdk/index.js";
1
+ import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
3
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
4
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
5
5
  declare const abi: readonly [{
@@ -294,5 +294,6 @@ export declare class MellowClaimerAdapterContract extends AbstractAdapterContrac
294
294
  targetContract?: string;
295
295
  allowedMultiVaults: string[] | undefined;
296
296
  };
297
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
297
298
  }
298
299
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -711,6 +710,6 @@ export declare class MellowDVVAdapterContract extends AbstractAdapterContract<ab
711
710
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
712
711
  */
713
712
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
714
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
713
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
715
714
  }
716
715
  export {};
@@ -1,7 +1,6 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
2
+ import { type AssetsMap, type ConstructOptions, type ParsedCallV2 } from "../../../sdk/index.js";
3
3
  import type { LegacyAdapterOperation, Transfers } from "../legacyAdapterOperations.js";
4
- import type { DiffLeftover } from "../types.js";
5
4
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
6
5
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
7
6
  declare const abi: readonly [{
@@ -678,6 +677,6 @@ export declare class MellowERC4626VaultAdapterContract extends AbstractAdapterCo
678
677
  * @see https://github.com/Gearbox-protocol/charts_server/blob/master/core/operation_type_v3.go#L32-L38
679
678
  */
680
679
  classifyLegacyOperation(parsed: ParsedCallV2, transfers: Transfers): LegacyAdapterOperation;
681
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
680
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
682
681
  }
683
682
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -209,6 +208,6 @@ export declare class MellowWrapperAdapterContract extends AbstractAdapterContrac
209
208
  targetContract?: string;
210
209
  allowedVaults: string[] | undefined;
211
210
  };
212
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
211
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
213
212
  }
214
213
  export {};
@@ -1,6 +1,5 @@
1
1
  import { type Address, type DecodeFunctionDataReturnType } from "viem";
2
- import { type AddressMap, type ConstructOptions } from "../../../sdk/index.js";
3
- import type { DiffLeftover } from "../types.js";
2
+ import { type AssetsMap, type ConstructOptions } from "../../../sdk/index.js";
4
3
  import type { ConcreteAdapterContractOptions } from "./AbstractAdapter.js";
5
4
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
6
5
  declare const abi: readonly [{
@@ -785,6 +784,6 @@ export declare class MidasGatewayAdapterContract extends AbstractAdapterContract
785
784
  phantomToken: string;
786
785
  }[] | undefined;
787
786
  };
788
- protected decodeDiffLeftovers(decoded: DecodeFunctionDataReturnType<abi>, balances: AddressMap<bigint>): DiffLeftover[];
787
+ protected applyBalanceChanges(balances: AssetsMap, decoded: DecodeFunctionDataReturnType<abi>): void;
789
788
  }
790
789
  export {};