@curvefi/llamalend-api 2.0.8 → 2.0.10

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.
@@ -8,10 +8,144 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { LoanBaseModule } from "../common/loanBase.js";
11
- import { _getAddress, formatUnits, parseUnits } from "../../../utils";
11
+ import { _getAddress, formatUnits, parseUnits, smartNumber, _mulBy1_3, DIGas, } from "../../../utils";
12
12
  export class LoanV1Module extends LoanBaseModule {
13
- repayHealth(debt_1) {
14
- return __awaiter(this, arguments, void 0, function* (debt, full = true, address = "") {
13
+ constructor() {
14
+ super(...arguments);
15
+ this._maxBorrowable = (collateralAmount, range) => __awaiter(this, void 0, void 0, function* () {
16
+ const { _collateral: _currentCollateral, _debt: _currentDebt, _N } = yield this.market.userPosition.userStateBigInt();
17
+ const _collateral = _currentCollateral + parseUnits(collateralAmount, this.market.collateral_token.decimals);
18
+ const N = range ? BigInt(range) : _N;
19
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
20
+ return ((yield contract.max_borrowable(_collateral, N, _currentDebt, this.llamalend.constantOptions)) - _currentDebt);
21
+ });
22
+ }
23
+ _getMaxBorrowableCall(_collateral, N) {
24
+ return this.llamalend.contracts[this.market.addresses.controller].multicallContract.max_borrowable(_collateral, N, 0);
25
+ }
26
+ _calcN1(_collateral, _debt, range) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ this._checkRange(range);
29
+ return yield this.llamalend.contracts[this.market.addresses.controller].contract.calculate_debt_n1(_collateral, _debt, range, this.llamalend.constantOptions);
30
+ });
31
+ }
32
+ _calcN1AllRanges(_collateral, _debt, maxN) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const calls = [];
35
+ for (let N = this.market.minBands; N <= maxN; N++) {
36
+ calls.push(this.llamalend.contracts[this.market.addresses.controller].multicallContract.calculate_debt_n1(_collateral, _debt, N));
37
+ }
38
+ return yield this.llamalend.multicallProvider.all(calls);
39
+ });
40
+ }
41
+ createLoanHealth(collateral_1, debt_1, range_1) {
42
+ return __awaiter(this, arguments, void 0, function* (collateral, debt, range, full = true) {
43
+ const _collateral = parseUnits(collateral, this.market.collateral_token.decimals);
44
+ const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
45
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
46
+ const _health = yield contract.health_calculator(this.llamalend.constants.ZERO_ADDRESS, _collateral, _debt, full, range, this.llamalend.constantOptions);
47
+ return formatUnits(_health * BigInt(100));
48
+ });
49
+ }
50
+ borrowMoreHealth(collateral_1, debt_1) {
51
+ return __awaiter(this, arguments, void 0, function* (collateral, debt, full = true, address = "") {
52
+ address = _getAddress.call(this.llamalend, address);
53
+ const _collateral = parseUnits(collateral, this.market.collateral_token.decimals);
54
+ const _debt = parseUnits(debt, this.market.borrowed_token.decimals);
55
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
56
+ const _health = yield contract.health_calculator(address, _collateral, _debt, full, 0, this.llamalend.constantOptions);
57
+ return formatUnits(_health * BigInt(100));
58
+ });
59
+ }
60
+ addCollateralHealth(collateral_1) {
61
+ return __awaiter(this, arguments, void 0, function* (collateral, full = true, address = "") {
62
+ address = _getAddress.call(this.llamalend, address);
63
+ const _collateral = parseUnits(collateral, this.market.collateral_token.decimals);
64
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
65
+ const _health = yield contract.health_calculator(address, _collateral, 0, full, 0, this.llamalend.constantOptions);
66
+ return formatUnits(_health * BigInt(100));
67
+ });
68
+ }
69
+ removeCollateralHealth(collateral_1) {
70
+ return __awaiter(this, arguments, void 0, function* (collateral, full = true, address = "") {
71
+ address = _getAddress.call(this.llamalend, address);
72
+ const _collateral = parseUnits(collateral, this.market.collateral_token.decimals) * BigInt(-1);
73
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
74
+ const _health = yield contract.health_calculator(address, _collateral, 0, full, 0, this.llamalend.constantOptions);
75
+ return formatUnits(_health * BigInt(100));
76
+ });
77
+ }
78
+ _repayBands(_a) {
79
+ return __awaiter(this, arguments, void 0, function* ({ debt, address }) {
80
+ const { _collateral: _currentCollateral, _borrowed, _debt: _currentDebt, _N } = yield this.market.userPosition.userStateBigInt(address);
81
+ if (_currentDebt === BigInt(0))
82
+ throw Error(`Loan for ${address} does not exist`);
83
+ if (_borrowed > BigInt(0))
84
+ return yield this.market.userPosition.userBandsBigInt(address);
85
+ const _debt = _currentDebt - parseUnits(debt, this.market.borrowed_token.decimals);
86
+ const _n1 = yield this._calcN1(_currentCollateral, _debt, Number(_N));
87
+ const _n2 = _n1 + _N - BigInt(1);
88
+ return [_n2, _n1];
89
+ });
90
+ }
91
+ repayBands(_a) {
92
+ return __awaiter(this, arguments, void 0, function* ({ debt, address = "" }) {
93
+ const [_n2, _n1] = yield this._repayBands({ debt, address });
94
+ return [Number(_n2), Number(_n1)];
95
+ });
96
+ }
97
+ repayPrices(_a) {
98
+ return __awaiter(this, arguments, void 0, function* ({ debt, address = "" }) {
99
+ const [_n2, _n1] = yield this._repayBands({ debt, address });
100
+ return yield this.market.prices.getPrices(_n2, _n1);
101
+ });
102
+ }
103
+ _repayContractCall(_a) {
104
+ return __awaiter(this, arguments, void 0, function* ({ _debt, address, n, estimateGas }) {
105
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
106
+ const gas = yield contract.repay.estimateGas(_debt, address, n, this.llamalend.constantOptions);
107
+ if (estimateGas)
108
+ return smartNumber(gas);
109
+ yield this.llamalend.updateFeeData();
110
+ const gasLimit = _mulBy1_3(DIGas(gas));
111
+ return (yield contract.repay(_debt, address, n, Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
112
+ });
113
+ }
114
+ _createLoanContractCall(_collateral, _debt, range, estimateGas) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
117
+ const gas = yield contract.create_loan.estimateGas(_collateral, _debt, range, Object.assign({}, this.llamalend.constantOptions));
118
+ if (estimateGas)
119
+ return smartNumber(gas);
120
+ yield this.llamalend.updateFeeData();
121
+ const gasLimit = _mulBy1_3(DIGas(gas));
122
+ return (yield contract.create_loan(_collateral, _debt, range, Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
123
+ });
124
+ }
125
+ _borrowMoreContractCall(_collateral, _debt, estimateGas) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
128
+ const gas = yield contract.borrow_more.estimateGas(_collateral, _debt, Object.assign({}, this.llamalend.constantOptions));
129
+ if (estimateGas)
130
+ return smartNumber(gas);
131
+ yield this.llamalend.updateFeeData();
132
+ const gasLimit = _mulBy1_3(DIGas(gas));
133
+ return (yield contract.borrow_more(_collateral, _debt, Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
134
+ });
135
+ }
136
+ _partialLiquidateContractCall(address, _minAmount, frac, estimateGas) {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
139
+ const gas = (yield contract.liquidate_extended.estimateGas(address, _minAmount, frac, this.llamalend.constants.ZERO_ADDRESS, [], this.llamalend.constantOptions));
140
+ if (estimateGas)
141
+ return smartNumber(gas);
142
+ yield this.llamalend.updateFeeData();
143
+ const gasLimit = _mulBy1_3(DIGas(gas));
144
+ return (yield contract.liquidate_extended(address, _minAmount, frac, this.llamalend.constants.ZERO_ADDRESS, [], Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
145
+ });
146
+ }
147
+ repayHealth(_a) {
148
+ return __awaiter(this, arguments, void 0, function* ({ debt, full = true, address = "" }) {
15
149
  address = _getAddress.call(this.llamalend, address);
16
150
  const _debt = parseUnits(debt) * BigInt(-1);
17
151
  const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
@@ -1,9 +1,44 @@
1
1
  import { LoanBaseModule } from "../common/loanBase.js";
2
2
  import { ILoanV2 } from "../../interfaces/v2";
3
+ import { TGas, TAmount } from "../../../interfaces";
3
4
  export declare class LoanV2Module extends LoanBaseModule implements ILoanV2 {
4
5
  createLoanHealth(collateral: number | string, debt: number | string, range: number, full?: boolean): Promise<string>;
5
6
  addCollateralHealth(collateral: number | string, full?: boolean, address?: string): Promise<string>;
6
7
  removeCollateralHealth(collateral: number | string, full?: boolean, address?: string): Promise<string>;
7
8
  borrowMoreHealth(collateral: number | string, debt: number | string, full?: boolean, address?: string): Promise<string>;
8
- repayHealth(debt: number | string, shrink?: boolean, full?: boolean, address?: string): Promise<string>;
9
+ repayHealth({ debt, shrink, full, address }: {
10
+ debt: number | string;
11
+ shrink?: boolean;
12
+ full?: boolean;
13
+ address?: string;
14
+ }): Promise<string>;
15
+ protected _maxBorrowable: (collateralAmount: TAmount, range?: number) => Promise<bigint>;
16
+ protected _calcN1(_collateral: bigint, _debt: bigint, range: number): Promise<bigint>;
17
+ protected _calcN1AllRanges(_collateral: bigint, _debt: bigint, maxN: number): Promise<bigint[]>;
18
+ protected _getMaxBorrowableCall(_collateral: bigint, N: number): any;
19
+ protected _repayBands({ debt, address, shrink }: {
20
+ debt: number | string;
21
+ address: string;
22
+ shrink?: boolean;
23
+ }): Promise<[bigint, bigint]>;
24
+ repayBands({ debt, address, shrink }: {
25
+ debt: number | string;
26
+ address?: string;
27
+ shrink?: boolean;
28
+ }): Promise<[number, number]>;
29
+ repayPrices({ debt, address, shrink }: {
30
+ debt: number | string;
31
+ address?: string;
32
+ shrink?: boolean;
33
+ }): Promise<string[]>;
34
+ protected _createLoanContractCall(_collateral: bigint, _debt: bigint, range: number, estimateGas: boolean): Promise<string | TGas>;
35
+ protected _borrowMoreContractCall(_collateral: bigint, _debt: bigint, estimateGas: boolean): Promise<string | TGas>;
36
+ protected _repayContractCall({ _debt, address, n, estimateGas, shrink }: {
37
+ _debt: bigint;
38
+ address: string;
39
+ n: number | bigint;
40
+ estimateGas: boolean;
41
+ shrink?: boolean;
42
+ }): Promise<string | TGas>;
43
+ protected _partialLiquidateContractCall(address: string, _minAmount: bigint, frac: string, estimateGas: boolean): Promise<string | TGas>;
9
44
  }
@@ -8,8 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { LoanBaseModule } from "../common/loanBase.js";
11
- import { _getAddress, formatUnits, parseUnits } from "../../../utils";
11
+ import { _getAddress, formatUnits, parseUnits, smartNumber, _mulBy1_3, DIGas, } from "../../../utils";
12
12
  export class LoanV2Module extends LoanBaseModule {
13
+ constructor() {
14
+ super(...arguments);
15
+ this._maxBorrowable = (collateralAmount, range) => __awaiter(this, void 0, void 0, function* () {
16
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
17
+ const collateral = parseUnits(collateralAmount, this.market.collateral_token.decimals);
18
+ const address = _getAddress.call(this.llamalend, '');
19
+ const N = range ? BigInt(range) : null;
20
+ return contract.max_borrowable(collateral, N, address, this.llamalend.constantOptions);
21
+ });
22
+ }
13
23
  createLoanHealth(collateral_1, debt_1, range_1) {
14
24
  return __awaiter(this, arguments, void 0, function* (collateral, debt, range, full = true) {
15
25
  const _collateral = parseUnits(collateral, this.market.collateral_token.decimals);
@@ -48,8 +58,8 @@ export class LoanV2Module extends LoanBaseModule {
48
58
  return formatUnits(_health * BigInt(100));
49
59
  });
50
60
  }
51
- repayHealth(debt_1) {
52
- return __awaiter(this, arguments, void 0, function* (debt, shrink = false, full = true, address = "") {
61
+ repayHealth(_a) {
62
+ return __awaiter(this, arguments, void 0, function* ({ debt, shrink = false, full = true, address = "" }) {
53
63
  address = _getAddress.call(this.llamalend, address);
54
64
  const _debt = parseUnits(debt);
55
65
  const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
@@ -57,4 +67,108 @@ export class LoanV2Module extends LoanBaseModule {
57
67
  return formatUnits(_health * BigInt(100));
58
68
  });
59
69
  }
70
+ _calcN1(_collateral, _debt, range) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ this._checkRange(range);
73
+ const address = _getAddress.call(this.llamalend, '');
74
+ return yield this.llamalend.contracts[this.market.addresses.controller].contract.calculate_debt_n1(_collateral, _debt, range, address, this.llamalend.constantOptions);
75
+ });
76
+ }
77
+ _calcN1AllRanges(_collateral, _debt, maxN) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ const calls = [];
80
+ const address = _getAddress.call(this.llamalend, '');
81
+ for (let N = this.market.minBands; N <= maxN; N++) {
82
+ calls.push(this.llamalend.contracts[this.market.addresses.controller].multicallContract.calculate_debt_n1(_collateral, _debt, N, address));
83
+ }
84
+ return yield this.llamalend.multicallProvider.all(calls);
85
+ });
86
+ }
87
+ _getMaxBorrowableCall(_collateral, N) {
88
+ const address = _getAddress.call(this.llamalend, '');
89
+ return this.llamalend.contracts[this.market.addresses.controller].multicallContract.max_borrowable(_collateral, N, address);
90
+ }
91
+ _repayBands(_a) {
92
+ return __awaiter(this, arguments, void 0, function* ({ debt, address, shrink = false }) {
93
+ const { _collateral: _currentCollateral, _borrowed, _debt: _currentDebt, _N } = yield this.market.userPosition.userStateBigInt(address);
94
+ if (_currentDebt === BigInt(0))
95
+ throw Error(`Loan for ${address} does not exist`);
96
+ if (_borrowed > BigInt(0) && !shrink) {
97
+ return yield this.market.userPosition.userBandsBigInt(address);
98
+ }
99
+ const _debtRepaid = parseUnits(debt, this.market.borrowed_token.decimals);
100
+ let newN = _N;
101
+ let _debt;
102
+ if (shrink) {
103
+ _debt = _currentDebt - _debtRepaid - _borrowed;
104
+ const [n2] = yield this.market.userPosition.userBandsBigInt(address);
105
+ const { activeBand } = yield this.market.stats.bandsInfo();
106
+ newN = n2 - BigInt(activeBand);
107
+ }
108
+ else {
109
+ _debt = _currentDebt - _debtRepaid;
110
+ }
111
+ const _n1 = yield this._calcN1(_currentCollateral, _debt, Number(newN));
112
+ const _n2 = _n1 + newN - BigInt(1);
113
+ return [_n2, _n1];
114
+ });
115
+ }
116
+ repayBands(_a) {
117
+ return __awaiter(this, arguments, void 0, function* ({ debt, address = "", shrink = false }) {
118
+ const [_n2, _n1] = yield this._repayBands({ debt, address, shrink });
119
+ return [Number(_n2), Number(_n1)];
120
+ });
121
+ }
122
+ repayPrices(_a) {
123
+ return __awaiter(this, arguments, void 0, function* ({ debt, address = "", shrink = false }) {
124
+ const [_n2, _n1] = yield this._repayBands({ debt, address, shrink });
125
+ return yield this.market.prices.getPrices(_n2, _n1);
126
+ });
127
+ }
128
+ _createLoanContractCall(_collateral, _debt, range, estimateGas) {
129
+ return __awaiter(this, void 0, void 0, function* () {
130
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
131
+ const _for = _getAddress.call(this.llamalend, '');
132
+ const gas = yield contract.create_loan.estimateGas(_collateral, _debt, range, _for, this.llamalend.constants.ZERO_ADDRESS, "0x", Object.assign({}, this.llamalend.constantOptions));
133
+ if (estimateGas)
134
+ return smartNumber(gas);
135
+ yield this.llamalend.updateFeeData();
136
+ const gasLimit = _mulBy1_3(DIGas(gas));
137
+ return (yield contract.create_loan(_collateral, _debt, range, _for, this.llamalend.constants.ZERO_ADDRESS, "0x", Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
138
+ });
139
+ }
140
+ _borrowMoreContractCall(_collateral, _debt, estimateGas) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
143
+ const _for = _getAddress.call(this.llamalend, '');
144
+ const gas = yield contract.borrow_more.estimateGas(_collateral, _debt, _for, this.llamalend.constants.ZERO_ADDRESS, "0x", Object.assign({}, this.llamalend.constantOptions));
145
+ if (estimateGas)
146
+ return smartNumber(gas);
147
+ yield this.llamalend.updateFeeData();
148
+ const gasLimit = _mulBy1_3(DIGas(gas));
149
+ return (yield contract.borrow_more(_collateral, _debt, _for, this.llamalend.constants.ZERO_ADDRESS, "0x", Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
150
+ });
151
+ }
152
+ _repayContractCall(_a) {
153
+ return __awaiter(this, arguments, void 0, function* ({ _debt, address, n, estimateGas, shrink = false }) {
154
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
155
+ const gas = yield contract.repay.estimateGas(_debt, address, n, this.llamalend.constants.ZERO_ADDRESS, "0x", shrink, Object.assign({}, this.llamalend.constantOptions));
156
+ if (estimateGas)
157
+ return smartNumber(gas);
158
+ yield this.llamalend.updateFeeData();
159
+ const gasLimit = _mulBy1_3(DIGas(gas));
160
+ return (yield contract.repay(_debt, address, n, this.llamalend.constants.ZERO_ADDRESS, "0x", shrink, Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
161
+ });
162
+ }
163
+ _partialLiquidateContractCall(address, _minAmount, frac, estimateGas) {
164
+ return __awaiter(this, void 0, void 0, function* () {
165
+ const contract = this.llamalend.contracts[this.market.addresses.controller].contract;
166
+ const gas = yield contract.liquidate.estimateGas(address, _minAmount, frac, this.llamalend.constants.ZERO_ADDRESS, "0x", this.llamalend.constantOptions);
167
+ if (estimateGas)
168
+ return smartNumber(gas);
169
+ yield this.llamalend.updateFeeData();
170
+ const gasLimit = _mulBy1_3(DIGas(gas));
171
+ return (yield contract.liquidate(address, _minAmount, frac, this.llamalend.constants.ZERO_ADDRESS, "0x", Object.assign(Object.assign({}, this.llamalend.options), { gasLimit }))).hash;
172
+ });
173
+ }
60
174
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/llamalend-api",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "JavaScript library for Curve Lending",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",
@@ -839,31 +839,6 @@
839
839
  }
840
840
  ]
841
841
  },
842
- {
843
- "stateMutability": "view",
844
- "type": "function",
845
- "name": "calculate_debt_n1",
846
- "inputs": [
847
- {
848
- "name": "_collateral",
849
- "type": "uint256"
850
- },
851
- {
852
- "name": "_debt",
853
- "type": "uint256"
854
- },
855
- {
856
- "name": "_N",
857
- "type": "uint256"
858
- }
859
- ],
860
- "outputs": [
861
- {
862
- "name": "",
863
- "type": "int256"
864
- }
865
- ]
866
- },
867
842
  {
868
843
  "stateMutability": "view",
869
844
  "type": "function",
@@ -37,12 +37,12 @@ export interface ILoanV1 {
37
37
  removeCollateral: (collateral: TAmount) => Promise<string>;
38
38
  removeCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
39
39
 
40
- repayBands: (debt: TAmount, address?: string) => Promise<[number, number]>;
41
- repayPrices: (debt: TAmount, address?: string) => Promise<string[]>;
40
+ repayBands: (params: { debt: TAmount; address?: string }) => Promise<[number, number]>;
41
+ repayPrices: (params: { debt: TAmount; address?: string }) => Promise<string[]>;
42
42
  repayIsApproved: (debt: TAmount) => Promise<boolean>;
43
43
  repayApprove: (debt: TAmount) => Promise<string[]>;
44
- repayHealth: (debt: TAmount, full?: boolean, address?: string) => Promise<string>;
45
- repay: (debt: TAmount, address?: string) => Promise<string>;
44
+ repayHealth: (params: { debt: TAmount; full?: boolean; address?: string }) => Promise<string>;
45
+ repay: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<string>;
46
46
  repayFutureLeverage: (debt: TAmount, userAddress?: string) => Promise<string>;
47
47
 
48
48
  fullRepayIsApproved: (address?: string) => Promise<boolean>;
@@ -72,7 +72,7 @@ export interface ILoanV1 {
72
72
  addCollateral: (collateral: TAmount, address?: string) => Promise<TGas>;
73
73
  removeCollateral: (collateral: TAmount) => Promise<TGas>;
74
74
  repayApprove: (debt: TAmount) => Promise<TGas>;
75
- repay: (debt: TAmount, address?: string) => Promise<TGas>;
75
+ repay: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<TGas>;
76
76
  fullRepayApprove: (address?: string) => Promise<TGas>;
77
77
  fullRepay: (address?: string) => Promise<TGas>;
78
78
  liquidateApprove: (address?: string) => Promise<TGas>;
@@ -37,12 +37,12 @@ export interface ILoanV2 {
37
37
  removeCollateral: (collateral: TAmount) => Promise<string>;
38
38
  removeCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
39
39
 
40
- repayBands: (debt: TAmount, address?: string) => Promise<[number, number]>;
41
- repayPrices: (debt: TAmount, address?: string) => Promise<string[]>;
40
+ repayBands: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<[number, number]>;
41
+ repayPrices: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<string[]>;
42
42
  repayIsApproved: (debt: TAmount) => Promise<boolean>;
43
43
  repayApprove: (debt: TAmount) => Promise<string[]>;
44
- repayHealth: (debt: TAmount, shrink?: boolean, full?: boolean, address?: string) => Promise<string>;
45
- repay: (debt: TAmount, address?: string) => Promise<string>;
44
+ repayHealth: (params: { debt: TAmount; shrink?: boolean; full?: boolean; address?: string }) => Promise<string>;
45
+ repay: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<string>;
46
46
  repayFutureLeverage: (debt: TAmount, userAddress?: string) => Promise<string>;
47
47
 
48
48
  fullRepayIsApproved: (address?: string) => Promise<boolean>;
@@ -72,7 +72,7 @@ export interface ILoanV2 {
72
72
  addCollateral: (collateral: TAmount, address?: string) => Promise<TGas>;
73
73
  removeCollateral: (collateral: TAmount) => Promise<TGas>;
74
74
  repayApprove: (debt: TAmount) => Promise<TGas>;
75
- repay: (debt: TAmount, address?: string) => Promise<TGas>;
75
+ repay: (params: { debt: TAmount; address?: string; shrink?: boolean }) => Promise<TGas>;
76
76
  fullRepayApprove: (address?: string) => Promise<TGas>;
77
77
  fullRepay: (address?: string) => Promise<TGas>;
78
78
  liquidateApprove: (address?: string) => Promise<TGas>;
@@ -1,6 +1,6 @@
1
1
  export { UserPositionModule } from './userPosition.js';
2
- export { WalletModule } from './wallet.js'
3
- export { PricesModule} from './prices.js'
2
+ export { WalletModule } from './wallet.js';
3
+ export { PricesModule } from './prices.js';
4
4
  export { AmmModule } from './amm.js';
5
5
  export { VaultModule } from './vault.js';
6
6
  export { StatsBaseModule } from './statsBase.js';
@@ -111,7 +111,7 @@ export class LeverageZapV2BaseModule {
111
111
  maxBorrowablePrevBN = maxBorrowableBN;
112
112
  _userEffectiveCollateral = _userCollateral + fromBN(BN(userBorrowed).div(pAvgBN), this.market.collateral_token.decimals);
113
113
  let _maxBorrowable = await contract.max_borrowable(this.market.addresses.controller, _userEffectiveCollateral, _maxLeverageCollateral, range, fromBN(pAvgBN));
114
- _maxBorrowable = _maxBorrowable * BigInt(998) / BigInt(1000)
114
+ _maxBorrowable = _maxBorrowable * BigInt(970) / BigInt(1000)
115
115
  if (_maxBorrowable === BigInt(0)) break;
116
116
  maxBorrowableBN = toBN(_maxBorrowable, this.market.borrowed_token.decimals);
117
117
 
@@ -182,7 +182,7 @@ export class LeverageZapV2BaseModule {
182
182
  const j = N - this.market.minBands;
183
183
  calls.push(contract.max_borrowable(this.market.addresses.controller, _userEffectiveCollateral, _maxLeverageCollateral[j], N, fromBN(pBN)));
184
184
  }
185
- _maxBorrowable = (await this.llamalend.multicallProvider.all(calls) as bigint[]).map((_mb) => _mb * BigInt(998) / BigInt(1000));
185
+ _maxBorrowable = (await this.llamalend.multicallProvider.all(calls) as bigint[]).map((_mb) => _mb * BigInt(970) / BigInt(1000));
186
186
  maxBorrowableBN = _maxBorrowable.map((_mb) => toBN(_mb, this.market.borrowed_token.decimals));
187
187
 
188
188
  const deltaBN = maxBorrowableBN.map((mb, l) => mb.minus(maxBorrowablePrevBN[l]).abs().div(mb));
@@ -599,7 +599,7 @@ export class LeverageZapV2BaseModule {
599
599
  maxBorrowablePrevBN = maxBorrowableBN;
600
600
  _userEffectiveCollateral = _userCollateral + fromBN(BN(userBorrowed).div(pAvgBN), this.market.collateral_token.decimals);
601
601
  let _maxBorrowable = await contract.max_borrowable(this.market.addresses.controller, _userEffectiveCollateral, _maxLeverageCollateral, _N, fromBN(pAvgBN));
602
- _maxBorrowable = _maxBorrowable * BigInt(998) / BigInt(1000);
602
+ _maxBorrowable = _maxBorrowable * BigInt(970) / BigInt(1000);
603
603
  if (_maxBorrowable === BigInt(0)) break;
604
604
  maxBorrowableBN = toBN(_maxBorrowable, this.market.borrowed_token.decimals);
605
605
 
@@ -618,7 +618,7 @@ export class LeverageZapV2BaseModule {
618
618
  if (maxBorrowableBN.eq(0)) _userEffectiveCollateral = BigInt(0);
619
619
  const _maxTotalCollateral = _userEffectiveCollateral + _maxLeverageCollateral
620
620
  let _maxBorrowable = await controllerContract.max_borrowable(_stateCollateral + _maxTotalCollateral, _N, _stateDebt, this.llamalend.constantOptions) - _stateDebt;
621
- _maxBorrowable = _maxBorrowable * BigInt(998) / BigInt(1000);
621
+ _maxBorrowable = _maxBorrowable * BigInt(970) / BigInt(1000);
622
622
 
623
623
  return {
624
624
  maxDebt: formatUnits(_maxBorrowable, this.market.borrowed_token.decimals),