@curvefi/api 2.30.1 → 2.31.1
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/boosting.js +137 -402
- package/lib/constants/abis/avaxcrypto/swap.json +1195 -0
- package/lib/constants/abis/avaxcrypto/zap.json +250 -0
- package/lib/constants/aliases.d.ts +11 -11
- package/lib/constants/aliases.js +12 -15
- package/lib/constants/coins/arbitrum.js +6 -9
- package/lib/constants/coins/aurora.js +6 -9
- package/lib/constants/coins/avalanche.js +12 -10
- package/lib/constants/coins/celo.js +6 -9
- package/lib/constants/coins/ethereum.js +10 -13
- package/lib/constants/coins/fantom.js +8 -11
- package/lib/constants/coins/kava.js +6 -9
- package/lib/constants/coins/moonbeam.js +6 -9
- package/lib/constants/coins/optimism.js +6 -9
- package/lib/constants/coins/polygon.js +7 -10
- package/lib/constants/coins/xdai.js +6 -9
- package/lib/constants/pools/arbitrum.d.ts +2 -4
- package/lib/constants/pools/arbitrum.js +22 -28
- package/lib/constants/pools/aurora.d.ts +2 -4
- package/lib/constants/pools/aurora.js +6 -12
- package/lib/constants/pools/avalanche.d.ts +2 -4
- package/lib/constants/pools/avalanche.js +51 -22
- package/lib/constants/pools/celo.d.ts +2 -4
- package/lib/constants/pools/celo.js +2 -5
- package/lib/constants/pools/ethereum.js +247 -253
- package/lib/constants/pools/fantom.d.ts +2 -4
- package/lib/constants/pools/fantom.js +28 -34
- package/lib/constants/pools/index.d.ts +11 -11
- package/lib/constants/pools/index.js +12 -25
- package/lib/constants/pools/kava.d.ts +2 -4
- package/lib/constants/pools/kava.js +2 -5
- package/lib/constants/pools/moonbeam.d.ts +2 -4
- package/lib/constants/pools/moonbeam.js +6 -12
- package/lib/constants/pools/optimism.d.ts +2 -4
- package/lib/constants/pools/optimism.js +9 -15
- package/lib/constants/pools/polygon.d.ts +2 -4
- package/lib/constants/pools/polygon.js +23 -28
- package/lib/constants/pools/xdai.d.ts +2 -4
- package/lib/constants/pools/xdai.js +25 -30
- package/lib/constants/utils.js +20 -29
- package/lib/curve.d.ts +9 -7
- package/lib/curve.js +397 -615
- package/lib/external-api.d.ts +1 -1
- package/lib/external-api.js +47 -140
- package/lib/factory/common.js +6 -10
- package/lib/factory/constants-crypto.js +48 -54
- package/lib/factory/constants.js +274 -280
- package/lib/factory/deploy.d.ts +8 -8
- package/lib/factory/deploy.js +177 -347
- package/lib/factory/factory-api.js +195 -278
- package/lib/factory/factory-crypto.js +170 -323
- package/lib/factory/factory.js +195 -350
- package/lib/index.d.ts +24 -25
- package/lib/index.js +87 -143
- package/lib/interfaces.d.ts +6 -5
- package/lib/interfaces.js +1 -2
- package/lib/pools/PoolTemplate.d.ts +1 -0
- package/lib/pools/PoolTemplate.js +1516 -2928
- package/lib/pools/index.d.ts +2 -2
- package/lib/pools/index.js +3 -7
- package/lib/pools/mixins/common.d.ts +3 -4
- package/lib/pools/mixins/common.js +23 -102
- package/lib/pools/mixins/depositBalancedAmountsMixins.d.ts +1 -1
- package/lib/pools/mixins/depositBalancedAmountsMixins.js +50 -139
- package/lib/pools/mixins/depositMixins.d.ts +1 -1
- package/lib/pools/mixins/depositMixins.js +145 -405
- package/lib/pools/mixins/depositWrappedMixins.d.ts +1 -1
- package/lib/pools/mixins/depositWrappedMixins.js +72 -227
- package/lib/pools/mixins/poolBalancesMixin.d.ts +1 -2
- package/lib/pools/mixins/poolBalancesMixin.js +25 -131
- package/lib/pools/mixins/swapMixins.d.ts +1 -1
- package/lib/pools/mixins/swapMixins.js +127 -353
- package/lib/pools/mixins/swapWrappedMixins.d.ts +1 -1
- package/lib/pools/mixins/swapWrappedMixins.js +90 -276
- package/lib/pools/mixins/withdrawExpectedMixins.d.ts +1 -2
- package/lib/pools/mixins/withdrawExpectedMixins.js +26 -154
- package/lib/pools/mixins/withdrawImbalanceMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawImbalanceMixins.js +99 -321
- package/lib/pools/mixins/withdrawImbalanceWrappedMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawImbalanceWrappedMixins.js +53 -192
- package/lib/pools/mixins/withdrawMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawMixins.js +124 -378
- package/lib/pools/mixins/withdrawOneCoinExpectedMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawOneCoinExpectedMixins.js +17 -92
- package/lib/pools/mixins/withdrawOneCoinMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawOneCoinMixins.js +125 -378
- package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.js +9 -66
- package/lib/pools/mixins/withdrawOneCoinWrappedMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawOneCoinWrappedMixins.js +55 -190
- package/lib/pools/mixins/withdrawWrappedMixins.d.ts +1 -1
- package/lib/pools/mixins/withdrawWrappedMixins.js +52 -191
- package/lib/pools/poolConstructor.d.ts +1 -1
- package/lib/pools/poolConstructor.js +79 -109
- package/lib/pools/utils.js +298 -500
- package/lib/router.d.ts +2 -2
- package/lib/router.js +406 -650
- package/lib/utils.d.ts +9 -9
- package/lib/utils.js +377 -731
- package/package.json +8 -8
|
@@ -1,411 +1,157 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
exports.withdrawPlainMixin = exports.withdrawLendingOrCryptoMixin = exports.withdrawZapMixin = exports.withdrawCryptoMetaFactoryMixin = exports.withdrawMetaFactoryMixin = void 0;
|
|
51
|
-
var ethers_1 = require("ethers");
|
|
52
|
-
var curve_1 = require("../../curve");
|
|
53
|
-
var utils_1 = require("../../utils");
|
|
1
|
+
import { curve } from "../../curve.js";
|
|
2
|
+
import { _ensureAllowance, fromBN, hasAllowance, toBN, parseUnits, mulBy1_3 } from "../../utils.js";
|
|
54
3
|
// @ts-ignore
|
|
55
|
-
function _withdrawCheck(lpTokenAmount, estimateGas) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
_b = estimateGas && this.zap;
|
|
68
|
-
if (!_b) return [3 /*break*/, 3];
|
|
69
|
-
return [4 /*yield*/, (0, utils_1.hasAllowance)([this.lpToken], [lpTokenAmount], curve_1.curve.signerAddress, this.zap)];
|
|
70
|
-
case 2:
|
|
71
|
-
_b = !(_c.sent());
|
|
72
|
-
_c.label = 3;
|
|
73
|
-
case 3:
|
|
74
|
-
if (_b) {
|
|
75
|
-
throw Error("Token allowance is needed to estimate gas");
|
|
76
|
-
}
|
|
77
|
-
if (!!estimateGas) return [3 /*break*/, 5];
|
|
78
|
-
return [4 /*yield*/, curve_1.curve.updateFeeData()];
|
|
79
|
-
case 4:
|
|
80
|
-
_c.sent();
|
|
81
|
-
_c.label = 5;
|
|
82
|
-
case 5: return [2 /*return*/, (0, utils_1.parseUnits)(lpTokenAmount)];
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
});
|
|
4
|
+
async function _withdrawCheck(lpTokenAmount, estimateGas = false) {
|
|
5
|
+
const lpTokenBalance = (await this.wallet.lpTokenBalances())['lpToken'];
|
|
6
|
+
if (Number(lpTokenBalance) < Number(lpTokenAmount)) {
|
|
7
|
+
throw Error(`Not enough LP tokens. Actual: ${lpTokenBalance}, required: ${lpTokenAmount}`);
|
|
8
|
+
}
|
|
9
|
+
if (estimateGas && this.zap && !(await hasAllowance([this.lpToken], [lpTokenAmount], curve.signerAddress, this.zap))) {
|
|
10
|
+
throw Error("Token allowance is needed to estimate gas");
|
|
11
|
+
}
|
|
12
|
+
if (!estimateGas)
|
|
13
|
+
await curve.updateFeeData();
|
|
14
|
+
return parseUnits(lpTokenAmount);
|
|
86
15
|
}
|
|
87
|
-
function _withdrawMinAmounts(_lpTokenAmount, slippage) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return __generator(this, function (_b) {
|
|
93
|
-
switch (_b.label) {
|
|
94
|
-
case 0: return [4 /*yield*/, this.withdrawExpected(ethers_1.ethers.utils.formatUnits(_lpTokenAmount))];
|
|
95
|
-
case 1:
|
|
96
|
-
expectedAmounts = _b.sent();
|
|
97
|
-
_expectedAmounts = expectedAmounts.map(function (a, i) { return ethers_1.ethers.utils.parseUnits(a, _this.underlyingDecimals[i]); });
|
|
98
|
-
minRecvAmountsBN = _expectedAmounts.map(function (_a, i) { return (0, utils_1.toBN)(_a, _this.underlyingDecimals[i]).times(100 - slippage).div(100); });
|
|
99
|
-
return [2 /*return*/, minRecvAmountsBN.map(function (a, i) { return (0, utils_1.fromBN)(a, _this.underlyingDecimals[i]); })];
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
});
|
|
16
|
+
async function _withdrawMinAmounts(_lpTokenAmount, slippage = 0.5) {
|
|
17
|
+
const expectedAmounts = await this.withdrawExpected(curve.formatUnits(_lpTokenAmount));
|
|
18
|
+
const _expectedAmounts = expectedAmounts.map((a, i) => curve.parseUnits(a, this.underlyingDecimals[i]));
|
|
19
|
+
const minRecvAmountsBN = _expectedAmounts.map((_a, i) => toBN(_a, this.underlyingDecimals[i]).times(100 - slippage).div(100));
|
|
20
|
+
return minRecvAmountsBN.map((a, i) => fromBN(a, this.underlyingDecimals[i]));
|
|
103
21
|
}
|
|
104
22
|
// @ts-ignore
|
|
105
|
-
|
|
23
|
+
export const withdrawMetaFactoryMixin = {
|
|
106
24
|
// @ts-ignore
|
|
107
|
-
_withdraw
|
|
108
|
-
if (estimateGas
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
_b.sent();
|
|
118
|
-
_b.label = 2;
|
|
119
|
-
case 2: return [4 /*yield*/, _withdrawMinAmounts.call(this, _lpTokenAmount, slippage)];
|
|
120
|
-
case 3:
|
|
121
|
-
_minAmounts = _b.sent();
|
|
122
|
-
contract = curve_1.curve.contracts[this.zap].contract;
|
|
123
|
-
return [4 /*yield*/, contract.estimateGas.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, curve_1.curve.constantOptions)];
|
|
124
|
-
case 4:
|
|
125
|
-
gas = _b.sent();
|
|
126
|
-
if (estimateGas)
|
|
127
|
-
return [2 /*return*/, gas.toNumber()];
|
|
128
|
-
gasLimit = gas.mul(130).div(100);
|
|
129
|
-
return [4 /*yield*/, contract.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, __assign(__assign({}, curve_1.curve.options), { gasLimit: gasLimit }))];
|
|
130
|
-
case 5: return [2 /*return*/, (_b.sent()).hash];
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
});
|
|
25
|
+
async _withdraw(_lpTokenAmount, slippage, estimateGas = false) {
|
|
26
|
+
if (!estimateGas)
|
|
27
|
+
await _ensureAllowance([this.lpToken], [_lpTokenAmount], this.zap);
|
|
28
|
+
const _minAmounts = await _withdrawMinAmounts.call(this, _lpTokenAmount, slippage);
|
|
29
|
+
const contract = curve.contracts[this.zap].contract;
|
|
30
|
+
const gas = await contract.remove_liquidity.estimateGas(this.address, _lpTokenAmount, _minAmounts, curve.constantOptions);
|
|
31
|
+
if (estimateGas)
|
|
32
|
+
return Number(gas);
|
|
33
|
+
const gasLimit = mulBy1_3(gas);
|
|
34
|
+
return (await contract.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, { ...curve.options, gasLimit })).hash;
|
|
134
35
|
},
|
|
135
|
-
withdrawEstimateGas
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount, true)];
|
|
141
|
-
case 1:
|
|
142
|
-
_lpTokenAmount = _b.sent();
|
|
143
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, 0.1, true)];
|
|
144
|
-
case 2:
|
|
145
|
-
// @ts-ignore
|
|
146
|
-
return [2 /*return*/, _b.sent()];
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
});
|
|
36
|
+
async withdrawEstimateGas(lpTokenAmount) {
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount, true);
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
return await this._withdraw(_lpTokenAmount, 0.1, true);
|
|
150
41
|
},
|
|
151
|
-
withdraw
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount)];
|
|
157
|
-
case 1:
|
|
158
|
-
_lpTokenAmount = _b.sent();
|
|
159
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, slippage)];
|
|
160
|
-
case 2:
|
|
161
|
-
// @ts-ignore
|
|
162
|
-
return [2 /*return*/, _b.sent()];
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
});
|
|
42
|
+
async withdraw(lpTokenAmount, slippage) {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount);
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
return await this._withdraw(_lpTokenAmount, slippage);
|
|
166
47
|
},
|
|
167
48
|
};
|
|
168
49
|
// @ts-ignore
|
|
169
|
-
|
|
50
|
+
export const withdrawCryptoMetaFactoryMixin = {
|
|
170
51
|
// @ts-ignore
|
|
171
|
-
_withdraw
|
|
172
|
-
if (estimateGas
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
_b.sent();
|
|
182
|
-
_b.label = 2;
|
|
183
|
-
case 2: return [4 /*yield*/, _withdrawMinAmounts.call(this, _lpTokenAmount, slippage)];
|
|
184
|
-
case 3:
|
|
185
|
-
_minAmounts = _b.sent();
|
|
186
|
-
contract = curve_1.curve.contracts[this.zap].contract;
|
|
187
|
-
return [4 /*yield*/, contract.estimateGas.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, true, curve_1.curve.constantOptions)];
|
|
188
|
-
case 4:
|
|
189
|
-
gas = _b.sent();
|
|
190
|
-
if (estimateGas)
|
|
191
|
-
return [2 /*return*/, gas.toNumber()];
|
|
192
|
-
gasLimit = gas.mul(130).div(100);
|
|
193
|
-
return [4 /*yield*/, contract.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, true, __assign(__assign({}, curve_1.curve.options), { gasLimit: gasLimit }))];
|
|
194
|
-
case 5: return [2 /*return*/, (_b.sent()).hash];
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
});
|
|
52
|
+
async _withdraw(_lpTokenAmount, slippage, estimateGas = false) {
|
|
53
|
+
if (!estimateGas)
|
|
54
|
+
await _ensureAllowance([this.lpToken], [_lpTokenAmount], this.zap);
|
|
55
|
+
const _minAmounts = await _withdrawMinAmounts.call(this, _lpTokenAmount, slippage);
|
|
56
|
+
const contract = curve.contracts[this.zap].contract;
|
|
57
|
+
const gas = await contract.remove_liquidity.estimateGas(this.address, _lpTokenAmount, _minAmounts, true, curve.constantOptions);
|
|
58
|
+
if (estimateGas)
|
|
59
|
+
return Number(gas);
|
|
60
|
+
const gasLimit = mulBy1_3(gas);
|
|
61
|
+
return (await contract.remove_liquidity(this.address, _lpTokenAmount, _minAmounts, true, { ...curve.options, gasLimit })).hash;
|
|
198
62
|
},
|
|
199
|
-
withdrawEstimateGas
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount, true)];
|
|
205
|
-
case 1:
|
|
206
|
-
_lpTokenAmount = _b.sent();
|
|
207
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, 0.1, true)];
|
|
208
|
-
case 2:
|
|
209
|
-
// @ts-ignore
|
|
210
|
-
return [2 /*return*/, _b.sent()];
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
});
|
|
63
|
+
async withdrawEstimateGas(lpTokenAmount) {
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount, true);
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
return await this._withdraw(_lpTokenAmount, 0.1, true);
|
|
214
68
|
},
|
|
215
|
-
withdraw
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount)];
|
|
221
|
-
case 1:
|
|
222
|
-
_lpTokenAmount = _b.sent();
|
|
223
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, slippage)];
|
|
224
|
-
case 2:
|
|
225
|
-
// @ts-ignore
|
|
226
|
-
return [2 /*return*/, _b.sent()];
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
});
|
|
69
|
+
async withdraw(lpTokenAmount, slippage) {
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount);
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
return await this._withdraw(_lpTokenAmount, slippage);
|
|
230
74
|
},
|
|
231
75
|
};
|
|
232
76
|
// @ts-ignore
|
|
233
|
-
|
|
77
|
+
export const withdrawZapMixin = {
|
|
234
78
|
// @ts-ignore
|
|
235
|
-
_withdraw
|
|
236
|
-
if (estimateGas
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
_minAmounts = _b.sent();
|
|
250
|
-
contract = curve_1.curve.contracts[this.zap].contract;
|
|
251
|
-
return [4 /*yield*/, contract.estimateGas.remove_liquidity(_lpTokenAmount, _minAmounts, curve_1.curve.constantOptions)];
|
|
252
|
-
case 4:
|
|
253
|
-
gas = _b.sent();
|
|
254
|
-
if (estimateGas)
|
|
255
|
-
return [2 /*return*/, gas.toNumber()];
|
|
256
|
-
gasLimit = gas.mul(130).div(100);
|
|
257
|
-
return [4 /*yield*/, contract.remove_liquidity(_lpTokenAmount, _minAmounts, __assign(__assign({}, curve_1.curve.options), { gasLimit: gasLimit }))];
|
|
258
|
-
case 5: return [2 /*return*/, (_b.sent()).hash];
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
});
|
|
79
|
+
async _withdraw(_lpTokenAmount, slippage, estimateGas = false) {
|
|
80
|
+
if (!estimateGas)
|
|
81
|
+
await _ensureAllowance([this.lpToken], [_lpTokenAmount], this.zap);
|
|
82
|
+
// @ts-ignore
|
|
83
|
+
const _minAmounts = await _withdrawMinAmounts.call(this, _lpTokenAmount, slippage);
|
|
84
|
+
const contract = curve.contracts[this.zap].contract;
|
|
85
|
+
const args = [_lpTokenAmount, _minAmounts];
|
|
86
|
+
if (`remove_liquidity(uint256,uint256[${this.underlyingCoinAddresses.length}],bool)` in contract)
|
|
87
|
+
args.push(true);
|
|
88
|
+
const gas = await contract.remove_liquidity.estimateGas(...args, curve.constantOptions);
|
|
89
|
+
if (estimateGas)
|
|
90
|
+
return Number(gas);
|
|
91
|
+
const gasLimit = mulBy1_3(gas);
|
|
92
|
+
return (await contract.remove_liquidity(...args, { ...curve.options, gasLimit })).hash;
|
|
262
93
|
},
|
|
263
|
-
withdrawEstimateGas
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount, true)];
|
|
269
|
-
case 1:
|
|
270
|
-
_lpTokenAmount = _b.sent();
|
|
271
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, 0.1, true)];
|
|
272
|
-
case 2:
|
|
273
|
-
// @ts-ignore
|
|
274
|
-
return [2 /*return*/, _b.sent()];
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
});
|
|
94
|
+
async withdrawEstimateGas(lpTokenAmount) {
|
|
95
|
+
// @ts-ignore
|
|
96
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount, true);
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
return await this._withdraw(_lpTokenAmount, 0.1, true);
|
|
278
99
|
},
|
|
279
|
-
withdraw
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount)];
|
|
285
|
-
case 1:
|
|
286
|
-
_lpTokenAmount = _b.sent();
|
|
287
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, slippage)];
|
|
288
|
-
case 2:
|
|
289
|
-
// @ts-ignore
|
|
290
|
-
return [2 /*return*/, _b.sent()];
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
});
|
|
100
|
+
async withdraw(lpTokenAmount, slippage) {
|
|
101
|
+
// @ts-ignore
|
|
102
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount);
|
|
103
|
+
// @ts-ignore
|
|
104
|
+
return await this._withdraw(_lpTokenAmount, slippage);
|
|
294
105
|
},
|
|
295
106
|
};
|
|
296
107
|
// @ts-ignore
|
|
297
|
-
|
|
108
|
+
export const withdrawLendingOrCryptoMixin = {
|
|
298
109
|
// @ts-ignore
|
|
299
|
-
_withdraw
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
_minAmounts = _b.sent();
|
|
308
|
-
contract = curve_1.curve.contracts[this.address].contract;
|
|
309
|
-
return [4 /*yield*/, contract.estimateGas.remove_liquidity(_lpTokenAmount, _minAmounts, true, curve_1.curve.constantOptions)];
|
|
310
|
-
case 2:
|
|
311
|
-
gas = _b.sent();
|
|
312
|
-
if (estimateGas)
|
|
313
|
-
return [2 /*return*/, gas.toNumber()];
|
|
314
|
-
gasLimit = gas.mul(130).div(100);
|
|
315
|
-
return [4 /*yield*/, contract.remove_liquidity(_lpTokenAmount, _minAmounts, true, __assign(__assign({}, curve_1.curve.options), { gasLimit: gasLimit }))];
|
|
316
|
-
case 3: return [2 /*return*/, (_b.sent()).hash];
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
});
|
|
110
|
+
async _withdraw(_lpTokenAmount, slippage, estimateGas = false) {
|
|
111
|
+
const _minAmounts = await _withdrawMinAmounts.call(this, _lpTokenAmount, slippage);
|
|
112
|
+
const contract = curve.contracts[this.address].contract;
|
|
113
|
+
const gas = await contract.remove_liquidity.estimateGas(_lpTokenAmount, _minAmounts, true, curve.constantOptions);
|
|
114
|
+
if (estimateGas)
|
|
115
|
+
return Number(gas);
|
|
116
|
+
const gasLimit = mulBy1_3(gas);
|
|
117
|
+
return (await contract.remove_liquidity(_lpTokenAmount, _minAmounts, true, { ...curve.options, gasLimit })).hash;
|
|
320
118
|
},
|
|
321
|
-
withdrawEstimateGas
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount, true)];
|
|
327
|
-
case 1:
|
|
328
|
-
_lpTokenAmount = _b.sent();
|
|
329
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, 0.1, true)];
|
|
330
|
-
case 2:
|
|
331
|
-
// @ts-ignore
|
|
332
|
-
return [2 /*return*/, _b.sent()];
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
});
|
|
119
|
+
async withdrawEstimateGas(lpTokenAmount) {
|
|
120
|
+
// @ts-ignore
|
|
121
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount, true);
|
|
122
|
+
// @ts-ignore
|
|
123
|
+
return await this._withdraw(_lpTokenAmount, 0.1, true);
|
|
336
124
|
},
|
|
337
|
-
withdraw
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount)];
|
|
343
|
-
case 1:
|
|
344
|
-
_lpTokenAmount = _b.sent();
|
|
345
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, slippage)];
|
|
346
|
-
case 2:
|
|
347
|
-
// @ts-ignore
|
|
348
|
-
return [2 /*return*/, _b.sent()];
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
});
|
|
125
|
+
async withdraw(lpTokenAmount, slippage) {
|
|
126
|
+
// @ts-ignore
|
|
127
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount);
|
|
128
|
+
// @ts-ignore
|
|
129
|
+
return await this._withdraw(_lpTokenAmount, slippage);
|
|
352
130
|
},
|
|
353
131
|
};
|
|
354
132
|
// @ts-ignore
|
|
355
|
-
|
|
133
|
+
export const withdrawPlainMixin = {
|
|
356
134
|
// @ts-ignore
|
|
357
|
-
_withdraw
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
contract = curve_1.curve.contracts[this.address].contract;
|
|
367
|
-
return [4 /*yield*/, contract.estimateGas.remove_liquidity(_lpTokenAmount, _minAmounts, curve_1.curve.constantOptions)];
|
|
368
|
-
case 2:
|
|
369
|
-
gas = _b.sent();
|
|
370
|
-
if (estimateGas)
|
|
371
|
-
return [2 /*return*/, gas.toNumber()];
|
|
372
|
-
gasLimit = gas.mul(130).div(100);
|
|
373
|
-
return [4 /*yield*/, contract.remove_liquidity(_lpTokenAmount, _minAmounts, __assign(__assign({}, curve_1.curve.options), { gasLimit: gasLimit }))];
|
|
374
|
-
case 3: return [2 /*return*/, (_b.sent()).hash];
|
|
375
|
-
}
|
|
376
|
-
});
|
|
377
|
-
});
|
|
135
|
+
async _withdraw(_lpTokenAmount, slippage, estimateGas = false) {
|
|
136
|
+
// @ts-ignore
|
|
137
|
+
const _minAmounts = await _withdrawMinAmounts.call(this, _lpTokenAmount, slippage);
|
|
138
|
+
const contract = curve.contracts[this.address].contract;
|
|
139
|
+
const gas = await contract.remove_liquidity.estimateGas(_lpTokenAmount, _minAmounts, curve.constantOptions);
|
|
140
|
+
if (estimateGas)
|
|
141
|
+
return Number(gas);
|
|
142
|
+
const gasLimit = mulBy1_3(gas);
|
|
143
|
+
return (await contract.remove_liquidity(_lpTokenAmount, _minAmounts, { ...curve.options, gasLimit })).hash;
|
|
378
144
|
},
|
|
379
|
-
withdrawEstimateGas
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount, true)];
|
|
385
|
-
case 1:
|
|
386
|
-
_lpTokenAmount = _b.sent();
|
|
387
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, 0.1, true)];
|
|
388
|
-
case 2:
|
|
389
|
-
// @ts-ignore
|
|
390
|
-
return [2 /*return*/, _b.sent()];
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
});
|
|
145
|
+
async withdrawEstimateGas(lpTokenAmount) {
|
|
146
|
+
// @ts-ignore
|
|
147
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount, true);
|
|
148
|
+
// @ts-ignore
|
|
149
|
+
return await this._withdraw(_lpTokenAmount, 0.1, true);
|
|
394
150
|
},
|
|
395
|
-
withdraw
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
case 0: return [4 /*yield*/, _withdrawCheck.call(this, lpTokenAmount)];
|
|
401
|
-
case 1:
|
|
402
|
-
_lpTokenAmount = _b.sent();
|
|
403
|
-
return [4 /*yield*/, this._withdraw(_lpTokenAmount, slippage)];
|
|
404
|
-
case 2:
|
|
405
|
-
// @ts-ignore
|
|
406
|
-
return [2 /*return*/, _b.sent()];
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
});
|
|
151
|
+
async withdraw(lpTokenAmount, slippage) {
|
|
152
|
+
// @ts-ignore
|
|
153
|
+
const _lpTokenAmount = await _withdrawCheck.call(this, lpTokenAmount);
|
|
154
|
+
// @ts-ignore
|
|
155
|
+
return await this._withdraw(_lpTokenAmount, slippage);
|
|
410
156
|
},
|
|
411
157
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PoolTemplate } from "../PoolTemplate";
|
|
1
|
+
import { PoolTemplate } from "../PoolTemplate.js";
|
|
2
2
|
export declare const withdrawOneCoinExpectedMetaFactoryMixin: PoolTemplate;
|
|
3
3
|
export declare const withdrawOneCoinExpectedZapMixin: PoolTemplate;
|
|
4
4
|
export declare const withdrawOneCoinExpected3argsMixin: PoolTemplate;
|