@curvefi/llamalend-api 2.2.6 → 2.3.0

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.
@@ -25,7 +25,7 @@ export class LeverageZapV2BaseModule {
25
25
  return this._getLeverageZapAddress() !== this.llamalend.constants.ZERO_ADDRESS &&
26
26
  this._getMarketId() >= Number(this.llamalend.constants.ALIASES["leverage_markets_start_id"]);
27
27
  };
28
- this.leverageCreateLoanMaxRecvAllRanges = memoize((_a) => __awaiter(this, [_a], void 0, function* ({ userCollateral, userBorrowed, getExpected }) {
28
+ this.leverageCreateLoanMaxRecvAllRanges = memoize((_a) => __awaiter(this, [_a], void 0, function* ({ userCollateral, getExpected }) {
29
29
  this._checkLeverageZap();
30
30
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
31
31
  const contract = this.llamalend.contracts[this._getLeverageZapAddress()].multicallContract;
@@ -41,7 +41,7 @@ export class LeverageZapV2BaseModule {
41
41
  for (let i = 0; i < 5; i++) {
42
42
  const pBN = pAvgBN !== null && pAvgBN !== void 0 ? pAvgBN : pAvgApproxBN;
43
43
  maxBorrowablePrevBN = maxBorrowableBN;
44
- const _userEffectiveCollateral = _userCollateral + fromBN(BN(userBorrowed).div(pBN), this.market.collateral_token.decimals);
44
+ const _userEffectiveCollateral = _userCollateral;
45
45
  const calls = [];
46
46
  for (let N = this.market.minBands; N <= this.market.maxBands; N++) {
47
47
  const j = N - this.market.minBands;
@@ -62,7 +62,7 @@ export class LeverageZapV2BaseModule {
62
62
  maxLeverageCollateralBN = maxBorrowableBN.map((mb) => mb.div(pAvgBN));
63
63
  _maxLeverageCollateral = maxLeverageCollateralBN.map((mlc) => fromBN(mlc, this.market.collateral_token.decimals));
64
64
  }
65
- const userEffectiveCollateralBN = BN(userCollateral).plus(BN(userBorrowed).div(pAvgBN));
65
+ const userEffectiveCollateralBN = BN(userCollateral);
66
66
  const res = {};
67
67
  for (let N = this.market.minBands; N <= this.market.maxBands; N++) {
68
68
  const j = N - this.market.minBands;
@@ -70,7 +70,7 @@ export class LeverageZapV2BaseModule {
70
70
  maxDebt: formatNumber(maxBorrowableBN[j].toString(), this.market.borrowed_token.decimals),
71
71
  maxTotalCollateral: formatNumber(maxLeverageCollateralBN[j].plus(userEffectiveCollateralBN).toString(), this.market.collateral_token.decimals),
72
72
  userCollateral: formatNumber(userCollateral, this.market.collateral_token.decimals),
73
- collateralFromUserBorrowed: formatNumber(BN(userBorrowed).div(pAvgBN).toString(), this.market.collateral_token.decimals),
73
+ collateralFromUserBorrowed: formatNumber(BN(0).toString(), this.market.collateral_token.decimals),
74
74
  collateralFromMaxDebt: formatNumber(maxLeverageCollateralBN[j].toString(), this.market.collateral_token.decimals),
75
75
  maxLeverage: maxLeverageCollateralBN[j].plus(userEffectiveCollateralBN).div(userEffectiveCollateralBN).toString(),
76
76
  avgPrice: pAvgBN.toString(),
@@ -81,14 +81,12 @@ export class LeverageZapV2BaseModule {
81
81
  promise: true,
82
82
  maxAge: 60 * 1000, // 1m
83
83
  });
84
- this._leverageExpectedCollateral = (userCollateral, userBorrowed, debt, quote, user) => __awaiter(this, void 0, void 0, function* () {
84
+ this._leverageExpectedCollateral = (userCollateral, debt, quote, user) => __awaiter(this, void 0, void 0, function* () {
85
85
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
86
86
  const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
87
- const _userBorrowed = parseUnits(userBorrowed, this.market.borrowed_token.decimals);
88
- // additionalCollateral = (userBorrowed / p) + leverageCollateral
89
87
  const _additionalCollateral = BigInt(quote.outAmount);
90
- const _collateralFromDebt = _debt * BigInt(Math.pow(10, 18)) / (_debt + _userBorrowed) * _additionalCollateral / BigInt(Math.pow(10, 18));
91
- const _collateralFromUserBorrowed = _additionalCollateral - _collateralFromDebt;
88
+ const _collateralFromDebt = _additionalCollateral;
89
+ const _collateralFromUserBorrowed = BigInt(0);
92
90
  let _stateCollateral = BigInt(0);
93
91
  if (user) {
94
92
  const { _collateral, _borrowed } = yield this.market.userPosition.userStateBigInt(user);
@@ -98,10 +96,10 @@ export class LeverageZapV2BaseModule {
98
96
  }
99
97
  const _totalCollateral = _userCollateral + _additionalCollateral;
100
98
  const _futureStateCollateral = _stateCollateral + _totalCollateral;
101
- const avgPrice = toBN(_debt + _userBorrowed, this.market.borrowed_token.decimals).div(toBN(_additionalCollateral, this.market.collateral_token.decimals)).toString();
99
+ const avgPrice = toBN(_debt, this.market.borrowed_token.decimals).div(toBN(_additionalCollateral, this.market.collateral_token.decimals)).toString();
102
100
  return { _futureStateCollateral, _totalCollateral, _userCollateral, _collateralFromUserBorrowed, _collateralFromDebt, avgPrice };
103
101
  });
104
- this._leverageCalcN1 = memoize((userCollateral, userBorrowed, debt, range, quote, user) => __awaiter(this, void 0, void 0, function* () {
102
+ this._leverageCalcN1 = memoize((userCollateral, debt, range, quote, user) => __awaiter(this, void 0, void 0, function* () {
105
103
  if (range > 0)
106
104
  this.market.prices.checkRange(range);
107
105
  let _stateDebt = BigInt(0);
@@ -113,15 +111,15 @@ export class LeverageZapV2BaseModule {
113
111
  if (range < 0)
114
112
  range = Number(this.llamalend.formatUnits(_N, 0));
115
113
  }
116
- const { _futureStateCollateral } = yield this._leverageExpectedCollateral(userCollateral, userBorrowed, debt, quote, user);
114
+ const { _futureStateCollateral } = yield this._leverageExpectedCollateral(userCollateral, debt, quote, user);
117
115
  const _debt = _stateDebt + parseUnits(debt, this.market.borrowed_token.decimals);
118
116
  return yield this._calcDebtN1Call(_futureStateCollateral, _debt, range);
119
117
  }), {
120
118
  promise: true,
121
119
  maxAge: 60 * 1000, // 1m
122
120
  });
123
- this._leverageCalcN1AllRanges = memoize((userCollateral, userBorrowed, debt, maxN, quote) => __awaiter(this, void 0, void 0, function* () {
124
- const { _futureStateCollateral } = yield this._leverageExpectedCollateral(userCollateral, userBorrowed, debt, quote);
121
+ this._leverageCalcN1AllRanges = memoize((userCollateral, debt, maxN, quote) => __awaiter(this, void 0, void 0, function* () {
122
+ const { _futureStateCollateral } = yield this._leverageExpectedCollateral(userCollateral, debt, quote);
125
123
  const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
126
124
  const calls = [];
127
125
  for (let N = this.market.minBands; N <= maxN; N++) {
@@ -133,7 +131,7 @@ export class LeverageZapV2BaseModule {
133
131
  maxAge: 60 * 1000, // 1m
134
132
  });
135
133
  // ---------------- LEVERAGE REPAY ----------------
136
- this._leverageRepayExpectedBorrowed = (stateCollateral, userCollateral, userBorrowed, quote) => {
134
+ this._leverageRepayExpectedBorrowed = (stateCollateral, userCollateral, quote) => {
137
135
  this._checkLeverageZap();
138
136
  const _stateCollateral = parseUnits(stateCollateral, this.market.collateral_token.decimals);
139
137
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
@@ -145,24 +143,24 @@ export class LeverageZapV2BaseModule {
145
143
  _borrowedFromStateCollateral = _stateCollateral * BigInt(Math.pow(10, 18)) / (_stateCollateral + _userCollateral) * _borrowedExpected / BigInt(Math.pow(10, 18));
146
144
  _borrowedFromUserCollateral = _borrowedExpected - _borrowedFromStateCollateral;
147
145
  }
148
- const _totalBorrowed = _borrowedExpected + parseUnits(userBorrowed, this.market.borrowed_token.decimals);
146
+ const _totalBorrowed = _borrowedExpected;
149
147
  const avgPrice = toBN(_borrowedExpected, this.market.borrowed_token.decimals).div(toBN(_stateCollateral + _userCollateral, this.market.collateral_token.decimals)).toString();
150
148
  return { _totalBorrowed, _borrowedFromStateCollateral, _borrowedFromUserCollateral, avgPrice };
151
149
  };
152
- this.leverageRepayExpectedBorrowed = (_a) => __awaiter(this, [_a], void 0, function* ({ stateCollateral, userCollateral, userBorrowed, quote }) {
150
+ this.leverageRepayExpectedBorrowed = (_a) => __awaiter(this, [_a], void 0, function* ({ stateCollateral, userCollateral, quote }) {
153
151
  this._checkLeverageZap();
154
- const { _totalBorrowed, _borrowedFromStateCollateral, _borrowedFromUserCollateral, avgPrice } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, userBorrowed, quote);
152
+ const { _totalBorrowed, _borrowedFromStateCollateral, _borrowedFromUserCollateral, avgPrice } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, quote);
155
153
  return {
156
154
  totalBorrowed: formatUnits(_totalBorrowed, this.market.borrowed_token.decimals),
157
155
  borrowedFromStateCollateral: formatUnits(_borrowedFromStateCollateral, this.market.borrowed_token.decimals),
158
156
  borrowedFromUserCollateral: formatUnits(_borrowedFromUserCollateral, this.market.borrowed_token.decimals),
159
- userBorrowed: formatNumber(userBorrowed, this.market.borrowed_token.decimals),
157
+ userBorrowed: formatNumber(0, this.market.borrowed_token.decimals),
160
158
  avgPrice,
161
159
  };
162
160
  });
163
- this._leverageRepayBands = memoize((stateCollateral, userCollateral, userBorrowed, quote, address) => __awaiter(this, void 0, void 0, function* () {
161
+ this._leverageRepayBands = memoize((stateCollateral, userCollateral, quote, address) => __awaiter(this, void 0, void 0, function* () {
164
162
  address = _getAddress.call(this.llamalend, address);
165
- if (!(yield this.leverageRepayIsAvailable({ stateCollateral, userCollateral, userBorrowed, quote, address })))
163
+ if (!(yield this.leverageRepayIsAvailable({ stateCollateral, userCollateral, quote, address })))
166
164
  return [parseUnits(0, 0), parseUnits(0, 0)];
167
165
  const _stateRepayCollateral = parseUnits(stateCollateral, this.market.collateral_token.decimals);
168
166
  const { _collateral: _stateCollateral, _debt: _stateDebt, _N } = yield this.market.userPosition.userStateBigInt(address);
@@ -172,7 +170,7 @@ export class LeverageZapV2BaseModule {
172
170
  throw Error(`Can't use more collateral than user's position has (${_stateRepayCollateral}) > ${_stateCollateral})`);
173
171
  let _n1 = parseUnits(0, 0);
174
172
  let _n2 = parseUnits(0, 0);
175
- const { _totalBorrowed: _repayExpected } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, userBorrowed, quote);
173
+ const { _totalBorrowed: _repayExpected } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, quote);
176
174
  try {
177
175
  _n1 = yield this._calcDebtN1Call(_stateCollateral - _stateRepayCollateral, _stateDebt - _repayExpected, _N);
178
176
  _n2 = _n1 + (_N - BigInt(1));
@@ -221,13 +219,12 @@ export class LeverageZapV2BaseModule {
221
219
  return BN(expected).times(BN(100).minus(slippage)).div(100).toString();
222
220
  }
223
221
  leverageCreateLoanMaxRecv(_a) {
224
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, range, getExpected }) {
222
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, range, getExpected }) {
225
223
  // max_borrowable = userCollateral / (1 / (k_effective * max_p_base) - 1 / p_avg)
226
224
  this._checkLeverageZap();
227
225
  if (range > 0)
228
226
  this.market.prices.checkRange(range);
229
227
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
230
- const _userBorrowed = parseUnits(userBorrowed, this.market.borrowed_token.decimals);
231
228
  const oraclePriceBand = yield this.market.prices.oraclePriceBand();
232
229
  let pAvgBN = BN(yield this.market.prices.calcTickPrice(oraclePriceBand)); // upper tick of oracle price band
233
230
  let maxBorrowablePrevBN = BN(0);
@@ -237,7 +234,7 @@ export class LeverageZapV2BaseModule {
237
234
  const contract = this.llamalend.contracts[this._getLeverageZapAddress()].contract;
238
235
  for (let i = 0; i < 5; i++) {
239
236
  maxBorrowablePrevBN = maxBorrowableBN;
240
- _userEffectiveCollateral = _userCollateral + fromBN(BN(userBorrowed).div(pAvgBN), this.market.collateral_token.decimals);
237
+ _userEffectiveCollateral = _userCollateral;
241
238
  let _maxBorrowable = yield contract.max_borrowable(this.market.addresses.controller, _userEffectiveCollateral, _maxLeverageCollateral, range, fromBN(pAvgBN));
242
239
  _maxBorrowable = _maxBorrowable * BigInt(970) / BigInt(1000);
243
240
  if (_maxBorrowable === BigInt(0))
@@ -247,10 +244,9 @@ export class LeverageZapV2BaseModule {
247
244
  maxBorrowableBN = maxBorrowablePrevBN;
248
245
  break;
249
246
  }
250
- // additionalCollateral = (userBorrowed / p) + leverageCollateral
251
- const _maxAdditionalCollateral = BigInt((yield getExpected(this.market.addresses.borrowed_token, this.market.addresses.collateral_token, _maxBorrowable + _userBorrowed, this.market.addresses.amm)).outAmount);
252
- pAvgBN = maxBorrowableBN.plus(userBorrowed).div(toBN(_maxAdditionalCollateral, this.market.collateral_token.decimals));
253
- _maxLeverageCollateral = _maxAdditionalCollateral - fromBN(BN(userBorrowed).div(pAvgBN), this.market.collateral_token.decimals);
247
+ const _maxAdditionalCollateral = BigInt((yield getExpected(this.market.addresses.borrowed_token, this.market.addresses.collateral_token, _maxBorrowable, this.market.addresses.amm)).outAmount);
248
+ pAvgBN = maxBorrowableBN.div(toBN(_maxAdditionalCollateral, this.market.collateral_token.decimals));
249
+ _maxLeverageCollateral = _maxAdditionalCollateral;
254
250
  }
255
251
  const userEffectiveCollateralBN = maxBorrowableBN.gt(0) ? toBN(_userEffectiveCollateral, this.market.collateral_token.decimals) : BN(0);
256
252
  const maxLeverageCollateralBN = toBN(_maxLeverageCollateral, this.market.collateral_token.decimals);
@@ -259,7 +255,7 @@ export class LeverageZapV2BaseModule {
259
255
  maxDebt: formatNumber(maxBorrowableBN.toString(), this.market.borrowed_token.decimals),
260
256
  maxTotalCollateral: formatNumber(maxLeverageCollateralBN.plus(userEffectiveCollateralBN).toString(), this.market.collateral_token.decimals),
261
257
  userCollateral: formatNumber(userCollateral, this.market.collateral_token.decimals),
262
- collateralFromUserBorrowed: formatNumber(BN(userBorrowed).div(pAvgBN).toString(), this.market.collateral_token.decimals),
258
+ collateralFromUserBorrowed: formatNumber(BN(0).toString(), this.market.collateral_token.decimals),
263
259
  collateralFromMaxDebt: formatNumber(maxLeverageCollateralBN.toString(), this.market.collateral_token.decimals),
264
260
  maxLeverage: maxLeverageCollateralBN.plus(userEffectiveCollateralBN).div(userEffectiveCollateralBN).toString(),
265
261
  avgPrice: pAvgBN.toString(),
@@ -267,9 +263,9 @@ export class LeverageZapV2BaseModule {
267
263
  });
268
264
  }
269
265
  leverageCreateLoanExpectedCollateral(_a) {
270
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, quote }) {
266
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, quote }) {
271
267
  this._checkLeverageZap();
272
- const { _totalCollateral, _userCollateral, _collateralFromUserBorrowed, _collateralFromDebt, avgPrice } = yield this._leverageExpectedCollateral(userCollateral, userBorrowed, debt, quote);
268
+ const { _totalCollateral, _userCollateral, _collateralFromUserBorrowed, _collateralFromDebt, avgPrice } = yield this._leverageExpectedCollateral(userCollateral, debt, quote);
273
269
  return {
274
270
  totalCollateral: formatUnits(_totalCollateral, this.market.collateral_token.decimals),
275
271
  userCollateral: formatUnits(_userCollateral, this.market.collateral_token.decimals),
@@ -282,11 +278,11 @@ export class LeverageZapV2BaseModule {
282
278
  });
283
279
  }
284
280
  leverageCreateLoanExpectedMetrics(_a) {
285
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, range, quote, healthIsFull = true }) {
281
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, range, quote, healthIsFull = true }) {
286
282
  this._checkLeverageZap();
287
- const [_n2, _n1] = yield this._leverageBands(userCollateral, userBorrowed, debt, range, quote);
283
+ const [_n2, _n1] = yield this._leverageBands(userCollateral, debt, range, quote);
288
284
  const prices = yield this.market.prices.getPrices(_n2, _n1);
289
- const health = yield this._leverageHealth(userCollateral, userBorrowed, debt, range, quote, healthIsFull);
285
+ const health = yield this._leverageHealth(userCollateral, debt, range, quote, healthIsFull);
290
286
  return {
291
287
  priceImpact: quote.priceImpact,
292
288
  bands: [Number(_n2), Number(_n1)],
@@ -296,9 +292,9 @@ export class LeverageZapV2BaseModule {
296
292
  });
297
293
  }
298
294
  leverageCreateLoanMaxRange(_a) {
299
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, getExpected }) {
295
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, getExpected }) {
300
296
  this._checkLeverageZap();
301
- const maxRecv = yield this.leverageCreateLoanMaxRecvAllRanges({ userCollateral, userBorrowed, getExpected });
297
+ const maxRecv = yield this.leverageCreateLoanMaxRecvAllRanges({ userCollateral, getExpected });
302
298
  for (let N = this.market.minBands; N <= this.market.maxBands; N++) {
303
299
  if (BN(debt).gt(maxRecv[N].maxDebt))
304
300
  return N - 1;
@@ -306,9 +302,9 @@ export class LeverageZapV2BaseModule {
306
302
  return this.market.maxBands;
307
303
  });
308
304
  }
309
- _leverageBands(userCollateral, userBorrowed, debt, range, quote, user) {
305
+ _leverageBands(userCollateral, debt, range, quote, user) {
310
306
  return __awaiter(this, void 0, void 0, function* () {
311
- const _n1 = yield this._leverageCalcN1(userCollateral, userBorrowed, debt, range, quote, user);
307
+ const _n1 = yield this._leverageCalcN1(userCollateral, debt, range, quote, user);
312
308
  if (range < 0) {
313
309
  const { N } = yield this.market.userPosition.userState(user);
314
310
  range = Number(N);
@@ -317,10 +313,10 @@ export class LeverageZapV2BaseModule {
317
313
  return [_n2, _n1];
318
314
  });
319
315
  }
320
- _leverageCreateLoanBandsAllRanges(userCollateral, userBorrowed, debt, getExpected, quote) {
316
+ _leverageCreateLoanBandsAllRanges(userCollateral, debt, getExpected, quote) {
321
317
  return __awaiter(this, void 0, void 0, function* () {
322
- const maxN = yield this.leverageCreateLoanMaxRange({ userCollateral, userBorrowed, debt, getExpected });
323
- const _n1_arr = yield this._leverageCalcN1AllRanges(userCollateral, userBorrowed, debt, maxN, quote);
318
+ const maxN = yield this.leverageCreateLoanMaxRange({ userCollateral, debt, getExpected });
319
+ const _n1_arr = yield this._leverageCalcN1AllRanges(userCollateral, debt, maxN, quote);
324
320
  const _n2_arr = [];
325
321
  for (let N = this.market.minBands; N <= maxN; N++) {
326
322
  _n2_arr.push(_n1_arr[N - this.market.minBands] + BigInt(N - 1));
@@ -333,9 +329,9 @@ export class LeverageZapV2BaseModule {
333
329
  });
334
330
  }
335
331
  leverageCreateLoanBandsAllRanges(_a) {
336
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, getExpected, quote }) {
332
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, getExpected, quote }) {
337
333
  this._checkLeverageZap();
338
- const _bands = yield this._leverageCreateLoanBandsAllRanges(userCollateral, userBorrowed, debt, getExpected, quote);
334
+ const _bands = yield this._leverageCreateLoanBandsAllRanges(userCollateral, debt, getExpected, quote);
339
335
  const bands = {};
340
336
  for (let N = this.market.minBands; N <= this.market.maxBands; N++) {
341
337
  if (_bands[N]) {
@@ -349,9 +345,9 @@ export class LeverageZapV2BaseModule {
349
345
  });
350
346
  }
351
347
  leverageCreateLoanPricesAllRanges(_a) {
352
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, getExpected, quote }) {
348
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, getExpected, quote }) {
353
349
  this._checkLeverageZap();
354
- const _bands = yield this._leverageCreateLoanBandsAllRanges(userCollateral, userBorrowed, debt, getExpected, quote);
350
+ const _bands = yield this._leverageCreateLoanBandsAllRanges(userCollateral, debt, getExpected, quote);
355
351
  const prices = {};
356
352
  for (let N = this.market.minBands; N <= this.market.maxBands; N++) {
357
353
  if (_bands[N]) {
@@ -364,11 +360,11 @@ export class LeverageZapV2BaseModule {
364
360
  return prices;
365
361
  });
366
362
  }
367
- _leverageHealth(userCollateral_1, userBorrowed_1, dDebt_1, range_1, quote_1, full_1) {
368
- return __awaiter(this, arguments, void 0, function* (userCollateral, userBorrowed, dDebt, range, quote, full, user = this.llamalend.constants.ZERO_ADDRESS) {
363
+ _leverageHealth(userCollateral_1, dDebt_1, range_1, quote_1, full_1) {
364
+ return __awaiter(this, arguments, void 0, function* (userCollateral, dDebt, range, quote, full, user = this.llamalend.constants.ZERO_ADDRESS) {
369
365
  if (range > 0)
370
366
  this.market.prices.checkRange(range);
371
- const { _totalCollateral } = yield this._leverageExpectedCollateral(userCollateral, userBorrowed, dDebt, quote, user);
367
+ const { _totalCollateral } = yield this._leverageExpectedCollateral(userCollateral, dDebt, quote, user);
372
368
  const { _borrowed, _N } = yield this.market.userPosition.userStateBigInt(user);
373
369
  if (_borrowed > BigInt(0))
374
370
  throw Error(`User ${user} is already in liquidation mode`);
@@ -384,64 +380,52 @@ export class LeverageZapV2BaseModule {
384
380
  });
385
381
  }
386
382
  leverageCreateLoanIsApproved(_a) {
387
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
383
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
388
384
  this._checkLeverageZap();
389
- const collateralAllowance = yield hasAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.llamalend.signerAddress, this.market.addresses.controller);
390
- const borrowedAllowance = yield hasAllowance.call(this.llamalend, [this.market.borrowed_token.address], [userBorrowed], this.llamalend.signerAddress, this._getLeverageZapAddress());
391
- return collateralAllowance && borrowedAllowance;
385
+ return yield hasAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.llamalend.signerAddress, this.market.addresses.controller);
392
386
  });
393
387
  }
394
388
  leverageCreateLoanApproveEstimateGas(_a) {
395
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
389
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
396
390
  this._checkLeverageZap();
397
- const collateralGas = yield ensureAllowanceEstimateGas.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.market.addresses.controller);
398
- const borrowedGas = yield ensureAllowanceEstimateGas.call(this.llamalend, [this.market.borrowed_token.address], [userBorrowed], this._getLeverageZapAddress());
399
- if (Array.isArray(collateralGas) && Array.isArray(borrowedGas)) {
400
- return [collateralGas[0] + borrowedGas[0], collateralGas[1] + borrowedGas[1]];
401
- }
402
- else {
403
- return collateralGas + borrowedGas;
404
- }
391
+ return yield ensureAllowanceEstimateGas.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.market.addresses.controller);
405
392
  });
406
393
  }
407
394
  leverageCreateLoanApprove(_a) {
408
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
395
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
409
396
  this._checkLeverageZap();
410
- const collateralApproveTx = yield ensureAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.market.addresses.controller);
411
- const borrowedApproveTx = yield ensureAllowance.call(this.llamalend, [this.market.borrowed_token.address], [userBorrowed], this._getLeverageZapAddress());
412
- return [...collateralApproveTx, ...borrowedApproveTx];
397
+ return yield ensureAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.market.addresses.controller);
413
398
  });
414
399
  }
415
- _leverageCreateLoan(userCollateral, userBorrowed, debt, range, minRecv, router, calldata, estimateGas) {
400
+ _leverageCreateLoan(userCollateral, debt, range, minRecv, router, calldata, estimateGas) {
416
401
  return __awaiter(this, void 0, void 0, function* () {
417
402
  if (yield this.market.userPosition.userLoanExists())
418
403
  throw Error("Loan already created");
419
404
  this.market.prices.checkRange(range);
420
405
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
421
- const _userBorrowed = parseUnits(userBorrowed, this.market.borrowed_token.decimals);
422
406
  const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
423
407
  const _minRecv = parseUnits(minRecv, this.market.collateral_token.decimals);
424
- return yield this._createLoanContractCall(_userCollateral, _userBorrowed, _debt, _minRecv, range, router, calldata, estimateGas);
408
+ return yield this._createLoanContractCall(_userCollateral, _debt, _minRecv, range, router, calldata, estimateGas);
425
409
  });
426
410
  }
427
411
  leverageCreateLoanEstimateGas(_a) {
428
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, range, minRecv, router, calldata }) {
412
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, range, minRecv, router, calldata }) {
429
413
  this._checkLeverageZap();
430
- if (!(yield this.leverageCreateLoanIsApproved({ userCollateral, userBorrowed })))
414
+ if (!(yield this.leverageCreateLoanIsApproved({ userCollateral })))
431
415
  throw Error("Approval is needed for gas estimation");
432
- return yield this._leverageCreateLoan(userCollateral, userBorrowed, debt, range, minRecv, router, calldata, true);
416
+ return yield this._leverageCreateLoan(userCollateral, debt, range, minRecv, router, calldata, true);
433
417
  });
434
418
  }
435
419
  leverageCreateLoan(_a) {
436
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, range, minRecv, router, calldata }) {
420
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, range, minRecv, router, calldata }) {
437
421
  this._checkLeverageZap();
438
- yield this.leverageCreateLoanApprove({ userCollateral, userBorrowed });
439
- return yield this._leverageCreateLoan(userCollateral, userBorrowed, debt, range, minRecv, router, calldata, false);
422
+ yield this.leverageCreateLoanApprove({ userCollateral });
423
+ return yield this._leverageCreateLoan(userCollateral, debt, range, minRecv, router, calldata, false);
440
424
  });
441
425
  }
442
426
  // ---------------- LEVERAGE BORROW MORE ----------------
443
427
  leverageBorrowMoreMaxRecv(_a) {
444
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, getExpected, address = "" }) {
428
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, getExpected, address = "" }) {
445
429
  // max_borrowable = userCollateral / (1 / (k_effective * max_p_base) - 1 / p_avg)
446
430
  this._checkLeverageZap();
447
431
  address = _getAddress.call(this.llamalend, address);
@@ -450,8 +434,8 @@ export class LeverageZapV2BaseModule {
450
434
  throw Error(`User ${address} is already in liquidation mode`);
451
435
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
452
436
  const _borrowedFromStateCollateral = yield this._getMaxAdditionalBorrowable(_stateCollateral, BigInt(0), _N, _stateDebt, address);
453
- const _userBorrowed = _borrowedFromStateCollateral + parseUnits(userBorrowed, this.market.borrowed_token.decimals);
454
- userBorrowed = formatUnits(_userBorrowed, this.market.borrowed_token.decimals);
437
+ const _userBorrowed = _borrowedFromStateCollateral;
438
+ const userBorrowed = formatUnits(_userBorrowed, this.market.borrowed_token.decimals);
455
439
  const oraclePriceBand = yield this.market.prices.oraclePriceBand();
456
440
  let pAvgBN = BN(yield this.market.prices.calcTickPrice(oraclePriceBand)); // upper tick of oracle price band
457
441
  let maxBorrowablePrevBN = BN(0);
@@ -492,10 +476,10 @@ export class LeverageZapV2BaseModule {
492
476
  });
493
477
  }
494
478
  leverageBorrowMoreExpectedCollateral(_a) {
495
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, dDebt, quote, address = "" }) {
479
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, dDebt, quote, address = "" }) {
496
480
  this._checkLeverageZap();
497
481
  address = _getAddress.call(this.llamalend, address);
498
- const { _totalCollateral, _userCollateral, _collateralFromUserBorrowed, _collateralFromDebt, avgPrice } = yield this._leverageExpectedCollateral(userCollateral, userBorrowed, dDebt, quote, address);
482
+ const { _totalCollateral, _userCollateral, _collateralFromUserBorrowed, _collateralFromDebt, avgPrice } = yield this._leverageExpectedCollateral(userCollateral, dDebt, quote, address);
499
483
  return {
500
484
  totalCollateral: formatUnits(_totalCollateral, this.market.collateral_token.decimals),
501
485
  userCollateral: formatUnits(_userCollateral, this.market.collateral_token.decimals),
@@ -506,12 +490,12 @@ export class LeverageZapV2BaseModule {
506
490
  });
507
491
  }
508
492
  leverageBorrowMoreExpectedMetrics(_a) {
509
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, quote, healthIsFull = true, address = "" }) {
493
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, quote, healthIsFull = true, address = "" }) {
510
494
  this._checkLeverageZap();
511
495
  address = _getAddress.call(this.llamalend, address);
512
- const [_n2, _n1] = yield this._leverageBands(userCollateral, userBorrowed, debt, -1, quote, address);
496
+ const [_n2, _n1] = yield this._leverageBands(userCollateral, debt, -1, quote, address);
513
497
  const prices = yield this.market.prices.getPrices(_n2, _n1);
514
- const health = yield this._leverageHealth(userCollateral, userBorrowed, debt, -1, quote, healthIsFull, address);
498
+ const health = yield this._leverageHealth(userCollateral, debt, -1, quote, healthIsFull, address);
515
499
  return {
516
500
  priceImpact: quote.priceImpact,
517
501
  bands: [Number(_n2), Number(_n1)],
@@ -520,50 +504,48 @@ export class LeverageZapV2BaseModule {
520
504
  };
521
505
  });
522
506
  }
523
- _leverageBorrowMore(userCollateral, userBorrowed, debt, minRecv, router, calldata, estimateGas) {
507
+ _leverageBorrowMore(userCollateral, debt, minRecv, router, calldata, estimateGas) {
524
508
  return __awaiter(this, void 0, void 0, function* () {
525
509
  if (!(yield this.market.userPosition.userLoanExists()))
526
510
  throw Error("Loan does not exist");
527
511
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
528
- const _userBorrowed = parseUnits(userBorrowed, this.market.borrowed_token.decimals);
529
512
  const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
530
513
  const _minRecv = parseUnits(minRecv, this.market.collateral_token.decimals);
531
- return yield this._borrowMoreContractCall(_userCollateral, _userBorrowed, _debt, _minRecv, router, calldata, estimateGas);
514
+ return yield this._borrowMoreContractCall(_userCollateral, _debt, _minRecv, router, calldata, estimateGas);
532
515
  });
533
516
  }
534
517
  leverageBorrowMoreIsApproved(_a) {
535
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
536
- return yield this.leverageCreateLoanIsApproved({ userCollateral, userBorrowed });
518
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
519
+ return yield this.leverageCreateLoanIsApproved({ userCollateral });
537
520
  });
538
521
  }
539
522
  leverageBorrowMoreApprove(_a) {
540
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
541
- return yield this.leverageCreateLoanApprove({ userCollateral, userBorrowed });
523
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
524
+ return yield this.leverageCreateLoanApprove({ userCollateral });
542
525
  });
543
526
  }
544
527
  leverageBorrowMoreEstimateGas(_a) {
545
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, minRecv, router, calldata }) {
528
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, minRecv, router, calldata }) {
546
529
  this._checkLeverageZap();
547
- if (!(yield this.leverageCreateLoanIsApproved({ userCollateral, userBorrowed })))
530
+ if (!(yield this.leverageCreateLoanIsApproved({ userCollateral })))
548
531
  throw Error("Approval is needed for gas estimation");
549
- return yield this._leverageBorrowMore(userCollateral, userBorrowed, debt, minRecv, router, calldata, true);
532
+ return yield this._leverageBorrowMore(userCollateral, debt, minRecv, router, calldata, true);
550
533
  });
