@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.
@@ -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.toLowerCase()] = ethers_1.BigNumber.from(threshold);
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
  }
@@ -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);
@@ -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 !== token_1.tokenDataByNetwork[network][tokenToDeposit]) {
159
- calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapExactTokensForTokens(underlyingAmount, 0, [data.underlyingToken, token_1.tokenDataByNetwork[network][tokenToDeposit]], constants_1.ADDRESS_0X0, Math.floor(new Date().getTime() / 1000) + 3600));
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]]).add_all_liquidity_one_coin(0, 0));
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));
@@ -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;
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "0.0.106",
3
+ "version": "0.0.109",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -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.toLowerCase()] = BigNumber.from(threshold);
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
  }
@@ -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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
399
+ data.adapters[
400
+ contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
401
+ ]
396
402
  ).swapAllTokensForTokens(
397
403
  0,
398
404
  [
@@ -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 (data.underlyingToken !== tokenDataByNetwork[network][tokenToDeposit]) {
347
+ if (
348
+ data.underlyingToken.toLowerCase() !==
349
+ tokenDataByNetwork[network][tokenToDeposit].toLowerCase()
350
+ ) {
348
351
  calls.push(
349
352
  UniswapV2Multicaller.connect(
350
- data.adapters[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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
- ).add_liquidity_one_coin(underlyingAmount, 0, 0)
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
- ).add_all_liquidity_one_coin(0, 0)
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[contractsByNetwork[network][curveParams.wrapper]];
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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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[contractsByNetwork[network][curveParams.wrapper]];
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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
462
+ data.adapters[
463
+ contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
464
+ ]
457
465
  ).swapAllTokensForTokens(
458
466
  0,
459
467
  [
@@ -62,7 +62,9 @@ export class LidoStrategies {
62
62
  if (!data.isWETH) {
63
63
  calls.push(
64
64
  UniswapV2Multicaller.connect(
65
- data.adapters[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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[contractsByNetwork[network].LIDO_STETH_GATEWAY]
80
+ data.adapters[
81
+ contractsByNetwork[network].LIDO_STETH_GATEWAY.toLowerCase()
82
+ ]
79
83
  ).submitAll()
80
84
  );
81
85
 
@@ -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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
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[contractsByNetwork[network].UNISWAP_V2_ROUTER]
187
+ data.adapters[
188
+ contractsByNetwork[network].UNISWAP_V2_ROUTER.toLowerCase()
189
+ ]
179
190
  ).swapAllTokensForTokens(
180
191
  0,
181
192
  [