@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.
Files changed (100) hide show
  1. package/lib/boosting.js +137 -402
  2. package/lib/constants/abis/avaxcrypto/swap.json +1195 -0
  3. package/lib/constants/abis/avaxcrypto/zap.json +250 -0
  4. package/lib/constants/aliases.d.ts +11 -11
  5. package/lib/constants/aliases.js +12 -15
  6. package/lib/constants/coins/arbitrum.js +6 -9
  7. package/lib/constants/coins/aurora.js +6 -9
  8. package/lib/constants/coins/avalanche.js +12 -10
  9. package/lib/constants/coins/celo.js +6 -9
  10. package/lib/constants/coins/ethereum.js +10 -13
  11. package/lib/constants/coins/fantom.js +8 -11
  12. package/lib/constants/coins/kava.js +6 -9
  13. package/lib/constants/coins/moonbeam.js +6 -9
  14. package/lib/constants/coins/optimism.js +6 -9
  15. package/lib/constants/coins/polygon.js +7 -10
  16. package/lib/constants/coins/xdai.js +6 -9
  17. package/lib/constants/pools/arbitrum.d.ts +2 -4
  18. package/lib/constants/pools/arbitrum.js +22 -28
  19. package/lib/constants/pools/aurora.d.ts +2 -4
  20. package/lib/constants/pools/aurora.js +6 -12
  21. package/lib/constants/pools/avalanche.d.ts +2 -4
  22. package/lib/constants/pools/avalanche.js +51 -22
  23. package/lib/constants/pools/celo.d.ts +2 -4
  24. package/lib/constants/pools/celo.js +2 -5
  25. package/lib/constants/pools/ethereum.js +247 -253
  26. package/lib/constants/pools/fantom.d.ts +2 -4
  27. package/lib/constants/pools/fantom.js +28 -34
  28. package/lib/constants/pools/index.d.ts +11 -11
  29. package/lib/constants/pools/index.js +12 -25
  30. package/lib/constants/pools/kava.d.ts +2 -4
  31. package/lib/constants/pools/kava.js +2 -5
  32. package/lib/constants/pools/moonbeam.d.ts +2 -4
  33. package/lib/constants/pools/moonbeam.js +6 -12
  34. package/lib/constants/pools/optimism.d.ts +2 -4
  35. package/lib/constants/pools/optimism.js +9 -15
  36. package/lib/constants/pools/polygon.d.ts +2 -4
  37. package/lib/constants/pools/polygon.js +23 -28
  38. package/lib/constants/pools/xdai.d.ts +2 -4
  39. package/lib/constants/pools/xdai.js +25 -30
  40. package/lib/constants/utils.js +20 -29
  41. package/lib/curve.d.ts +9 -7
  42. package/lib/curve.js +397 -615
  43. package/lib/external-api.d.ts +1 -1
  44. package/lib/external-api.js +47 -140
  45. package/lib/factory/common.js +6 -10
  46. package/lib/factory/constants-crypto.js +48 -54
  47. package/lib/factory/constants.js +274 -280
  48. package/lib/factory/deploy.d.ts +8 -8
  49. package/lib/factory/deploy.js +177 -347
  50. package/lib/factory/factory-api.js +195 -278
  51. package/lib/factory/factory-crypto.js +170 -323
  52. package/lib/factory/factory.js +195 -350
  53. package/lib/index.d.ts +24 -25
  54. package/lib/index.js +87 -143
  55. package/lib/interfaces.d.ts +6 -5
  56. package/lib/interfaces.js +1 -2
  57. package/lib/pools/PoolTemplate.d.ts +1 -0
  58. package/lib/pools/PoolTemplate.js +1516 -2928
  59. package/lib/pools/index.d.ts +2 -2
  60. package/lib/pools/index.js +3 -7
  61. package/lib/pools/mixins/common.d.ts +3 -4
  62. package/lib/pools/mixins/common.js +23 -102
  63. package/lib/pools/mixins/depositBalancedAmountsMixins.d.ts +1 -1
  64. package/lib/pools/mixins/depositBalancedAmountsMixins.js +50 -139
  65. package/lib/pools/mixins/depositMixins.d.ts +1 -1
  66. package/lib/pools/mixins/depositMixins.js +145 -405
  67. package/lib/pools/mixins/depositWrappedMixins.d.ts +1 -1
  68. package/lib/pools/mixins/depositWrappedMixins.js +72 -227
  69. package/lib/pools/mixins/poolBalancesMixin.d.ts +1 -2
  70. package/lib/pools/mixins/poolBalancesMixin.js +25 -131
  71. package/lib/pools/mixins/swapMixins.d.ts +1 -1
  72. package/lib/pools/mixins/swapMixins.js +127 -353
  73. package/lib/pools/mixins/swapWrappedMixins.d.ts +1 -1
  74. package/lib/pools/mixins/swapWrappedMixins.js +90 -276
  75. package/lib/pools/mixins/withdrawExpectedMixins.d.ts +1 -2
  76. package/lib/pools/mixins/withdrawExpectedMixins.js +26 -154
  77. package/lib/pools/mixins/withdrawImbalanceMixins.d.ts +1 -1
  78. package/lib/pools/mixins/withdrawImbalanceMixins.js +99 -321
  79. package/lib/pools/mixins/withdrawImbalanceWrappedMixins.d.ts +1 -1
  80. package/lib/pools/mixins/withdrawImbalanceWrappedMixins.js +53 -192
  81. package/lib/pools/mixins/withdrawMixins.d.ts +1 -1
  82. package/lib/pools/mixins/withdrawMixins.js +124 -378
  83. package/lib/pools/mixins/withdrawOneCoinExpectedMixins.d.ts +1 -1
  84. package/lib/pools/mixins/withdrawOneCoinExpectedMixins.js +17 -92
  85. package/lib/pools/mixins/withdrawOneCoinMixins.d.ts +1 -1
  86. package/lib/pools/mixins/withdrawOneCoinMixins.js +125 -378
  87. package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.d.ts +1 -1
  88. package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.js +9 -66
  89. package/lib/pools/mixins/withdrawOneCoinWrappedMixins.d.ts +1 -1
  90. package/lib/pools/mixins/withdrawOneCoinWrappedMixins.js +55 -190
  91. package/lib/pools/mixins/withdrawWrappedMixins.d.ts +1 -1
  92. package/lib/pools/mixins/withdrawWrappedMixins.js +52 -191
  93. package/lib/pools/poolConstructor.d.ts +1 -1
  94. package/lib/pools/poolConstructor.js +79 -109
  95. package/lib/pools/utils.js +298 -500
  96. package/lib/router.d.ts +2 -2
  97. package/lib/router.js +406 -650
  98. package/lib/utils.d.ts +9 -9
  99. package/lib/utils.js +377 -731
  100. package/package.json +8 -8
