@gearbox-protocol/sdk 0.0.102 → 0.0.105
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/.eslintignore +5 -0
- package/.eslintrc.js +52 -0
- package/.husky/pre-push +4 -0
- package/lib/apy/convexAPY.js +3 -5
- package/lib/apy/lidoAPY.js +8 -9
- package/lib/contracts/contracts.d.ts +5 -2
- package/lib/contracts/contracts.js +19 -18
- package/lib/core/constants.d.ts +1 -1
- package/lib/core/constants.js +2 -2
- package/lib/core/creditAccount.js +7 -5
- package/lib/core/creditManager.d.ts +1 -1
- package/lib/core/creditManager.js +1 -7
- package/lib/core/creditSession.js +14 -3
- package/lib/core/eventOrTx.d.ts +1 -1
- package/lib/core/events.d.ts +19 -19
- package/lib/core/events.js +23 -21
- package/lib/core/pool.d.ts +1 -1
- package/lib/core/pool.js +1 -7
- package/lib/core/price.js +6 -1
- package/lib/core/strategy.d.ts +1 -3
- package/lib/core/strategy.js +14 -13
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.d.ts +18 -3
- package/lib/core/transactions.js +39 -3
- package/lib/index.d.ts +8 -2
- package/lib/index.js +8 -1
- package/lib/oracles/priceFeeds.js +1 -1
- package/lib/pathfinder/convexLP.d.ts +1 -1
- package/lib/pathfinder/convexLP.js +26 -29
- package/lib/pathfinder/curveLP.d.ts +1 -1
- package/lib/pathfinder/curveLP.js +5 -7
- package/lib/pathfinder/path.d.ts +1 -1
- package/lib/pathfinder/path.js +38 -42
- package/lib/pathfinder/trade.d.ts +1 -2
- package/lib/pathfinder/tradeTypes.d.ts +5 -5
- package/lib/pathfinder/yVault.d.ts +2 -2
- package/lib/pathfinder/yVault.js +18 -15
- package/lib/strategies/convex.d.ts +12 -0
- package/lib/strategies/convex.js +74 -1
- package/lib/strategies/creditFacade.d.ts +1 -0
- package/lib/strategies/creditFacade.js +3 -0
- package/lib/strategies/curve.d.ts +15 -60
- package/lib/strategies/curve.js +74 -1
- package/lib/strategies/lido.d.ts +6 -0
- package/lib/strategies/lido.js +23 -1
- package/lib/strategies/uniswapV2.d.ts +1 -0
- package/lib/strategies/uniswapV2.js +6 -19
- package/lib/strategies/uniswapV3.d.ts +1 -0
- package/lib/strategies/uniswapV3.js +4 -1
- package/lib/strategies/yearn.d.ts +8 -0
- package/lib/strategies/yearn.js +92 -12
- package/lib/tokens/convex.d.ts +3 -3
- package/lib/tokens/curveLP.d.ts +7 -2
- package/lib/tokens/curveLP.js +8 -1
- package/lib/tokens/gear.d.ts +2 -2
- package/lib/tokens/gear.js +1 -1
- package/lib/tokens/normal.d.ts +1 -1
- package/lib/tokens/token.js +4 -4
- package/lib/tokens/tokenData.d.ts +3 -1
- package/lib/tokens/tokenData.js +10 -8
- package/lib/tokens/yearn.d.ts +6 -2
- package/lib/tokens/yearn.js +6 -0
- package/lib/utils/errors.d.ts +6 -0
- package/lib/utils/errors.js +13 -0
- package/lib/utils/formatter.d.ts +1 -1
- package/lib/utils/formatter.js +17 -14
- package/lib/utils/loading.d.ts +2 -1
- package/lib/utils/loading.js +9 -13
- package/lib/utils/mappers.js +2 -2
- package/lib/utils/network.js +2 -2
- package/lib/utils/repeater.js +12 -24
- package/lib/utils/validate.js +1 -1
- package/package.json +24 -7
- package/src/apy/convexAPY.ts +6 -6
- package/src/apy/lidoAPY.ts +12 -11
- package/src/contracts/contracts.ts +27 -17
- package/src/core/constants.ts +1 -1
- package/src/core/creditAccount.ts +28 -5
- package/src/core/creditManager.ts +29 -4
- package/src/core/creditOperation.ts +7 -7
- package/src/core/creditSession.ts +25 -5
- package/src/core/errors.ts +1 -0
- package/src/core/eventOrTx.ts +8 -5
- package/src/core/events.ts +85 -24
- package/src/core/history.ts +46 -46
- package/src/core/operations.ts +6 -0
- package/src/core/pool.ts +16 -4
- package/src/core/price.ts +7 -3
- package/src/core/strategy.ts +27 -23
- package/src/core/tokenDistributor.ts +2 -2
- package/src/core/transactions.ts +427 -350
- package/src/index.ts +10 -3
- package/src/oracles/priceFeeds.ts +523 -523
- package/src/pathfinder/contracts.ts +15 -13
- package/src/pathfinder/convexLP.ts +29 -25
- package/src/pathfinder/curveLP.ts +57 -53
- package/src/pathfinder/path.ts +17 -9
- package/src/pathfinder/priority.ts +11 -11
- package/src/pathfinder/trade.ts +84 -77
- package/src/pathfinder/tradeTypes.ts +98 -94
- package/src/pathfinder/yVault.ts +26 -11
- package/src/payload/token.ts +3 -3
- package/src/strategies/convex.ts +361 -186
- package/src/strategies/creditFacade.ts +74 -53
- package/src/strategies/curve.ts +400 -189
- package/src/strategies/lido.ts +70 -32
- package/src/strategies/uniswapV2.ts +93 -111
- package/src/strategies/uniswapV3.ts +118 -91
- package/src/strategies/yearn.ts +187 -60
- package/src/tokens/connectors.ts +6 -6
- package/src/tokens/convex.ts +297 -296
- package/src/tokens/curveLP.ts +176 -165
- package/src/tokens/gear.ts +47 -45
- package/src/tokens/normal.ts +801 -802
- package/src/tokens/token.ts +9 -5
- package/src/tokens/tokenData.ts +19 -9
- package/src/tokens/tokenType.ts +11 -11
- package/src/tokens/yearn.ts +130 -124
- package/src/utils/errors.ts +11 -0
- package/src/utils/formatter.ts +22 -18
- package/src/utils/loading.ts +14 -6
- package/src/utils/mappers.ts +8 -6
- package/src/utils/multicall.ts +2 -0
- package/src/utils/network.ts +21 -21
- package/src/utils/repeater.ts +2 -2
- package/src/utils/validate.ts +1 -1
- package/lib/utils/events.d.ts +0 -2
- package/lib/utils/events.js +0 -13
- package/src/utils/events.ts +0 -10
package/lib/pathfinder/path.js
CHANGED
|
@@ -76,15 +76,15 @@ var Path = /** @class */ (function () {
|
|
|
76
76
|
this.balances[token] = ethers_1.BigNumber.from(1);
|
|
77
77
|
return currentBalance.sub(1);
|
|
78
78
|
};
|
|
79
|
-
Path.
|
|
80
|
-
var tokenA = _a[0]
|
|
81
|
-
var tokenB = _b[0]
|
|
79
|
+
Path.comparedByPriority = function (_a, _b) {
|
|
80
|
+
var tokenA = _a[0];
|
|
81
|
+
var tokenB = _b[0];
|
|
82
82
|
var priorityTokenA = priority_1.priority[token_1.supportedTokens[tokenA].type];
|
|
83
83
|
var priorityTokenB = priority_1.priority[token_1.supportedTokens[tokenB].type];
|
|
84
84
|
if (priorityTokenA > priorityTokenB) {
|
|
85
85
|
return -1;
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
if (priorityTokenA < priorityTokenB) {
|
|
88
88
|
return 1;
|
|
89
89
|
}
|
|
90
90
|
return 0;
|
|
@@ -123,8 +123,8 @@ var Path = /** @class */ (function () {
|
|
|
123
123
|
case 2:
|
|
124
124
|
lpPaths = _a.sent();
|
|
125
125
|
pathFinder = types_1.PathFinder__factory.connect(contracts_1.pathFindersByNetwork[networkType].PATH_FINDER, provider);
|
|
126
|
-
console.
|
|
127
|
-
console.
|
|
126
|
+
console.debug(lpPaths);
|
|
127
|
+
console.debug(pathFinder);
|
|
128
128
|
return [2 /*return*/];
|
|
129
129
|
}
|
|
130
130
|
});
|
|
@@ -134,43 +134,39 @@ var Path = /** @class */ (function () {
|
|
|
134
134
|
return __awaiter(this, void 0, void 0, function () {
|
|
135
135
|
var existingTokens, nextToken, lpPathFinder;
|
|
136
136
|
return __generator(this, function (_a) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
default:
|
|
169
|
-
throw new Error("Token type not supported yet");
|
|
170
|
-
}
|
|
171
|
-
return [4 /*yield*/, lpPathFinder.findWithdrawPaths(this)];
|
|
172
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
137
|
+
existingTokens = Object.entries(this.balances)
|
|
138
|
+
.filter(function (_a) {
|
|
139
|
+
var balance = _a[1];
|
|
140
|
+
return balance.gt(1);
|
|
141
|
+
})
|
|
142
|
+
.sort(Path.comparedByPriority);
|
|
143
|
+
// TODO: Add checks for lenght
|
|
144
|
+
if (existingTokens.length === 0)
|
|
145
|
+
throw new Error("No tokens with balance >1");
|
|
146
|
+
nextToken = existingTokens[0][0];
|
|
147
|
+
// Get balances and keep non-zero only
|
|
148
|
+
// Find token with highest priority
|
|
149
|
+
// Get token type of this token
|
|
150
|
+
switch (token_1.supportedTokens[nextToken].type) {
|
|
151
|
+
case tokenType_1.TokenType.NORMAL_TOKEN:
|
|
152
|
+
case tokenType_1.TokenType.CONNECTOR:
|
|
153
|
+
return [2 /*return*/, [this]];
|
|
154
|
+
case tokenType_1.TokenType.YEARN_VAULT_OF_CURVE_LP:
|
|
155
|
+
case tokenType_1.TokenType.YEARN_VAULT_OF_META_CURVE_LP:
|
|
156
|
+
case tokenType_1.TokenType.YEARN_VAULT:
|
|
157
|
+
lpPathFinder = new yVault_1.YearnVaultPathFinder(nextToken);
|
|
158
|
+
break;
|
|
159
|
+
case tokenType_1.TokenType.CONVEX_LP_TOKEN:
|
|
160
|
+
lpPathFinder = new convexLP_1.ConvexLPPathFinder();
|
|
161
|
+
break;
|
|
162
|
+
case tokenType_1.TokenType.META_CURVE_LP:
|
|
163
|
+
case tokenType_1.TokenType.CURVE_LP:
|
|
164
|
+
lpPathFinder = new curveLP_1.CurvePathFinder(nextToken);
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
throw new Error("Token type not supported yet");
|
|
173
168
|
}
|
|
169
|
+
return [2 /*return*/, lpPathFinder.findWithdrawPaths(this)];
|
|
174
170
|
});
|
|
175
171
|
});
|
|
176
172
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ConvexPoolContract, CurvePoolContract, UniswapV2Contract, YearnVaultContract } from "../contracts/contracts";
|
|
2
|
-
import { NormalToken } from "../tokens/normal";
|
|
3
|
-
import { CurveLPToken } from "../tokens/curveLP";
|
|
4
|
-
import { YearnLPToken } from "../tokens/yearn";
|
|
5
|
-
import { ConvexLPToken, ConvexStakedPhantomToken } from "../tokens/convex";
|
|
1
|
+
import type { ConvexPoolContract, CurvePoolContract, UniswapV2Contract, YearnVaultContract } from "../contracts/contracts";
|
|
2
|
+
import type { NormalToken } from "../tokens/normal";
|
|
3
|
+
import type { CurveLPToken } from "../tokens/curveLP";
|
|
4
|
+
import type { YearnLPToken } from "../tokens/yearn";
|
|
5
|
+
import type { ConvexLPToken, ConvexStakedPhantomToken } from "../tokens/convex";
|
|
6
6
|
export declare enum TradeType {
|
|
7
7
|
UniswapV2Swap = 0,
|
|
8
8
|
UniswapV3Swap = 1,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Path, LPWithdrawPathFinder } from "./path";
|
|
2
1
|
import { YearnLPToken } from "../tokens/yearn";
|
|
3
2
|
import { NormalToken } from "../tokens/normal";
|
|
4
3
|
import { CurveLPToken } from "../tokens/curveLP";
|
|
4
|
+
import type { Path, LPWithdrawPathFinder } from "./path";
|
|
5
5
|
export declare class YearnVaultPathFinder implements LPWithdrawPathFinder {
|
|
6
6
|
_vault: YearnLPToken;
|
|
7
7
|
token: NormalToken | CurveLPToken;
|
|
8
8
|
constructor(vault: YearnLPToken);
|
|
9
|
-
findWithdrawPaths(
|
|
9
|
+
findWithdrawPaths(path: Path): Promise<Array<Path>>;
|
|
10
10
|
}
|
package/lib/pathfinder/yVault.js
CHANGED
|
@@ -38,10 +38,11 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.YearnVaultPathFinder = void 0;
|
|
40
40
|
var ethers_1 = require("ethers");
|
|
41
|
-
var types_1 = require("../types");
|
|
42
41
|
var yearn_1 = require("../tokens/yearn");
|
|
43
42
|
var token_1 = require("../tokens/token");
|
|
44
43
|
var multicall_1 = require("../utils/multicall");
|
|
44
|
+
var mappers_1 = require("../utils/mappers");
|
|
45
|
+
var types_1 = require("../types");
|
|
45
46
|
var YearnVaultPathFinder = /** @class */ (function () {
|
|
46
47
|
function YearnVaultPathFinder(vault) {
|
|
47
48
|
this._vault = vault;
|
|
@@ -49,23 +50,26 @@ var YearnVaultPathFinder = /** @class */ (function () {
|
|
|
49
50
|
// Yearn Vault only has one lp action
|
|
50
51
|
this.token = currentTokenData.underlying;
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
// eslint-disable-next-line class-methods-use-this
|
|
54
|
+
YearnVaultPathFinder.prototype.findWithdrawPaths = function (path) {
|
|
53
55
|
return __awaiter(this, void 0, void 0, function () {
|
|
54
|
-
var
|
|
55
|
-
return __generator(this, function (
|
|
56
|
-
switch (
|
|
56
|
+
var p, vaultBalances, vaultList, multicallData, prices, i, vault, vb, tokenAddress, adapterAddress, callData;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
switch (_a.label) {
|
|
57
59
|
case 0:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
p = Object.assign(Object.create(Object.getPrototypeOf(path)), path);
|
|
61
|
+
vaultBalances = (0, mappers_1.objectEntries)(yearn_1.yearnTokens).reduce(function (acc, _a) {
|
|
62
|
+
var yVault = _a[0], tokenData = _a[1];
|
|
63
|
+
var typedVault = yVault;
|
|
64
|
+
var currentBalance = p.popBalance(typedVault);
|
|
62
65
|
if (currentBalance.gt(1)) {
|
|
63
|
-
|
|
66
|
+
acc[typedVault] = {
|
|
64
67
|
token: tokenData.underlying,
|
|
65
68
|
balance: currentBalance
|
|
66
69
|
};
|
|
67
70
|
}
|
|
68
|
-
|
|
71
|
+
return acc;
|
|
72
|
+
}, {});
|
|
69
73
|
vaultList = Object.keys(vaultBalances);
|
|
70
74
|
multicallData = vaultList
|
|
71
75
|
.map(function (t) { return token_1.tokenDataByNetwork[p.networkType][t]; })
|
|
@@ -76,8 +80,8 @@ var YearnVaultPathFinder = /** @class */ (function () {
|
|
|
76
80
|
}); });
|
|
77
81
|
return [4 /*yield*/, (0, multicall_1.multicall)(multicallData, p.provider)];
|
|
78
82
|
case 1:
|
|
79
|
-
prices =
|
|
80
|
-
for (i = 0; i < vaultList.length; i
|
|
83
|
+
prices = _a.sent();
|
|
84
|
+
for (i = 0; i < vaultList.length; i += 1) {
|
|
81
85
|
vault = vaultList[i];
|
|
82
86
|
vb = vaultBalances[vault];
|
|
83
87
|
p.balances[vb.token] = (p.balances[vb.token] || ethers_1.BigNumber.from(0)).add(ethers_1.BigNumber.from((vb === null || vb === void 0 ? void 0 : vb.balance) || 0).mul(prices[i]));
|
|
@@ -86,8 +90,7 @@ var YearnVaultPathFinder = /** @class */ (function () {
|
|
|
86
90
|
callData = types_1.IYVault__factory.createInterface().encodeFunctionData("withdraw()");
|
|
87
91
|
p.calls.push({ target: adapterAddress, callData: callData });
|
|
88
92
|
}
|
|
89
|
-
return [
|
|
90
|
-
case 2: return [2 /*return*/, _c.sent()];
|
|
93
|
+
return [2 /*return*/, p.withdrawTokens()];
|
|
91
94
|
}
|
|
92
95
|
});
|
|
93
96
|
});
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { BigNumberish } from "ethers";
|
|
2
|
+
import { ConvexPoolContract } from "../contracts/contracts";
|
|
3
|
+
import { NetworkType } from "../core/constants";
|
|
4
|
+
import { CreditManagerData } from "../core/creditManager";
|
|
2
5
|
import { MultiCallStruct } from "../types/contracts/interfaces/ICreditFacade.sol/ICreditFacade";
|
|
3
6
|
export declare class ConvexBoosterCalls {
|
|
4
7
|
static deposit(pid: BigNumberish, amount: BigNumberish, stake: boolean): string;
|
|
@@ -20,6 +23,7 @@ export declare class ConvexClaimZapCalls {
|
|
|
20
23
|
export declare class ConvexBoosterMulticaller {
|
|
21
24
|
private readonly _address;
|
|
22
25
|
constructor(address: string);
|
|
26
|
+
static connect(address: string): ConvexBoosterMulticaller;
|
|
23
27
|
deposit(pid: BigNumberish, amount: BigNumberish, stake: boolean): MultiCallStruct;
|
|
24
28
|
depositAll(pid: BigNumberish, stake: boolean): MultiCallStruct;
|
|
25
29
|
withdraw(pid: BigNumberish, amount: BigNumberish): MultiCallStruct;
|
|
@@ -28,6 +32,7 @@ export declare class ConvexBoosterMulticaller {
|
|
|
28
32
|
export declare class ConvexPoolMulticaller {
|
|
29
33
|
private readonly _address;
|
|
30
34
|
constructor(address: string);
|
|
35
|
+
static connect(address: string): ConvexPoolMulticaller;
|
|
31
36
|
stake(amount: BigNumberish): MultiCallStruct;
|
|
32
37
|
stakeAll(): MultiCallStruct;
|
|
33
38
|
withdraw(amount: BigNumberish, claim: boolean): MultiCallStruct;
|
|
@@ -41,5 +46,12 @@ export declare class ConvexPoolMulticaller {
|
|
|
41
46
|
export declare class ConvexClaimZapMulticaller {
|
|
42
47
|
private readonly _address;
|
|
43
48
|
constructor(address: string);
|
|
49
|
+
static connect(address: string): ConvexClaimZapMulticaller;
|
|
44
50
|
claimRewards(rewardContracts: Array<string>, extraRewardContracts: Array<string>, tokenRewardContracts: Array<string>, tokenRewardTokens: Array<string>, depositCrvMaxAmount: BigNumberish, minAmountOut: BigNumberish, depositCvxMaxAmount: BigNumberish, spendCvxAmount: BigNumberish, options: BigNumberish): MultiCallStruct;
|
|
45
51
|
}
|
|
52
|
+
export declare class ConvexStrategies {
|
|
53
|
+
static underlyingToStakedConvex(data: CreditManagerData, network: NetworkType, convexPool: ConvexPoolContract, underlyingAmount: BigNumberish): MultiCallStruct[];
|
|
54
|
+
static stakedConvexToUnderlying(data: CreditManagerData, network: NetworkType, convexPool: ConvexPoolContract, convexLpAmount: BigNumberish, sellRewards: boolean): MultiCallStruct[];
|
|
55
|
+
static allStakedConvexToUnderlying(data: CreditManagerData, network: NetworkType, convexPool: ConvexPoolContract, sellRewards: boolean): MultiCallStruct[];
|
|
56
|
+
static sellRewards(data: CreditManagerData, network: NetworkType, convexPool: ConvexPoolContract): MultiCallStruct[];
|
|
57
|
+
}
|
package/lib/strategies/convex.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConvexClaimZapMulticaller = exports.ConvexPoolMulticaller = exports.ConvexBoosterMulticaller = exports.ConvexClaimZapCalls = exports.ConvexPoolCalls = exports.ConvexBoosterCalls = void 0;
|
|
3
|
+
exports.ConvexStrategies = exports.ConvexClaimZapMulticaller = exports.ConvexPoolMulticaller = exports.ConvexBoosterMulticaller = exports.ConvexClaimZapCalls = exports.ConvexPoolCalls = exports.ConvexBoosterCalls = void 0;
|
|
4
|
+
var contracts_1 = require("../contracts/contracts");
|
|
5
|
+
var token_1 = require("../tokens/token");
|
|
4
6
|
var types_1 = require("../types");
|
|
7
|
+
var curve_1 = require("./curve");
|
|
8
|
+
var uniswapV2_1 = require("./uniswapV2");
|
|
5
9
|
var ConvexBoosterCalls = /** @class */ (function () {
|
|
6
10
|
function ConvexBoosterCalls() {
|
|
7
11
|
}
|
|
@@ -67,6 +71,9 @@ var ConvexBoosterMulticaller = /** @class */ (function () {
|
|
|
67
71
|
function ConvexBoosterMulticaller(address) {
|
|
68
72
|
this._address = address;
|
|
69
73
|
}
|
|
74
|
+
ConvexBoosterMulticaller.connect = function (address) {
|
|
75
|
+
return new ConvexBoosterMulticaller(address);
|
|
76
|
+
};
|
|
70
77
|
ConvexBoosterMulticaller.prototype.deposit = function (pid, amount, stake) {
|
|
71
78
|
return {
|
|
72
79
|
target: this._address,
|
|
@@ -98,6 +105,9 @@ var ConvexPoolMulticaller = /** @class */ (function () {
|
|
|
98
105
|
function ConvexPoolMulticaller(address) {
|
|
99
106
|
this._address = address;
|
|
100
107
|
}
|
|
108
|
+
ConvexPoolMulticaller.connect = function (address) {
|
|
109
|
+
return new ConvexPoolMulticaller(address);
|
|
110
|
+
};
|
|
101
111
|
ConvexPoolMulticaller.prototype.stake = function (amount) {
|
|
102
112
|
return {
|
|
103
113
|
target: this._address,
|
|
@@ -141,6 +151,9 @@ var ConvexClaimZapMulticaller = /** @class */ (function () {
|
|
|
141
151
|
function ConvexClaimZapMulticaller(address) {
|
|
142
152
|
this._address = address;
|
|
143
153
|
}
|
|
154
|
+
ConvexClaimZapMulticaller.connect = function (address) {
|
|
155
|
+
return new ConvexClaimZapMulticaller(address);
|
|
156
|
+
};
|
|
144
157
|
ConvexClaimZapMulticaller.prototype.claimRewards = function (rewardContracts, extraRewardContracts, tokenRewardContracts, tokenRewardTokens, depositCrvMaxAmount, minAmountOut, depositCvxMaxAmount, spendCvxAmount, options) {
|
|
145
158
|
return {
|
|
146
159
|
target: this._address,
|
|
@@ -150,3 +163,63 @@ var ConvexClaimZapMulticaller = /** @class */ (function () {
|
|
|
150
163
|
return ConvexClaimZapMulticaller;
|
|
151
164
|
}());
|
|
152
165
|
exports.ConvexClaimZapMulticaller = ConvexClaimZapMulticaller;
|
|
166
|
+
var ConvexStrategies = /** @class */ (function () {
|
|
167
|
+
function ConvexStrategies() {
|
|
168
|
+
}
|
|
169
|
+
ConvexStrategies.underlyingToStakedConvex = function (data, network, convexPool, underlyingAmount) {
|
|
170
|
+
var calls = [];
|
|
171
|
+
var convexParams = contracts_1.contractParams[convexPool];
|
|
172
|
+
var stakedToken = convexParams.stakedToken;
|
|
173
|
+
var stakedTokenParams = token_1.supportedTokens[stakedToken];
|
|
174
|
+
var curveLpToken = stakedTokenParams.underlying;
|
|
175
|
+
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
176
|
+
var curvePool = curveLpTokenData.pool;
|
|
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));
|
|
179
|
+
return calls;
|
|
180
|
+
};
|
|
181
|
+
ConvexStrategies.stakedConvexToUnderlying = function (data, network, convexPool, convexLpAmount, sellRewards) {
|
|
182
|
+
var calls = [];
|
|
183
|
+
var convexParams = contracts_1.contractParams[convexPool];
|
|
184
|
+
var stakedToken = convexParams.stakedToken;
|
|
185
|
+
var stakedTokenParams = token_1.supportedTokens[stakedToken];
|
|
186
|
+
var curveLpToken = stakedTokenParams.underlying;
|
|
187
|
+
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
188
|
+
var curvePool = curveLpTokenData.pool;
|
|
189
|
+
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool]]).withdrawAndUnwrap(convexLpAmount, true));
|
|
190
|
+
calls.push.apply(calls, curve_1.CurveStrategies.allCurveLPToUnderlying(data, network, curvePool));
|
|
191
|
+
if (sellRewards) {
|
|
192
|
+
calls.push.apply(calls, ConvexStrategies.sellRewards(data, network, convexPool));
|
|
193
|
+
}
|
|
194
|
+
return calls;
|
|
195
|
+
};
|
|
196
|
+
ConvexStrategies.allStakedConvexToUnderlying = function (data, network, convexPool, sellRewards) {
|
|
197
|
+
var calls = [];
|
|
198
|
+
var convexParams = contracts_1.contractParams[convexPool];
|
|
199
|
+
var stakedToken = convexParams.stakedToken;
|
|
200
|
+
var stakedTokenParams = token_1.supportedTokens[stakedToken];
|
|
201
|
+
var curveLpToken = stakedTokenParams.underlying;
|
|
202
|
+
var curveLpTokenData = token_1.supportedTokens[curveLpToken];
|
|
203
|
+
var curvePool = curveLpTokenData.pool;
|
|
204
|
+
calls.push(ConvexPoolMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][convexPool]]).withdrawAllAndUnwrap(true));
|
|
205
|
+
calls.push.apply(calls, curve_1.CurveStrategies.allCurveLPToUnderlying(data, network, curvePool));
|
|
206
|
+
if (sellRewards) {
|
|
207
|
+
calls.push.apply(calls, ConvexStrategies.sellRewards(data, network, convexPool));
|
|
208
|
+
}
|
|
209
|
+
return calls;
|
|
210
|
+
};
|
|
211
|
+
ConvexStrategies.sellRewards = function (data, network, convexPool) {
|
|
212
|
+
var calls = [];
|
|
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));
|
|
215
|
+
convexParams.extraRewards.forEach(function (extraReward) {
|
|
216
|
+
uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
217
|
+
token_1.tokenDataByNetwork[network][extraReward.rewardToken],
|
|
218
|
+
data.underlyingToken
|
|
219
|
+
], Math.floor(new Date().getTime() / 1000) + 3600);
|
|
220
|
+
});
|
|
221
|
+
return calls;
|
|
222
|
+
};
|
|
223
|
+
return ConvexStrategies;
|
|
224
|
+
}());
|
|
225
|
+
exports.ConvexStrategies = ConvexStrategies;
|
|
@@ -9,6 +9,7 @@ export declare class CreditFacadeCalls {
|
|
|
9
9
|
export declare class CreditFacadeMulticaller {
|
|
10
10
|
private readonly _address;
|
|
11
11
|
constructor(address: string);
|
|
12
|
+
static connect(address: string): CreditFacadeMulticaller;
|
|
12
13
|
addCollateral(onBehalfOf: string, token: string, amount: BigNumberish): MultiCallStruct;
|
|
13
14
|
increaseDebt(amount: BigNumberish): MultiCallStruct;
|
|
14
15
|
decreaseDebt(amount: BigNumberish): MultiCallStruct;
|
|
@@ -24,6 +24,9 @@ var CreditFacadeMulticaller = /** @class */ (function () {
|
|
|
24
24
|
function CreditFacadeMulticaller(address) {
|
|
25
25
|
this._address = address;
|
|
26
26
|
}
|
|
27
|
+
CreditFacadeMulticaller.connect = function (address) {
|
|
28
|
+
return new CreditFacadeMulticaller(address);
|
|
29
|
+
};
|
|
27
30
|
CreditFacadeMulticaller.prototype.addCollateral = function (onBehalfOf, token, amount) {
|
|
28
31
|
return {
|
|
29
32
|
target: this._address,
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { BigNumberish } from "ethers";
|
|
2
|
+
import { CurvePoolContract } from "../contracts/contracts";
|
|
3
|
+
import { NetworkType } from "../core/constants";
|
|
4
|
+
import { CreditManagerData } from "../core/creditManager";
|
|
2
5
|
import { MultiCallStruct } from "../types/contracts/interfaces/ICreditFacade.sol/ICreditFacade";
|
|
3
6
|
export declare class CurveCalls {
|
|
4
7
|
static exchange(i: BigNumberish, j: BigNumberish, dx: BigNumberish, min_dy: BigNumberish): string;
|
|
@@ -8,40 +11,14 @@ export declare class CurveCalls {
|
|
|
8
11
|
static add_all_liquidity_one_coin(i: BigNumberish, rateMinRAY: BigNumberish): string;
|
|
9
12
|
static remove_liquidity_one_coin(token_amount: BigNumberish, i: BigNumberish, min_amount: BigNumberish): string;
|
|
10
13
|
static remove_all_liquidity_one_coin(i: BigNumberish, minRateRAY: BigNumberish): string;
|
|
11
|
-
static add_liquidity(amounts: [BigNumberish, BigNumberish] | [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
BigNumberish
|
|
15
|
-
] | [
|
|
16
|
-
BigNumberish,
|
|
17
|
-
BigNumberish,
|
|
18
|
-
BigNumberish,
|
|
19
|
-
BigNumberish
|
|
20
|
-
], min_mint_amount: BigNumberish): string;
|
|
21
|
-
static remove_liquidity(amount: BigNumberish, min_amounts: [BigNumberish, BigNumberish] | [
|
|
22
|
-
BigNumberish,
|
|
23
|
-
BigNumberish,
|
|
24
|
-
BigNumberish
|
|
25
|
-
] | [
|
|
26
|
-
BigNumberish,
|
|
27
|
-
BigNumberish,
|
|
28
|
-
BigNumberish,
|
|
29
|
-
BigNumberish
|
|
30
|
-
]): string;
|
|
31
|
-
static remove_liquidity_imbalance(amounts: [BigNumberish, BigNumberish] | [
|
|
32
|
-
BigNumberish,
|
|
33
|
-
BigNumberish,
|
|
34
|
-
BigNumberish
|
|
35
|
-
] | [
|
|
36
|
-
BigNumberish,
|
|
37
|
-
BigNumberish,
|
|
38
|
-
BigNumberish,
|
|
39
|
-
BigNumberish
|
|
40
|
-
], max_burn_amount: BigNumberish): string;
|
|
14
|
+
static add_liquidity(amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish], min_mint_amount: BigNumberish): string;
|
|
15
|
+
static remove_liquidity(amount: BigNumberish, min_amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish]): string;
|
|
16
|
+
static remove_liquidity_imbalance(amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish], max_burn_amount: BigNumberish): string;
|
|
41
17
|
}
|
|
42
18
|
export declare class CurveMulticaller {
|
|
43
19
|
private readonly _address;
|
|
44
20
|
constructor(address: string);
|
|
21
|
+
static connect(address: string): CurveMulticaller;
|
|
45
22
|
exchange(i: BigNumberish, j: BigNumberish, dx: BigNumberish, min_dy: BigNumberish): MultiCallStruct;
|
|
46
23
|
exchange_all(i: BigNumberish, j: BigNumberish, rateMinRAY: BigNumberish): MultiCallStruct;
|
|
47
24
|
exchange_underlying(i: BigNumberish, j: BigNumberish, dx: BigNumberish, min_dy: BigNumberish): MultiCallStruct;
|
|
@@ -55,34 +32,12 @@ export declare class CurveMulticaller {
|
|
|
55
32
|
target: string;
|
|
56
33
|
callData: string;
|
|
57
34
|
};
|
|
58
|
-
add_liquidity(amounts: [BigNumberish, BigNumberish] | [
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
BigNumberish
|
|
67
|
-
], min_mint_amount: BigNumberish): MultiCallStruct;
|
|
68
|
-
remove_liquidity(amount: BigNumberish, min_amounts: [BigNumberish, BigNumberish] | [
|
|
69
|
-
BigNumberish,
|
|
70
|
-
BigNumberish,
|
|
71
|
-
BigNumberish
|
|
72
|
-
] | [
|
|
73
|
-
BigNumberish,
|
|
74
|
-
BigNumberish,
|
|
75
|
-
BigNumberish,
|
|
76
|
-
BigNumberish
|
|
77
|
-
]): MultiCallStruct;
|
|
78
|
-
remove_liquidity_imbalance(amounts: [BigNumberish, BigNumberish] | [
|
|
79
|
-
BigNumberish,
|
|
80
|
-
BigNumberish,
|
|
81
|
-
BigNumberish
|
|
82
|
-
] | [
|
|
83
|
-
BigNumberish,
|
|
84
|
-
BigNumberish,
|
|
85
|
-
BigNumberish,
|
|
86
|
-
BigNumberish
|
|
87
|
-
], max_burn_amount: BigNumberish): MultiCallStruct;
|
|
35
|
+
add_liquidity(amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish], min_mint_amount: BigNumberish): MultiCallStruct;
|
|
36
|
+
remove_liquidity(amount: BigNumberish, min_amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish]): MultiCallStruct;
|
|
37
|
+
remove_liquidity_imbalance(amounts: [BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish] | [BigNumberish, BigNumberish, BigNumberish, BigNumberish], max_burn_amount: BigNumberish): MultiCallStruct;
|
|
38
|
+
}
|
|
39
|
+
export declare class CurveStrategies {
|
|
40
|
+
static underlyingToCurveLP(data: CreditManagerData, network: NetworkType, curvePool: CurvePoolContract, underlyingAmount: BigNumberish): MultiCallStruct[];
|
|
41
|
+
static curveLPToUnderlying(data: CreditManagerData, network: NetworkType, curvePool: CurvePoolContract, curveLPAmount: BigNumberish): MultiCallStruct[];
|
|
42
|
+
static allCurveLPToUnderlying(data: CreditManagerData, network: NetworkType, curvePool: CurvePoolContract): MultiCallStruct[];
|
|
88
43
|
}
|
package/lib/strategies/curve.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CurveMulticaller = exports.CurveCalls = void 0;
|
|
3
|
+
exports.CurveStrategies = exports.CurveMulticaller = exports.CurveCalls = void 0;
|
|
4
|
+
var contracts_1 = require("../contracts/contracts");
|
|
5
|
+
var constants_1 = require("../core/constants");
|
|
6
|
+
var token_1 = require("../tokens/token");
|
|
4
7
|
var types_1 = require("../types");
|
|
8
|
+
var uniswapV2_1 = require("./uniswapV2");
|
|
5
9
|
var CurveCalls = /** @class */ (function () {
|
|
6
10
|
function CurveCalls() {
|
|
7
11
|
}
|
|
@@ -34,6 +38,8 @@ var CurveCalls = /** @class */ (function () {
|
|
|
34
38
|
return types_1.CurveV1Adapter3Assets__factory.createInterface().encodeFunctionData("add_liquidity", [amounts, min_mint_amount]);
|
|
35
39
|
case 4:
|
|
36
40
|
return types_1.CurveV1Adapter4Assets__factory.createInterface().encodeFunctionData("add_liquidity", [amounts, min_mint_amount]);
|
|
41
|
+
default:
|
|
42
|
+
throw new Error("Wrong calls number: add_liquidity");
|
|
37
43
|
}
|
|
38
44
|
};
|
|
39
45
|
CurveCalls.remove_liquidity = function (amount, min_amounts) {
|
|
@@ -44,6 +50,8 @@ var CurveCalls = /** @class */ (function () {
|
|
|
44
50
|
return types_1.CurveV1Adapter3Assets__factory.createInterface().encodeFunctionData("remove_liquidity", [amount, min_amounts]);
|
|
45
51
|
case 4:
|
|
46
52
|
return types_1.CurveV1Adapter4Assets__factory.createInterface().encodeFunctionData("remove_liquidity", [amount, min_amounts]);
|
|
53
|
+
default:
|
|
54
|
+
throw new Error("Wrong calls number: remove_liquidity");
|
|
47
55
|
}
|
|
48
56
|
};
|
|
49
57
|
CurveCalls.remove_liquidity_imbalance = function (amounts, max_burn_amount) {
|
|
@@ -54,6 +62,8 @@ var CurveCalls = /** @class */ (function () {
|
|
|
54
62
|
return types_1.CurveV1Adapter3Assets__factory.createInterface().encodeFunctionData("remove_liquidity_imbalance", [amounts, max_burn_amount]);
|
|
55
63
|
case 4:
|
|
56
64
|
return types_1.CurveV1Adapter4Assets__factory.createInterface().encodeFunctionData("remove_liquidity_imbalance", [amounts, max_burn_amount]);
|
|
65
|
+
default:
|
|
66
|
+
throw new Error("Wrong calls number: remove_liquidity_imbalance");
|
|
57
67
|
}
|
|
58
68
|
};
|
|
59
69
|
return CurveCalls;
|
|
@@ -63,6 +73,9 @@ var CurveMulticaller = /** @class */ (function () {
|
|
|
63
73
|
function CurveMulticaller(address) {
|
|
64
74
|
this._address = address;
|
|
65
75
|
}
|
|
76
|
+
CurveMulticaller.connect = function (address) {
|
|
77
|
+
return new CurveMulticaller(address);
|
|
78
|
+
};
|
|
66
79
|
CurveMulticaller.prototype.exchange = function (i, j, dx, min_dy) {
|
|
67
80
|
return {
|
|
68
81
|
target: this._address,
|
|
@@ -126,3 +139,63 @@ var CurveMulticaller = /** @class */ (function () {
|
|
|
126
139
|
return CurveMulticaller;
|
|
127
140
|
}());
|
|
128
141
|
exports.CurveMulticaller = CurveMulticaller;
|
|
142
|
+
var CurveStrategies = /** @class */ (function () {
|
|
143
|
+
function CurveStrategies() {
|
|
144
|
+
}
|
|
145
|
+
CurveStrategies.underlyingToCurveLP = function (data, network, curvePool, underlyingAmount) {
|
|
146
|
+
var calls = [];
|
|
147
|
+
var curveParams = contracts_1.contractParams[curvePool];
|
|
148
|
+
var tokenToDeposit = curveParams.tokens[0];
|
|
149
|
+
if (data.underlyingToken !== token_1.tokenDataByNetwork[network][tokenToDeposit]) {
|
|
150
|
+
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));
|
|
151
|
+
}
|
|
152
|
+
calls.push(CurveMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network][curvePool]]).add_all_liquidity_one_coin(0, 0));
|
|
153
|
+
return calls;
|
|
154
|
+
};
|
|
155
|
+
CurveStrategies.curveLPToUnderlying = function (data, network, curvePool, curveLPAmount) {
|
|
156
|
+
var calls = [];
|
|
157
|
+
var curveParams = contracts_1.contractParams[curvePool];
|
|
158
|
+
var curveContractAddress;
|
|
159
|
+
if (curveParams.wrapper) {
|
|
160
|
+
curveContractAddress =
|
|
161
|
+
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper]];
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
curveContractAddress =
|
|
165
|
+
data.adapters[contracts_1.contractsByNetwork[network][curvePool]];
|
|
166
|
+
}
|
|
167
|
+
calls.push(CurveMulticaller.connect(curveContractAddress).remove_liquidity_one_coin(curveLPAmount, 0, 0));
|
|
168
|
+
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
169
|
+
data.underlyingToken) {
|
|
170
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
171
|
+
token_1.tokenDataByNetwork[network][curveParams.tokens[0]],
|
|
172
|
+
data.underlyingToken
|
|
173
|
+
], Math.floor(new Date().getTime() / 1000) + 3600));
|
|
174
|
+
}
|
|
175
|
+
return calls;
|
|
176
|
+
};
|
|
177
|
+
CurveStrategies.allCurveLPToUnderlying = function (data, network, curvePool) {
|
|
178
|
+
var calls = [];
|
|
179
|
+
var curveParams = contracts_1.contractParams[curvePool];
|
|
180
|
+
var curveContractAddress;
|
|
181
|
+
if (curveParams.wrapper) {
|
|
182
|
+
curveContractAddress =
|
|
183
|
+
data.adapters[contracts_1.contractsByNetwork[network][curveParams.wrapper]];
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
curveContractAddress =
|
|
187
|
+
data.adapters[contracts_1.contractsByNetwork[network][curvePool]];
|
|
188
|
+
}
|
|
189
|
+
calls.push(CurveMulticaller.connect(curveContractAddress).remove_all_liquidity_one_coin(0, 0));
|
|
190
|
+
if (token_1.tokenDataByNetwork[network][curveParams.tokens[0]] !==
|
|
191
|
+
data.underlyingToken) {
|
|
192
|
+
calls.push(uniswapV2_1.UniswapV2Multicaller.connect(data.adapters[contracts_1.contractsByNetwork[network].UNISWAP_V2_ROUTER]).swapAllTokensForTokens(0, [
|
|
193
|
+
token_1.tokenDataByNetwork[network][curveParams.tokens[0]],
|
|
194
|
+
data.underlyingToken
|
|
195
|
+
], Math.floor(new Date().getTime() / 1000) + 3600));
|
|
196
|
+
}
|
|
197
|
+
return calls;
|
|
198
|
+
};
|
|
199
|
+
return CurveStrategies;
|
|
200
|
+
}());
|
|
201
|
+
exports.CurveStrategies = CurveStrategies;
|
package/lib/strategies/lido.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { BigNumberish } from "ethers";
|
|
2
|
+
import { CreditManagerData } from "../core/creditManager";
|
|
3
|
+
import { NetworkType } from "../core/constants";
|
|
2
4
|
import { MultiCallStruct } from "../types/contracts/interfaces/ICreditFacade.sol/ICreditFacade";
|
|
3
5
|
export declare class LidoCalls {
|
|
4
6
|
static submit(amount: BigNumberish): string;
|
|
@@ -7,6 +9,10 @@ export declare class LidoCalls {
|
|
|
7
9
|
export declare class LidoMulticaller {
|
|
8
10
|
private readonly _address;
|
|
9
11
|
constructor(address: string);
|
|
12
|
+
static connect(address: string): LidoMulticaller;
|
|
10
13
|
submit(amount: BigNumberish): MultiCallStruct;
|
|
11
14
|
submitAll(): MultiCallStruct;
|
|
12
15
|
}
|
|
16
|
+
export declare class LidoStrategies {
|
|
17
|
+
static mintSteth(data: CreditManagerData, network: NetworkType, underlyingAmount: BigNumberish): MultiCallStruct[];
|
|
18
|
+
}
|
package/lib/strategies/lido.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LidoMulticaller = exports.LidoCalls = void 0;
|
|
3
|
+
exports.LidoStrategies = exports.LidoMulticaller = exports.LidoCalls = void 0;
|
|
4
|
+
var constants_1 = require("../core/constants");
|
|
5
|
+
var contracts_1 = require("../contracts/contracts");
|
|
6
|
+
var token_1 = require("../tokens/token");
|
|
4
7
|
var types_1 = require("../types");
|
|
8
|
+
var uniswapV2_1 = require("./uniswapV2");
|
|
5
9
|
var LidoCalls = /** @class */ (function () {
|
|
6
10
|
function LidoCalls() {
|
|
7
11
|
}
|
|
@@ -18,6 +22,9 @@ var LidoMulticaller = /** @class */ (function () {
|
|
|
18
22
|
function LidoMulticaller(address) {
|
|
19
23
|
this._address = address;
|
|
20
24
|
}
|
|
25
|
+
LidoMulticaller.connect = function (address) {
|
|
26
|
+
return new LidoMulticaller(address);
|
|
27
|
+
};
|
|
21
28
|
LidoMulticaller.prototype.submit = function (amount) {
|
|
22
29
|
return {
|
|
23
30
|
target: this._address,
|
|
@@ -33,3 +40,18 @@ var LidoMulticaller = /** @class */ (function () {
|
|
|
33
40
|
return LidoMulticaller;
|
|
34
41
|
}());
|
|
35
42
|
exports.LidoMulticaller = LidoMulticaller;
|
|
43
|
+
var LidoStrategies = /** @class */ (function () {
|
|
44
|
+
function LidoStrategies() {
|
|
45
|
+
}
|
|
46
|
+
LidoStrategies.mintSteth = function (data, network, underlyingAmount) {
|
|
47
|
+
var calls = [];
|
|
48
|
+
// This should be a pathfinder call
|
|
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));
|
|
51
|
+
}
|
|
52
|
+
calls.push(LidoMulticaller.connect(data.adapters[contracts_1.contractsByNetwork[network].LIDO_STETH_GATEWAY]).submitAll());
|
|
53
|
+
return calls;
|
|
54
|
+
};
|
|
55
|
+
return LidoStrategies;
|
|
56
|
+
}());
|
|
57
|
+
exports.LidoStrategies = LidoStrategies;
|