551
534
  }
552
535
  leverageBorrowMore(_a) {
553
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, minRecv, router, calldata }) {
536
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, minRecv, router, calldata }) {
554
537
  this._checkLeverageZap();
555
- yield this.leverageCreateLoanApprove({ userCollateral, userBorrowed });
556
- return yield this._leverageBorrowMore(userCollateral, userBorrowed, debt, minRecv, router, calldata, false);
538
+ yield this.leverageCreateLoanApprove({ userCollateral });
539
+ return yield this._leverageBorrowMore(userCollateral, debt, minRecv, router, calldata, false);
557
540
  });
558
541
  }
559
542
  leverageBorrowMoreFutureLeverage(_a) {
560
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed, debt, quote, address = "" }) {
543
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral, debt, quote, address = "" }) {
561
544
  address = _getAddress.call(this.llamalend, address);
562
545
  this._checkLeverageZap();
563
546
  const { stateCollateral, totalDepositFromUser } = yield this.market.userPosition.getCurrentLeverageParams(address);
564
547
  const expected = yield this.leverageBorrowMoreExpectedCollateral({
565
548
  userCollateral,
566
- userBorrowed,
567
549
  dDebt: debt,
568
550
  quote,
569
551
  address,
@@ -574,16 +556,16 @@ export class LeverageZapV2BaseModule {
574
556
  });
575
557
  }
576
558
  leverageRepayIsFull(_a) {
577
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, quote, address = "" }) {
559
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, quote, address = "" }) {
578
560
  this._checkLeverageZap();
579
561
  address = _getAddress.call(this.llamalend, address);
580
562
  const { _borrowed: _stateBorrowed, _debt } = yield this.market.userPosition.userStateBigInt(address);
581
- const { _totalBorrowed } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, userBorrowed, quote);
563
+ const { _totalBorrowed } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, quote);
582
564
  return _stateBorrowed + _totalBorrowed > _debt;
