@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.
- package/dist/cjs/dev/withdrawalUtils.js +35 -28
- package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +31 -9
- package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +8 -5
- package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +6 -9
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +7 -5
- package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -4
- package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
- package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +8 -5
- package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +29 -0
- package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +11 -4
- package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/MidasGatewayAdapterContract.js +31 -4
- package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +14 -16
- package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -13
- package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +7 -5
- package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +6 -9
- package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
- package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +6 -4
- package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -3
- package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +6 -4
- package/dist/esm/dev/withdrawalUtils.js +35 -28
- package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +31 -9
- package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +8 -5
- package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +6 -9
- package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +7 -5
- package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +13 -4
- package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +8 -8
- package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +8 -5
- package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +32 -1
- package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +11 -4
- package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/MidasGatewayAdapterContract.js +33 -5
- package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +14 -16
- package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js +14 -13
- package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +7 -5
- package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +6 -9
- package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +8 -8
- package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +6 -4
- package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +4 -3
- package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +6 -4
- package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +27 -7
- package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +3 -2
- package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MidasGatewayAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +2 -3
- package/dist/types/plugins/adapters/types.d.ts +0 -10
- package/package.json +1 -1
|
@@ -34,19 +34,21 @@ class BalancerV3WrapperAdapterContract extends AbstractAdapterContract {
|
|
|
34
34
|
balancerPoolToken: this.#balancerPoolToken ? this.labelAddress(this.#balancerPoolToken) : void 0
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
applyBalanceChanges(balances, decoded) {
|
|
38
38
|
switch (decoded.functionName) {
|
|
39
39
|
// mint spends the pool token, burn spends the wrapper (target contract)
|
|
40
40
|
case "mintDiff": {
|
|
41
41
|
const [leftoverAmount] = decoded.args;
|
|
42
|
-
|
|
42
|
+
this.setLeftover(balances, this.balancerPoolToken, leftoverAmount);
|
|
43
|
+
break;
|
|
43
44
|
}
|
|
44
45
|
case "burnDiff": {
|
|
45
46
|
const [leftoverAmount] = decoded.args;
|
|
46
|
-
|
|
47
|
+
this.setLeftover(balances, this.targetContract, leftoverAmount);
|
|
48
|
+
break;
|
|
47
49
|
}
|
|
48
50
|
default:
|
|
49
|
-
|
|
51
|
+
super.applyBalanceChanges(balances, decoded);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
}
|
|
@@ -47,24 +47,21 @@ class CamelotV3AdapterContract extends AbstractAdapterContract {
|
|
|
47
47
|
}))
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
applyBalanceChanges(balances, decoded) {
|
|
51
51
|
switch (decoded.functionName) {
|
|
52
52
|
case "exactDiffInputSingle": {
|
|
53
53
|
const [params] = decoded.args;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
tokenIn: params.tokenIn,
|
|
57
|
-
leftoverAmount: params.leftoverAmount
|
|
58
|
-
}
|
|
59
|
-
];
|
|
54
|
+
this.setLeftover(balances, params.tokenIn, params.leftoverAmount);
|
|
55
|
+
break;
|
|
60
56
|
}
|
|
61
57
|
case "exactDiffInput": {
|
|
62
58
|
const [params] = decoded.args;
|
|
63
59
|
const tokenIn = `0x${params.path.replace("0x", "").slice(0, 40)}`;
|
|
64
|
-
|
|
60
|
+
this.setLeftover(balances, tokenIn, params.leftoverAmount);
|
|
61
|
+
break;
|
|
65
62
|
}
|
|
66
63
|
default:
|
|
67
|
-
|
|
64
|
+
super.applyBalanceChanges(balances, decoded);
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
}
|
|
@@ -116,22 +116,24 @@ class ConvexV1BaseRewardPoolAdapterContract extends AbstractAdapterContract {
|
|
|
116
116
|
withdrawAmount: swap.toAmount
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
applyBalanceChanges(balances, decoded) {
|
|
120
120
|
switch (decoded.functionName) {
|
|
121
121
|
case "stakeDiff": {
|
|
122
122
|
const [leftoverAmount] = decoded.args;
|
|
123
|
-
|
|
123
|
+
this.setLeftover(balances, this.stakingToken, leftoverAmount);
|
|
124
|
+
break;
|
|
124
125
|
}
|
|
125
126
|
case "withdrawDiff":
|
|
126
127
|
case "withdrawDiffAndUnwrap": {
|
|
127
128
|
const [leftoverAmount] = decoded.args;
|
|
128
|
-
|
|
129
|
+
this.setLeftover(balances, this.stakedPhantomToken, leftoverAmount);
|
|
130
|
+
break;
|
|
129
131
|
}
|
|
130
132
|
// no accrued rewards on a freshly opened account
|
|
131
133
|
case "getReward":
|
|
132
|
-
|
|
134
|
+
break;
|
|
133
135
|
default:
|
|
134
|
-
|
|
136
|
+
super.applyBalanceChanges(balances, decoded);
|
|
135
137
|
}
|
|
136
138
|
}
|
|
137
139
|
}
|
|
@@ -83,21 +83,23 @@ class ConvexV1BoosterAdapterContract extends AbstractAdapterContract {
|
|
|
83
83
|
}
|
|
84
84
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
applyBalanceChanges(balances, decoded) {
|
|
87
87
|
switch (decoded.functionName) {
|
|
88
88
|
// deposit spends the curve LP token, withdraw spends the convex token
|
|
89
89
|
case "depositDiff": {
|
|
90
90
|
const [pid, leftoverAmount] = decoded.args;
|
|
91
91
|
const pool = this.#mustFindPool(Number(pid));
|
|
92
|
-
|
|
92
|
+
this.setLeftover(balances, pool.curveToken, leftoverAmount);
|
|
93
|
+
break;
|
|
93
94
|
}
|
|
94
95
|
case "withdrawDiff": {
|
|
95
96
|
const [pid, leftoverAmount] = decoded.args;
|
|
96
97
|
const pool = this.#mustFindPool(Number(pid));
|
|
97
|
-
|
|
98
|
+
this.setLeftover(balances, pool.convexToken, leftoverAmount);
|
|
99
|
+
break;
|
|
98
100
|
}
|
|
99
101
|
default:
|
|
100
|
-
|
|
102
|
+
super.applyBalanceChanges(balances, decoded);
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
#mustFindPool(pid) {
|
|
@@ -55,18 +55,20 @@ class DaiUsdsAdapterContract extends AbstractAdapterContract {
|
|
|
55
55
|
}
|
|
56
56
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
applyBalanceChanges(balances, decoded) {
|
|
59
59
|
switch (decoded.functionName) {
|
|
60
60
|
case "daiToUsdsDiff": {
|
|
61
61
|
const [leftoverAmount] = decoded.args;
|
|
62
|
-
|
|
62
|
+
this.setLeftover(balances, this.dai, leftoverAmount);
|
|
63
|
+
break;
|
|
63
64
|
}
|
|
64
65
|
case "usdsToDaiDiff": {
|
|
65
66
|
const [leftoverAmount] = decoded.args;
|
|
66
|
-
|
|
67
|
+
this.setLeftover(balances, this.usds, leftoverAmount);
|
|
68
|
+
break;
|
|
67
69
|
}
|
|
68
70
|
default:
|
|
69
|
-
|
|
71
|
+
super.applyBalanceChanges(balances, decoded);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
}
|
|
@@ -81,18 +81,27 @@ class ERC4626AdapterContract extends AbstractAdapterContract {
|
|
|
81
81
|
}
|
|
82
82
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
applyBalanceChanges(balances, decoded) {
|
|
85
85
|
switch (decoded.functionName) {
|
|
86
86
|
case "depositDiff": {
|
|
87
87
|
const [leftoverAmount] = decoded.args;
|
|
88
|
-
|
|
88
|
+
this.setLeftover(balances, this.asset, leftoverAmount);
|
|
89
|
+
break;
|
|
89
90
|
}
|
|
90
91
|
case "redeemDiff": {
|
|
91
92
|
const [leftoverAmount] = decoded.args;
|
|
92
|
-
|
|
93
|
+
this.setLeftover(balances, this.share, leftoverAmount);
|
|
94
|
+
break;
|
|
93
95
|
}
|
|
96
|
+
case "redeem": {
|
|
97
|
+
const [shares] = decoded.args;
|
|
98
|
+
this.spendExact(balances, this.share, shares);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
// `withdraw`/`deposit`/`mint` stay unsupported: they are not emitted
|
|
102
|
+
// by the router (which uses diff variants) or the withdrawal compressor
|
|
94
103
|
default:
|
|
95
|
-
|
|
104
|
+
super.applyBalanceChanges(balances, decoded);
|
|
96
105
|
}
|
|
97
106
|
}
|
|
98
107
|
}
|
|
@@ -55,18 +55,20 @@ class ERC4626ReferralAdapterContract extends AbstractAdapterContract {
|
|
|
55
55
|
}
|
|
56
56
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
applyBalanceChanges(balances, decoded) {
|
|
59
59
|
switch (decoded.functionName) {
|
|
60
60
|
case "depositDiff": {
|
|
61
61
|
const [leftoverAmount] = decoded.args;
|
|
62
|
-
|
|
62
|
+
this.setLeftover(balances, this.asset, leftoverAmount);
|
|
63
|
+
break;
|
|
63
64
|
}
|
|
64
65
|
case "redeemDiff": {
|
|
65
66
|
const [leftoverAmount] = decoded.args;
|
|
66
|
-
|
|
67
|
+
this.setLeftover(balances, this.targetContract, leftoverAmount);
|
|
68
|
+
break;
|
|
67
69
|
}
|
|
68
70
|
default:
|
|
69
|
-
|
|
71
|
+
super.applyBalanceChanges(balances, decoded);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
}
|
|
@@ -43,19 +43,19 @@ class FluidDexAdapterContract extends AbstractAdapterContract {
|
|
|
43
43
|
token1: this.#token1 ? this.labelAddress(this.#token1) : void 0
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
|
|
46
|
+
applyBalanceChanges(balances, decoded) {
|
|
47
47
|
switch (decoded.functionName) {
|
|
48
48
|
case "swapInDiff": {
|
|
49
49
|
const [swap0to1, leftoverAmount] = decoded.args;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
this.setLeftover(
|
|
51
|
+
balances,
|
|
52
|
+
swap0to1 ? this.token0 : this.token1,
|
|
53
|
+
leftoverAmount
|
|
54
|
+
);
|
|
55
|
+
break;
|
|
56
56
|
}
|
|
57
57
|
default:
|
|
58
|
-
|
|
58
|
+
super.applyBalanceChanges(balances, decoded);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -65,25 +65,28 @@ class InfinifiGatewayAdapterContract extends AbstractAdapterContract {
|
|
|
65
65
|
)
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
applyBalanceChanges(balances, decoded) {
|
|
69
69
|
switch (decoded.functionName) {
|
|
70
70
|
case "mintDiff": {
|
|
71
71
|
const [leftoverAmount] = decoded.args;
|
|
72
|
-
|
|
72
|
+
this.setLeftover(balances, this.usdc, leftoverAmount);
|
|
73
|
+
break;
|
|
73
74
|
}
|
|
74
75
|
// redeem, stake and lock all spend iUSD
|
|
75
76
|
case "redeemDiff":
|
|
76
77
|
case "stakeDiff":
|
|
77
78
|
case "createPositionDiff": {
|
|
78
79
|
const [leftoverAmount] = decoded.args;
|
|
79
|
-
|
|
80
|
+
this.setLeftover(balances, this.iusd, leftoverAmount);
|
|
81
|
+
break;
|
|
80
82
|
}
|
|
81
83
|
case "unstakeDiff": {
|
|
82
84
|
const [leftoverAmount] = decoded.args;
|
|
83
|
-
|
|
85
|
+
this.setLeftover(balances, this.siusd, leftoverAmount);
|
|
86
|
+
break;
|
|
84
87
|
}
|
|
85
88
|
default:
|
|
86
|
-
|
|
89
|
+
super.applyBalanceChanges(balances, decoded);
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
}
|
|
@@ -38,14 +38,15 @@ class KelpLRTDepositPoolAdapterContract extends AbstractAdapterContract {
|
|
|
38
38
|
allowedAssets: this.#allowedAssets?.map((a) => this.labelAddress(a))
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
applyBalanceChanges(balances, decoded) {
|
|
42
42
|
switch (decoded.functionName) {
|
|
43
43
|
case "depositAssetDiff": {
|
|
44
44
|
const [tokenIn, leftoverAmount] = decoded.args;
|
|
45
|
-
|
|
45
|
+
this.setLeftover(balances, tokenIn, leftoverAmount);
|
|
46
|
+
break;
|
|
46
47
|
}
|
|
47
48
|
default:
|
|
48
|
-
|
|
49
|
+
super.applyBalanceChanges(balances, decoded);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
}
|
|
@@ -56,15 +56,16 @@ class LidoV1AdapterContract extends AbstractAdapterContract {
|
|
|
56
56
|
classifyLegacyOperation(_parsed, transfers) {
|
|
57
57
|
return { operation: "LidoSubmit", ...swapFromTransfers(transfers) };
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
applyBalanceChanges(balances, decoded) {
|
|
60
60
|
switch (decoded.functionName) {
|
|
61
61
|
// the adapter targets the WETH gateway, so WETH is spent
|
|
62
62
|
case "submitDiff": {
|
|
63
63
|
const [leftoverAmount] = decoded.args;
|
|
64
|
-
|
|
64
|
+
this.setLeftover(balances, this.weth, leftoverAmount);
|
|
65
|
+
break;
|
|
65
66
|
}
|
|
66
67
|
default:
|
|
67
|
-
|
|
68
|
+
super.applyBalanceChanges(balances, decoded);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
decodeAbiParameters
|
|
3
|
+
} from "viem";
|
|
2
4
|
import {
|
|
3
5
|
MissingSerializedParamsError
|
|
4
6
|
} from "../../../sdk/index.js";
|
|
@@ -36,6 +38,35 @@ class MellowClaimerAdapterContract extends AbstractAdapterContract {
|
|
|
36
38
|
)
|
|
37
39
|
};
|
|
38
40
|
}
|
|
41
|
+
applyBalanceChanges(balances, decoded) {
|
|
42
|
+
switch (decoded.functionName) {
|
|
43
|
+
// pure "accept" of transferred pending assets, coupled with a Mellow
|
|
44
|
+
// withdrawal request: it moves no ERC-20s, and the withdrawal phantom
|
|
45
|
+
// token effect is credited by the storeExpectedBalances bracket delta
|
|
46
|
+
// built from the compressor's outputs
|
|
47
|
+
case "multiAccept":
|
|
48
|
+
break;
|
|
49
|
+
case "withdrawPhantomToken": {
|
|
50
|
+
const [token, amount] = decoded.args;
|
|
51
|
+
this.spendExact(balances, token, amount);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
// TODO:
|
|
55
|
+
// `multiAcceptAndClaim` (the claim call emitted by the withdrawal
|
|
56
|
+
// compressor) cannot be previewed offline: the burn amount IS in
|
|
57
|
+
// calldata (`maxAssets` == the compressor's `withdrawalTokenSpent`),
|
|
58
|
+
// but the withdrawal phantom token to debit cannot be resolved from
|
|
59
|
+
// the `multiVault` argument. The on-chain adapter only serializes
|
|
60
|
+
// (creditManager, targetContract, allowedMultiVaults) and drops its
|
|
61
|
+
// `phantomTokenToMultiVault` mapping (unlike Midas/Kelp adapters,
|
|
62
|
+
// which serialize aligned token/phantom arrays). Resolving it would
|
|
63
|
+
// require DelayedWithdrawalPlugin state (WithdrawableAsset maps
|
|
64
|
+
// multiVault -> withdrawalPhantomToken) or a contract-side
|
|
65
|
+
// `serialize()` fix.
|
|
66
|
+
default:
|
|
67
|
+
super.applyBalanceChanges(balances, decoded);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
39
70
|
}
|
|
40
71
|
export {
|
|
41
72
|
MellowClaimerAdapterContract
|
|
@@ -54,19 +54,21 @@ class MellowDVVAdapterContract extends AbstractAdapterContract {
|
|
|
54
54
|
}
|
|
55
55
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
applyBalanceChanges(balances, decoded) {
|
|
58
58
|
const share = this.#vault ?? this.targetContract;
|
|
59
59
|
switch (decoded.functionName) {
|
|
60
60
|
case "depositDiff": {
|
|
61
61
|
const [leftoverAmount] = decoded.args;
|
|
62
|
-
|
|
62
|
+
this.setLeftover(balances, this.asset, leftoverAmount);
|
|
63
|
+
break;
|
|
63
64
|
}
|
|
64
65
|
case "redeemDiff": {
|
|
65
66
|
const [leftoverAmount] = decoded.args;
|
|
66
|
-
|
|
67
|
+
this.setLeftover(balances, share, leftoverAmount);
|
|
68
|
+
break;
|
|
67
69
|
}
|
|
68
70
|
default:
|
|
69
|
-
|
|
71
|
+
super.applyBalanceChanges(balances, decoded);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
}
|
|
@@ -89,19 +89,26 @@ class MellowERC4626VaultAdapterContract extends AbstractAdapterContract {
|
|
|
89
89
|
}
|
|
90
90
|
return super.classifyLegacyOperation(parsed, transfers);
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
applyBalanceChanges(balances, decoded) {
|
|
93
93
|
const share = this.#vault ?? this.targetContract;
|
|
94
94
|
switch (decoded.functionName) {
|
|
95
95
|
case "depositDiff": {
|
|
96
96
|
const [leftoverAmount] = decoded.args;
|
|
97
|
-
|
|
97
|
+
this.setLeftover(balances, this.asset, leftoverAmount);
|
|
98
|
+
break;
|
|
98
99
|
}
|
|
99
100
|
case "redeemDiff": {
|
|
100
101
|
const [leftoverAmount] = decoded.args;
|
|
101
|
-
|
|
102
|
+
this.setLeftover(balances, share, leftoverAmount);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "redeem": {
|
|
106
|
+
const [shares] = decoded.args;
|
|
107
|
+
this.spendExact(balances, share, shares);
|
|
108
|
+
break;
|
|
102
109
|
}
|
|
103
110
|
default:
|
|
104
|
-
|
|
111
|
+
super.applyBalanceChanges(balances, decoded);
|
|
105
112
|
}
|
|
106
113
|
}
|
|
107
114
|
}
|
|
@@ -36,15 +36,16 @@ class MellowWrapperAdapterContract extends AbstractAdapterContract {
|
|
|
36
36
|
allowedVaults: this.#allowedVaults?.map((v) => this.labelAddress(v))
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
applyBalanceChanges(balances, decoded) {
|
|
40
40
|
switch (decoded.functionName) {
|
|
41
41
|
case "depositDiff": {
|
|
42
42
|
const weth = this.tokensMeta.mustFindBySymbol("WETH").addr;
|
|
43
43
|
const [leftoverAmount] = decoded.args;
|
|
44
|
-
|
|
44
|
+
this.setLeftover(balances, weth, leftoverAmount);
|
|
45
|
+
break;
|
|
45
46
|
}
|
|
46
47
|
default:
|
|
47
|
-
|
|
48
|
+
super.applyBalanceChanges(balances, decoded);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
decodeAbiParameters
|
|
2
|
+
decodeAbiParameters,
|
|
3
|
+
isAddressEqual
|
|
3
4
|
} from "viem";
|
|
4
5
|
import {
|
|
5
6
|
MissingSerializedParamsError
|
|
@@ -81,21 +82,48 @@ class MidasGatewayAdapterContract extends AbstractAdapterContract {
|
|
|
81
82
|
}))
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
+
applyBalanceChanges(balances, decoded) {
|
|
85
86
|
switch (decoded.functionName) {
|
|
86
87
|
case "depositInstantDiff": {
|
|
87
88
|
const [tokenIn, leftoverAmount] = decoded.args;
|
|
88
|
-
|
|
89
|
+
this.setLeftover(balances, tokenIn, leftoverAmount);
|
|
90
|
+
break;
|
|
89
91
|
}
|
|
90
92
|
// redemptions spend the mToken down to the leftover, tokenOut arg is
|
|
91
93
|
// the received token
|
|
92
94
|
case "redeemInstantDiff":
|
|
93
95
|
case "redeemRequestDiff": {
|
|
94
96
|
const [, leftoverAmount] = decoded.args;
|
|
95
|
-
|
|
97
|
+
this.setLeftover(balances, this.mToken, leftoverAmount);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
// exact-input redemption request emitted in-bracket by the withdrawal
|
|
101
|
+
// compressor
|
|
102
|
+
case "redeemRequest": {
|
|
103
|
+
const [, amountMTokenIn] = decoded.args;
|
|
104
|
+
this.spendExact(balances, this.mToken, amountMTokenIn);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
// claim call emitted by the withdrawal compressor
|
|
108
|
+
case "withdrawFromRedeemer": {
|
|
109
|
+
const [, tokenOut, amount] = decoded.args;
|
|
110
|
+
const phantomToken = this.allowedOutputTokens.find(
|
|
111
|
+
(t) => isAddressEqual(t.token, tokenOut)
|
|
112
|
+
)?.phantomToken;
|
|
113
|
+
if (!phantomToken) {
|
|
114
|
+
super.applyBalanceChanges(balances, decoded);
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
this.spendExact(balances, phantomToken, amount);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case "withdrawPhantomToken": {
|
|
121
|
+
const [token, amount] = decoded.args;
|
|
122
|
+
this.spendExact(balances, token, amount);
|
|
123
|
+
break;
|
|
96
124
|
}
|
|
97
125
|
default:
|
|
98
|
-
|
|
126
|
+
super.applyBalanceChanges(balances, decoded);
|
|
99
127
|
}
|
|
100
128
|
}
|
|
101
129
|
}
|
|
@@ -53,14 +53,15 @@ class MidasIssuanceVaultAdapterContract extends AbstractAdapterContract {
|
|
|
53
53
|
allowedTokens: this.#allowedTokens?.map((t) => this.labelAddress(t))
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
applyBalanceChanges(balances, decoded) {
|
|
57
57
|
switch (decoded.functionName) {
|
|
58
58
|
case "depositInstantDiff": {
|
|
59
59
|
const [tokenIn, leftoverAmount] = decoded.args;
|
|
60
|
-
|
|
60
|
+
this.setLeftover(balances, tokenIn, leftoverAmount);
|
|
61
|
+
break;
|
|
61
62
|
}
|
|
62
63
|
default:
|
|
63
|
-
|
|
64
|
+
super.applyBalanceChanges(balances, decoded);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
}
|
|
@@ -61,16 +61,17 @@ class MidasRedemptionVaultAdapterContract extends AbstractAdapterContract {
|
|
|
61
61
|
}))
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
applyBalanceChanges(balances, decoded) {
|
|
65
65
|
switch (decoded.functionName) {
|
|
66
66
|
// redemption spends the mToken down to the leftover, tokenOut arg is
|
|
67
67
|
// the received token
|
|
68
68
|
case "redeemInstantDiff": {
|
|
69
69
|
const [, leftoverAmount] = decoded.args;
|
|
70
|
-
|
|
70
|
+
this.setLeftover(balances, this.mToken, leftoverAmount);
|
|
71
|
+
break;
|
|
71
72
|
}
|
|
72
73
|
default:
|
|
73
|
-
|
|
74
|
+
super.applyBalanceChanges(balances, decoded);
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
}
|
|
@@ -96,27 +96,29 @@ class PendleRouterAdapterContract extends AbstractAdapterContract {
|
|
|
96
96
|
}))
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
applyBalanceChanges(balances, decoded) {
|
|
100
100
|
switch (decoded.functionName) {
|
|
101
101
|
case "swapDiffTokenForPt":
|
|
102
102
|
case "addLiquiditySingleTokenDiff": {
|
|
103
103
|
const [, , , diffInput] = decoded.args;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
this.setLeftover(
|
|
105
|
+
balances,
|
|
106
|
+
diffInput.tokenIn,
|
|
107
|
+
diffInput.leftoverTokenIn
|
|
108
|
+
);
|
|
109
|
+
break;
|
|
110
110
|
}
|
|
111
111
|
case "swapDiffPtForToken": {
|
|
112
112
|
const [market, leftoverPt] = decoded.args;
|
|
113
113
|
const pt = this.#mustFindPendleToken(market, 0 /* PT */);
|
|
114
|
-
|
|
114
|
+
this.setLeftover(balances, pt, leftoverPt);
|
|
115
|
+
break;
|
|
115
116
|
}
|
|
116
117
|
case "removeLiquiditySingleTokenDiff": {
|
|
117
118
|
const [market, leftoverLp] = decoded.args;
|
|
118
119
|
const lp = this.#mustFindPendleToken(market, 1 /* LP */);
|
|
119
|
-
|
|
120
|
+
this.setLeftover(balances, lp, leftoverLp);
|
|
121
|
+
break;
|
|
120
122
|
}
|
|
121
123
|
case "redeemDiffPyToToken": {
|
|
122
124
|
const candidates = this.allowedPairs.filter(
|
|
@@ -131,15 +133,11 @@ class PendleRouterAdapterContract extends AbstractAdapterContract {
|
|
|
131
133
|
);
|
|
132
134
|
}
|
|
133
135
|
const [, leftoverPt] = decoded.args;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
tokenIn: candidates[0].pendleToken,
|
|
137
|
-
leftoverAmount: leftoverPt
|
|
138
|
-
}
|
|
139
|
-
];
|
|
136
|
+
this.setLeftover(balances, candidates[0].pendleToken, leftoverPt);
|
|
137
|
+
break;
|
|
140
138
|
}
|
|
141
139
|
default:
|
|
142
|
-
|
|
140
|
+
super.applyBalanceChanges(balances, decoded);
|
|
143
141
|
}
|
|
144
142
|
}
|
|
145
143
|
#mustFindPendleToken(market, type) {
|
|
@@ -45,15 +45,16 @@ class SecuritizeOnRampAdapterContract extends AbstractAdapterContract {
|
|
|
45
45
|
liquidityToken: this.#liquidityToken ? this.labelAddress(this.#liquidityToken) : void 0
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
applyBalanceChanges(balances, decoded) {
|
|
49
49
|
switch (decoded.functionName) {
|
|
50
50
|
// swaps the liquidity token into dsToken
|
|
51
51
|
case "swapDiff": {
|
|
52
52
|
const [leftoverAmount] = decoded.args;
|
|
53
|
-
|
|
53
|
+
this.setLeftover(balances, this.liquidityToken, leftoverAmount);
|
|
54
|
+
break;
|
|
54
55
|
}
|
|
55
56
|
default:
|
|
56
|
-
|
|
57
|
+
super.applyBalanceChanges(balances, decoded);
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
}
|