@@ -1,411 +1,157 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
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
- if (estimateGas === void 0) { estimateGas = false; }
57
- return __awaiter(this, void 0, void 0, function () {
58
- var lpTokenBalance, _b;
59
- return __generator(this, function (_c) {
60
- switch (_c.label) {
61
- case 0: return [4 /*yield*/, this.wallet.lpTokenBalances()];
62
- case 1:
63
- lpTokenBalance = (_c.sent())['lpToken'];
64
- if (Number(lpTokenBalance) < Number(lpTokenAmount)) {
65
- throw Error("Not enough LP tokens. Actual: ".concat(lpTokenBalance, ", required: ").concat(lpTokenAmount));
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
- if (slippage === void 0) { slippage = 0.5; }
89
- return __awaiter(this, void 0, void 0, function () {
90
- var expectedAmounts, _expectedAmounts, minRecvAmountsBN;
91
- var _this = this;
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
- exports.withdrawMetaFactoryMixin = {
23
+ export const withdrawMetaFactoryMixin = {
106
24
  // @ts-ignore
107
- _withdraw: function (_lpTokenAmount, slippage, estimateGas) {
108
- if (estimateGas === void 0) { estimateGas = false; }
109
- return __awaiter(this, void 0, void 0, function () {
110
- var _minAmounts, contract, gas, gasLimit;
111
- return __generator(this, function (_b) {
112
- switch (_b.label) {
113
- case 0:
114
- if (!!estimateGas) return [3 /*break*/, 2];
115
- return [4 /*yield*/, (0, utils_1._ensureAllowance)([this.lpToken], [_lpTokenAmount], this.zap)];
116
- case 1:
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: function (lpTokenAmount) {
136
- return __awaiter(this, void 0, void 0, function () {
137
- var _lpTokenAmount;
138
- return __generator(this, function (_b) {
139
- switch (_b.label) {
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: function (lpTokenAmount, slippage) {
152
- return __awaiter(this, void 0, void 0, function () {
153
- var _lpTokenAmount;
154
- return __generator(this, function (_b) {
155
- switch (_b.label) {
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
- exports.withdrawCryptoMetaFactoryMixin = {
50
+ export const withdrawCryptoMetaFactoryMixin = {
170
51
  // @ts-ignore
171
- _withdraw: function (_lpTokenAmount, slippage, estimateGas) {
172
- if (estimateGas === void 0) { estimateGas = false; }
173
- return __awaiter(this, void 0, void 0, function () {
174
- var _minAmounts, contract, gas, gasLimit;
175
- return __generator(this, function (_b) {
176
- switch (_b.label) {
177
- case 0:
178
- if (!!estimateGas) return [3 /*break*/, 2];
179
- return [4 /*yield*/, (0, utils_1._ensureAllowance)([this.lpToken], [_lpTokenAmount], this.zap)];
180
- case 1:
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: function (lpTokenAmount) {
200
- return __awaiter(this, void 0, void 0, function () {
201
- var _lpTokenAmount;
202
- return __generator(this, function (_b) {
203
- switch (_b.label) {
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: function (lpTokenAmount, slippage) {
216
- return __awaiter(this, void 0, void 0, function () {
217
- var _lpTokenAmount;
218
- return __generator(this, function (_b) {
219
- switch (_b.label) {
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
- exports.withdrawZapMixin = {
77
+ export const withdrawZapMixin = {
234
78
  // @ts-ignore
235
- _withdraw: function (_lpTokenAmount, slippage, estimateGas) {
236
- if (estimateGas === void 0) { estimateGas = false; }
237
- return __awaiter(this, void 0, void 0, function () {
238
- var _minAmounts, contract, gas, gasLimit;
239
- return __generator(this, function (_b) {
240
- switch (_b.label) {
241
- case 0:
242
- if (!!estimateGas) return [3 /*break*/, 2];
243
- return [4 /*yield*/, (0, utils_1._ensureAllowance)([this.lpToken], [_lpTokenAmount], this.zap)];
244
- case 1:
245
- _b.sent();
246
- _b.label = 2;
247
- case 2: return [4 /*yield*/, _withdrawMinAmounts.call(this, _lpTokenAmount, slippage)];
248
- case 3:
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: function (lpTokenAmount) {
264
- return __awaiter(this, void 0, void 0, function () {
265
- var _lpTokenAmount;
266
- return __generator(this, function (_b) {
267
- switch (_b.label) {
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: function (lpTokenAmount, slippage) {
280
- return __awaiter(this, void 0, void 0, function () {
281
- var _lpTokenAmount;
282
- return __generator(this, function (_b) {
283
- switch (_b.label) {
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
- exports.withdrawLendingOrCryptoMixin = {
108
+ export const withdrawLendingOrCryptoMixin = {
298
109
  // @ts-ignore
299
- _withdraw: function (_lpTokenAmount, slippage, estimateGas) {
300
- if (estimateGas === void 0) { estimateGas = false; }
301
- return __awaiter(this, void 0, void 0, function () {
302
- var _minAmounts, contract, gas, gasLimit;
303
- return __generator(this, function (_b) {
304
- switch (_b.label) {
305
- case 0: return [4 /*yield*/, _withdrawMinAmounts.call(this, _lpTokenAmount, slippage)];
306
- case 1:
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: function (lpTokenAmount) {
322
- return __awaiter(this, void 0, void 0, function () {
323
- var _lpTokenAmount;
324
- return __generator(this, function (_b) {
325
- switch (_b.label) {
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: function (lpTokenAmount, slippage) {
338
- return __awaiter(this, void 0, void 0, function () {
339
- var _lpTokenAmount;
340
- return __generator(this, function (_b) {
341
- switch (_b.label) {
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
- exports.withdrawPlainMixin = {
133
+ export const withdrawPlainMixin = {
356
134
  // @ts-ignore
357
- _withdraw: function (_lpTokenAmount, slippage, estimateGas) {
358
- if (estimateGas === void 0) { estimateGas = false; }
359
- return __awaiter(this, void 0, void 0, function () {
360
- var _minAmounts, contract, gas, gasLimit;
361
- return __generator(this, function (_b) {
362
- switch (_b.label) {
363
- case 0: return [4 /*yield*/, _withdrawMinAmounts.call(this, _lpTokenAmount, slippage)];
364
- case 1:
365
- _minAmounts = _b.sent();
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: function (lpTokenAmount) {
380
- return __awaiter(this, void 0, void 0, function () {
381
- var _lpTokenAmount;
382
- return __generator(this, function (_b) {
383
- switch (_b.label) {
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: function (lpTokenAmount, slippage) {
396
- return __awaiter(this, void 0, void 0, function () {
397
- var _lpTokenAmount;
398
- return __generator(this, function (_b) {
399
- switch (_b.label) {
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;