583
565
  });
584
566
  }
585
567
  leverageRepayIsAvailable(_a) {
586
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, quote, address = "" }) {
568
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, quote, address = "" }) {
587
569
  // 0. const { collateral, stablecoin, debt } = await this.market.userPosition.userState(address);
588
570
  // 1. maxCollateral for deleverage is collateral from line above.
589
571
  // 2. If user is underwater (stablecoin > 0), only full repayment is available:
@@ -599,17 +581,17 @@ export class LeverageZapV2BaseModule {
599
581
  return false;
600
582
  // Only full repayment and closing the position is available if user is underwater+
601
583
  if (BN(borrowed).gt(0))
602
- return yield this.leverageRepayIsFull({ stateCollateral, userCollateral, userBorrowed, quote, address });
584
+ return yield this.leverageRepayIsFull({ stateCollateral, userCollateral, quote, address });
603
585
  return true;
604
586
  });
605
587
  }
606
588
  leverageRepayExpectedMetrics(_a) {
607
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, healthIsFull, quote, address }) {
589
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, healthIsFull, quote, address }) {
608
590
  this._checkLeverageZap();
609
591
  address = _getAddress.call(this.llamalend, address);
610
- const [_n2, _n1] = yield this._leverageRepayBands(stateCollateral, userCollateral, userBorrowed, quote, address);
592
+ const [_n2, _n1] = yield this._leverageRepayBands(stateCollateral, userCollateral, quote, address);
611
593
  const prices = yield this.market.prices.getPrices(_n2, _n1);
612
- const health = yield this._leverageRepayHealth(stateCollateral, userCollateral, userBorrowed, quote, healthIsFull, address);
594
+ const health = yield this._leverageRepayHealth(stateCollateral, userCollateral, quote, healthIsFull, address);
613
595
  const _stateCollateral = parseUnits(stateCollateral, this.market.collateral_token.decimals);
614
596
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
615
597
  const priceImpact = _stateCollateral + _userCollateral > BigInt(0) ? quote.priceImpact : null;
@@ -621,16 +603,16 @@ export class LeverageZapV2BaseModule {
621
603
  };
622
604
  });
