@gearbox-protocol/sdk 0.0.106 → 0.0.109
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/lib/core/creditManager.js +10 -8
- package/lib/strategies/convex.js +5 -5
- package/lib/strategies/curve.js +14 -16
- package/lib/strategies/lido.js +2 -2
- package/lib/strategies/yearn.js +12 -8
- package/package.json +1 -1
- package/src/core/creditManager.ts +10 -8
- package/src/strategies/convex.ts +12 -6
- package/src/strategies/curve.ts +30 -22
- package/src/strategies/lido.ts +6 -2
- package/src/strategies/yearn.ts +19 -8
|
@@ -34,9 +34,9 @@ var errors_1 = require("./errors");
|
|
|
34
34
|
var CreditManagerData = /** @class */ (function () {
|
|
35
35
|
function CreditManagerData(payload) {
|
|
36
36
|
this.isPaused = false;
|
|
37
|
-
this.id = payload.addr;
|
|
38
|
-
this.address = payload.addr;
|
|
39
|
-
this.underlyingToken = payload.underlying || "";
|
|
37
|
+
this.id = payload.addr.toLowerCase();
|
|
38
|
+
this.address = payload.addr.toLowerCase();
|
|
39
|
+
this.underlyingToken = (payload.underlying || "").toLowerCase();
|
|
40
40
|
this.isWETH = payload.isWETH || false;
|
|
41
41
|
this.canBorrow = payload.canBorrow || false;
|
|
42
42
|
this.borrowRate =
|
|
@@ -49,22 +49,24 @@ var CreditManagerData = /** @class */ (function () {
|
|
|
49
49
|
this.maxAmount = ethers_1.BigNumber.from(payload.maxAmount || 0);
|
|
50
50
|
this.maxLeverageFactor = ethers_1.BigNumber.from(payload.maxLeverageFactor || 0).toNumber();
|
|
51
51
|
this.availableLiquidity = ethers_1.BigNumber.from(payload.availableLiquidity || 0);
|
|
52
|
-
this.allowedTokens = payload.collateralTokens || []
|
|
52
|
+
this.allowedTokens = (payload.collateralTokens || []).map(function (t) {
|
|
53
|
+
return t.toLowerCase();
|
|
54
|
+
});
|
|
53
55
|
this.adapters = (payload.adapters || []).reduce(function (acc, _a) {
|
|
54
56
|
var _b;
|
|
55
57
|
var allowedContract = _a.allowedContract, adapter = _a.adapter;
|
|
56
|
-
return (__assign(__assign({}, acc), (_b = {}, _b[allowedContract] = adapter, _b)));
|
|
58
|
+
return (__assign(__assign({}, acc), (_b = {}, _b[allowedContract.toLowerCase()] = adapter.toLowerCase(), _b)));
|
|
57
59
|
}, {});
|
|
58
60
|
this.liquidationThresholds = (payload.liquidationThresholds || []).reduce(function (acc, threshold, index) {
|
|
59
61
|
var address = payload.collateralTokens[index];
|
|
60
62
|
if (address)
|
|
61
|
-
acc[address
|
|
63
|
+
acc[address] = ethers_1.BigNumber.from(threshold);
|
|
62
64
|
return acc;
|
|
63
65
|
}, {});
|
|
64
66
|
this.version = ethers_1.BigNumber.from(payload.version || 1).toNumber();
|
|
65
|
-
this.creditFacade = payload.creditFacade || "";
|
|
67
|
+
this.creditFacade = (payload.creditFacade || "").toLowerCase();
|
|
66
68
|
this.isDegenMode = payload.isDegenMode || false;
|
|
67
|
-
this.degenNFT = payload.degenNFT || "";
|
|
69
|
+
this.degenNFT = (payload.degenNFT || "").toLowerCase();
|
|
68
70
|
this.isIncreaseDebtForbidden = payload.isIncreaseDebtForbidden || false;
|
|
69
71
|
this.forbiddenTokenMask = ethers_1.BigNumber.from(payload.forbiddenTokenMask || 0);
|
|
70
72
|
}
|
package/lib/strategies/convex.js
CHANGED
|
@@ -175,7 +175,7 @@ var ConvexStrategies = /** @class */ (function () {
|
|
|
175
175
|
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
176
176
|
var curvePool = curveLpTokenData.pool;
|
|
177
177
|
calls = curve_1.CurveStrategies.underlyingToCurveLP(data, network, curvePool, underlyingAmount);
|
|
178
|
-
calls.push(ConvexBoosterMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network].CONVEX_BOOSTER]).depositAll(stakedTokenParams.pid, true));
|
|
178
|
+
calls.push(ConvexBoosterMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network].CONVEX_BOOSTER.toLowerCase()]).depositAll(stakedTokenParams.pid, true));
|
|
179
179
|
return calls;
|
|
180
180
|
};
|
|
181
181
|
ConvexStrategies.stakedConvexToUnderlying = function (data, network, convexPool, convexLpAmount, sellRewards) {
|
|
@@ -186,7 +186,7 @@ var ConvexStrategies = /** @class */ (function () {
|
|
|
186
186
|
var curveLpToken = stakedTokenParams.underlying;
|
|
187
187
|
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
188
188
|
var curvePool = curveLpTokenData.pool;
|
|
189
|
-
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool]]).withdrawAndUnwrap(convexLpAmount, true));
|
|
189
|
+
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool].toLowerCase()]).withdrawAndUnwrap(convexLpAmount, true));
|
|
190
190
|
calls.push.apply(calls, curve_1.CurveStrategies.allCurveLPToUnderlying(data, network, curvePool));
|
|
191
191
|
if (sellRewards) {
|
|
192
192
|
calls.push.apply(calls, ConvexStrategies.sellRewards(data, network, convexPool));
|
|
@@ -201,7 +201,7 @@ var ConvexStrategies = /** @class */ (function () {
|
|
|
201
201
|
var curveLpToken = stakedTokenParams.underlying;
|
|
202
202
|
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
203
203
|
var curvePool = curveLpTokenData.pool;
|
|
204
|
-
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool]]).withdrawAllAndUnwrap(true));
|
|
204
|
+
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool].toLowerCase()]).withdrawAllAndUnwrap(true));
|
|
205
205
|
calls.push.apply(calls, curve_1.CurveStrategies.allCurveLPToUnderlying(data, network, curvePool));
|
|
206
206
|
if (sellRewards) {
|
|
207
207
|
calls.push.apply(calls, ConvexStrategies.sellRewards(data, network, convexPool));
|
|
@@ -211,9 +211,9 @@ var ConvexStrategies = /** @class */ (function () {
|
|
|
211
211
|
ConvexStrategies.sellRewards = function (data, network, convexPool) {
|
|
212
212
|
var calls = [];
|
|
213
213
|
var convexParams = contracts_1.contractParams[convexPool];
|
|
214
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [token_1.tokenDataByNetwork[network].CRV, data.underlyingToken], Math.floor(new Date().getTime() / 1000) + 3600), uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [token_1.tokenDataByNetwork[network].CVX, data.underlyingToken], Math.floor(new Date().getTime() / 1000) + 3600));
|
|
214
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [token_1.tokenDataByNetwork[network].CRV, data.underlyingToken], Math.floor(new Date().getTime() / 1000) + 3600), uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [token_1.tokenDataByNetwork[network].CVX, data.underlyingToken], Math.floor(new Date().getTime() / 1000) + 3600));
|
|
215
215
|
convexParams.extraRewards.forEach(function (extraReward) {
|
|
216
|
-
uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
216
|
+
uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [
|
|
217
217
|
token_1.tokenDataByNetwork[network][extraReward.rewardToken],
|
|
218
218
|
data.underlyingToken
|
|
219
219
|
], Math.floor(new Date().getTime() / 1000) + 3600);
|
package/lib/strategies/curve.js
CHANGED
|
@@ -155,14 +155,12 @@ var CurveStrategies = /** @class */ (function () {
|
|
|
155
155
|
var calls = [];
|
|
156
156
|
var curveParams = contracts_1.contractParams[curvePool];
|
|
157
157
|
var tokenToDeposit = curveParams.tokens[0];
|
|
158
|
-
if (data.underlyingToken
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (data.underlyingToken === token_1.tokenDataByNetwork[network][tokenToDeposit]) {
|
|
162
|
-
calls.push(CurveMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][curvePool]]).add_liquidity_one_coin(underlyingAmount, 0, 0));
|
|
158
|
+
if (data.underlyingToken.toLowerCase() !==
|
|
159
|
+
token_1.tokenDataByNetwork[network][tokenToDeposit].toLowerCase()) {
|
|
160
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapExactTokensForTokens(underlyingAmount, 0, [data.underlyingToken, token_1.tokenDataByNetwork[network][tokenToDeposit]], constants_1.ADDRESS_0X0, Math.floor(new Date().getTime() / 1000) + 3600), CurveMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][curvePool].toLowerCase()]).add_all_liquidity_one_coin(0, 0));
|
|
163
161
|
}
|
|
164
162
|
else {
|
|
165
|
-
calls.push(CurveMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][curvePool]]).
|
|
163
|
+
calls.push(CurveMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][curvePool].toLowerCase()]).add_liquidity_one_coin(underlyingAmount, 0, 0));
|
|
166
164
|
}
|
|
167
165
|
return calls;
|
|
168
166
|
};
|
|
@@ -172,16 +170,16 @@ var CurveStrategies = /** @class */ (function () {
|
|
|
172
170
|
var curveContractAddress;
|
|
173
171
|
if (curveParams.wrapper) {
|
|
174
172
|
curveContractAddress =
|
|
175
|
-
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper]];
|
|
173
|
+
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper].toLowerCase()];
|
|
176
174
|
}
|
|
177
175
|
else {
|
|
178
176
|
curveContractAddress =
|
|
179
|
-
data.adapters[contracts_1.contractsByNetwork[network][curvePool]];
|
|
177
|
+
data.adapters[contracts_1.contractsByNetwork[network][curvePool].toLowerCase()];
|
|
180
178
|
}
|
|
181
179
|
calls.push(CurveMulticaller.connect(curveContractAddress).remove_liquidity_one_coin(curveLPAmount, 0, 0));
|
|
182
|
-
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
183
|
-
data.underlyingToken) {
|
|
184
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
180
|
+
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]].toLowerCase() !==
|
|
181
|
+
data.underlyingToken.toLowerCase()) {
|
|
182
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [
|
|
185
183
|
token_1.tokenDataByNetwork[network][curveParams.tokens[0]],
|
|
186
184
|
data.underlyingToken
|
|
187
185
|
], Math.floor(new Date().getTime() / 1000) + 3600));
|
|
@@ -194,16 +192,16 @@ var CurveStrategies = /** @class */ (function () {
|
|
|
194
192
|
var curveContractAddress;
|
|
195
193
|
if (curveParams.wrapper) {
|
|
196
194
|
curveContractAddress =
|
|
197
|
-
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper]];
|
|
195
|
+
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper].toLowerCase()];
|
|
198
196
|
}
|
|
199
197
|
else {
|
|
200
198
|
curveContractAddress =
|
|
201
|
-
data.adapters[contracts_1.contractsByNetwork[network][curvePool]];
|
|
199
|
+
data.adapters[contracts_1.contractsByNetwork[network][curvePool].toLowerCase()];
|
|
202
200
|
}
|
|
203
201
|
calls.push(CurveMulticaller.connect(curveContractAddress).remove_all_liquidity_one_coin(0, 0));
|
|
204
|
-
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
205
|
-
data.underlyingToken) {
|
|
206
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
202
|
+
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]].toLowerCase() !==
|
|
203
|
+
data.underlyingToken.toLowerCase()) {
|
|
204
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [
|
|
207
205
|
token_1.tokenDataByNetwork[network][curveParams.tokens[0]],
|
|
208
206
|
data.underlyingToken
|
|
209
207
|
], Math.floor(new Date().getTime() / 1000) + 3600));
|
package/lib/strategies/lido.js
CHANGED
|
@@ -47,9 +47,9 @@ var LidoStrategies = /** @class */ (function () {
|
|
|
47
47
|
var calls = [];
|
|
48
48
|
// This should be a pathfinder call
|
|
49
49
|
if (!data.isWETH) {
|
|
50
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapExactTokensForTokens(underlyingAmount, 0, [data.underlyingToken, token_1.tokenDataByNetwork[network].WETH], constants_1.ADDRESS_0X0, Math.floor(new Date().getTime() / 1000) + 3600));
|
|
50
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapExactTokensForTokens(underlyingAmount, 0, [data.underlyingToken, token_1.tokenDataByNetwork[network].WETH], constants_1.ADDRESS_0X0, Math.floor(new Date().getTime() / 1000) + 3600));
|
|
51
51
|
}
|
|
52
|
-
calls.push(LidoMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network].LIDO_STETH_GATEWAY]).submitAll());
|
|
52
|
+
calls.push(LidoMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network].LIDO_STETH_GATEWAY.toLowerCase()]).submitAll());
|
|
53
53
|
return calls;
|
|
54
54
|
};
|
|
55
55
|
return LidoStrategies;
|
package/lib/strategies/yearn.js
CHANGED
|
@@ -85,14 +85,18 @@ var YearnV2Strategies = /** @class */ (function () {
|
|
|
85
85
|
var yearnToken = vaultParams.shareToken;
|
|
86
86
|
var yearnParams = token_1.supportedTokens[yearnToken];
|
|
87
87
|
if (yearnParams.type === tokenType_1.TokenType.YEARN_VAULT) {
|
|
88
|
-
if (data.underlyingToken !==
|
|
89
|
-
token_1.tokenDataByNetwork[network][yearnParams.underlying]) {
|
|
88
|
+
if (data.underlyingToken.toLowerCase() !==
|
|
89
|
+
token_1.tokenDataByNetwork[network][yearnParams.underlying].toLowerCase()) {
|
|
90
90
|
// This should be a pathfinder call
|
|
91
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapExactTokensForTokens(underlyingAmount, 0, [
|
|
91
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapExactTokensForTokens(underlyingAmount, 0, [
|
|
92
92
|
data.underlyingToken,
|
|
93
93
|
token_1.tokenDataByNetwork[network][yearnParams.underlying]
|
|
94
94
|
], constants_1.ADDRESS_0X0, Math.floor(new Date().getTime() / 1000) + 3600));
|
|
95
95
|
}
|
|
96
|
+
else {
|
|
97
|
+
calls.push(YearnV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network][yearnVault].toLowerCase()]).deposit(underlyingAmount));
|
|
98
|
+
return calls;
|
|
99
|
+
}
|
|
96
100
|
}
|
|
97
101
|
else if (yearnParams.type === tokenType_1.TokenType.YEARN_VAULT_OF_CURVE_LP ||
|
|
98
102
|
yearnParams.type === tokenType_1.TokenType.YEARN_VAULT_OF_META_CURVE_LP) {
|
|
@@ -103,7 +107,7 @@ var YearnV2Strategies = /** @class */ (function () {
|
|
|
103
107
|
else {
|
|
104
108
|
throw new Error("Yearn vault type unknown");
|
|
105
109
|
}
|
|
106
|
-
calls.push(YearnV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network][yearnVault]]).deposit());
|
|
110
|
+
calls.push(YearnV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network][yearnVault].toLowerCase()]).deposit());
|
|
107
111
|
return calls;
|
|
108
112
|
};
|
|
109
113
|
YearnV2Strategies.yearnToUnderlying = function (data, network, yearnVault, yearnSharesAmount) {
|
|
@@ -111,12 +115,12 @@ var YearnV2Strategies = /** @class */ (function () {
|
|
|
111
115
|
var vaultParams = contracts_1.contractParams[yearnVault];
|
|
112
116
|
var yearnToken = vaultParams.shareToken;
|
|
113
117
|
var yearnParams = token_1.supportedTokens[yearnToken];
|
|
114
|
-
calls.push(YearnV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network][yearnVault]]).withdraw(yearnSharesAmount));
|
|
118
|
+
calls.push(YearnV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network][yearnVault].toLowerCase()]).withdraw(yearnSharesAmount));
|
|
115
119
|
if (yearnParams.type === tokenType_1.TokenType.YEARN_VAULT) {
|
|
116
|
-
if (data.underlyingToken !==
|
|
117
|
-
token_1.tokenDataByNetwork[network][yearnParams.underlying]) {
|
|
120
|
+
if (data.underlyingToken.toLowerCase() !==
|
|
121
|
+
token_1.tokenDataByNetwork[network][yearnParams.underlying].toLowerCase()) {
|
|
118
122
|
// This should be a pathfinder call
|
|
119
|
-
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
123
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()]).swapAllTokensForTokens(0, [
|
|
120
124
|
token_1.tokenDataByNetwork[network][yearnParams.underlying],
|
|
121
125
|
data.underlyingToken
|
|
122
126
|
], Math.floor(new Date().getTime() / 1000) + 3600));
|
package/package.json
CHANGED
|
@@ -62,10 +62,10 @@ export class CreditManagerData {
|
|
|
62
62
|
public readonly isPaused: boolean = false;
|
|
63
63
|
|
|
64
64
|
constructor(payload: CreditManagerDataPayload) {
|
|
65
|
-
this.id = payload.addr;
|
|
66
|
-
this.address = payload.addr;
|
|
65
|
+
this.id = payload.addr.toLowerCase();
|
|
66
|
+
this.address = payload.addr.toLowerCase();
|
|
67
67
|
|
|
68
|
-
this.underlyingToken = payload.underlying || "";
|
|
68
|
+
this.underlyingToken = (payload.underlying || "").toLowerCase();
|
|
69
69
|
|
|
70
70
|
this.isWETH = payload.isWETH || false;
|
|
71
71
|
this.canBorrow = payload.canBorrow || false;
|
|
@@ -84,11 +84,13 @@ export class CreditManagerData {
|
|
|
84
84
|
).toNumber();
|
|
85
85
|
this.availableLiquidity = BigNumber.from(payload.availableLiquidity || 0);
|
|
86
86
|
|
|
87
|
-
this.allowedTokens = payload.collateralTokens || []
|
|
87
|
+
this.allowedTokens = (payload.collateralTokens || []).map(t =>
|
|
88
|
+
t.toLowerCase()
|
|
89
|
+
);
|
|
88
90
|
this.adapters = (payload.adapters || []).reduce<Record<string, string>>(
|
|
89
91
|
(acc, { allowedContract, adapter }) => ({
|
|
90
92
|
...acc,
|
|
91
|
-
[allowedContract]: adapter
|
|
93
|
+
[allowedContract.toLowerCase()]: adapter.toLowerCase()
|
|
92
94
|
}),
|
|
93
95
|
{}
|
|
94
96
|
);
|
|
@@ -98,15 +100,15 @@ export class CreditManagerData {
|
|
|
98
100
|
>((acc, threshold, index) => {
|
|
99
101
|
const address = payload.collateralTokens[index];
|
|
100
102
|
|
|
101
|
-
if (address) acc[address
|
|
103
|
+
if (address) acc[address] = BigNumber.from(threshold);
|
|
102
104
|
|
|
103
105
|
return acc;
|
|
104
106
|
}, {});
|
|
105
107
|
|
|
106
108
|
this.version = BigNumber.from(payload.version || 1).toNumber();
|
|
107
|
-
this.creditFacade = payload.creditFacade || "";
|
|
109
|
+
this.creditFacade = (payload.creditFacade || "").toLowerCase();
|
|
108
110
|
this.isDegenMode = payload.isDegenMode || false;
|
|
109
|
-
this.degenNFT = payload.degenNFT || "";
|
|
111
|
+
this.degenNFT = (payload.degenNFT || "").toLowerCase();
|
|
110
112
|
this.isIncreaseDebtForbidden = payload.isIncreaseDebtForbidden || false;
|
|
111
113
|
this.forbiddenTokenMask = BigNumber.from(payload.forbiddenTokenMask || 0);
|
|
112
114
|
}
|
package/src/strategies/convex.ts
CHANGED
|
@@ -291,7 +291,7 @@ export class ConvexStrategies {
|
|
|
291
291
|
|
|
292
292
|
calls.push(
|
|
293
293
|
ConvexBoosterMulticaller.connect(
|
|
294
|
-
data.adapters[contractsByNetwork[network].CONVEX_BOOSTER]
|
|
294
|
+
data.adapters[contractsByNetwork[network].CONVEX_BOOSTER.toLowerCase()]
|
|
295
295
|
).depositAll(stakedTokenParams.pid, true)
|
|
296
296
|
);
|
|
297
297
|
|
|
@@ -317,7 +317,7 @@ export class ConvexStrategies {
|
|
|
317
317
|
|
|
318
318
|
calls.push(
|
|
319
319
|
ConvexPoolMulticaller.connect(
|
|
320
|
-
data.adapters[contractsByNetwork[network][convexPool]]
|
|
320
|
+
data.adapters[contractsByNetwork[network][convexPool].toLowerCase()]
|
|
321
321
|
).withdrawAndUnwrap(convexLpAmount, true)
|
|
322
322
|
);
|
|
323
323
|
|
|
@@ -350,7 +350,7 @@ export class ConvexStrategies {
|
|
|
350
350
|
|
|
351
351
|
calls.push(
|
|
352
352
|
ConvexPoolMulticaller.connect(
|
|
353
|
-
data.adapters[contractsByNetwork[network][convexPool]]
|
|
353
|
+
data.adapters[contractsByNetwork[network][convexPool].toLowerCase()]
|
|
354
354
|
).withdrawAllAndUnwrap(true)
|
|
355
355
|
);
|
|
356
356
|
|
|
@@ -375,14 +375,18 @@ export class ConvexStrategies {
|
|
|
375
375
|
|
|
376
376
|
calls.push(
|
|
377
377
|
UniswapV2Multicaller.connect(
|
|
378
|
-
data.adapters[
|
|
378
|
+
data.adapters[
|
|
379
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
380
|
+
]
|
|
379
381
|
).swapAllTokensForTokens(
|
|
380
382
|
0,
|
|
381
383
|
[tokenDataByNetwork[network].CRV, data.underlyingToken],
|
|
382
384
|
Math.floor(new Date().getTime() / 1000) + 3600
|
|
383
385
|
),
|
|
384
386
|
UniswapV2Multicaller.connect(
|
|
385
|
-
data.adapters[
|
|
387
|
+
data.adapters[
|
|
388
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
389
|
+
]
|
|
386
390
|
).swapAllTokensForTokens(
|
|
387
391
|
0,
|
|
388
392
|
[tokenDataByNetwork[network].CVX, data.underlyingToken],
|
|
@@ -392,7 +396,9 @@ export class ConvexStrategies {
|
|
|
392
396
|
|
|
393
397
|
convexParams.extraRewards.forEach(extraReward => {
|
|
394
398
|
UniswapV2Multicaller.connect(
|
|
395
|
-
data.adapters[
|
|
399
|
+
data.adapters[
|
|
400
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
401
|
+
]
|
|
396
402
|
).swapAllTokensForTokens(
|
|
397
403
|
0,
|
|
398
404
|
[
|
package/src/strategies/curve.ts
CHANGED
|
@@ -344,31 +344,31 @@ export class CurveStrategies {
|
|
|
344
344
|
const curveParams = contractParams[curvePool] as CurveParams;
|
|
345
345
|
const tokenToDeposit = curveParams.tokens[0];
|
|
346
346
|
|
|
347
|
-
if (
|
|
347
|
+
if (
|
|
348
|
+
data.underlyingToken.toLowerCase() !==
|
|
349
|
+
tokenDataByNetwork[network][tokenToDeposit].toLowerCase()
|
|
350
|
+
) {
|
|
348
351
|
calls.push(
|
|
349
352
|
UniswapV2Multicaller.connect(
|
|
350
|
-
data.adapters[
|
|
353
|
+
data.adapters[
|
|
354
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
355
|
+
]
|
|
351
356
|
).swapExactTokensForTokens(
|
|
352
357
|
underlyingAmount,
|
|
353
358
|
0,
|
|
354
359
|
[data.underlyingToken, tokenDataByNetwork[network][tokenToDeposit]],
|
|
355
360
|
ADDRESS_0X0,
|
|
356
361
|
Math.floor(new Date().getTime() / 1000) + 3600
|
|
357
|
-
)
|
|
358
|
-
);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
if (data.underlyingToken === tokenDataByNetwork[network][tokenToDeposit]) {
|
|
362
|
-
calls.push(
|
|
362
|
+
),
|
|
363
363
|
CurveMulticaller.connect(
|
|
364
|
-
data.adapters[contractsByNetwork[network][curvePool]]
|
|
365
|
-
).
|
|
364
|
+
data.adapters[contractsByNetwork[network][curvePool].toLowerCase()]
|
|
365
|
+
).add_all_liquidity_one_coin(0, 0)
|
|
366
366
|
);
|
|
367
367
|
} else {
|
|
368
368
|
calls.push(
|
|
369
369
|
CurveMulticaller.connect(
|
|
370
|
-
data.adapters[contractsByNetwork[network][curvePool]]
|
|
371
|
-
).
|
|
370
|
+
data.adapters[contractsByNetwork[network][curvePool].toLowerCase()]
|
|
371
|
+
).add_liquidity_one_coin(underlyingAmount, 0, 0)
|
|
372
372
|
);
|
|
373
373
|
}
|
|
374
374
|
|
|
@@ -388,10 +388,12 @@ export class CurveStrategies {
|
|
|
388
388
|
|
|
389
389
|
if (curveParams.wrapper) {
|
|
390
390
|
curveContractAddress =
|
|
391
|
-
data.adapters[
|
|
391
|
+
data.adapters[
|
|
392
|
+
contractsByNetwork[network][curveParams.wrapper].toLowerCase()
|
|
393
|
+
];
|
|
392
394
|
} else {
|
|
393
395
|
curveContractAddress =
|
|
394
|
-
data.adapters[contractsByNetwork[network][curvePool]];
|
|
396
|
+
data.adapters[contractsByNetwork[network][curvePool].toLowerCase()];
|
|
395
397
|
}
|
|
396
398
|
|
|
397
399
|
calls.push(
|
|
@@ -403,12 +405,14 @@ export class CurveStrategies {
|
|
|
403
405
|
);
|
|
404
406
|
|
|
405
407
|
if (
|
|
406
|
-
tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
407
|
-
data.underlyingToken
|
|
408
|
+
tokenDataByNetwork[network][curveParams.tokens[0]].toLowerCase() !==
|
|
409
|
+
data.underlyingToken.toLowerCase()
|
|
408
410
|
) {
|
|
409
411
|
calls.push(
|
|
410
412
|
UniswapV2Multicaller.connect(
|
|
411
|
-
data.adapters[
|
|
413
|
+
data.adapters[
|
|
414
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
415
|
+
]
|
|
412
416
|
).swapAllTokensForTokens(
|
|
413
417
|
0,
|
|
414
418
|
[
|
|
@@ -435,10 +439,12 @@ export class CurveStrategies {
|
|
|
435
439
|
|
|
436
440
|
if (curveParams.wrapper) {
|
|
437
441
|
curveContractAddress =
|
|
438
|
-
data.adapters[
|
|
442
|
+
data.adapters[
|
|
443
|
+
contractsByNetwork[network][curveParams.wrapper].toLowerCase()
|
|
444
|
+
];
|
|
439
445
|
} else {
|
|
440
446
|
curveContractAddress =
|
|
441
|
-
data.adapters[contractsByNetwork[network][curvePool]];
|
|
447
|
+
data.adapters[contractsByNetwork[network][curvePool].toLowerCase()];
|
|
442
448
|
}
|
|
443
449
|
|
|
444
450
|
calls.push(
|
|
@@ -448,12 +454,14 @@ export class CurveStrategies {
|
|
|
448
454
|
);
|
|
449
455
|
|
|
450
456
|
if (
|
|
451
|
-
tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
452
|
-
data.underlyingToken
|
|
457
|
+
tokenDataByNetwork[network][curveParams.tokens[0]].toLowerCase() !==
|
|
458
|
+
data.underlyingToken.toLowerCase()
|
|
453
459
|
) {
|
|
454
460
|
calls.push(
|
|
455
461
|
UniswapV2Multicaller.connect(
|
|
456
|
-
data.adapters[
|
|
462
|
+
data.adapters[
|
|
463
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
464
|
+
]
|
|
457
465
|
).swapAllTokensForTokens(
|
|
458
466
|
0,
|
|
459
467
|
[
|
package/src/strategies/lido.ts
CHANGED
|
@@ -62,7 +62,9 @@ export class LidoStrategies {
|
|
|
62
62
|
if (!data.isWETH) {
|
|
63
63
|
calls.push(
|
|
64
64
|
UniswapV2Multicaller.connect(
|
|
65
|
-
data.adapters[
|
|
65
|
+
data.adapters[
|
|
66
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
67
|
+
]
|
|
66
68
|
).swapExactTokensForTokens(
|
|
67
69
|
underlyingAmount,
|
|
68
70
|
0,
|
|
@@ -75,7 +77,9 @@ export class LidoStrategies {
|
|
|
75
77
|
|
|
76
78
|
calls.push(
|
|
77
79
|
LidoMulticaller.connect(
|
|
78
|
-
data.adapters[
|
|
80
|
+
data.adapters[
|
|
81
|
+
contractsByNetwork[network].LIDO_STETH_GATEWAY.toLowerCase()
|
|
82
|
+
]
|
|
79
83
|
).submitAll()
|
|
80
84
|
);
|
|
81
85
|
|
package/src/strategies/yearn.ts
CHANGED
|
@@ -103,13 +103,15 @@ export class YearnV2Strategies {
|
|
|
103
103
|
|
|
104
104
|
if (yearnParams.type === TokenType.YEARN_VAULT) {
|
|
105
105
|
if (
|
|
106
|
-
data.underlyingToken !==
|
|
107
|
-
tokenDataByNetwork[network][yearnParams.underlying]
|
|
106
|
+
data.underlyingToken.toLowerCase() !==
|
|
107
|
+
tokenDataByNetwork[network][yearnParams.underlying].toLowerCase()
|
|
108
108
|
) {
|
|
109
109
|
// This should be a pathfinder call
|
|
110
110
|
calls.push(
|
|
111
111
|
UniswapV2Multicaller.connect(
|
|
112
|
-
data.adapters[
|
|
112
|
+
data.adapters[
|
|
113
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
114
|
+
]
|
|
113
115
|
).swapExactTokensForTokens(
|
|
114
116
|
underlyingAmount,
|
|
115
117
|
0,
|
|
@@ -121,6 +123,13 @@ export class YearnV2Strategies {
|
|
|
121
123
|
Math.floor(new Date().getTime() / 1000) + 3600
|
|
122
124
|
)
|
|
123
125
|
);
|
|
126
|
+
} else {
|
|
127
|
+
calls.push(
|
|
128
|
+
YearnV2Multicaller.connect(
|
|
129
|
+
data.adapters[contractsByNetwork[network][yearnVault].toLowerCase()]
|
|
130
|
+
).deposit(underlyingAmount)
|
|
131
|
+
);
|
|
132
|
+
return calls;
|
|
124
133
|
}
|
|
125
134
|
} else if (
|
|
126
135
|
yearnParams.type === TokenType.YEARN_VAULT_OF_CURVE_LP ||
|
|
@@ -143,7 +152,7 @@ export class YearnV2Strategies {
|
|
|
143
152
|
|
|
144
153
|
calls.push(
|
|
145
154
|
YearnV2Multicaller.connect(
|
|
146
|
-
data.adapters[contractsByNetwork[network][yearnVault]]
|
|
155
|
+
data.adapters[contractsByNetwork[network][yearnVault].toLowerCase()]
|
|
147
156
|
).deposit()
|
|
148
157
|
);
|
|
149
158
|
|
|
@@ -163,19 +172,21 @@ export class YearnV2Strategies {
|
|
|
163
172
|
|
|
164
173
|
calls.push(
|
|
165
174
|
YearnV2Multicaller.connect(
|
|
166
|
-
data.adapters[contractsByNetwork[network][yearnVault]]
|
|
175
|
+
data.adapters[contractsByNetwork[network][yearnVault].toLowerCase()]
|
|
167
176
|
).withdraw(yearnSharesAmount)
|
|
168
177
|
);
|
|
169
178
|
|
|
170
179
|
if (yearnParams.type === TokenType.YEARN_VAULT) {
|
|
171
180
|
if (
|
|
172
|
-
data.underlyingToken !==
|
|
173
|
-
tokenDataByNetwork[network][yearnParams.underlying]
|
|
181
|
+
data.underlyingToken.toLowerCase() !==
|
|
182
|
+
tokenDataByNetwork[network][yearnParams.underlying].toLowerCase()
|
|
174
183
|
) {
|
|
175
184
|
// This should be a pathfinder call
|
|
176
185
|
calls.push(
|
|
177
186
|
UniswapV2Multicaller.connect(
|
|
178
|
-
data.adapters[
|
|
187
|
+
data.adapters[
|
|
188
|
+
contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
|
|
189
|
+
]
|
|
179
190
|
).swapAllTokensForTokens(
|
|
180
191
|
0,
|
|
181
192
|
[
|