623
605
  }
624
- _leverageRepayHealth(stateCollateral_1, userCollateral_1, userBorrowed_1, quote_1) {
625
- return __awaiter(this, arguments, void 0, function* (stateCollateral, userCollateral, userBorrowed, quote, full = true, address = "") {
606
+ _leverageRepayHealth(stateCollateral_1, userCollateral_1, quote_1) {
607
+ return __awaiter(this, arguments, void 0, function* (stateCollateral, userCollateral, quote, full = true, address = "") {
626
608
  this._checkLeverageZap();
627
609
  address = _getAddress.call(this.llamalend, address);
628
610
  const { _borrowed: _stateBorrowed, _debt, _N } = yield this.market.userPosition.userStateBigInt(address);
629
611
  if (_stateBorrowed > BigInt(0))
630
612
  return "0.0";
631
- if (!(yield this.leverageRepayIsAvailable({ stateCollateral, userCollateral, userBorrowed, quote, address })))
613
+ if (!(yield this.leverageRepayIsAvailable({ stateCollateral, userCollateral, quote, address })))
632
614
  return "0.0";
633
- const { _totalBorrowed } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, userBorrowed, quote);
615
+ const { _totalBorrowed } = this._leverageRepayExpectedBorrowed(stateCollateral, userCollateral, quote);
634
616
  const _dCollateral = parseUnits(stateCollateral, this.market.collateral_token.decimals) * BigInt(-1);
635
617
  const _dDebt = _totalBorrowed * BigInt(-1);
636
618
  if (_debt + _dDebt <= BigInt(0))
@@ -641,58 +623,56 @@ export class LeverageZapV2BaseModule {
641
623
  });
642
624
  }
643
625
  leverageRepayIsApproved(_a) {
644
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
626
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
645
627
  this._checkLeverageZap();
646
- return yield hasAllowance.call(this.llamalend, [this.market.collateral_token.address, this.market.borrowed_token.address], [userCollateral, userBorrowed], this.llamalend.signerAddress, this._getLeverageZapAddress());
628
+ return yield hasAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this.llamalend.signerAddress, this._getLeverageZapAddress());
647
629
  });
648
630
  }
649
631
  leverageRepayApproveEstimateGas(_a) {
650
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
632
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
651
633
  this._checkLeverageZap();
652
- return yield ensureAllowanceEstimateGas.call(this.llamalend, [this.market.collateral_token.address, this.market.borrowed_token.address], [userCollateral, userBorrowed], this._getLeverageZapAddress());
634
+ return yield ensureAllowanceEstimateGas.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this._getLeverageZapAddress());
653
635
  });
654
636
  }
655
637
  leverageRepayApprove(_a) {
656
- return __awaiter(this, arguments, void 0, function* ({ userCollateral, userBorrowed }) {
638
+ return __awaiter(this, arguments, void 0, function* ({ userCollateral }) {
657
639
  this._checkLeverageZap();
658
- return yield ensureAllowance.call(this.llamalend, [this.market.collateral_token.address, this.market.borrowed_token.address], [userCollateral, userBorrowed], this._getLeverageZapAddress());
640
+ return yield ensureAllowance.call(this.llamalend, [this.market.collateral_token.address], [userCollateral], this._getLeverageZapAddress());
659
641
  });
660
642
  }
661
- _leverageRepay(stateCollateral, userCollateral, userBorrowed, minRecv, router, calldata, estimateGas) {
643
+ _leverageRepay(stateCollateral, userCollateral, minRecv, router, calldata, estimateGas) {
662
644
  return __awaiter(this, void 0, void 0, function* () {
663
645
  if (!(yield this.market.userPosition.userLoanExists()))
664
646
  throw Error("Loan does not exist");
665
647
  const _stateCollateral = parseUnits(stateCollateral, this.market.collateral_token.decimals);
666
648
  const _userCollateral = parseUnits(userCollateral, this.market.collateral_token.decimals);
667
- const _userBorrowed = parseUnits(userBorrowed, this.market.borrowed_token.decimals);
668
649
  const _minRecv = parseUnits(minRecv, this.market.borrowed_token.decimals);
669
650
  const exchangeCalldata = _stateCollateral + _userCollateral > BigInt(0) ? calldata : "0x";
670
- return yield this._repayContractCall(_userCollateral, _userBorrowed, _minRecv, router, exchangeCalldata, estimateGas);
651
+ return yield this._repayContractCall(_userCollateral, _minRecv, router, exchangeCalldata, estimateGas);
671
652
  });
672
653
  }
673
654
  leverageRepayEstimateGas(_a) {
674
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, minRecv, router, calldata }) {
655
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, minRecv, router, calldata }) {
675
656
  this._checkLeverageZap();
676
- if (!(yield this.leverageRepayIsApproved({ userCollateral, userBorrowed })))
657
+ if (!(yield this.leverageRepayIsApproved({ userCollateral })))
677
658
  throw Error("Approval is needed for gas estimation");
678
- return yield this._leverageRepay(stateCollateral, userCollateral, userBorrowed, minRecv, router, calldata, true);
659
+ return yield this._leverageRepay(stateCollateral, userCollateral, minRecv, router, calldata, true);
679
660
  });
680
661
  }
681
662
  leverageRepay(_a) {
682
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, minRecv, router, calldata }) {
663
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, minRecv, router, calldata }) {
683
664
  this._checkLeverageZap();
684
- yield this.leverageRepayApprove({ userCollateral, userBorrowed });
685
- return yield this._leverageRepay(stateCollateral, userCollateral, userBorrowed, minRecv, router, calldata, false);
665
+ yield this.leverageRepayApprove({ userCollateral });
666
+ return yield this._leverageRepay(stateCollateral, userCollateral, minRecv, router, calldata, false);
686
667
  });
687
668
  }
688
669
  leverageRepayFutureLeverage(_a) {
689
- return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, userBorrowed, address = "" }) {
670
+ return __awaiter(this, arguments, void 0, function* ({ stateCollateral, userCollateral, address = "" }) {
690
671
  address = _getAddress.call(this.llamalend, address);
691
672
  this._checkLeverageZap();
692
673
  const { stateCollateral: currentStateCollateral, totalDepositFromUser } = yield this.market.userPosition.getCurrentLeverageParams(address);
693
- const collateralFromUserBorrowed = yield this.market.amm.swapExpected(0, 1, userBorrowed);
694
674
  const futureCollateralState = BN(currentStateCollateral).minus(stateCollateral);
695
- const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral).plus(collateralFromUserBorrowed);
675
+ const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral);
696
676
  return futureCollateralState.div(futureTotalDepositFromUserPrecise).toString();
697
677
  });
698
678
  }
@@ -8,7 +8,7 @@ export declare class LeverageV1ZapV2Module extends LeverageZapV2BaseModule {
8
8
  protected _calcCreateLoanHealthCall(_collateral: bigint, _dDebt: bigint, N: number | bigint, full: boolean): Promise<bigint>;
9
9
  protected _calcBorrowMoreHealthCall(_collateral: bigint, _dDebt: bigint, N: number | bigint, user: string, full: boolean): Promise<bigint>;
10
10
  protected _calcRepayHealthCall(_dCollateral: bigint, _dDebt: bigint, N: number | bigint, user: string, full: boolean): Promise<bigint>;
11
- protected _createLoanContractCall(_userCollateral: bigint, _userBorrowed: bigint, _debt: bigint, _minRecv: bigint, range: number, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
12
- protected _borrowMoreContractCall(_userCollateral: bigint, _userBorrowed: bigint, _debt: bigint, _minRecv: bigint, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
13
- protected _repayContractCall(_userCollateral: bigint, _userBorrowed: bigint, _minRecv: bigint, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
11
+ protected _createLoanContractCall(_userCollateral: bigint, _debt: bigint, _minRecv: bigint, range: number, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
12
+ protected _borrowMoreContractCall(_userCollateral: bigint, _debt: bigint, _minRecv: bigint, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
13
+ protected _repayContractCall(_userCollateral: bigint, _minRecv: bigint, router: string, exchangeCalldata: string, estimateGas: boolean): Promise<string | TGas>;
14
14
  }