@curvefi/llamalend-api 1.0.42 → 1.1.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.
@@ -13,6 +13,7 @@ import { _getAddress, parseUnits, BN, toBN, fromBN, getBalances, _ensureAllowanc
13
13
  import { _getExpectedOdos, _getQuoteOdos, _assembleTxOdos, _getUserCollateral, _getUserCollateralForce, _getMarketsData } from "../external-api.js";
14
14
  import ERC20Abi from '../constants/abis/ERC20.json' with { type: 'json' };
15
15
  import { cacheKey, cacheStats } from "../cache/index.js";
16
+ import { LeverageZapV2Module } from "./modules/leverageZapV2.js";
16
17
  const DAY = 86400;
17
18
  const WEEK = 7 * DAY;
18
19
  export class LendMarketTemplate {
@@ -619,6 +620,42 @@ export class LendMarketTemplate {
619
620
  repay: this.leverageRepayEstimateGas.bind(this),
620
621
  },
621
622
  };
623
+ const leverageZapV2 = new LeverageZapV2Module(this);
624
+ this.leverageZapV2 = {
625
+ hasLeverage: leverageZapV2.hasLeverage.bind(leverageZapV2),
626
+ maxLeverage: leverageZapV2.maxLeverage.bind(leverageZapV2),
627
+ createLoanMaxRecv: leverageZapV2.leverageCreateLoanMaxRecv.bind(leverageZapV2),
628
+ createLoanMaxRecvAllRanges: leverageZapV2.leverageCreateLoanMaxRecvAllRanges.bind(leverageZapV2),
629
+ createLoanExpectedCollateral: leverageZapV2.leverageCreateLoanExpectedCollateral.bind(leverageZapV2),
630
+ createLoanMaxRange: leverageZapV2.leverageCreateLoanMaxRange.bind(leverageZapV2),
631
+ createLoanBandsAllRanges: leverageZapV2.leverageCreateLoanBandsAllRanges.bind(leverageZapV2),
632
+ createLoanPricesAllRanges: leverageZapV2.leverageCreateLoanPricesAllRanges.bind(leverageZapV2),
633
+ createLoanIsApproved: leverageZapV2.leverageCreateLoanIsApproved.bind(leverageZapV2),
634
+ createLoanApprove: leverageZapV2.leverageCreateLoanApprove.bind(leverageZapV2),
635
+ createLoanExpectedMetrics: leverageZapV2.leverageCreateLoanExpectedMetrics.bind(leverageZapV2),
636
+ createLoan: leverageZapV2.leverageCreateLoan.bind(leverageZapV2),
637
+ borrowMoreMaxRecv: leverageZapV2.leverageBorrowMoreMaxRecv.bind(leverageZapV2),
638
+ borrowMoreExpectedCollateral: leverageZapV2.leverageBorrowMoreExpectedCollateral.bind(leverageZapV2),
639
+ borrowMoreIsApproved: leverageZapV2.leverageCreateLoanIsApproved.bind(leverageZapV2),
640
+ borrowMoreApprove: leverageZapV2.leverageCreateLoanApprove.bind(leverageZapV2),
641
+ borrowMoreExpectedMetrics: leverageZapV2.leverageBorrowMoreExpectedMetrics.bind(leverageZapV2),
642
+ borrowMore: leverageZapV2.leverageBorrowMore.bind(leverageZapV2),
643
+ repayExpectedBorrowed: leverageZapV2.leverageRepayExpectedBorrowed.bind(leverageZapV2),
644
+ repayIsFull: leverageZapV2.leverageRepayIsFull.bind(leverageZapV2),
645
+ repayIsAvailable: leverageZapV2.leverageRepayIsAvailable.bind(leverageZapV2),
646
+ repayExpectedMetrics: leverageZapV2.leverageRepayExpectedMetrics.bind(leverageZapV2),
647
+ repayIsApproved: leverageZapV2.leverageRepayIsApproved.bind(leverageZapV2),
648
+ repayApprove: leverageZapV2.leverageRepayApprove.bind(leverageZapV2),
649
+ repay: leverageZapV2.leverageRepay.bind(leverageZapV2),
650
+ estimateGas: {
651
+ createLoanApprove: leverageZapV2.leverageCreateLoanApproveEstimateGas.bind(leverageZapV2),
652
+ createLoan: leverageZapV2.leverageCreateLoanEstimateGas.bind(leverageZapV2),
653
+ borrowMoreApprove: leverageZapV2.leverageCreateLoanApproveEstimateGas.bind(leverageZapV2),
654
+ borrowMore: leverageZapV2.leverageBorrowMoreEstimateGas.bind(leverageZapV2),
655
+ repayApprove: leverageZapV2.leverageRepayApproveEstimateGas.bind(leverageZapV2),
656
+ repay: leverageZapV2.leverageRepayEstimateGas.bind(leverageZapV2),
657
+ },
658
+ };
622
659
  }
623
660
  // ---------------- VAULT ----------------
624
661
  vaultMaxDeposit() {
@@ -2727,7 +2764,6 @@ export class LendMarketTemplate {
2727
2764
  throw Error(`You must call leverage.repayExpectedBorrowed() with slippage=${slippage} first`);
2728
2765
  calldata = yield _assembleTxOdos.call(this.llamalend, swapData.pathId);
2729
2766
  }
2730
- console.log('params', [0, parseUnits(this._getMarketId(), 0), _userCollateral, _userBorrowed], calldata);
2731
2767
  const contract = this.llamalend.contracts[this.addresses.controller].contract;
2732
2768
  const gas = yield contract.repay_extended.estimateGas(this.llamalend.constants.ALIASES.leverage_zap, [0, parseUnits(this._getMarketId(), 0), _userCollateral, _userBorrowed], calldata);
2733
2769
  if (estimateGas)
@@ -2829,4 +2865,7 @@ export class LendMarketTemplate {
2829
2865
  yield _getUserCollateralForce(this.llamalend.constants.NETWORK_NAME, this.addresses.controller, address, newTx);
2830
2866
  });
2831
2867
  }
2868
+ getLlamalend() {
2869
+ return this.llamalend;
2870
+ }
2832
2871
  }
@@ -0,0 +1,223 @@
1
+ import { GetExpectedFn, IDict, ILeverageMetrics, IQuote, TAmount, TGas } from "../../interfaces.js";
2
+ export interface ILeverageZapV2 {
3
+ hasLeverage: () => boolean;
4
+ maxLeverage: (N: number) => Promise<string>;
5
+ createLoanMaxRecv: ({ userCollateral, userBorrowed, range, getExpected, }: {
6
+ userCollateral: TAmount;
7
+ userBorrowed: TAmount;
8
+ range: number;
9
+ getExpected: GetExpectedFn;
10
+ }) => Promise<{
11
+ maxDebt: string;
12
+ maxTotalCollateral: string;
13
+ userCollateral: string;
14
+ collateralFromUserBorrowed: string;
15
+ collateralFromMaxDebt: string;
16
+ maxLeverage: string;
17
+ avgPrice: string;
18
+ }>;
19
+ createLoanMaxRecvAllRanges: ({ userCollateral, userBorrowed, getExpected, }: {
20
+ userCollateral: TAmount;
21
+ userBorrowed: TAmount;
22
+ getExpected: GetExpectedFn;
23
+ }) => Promise<IDict<{
24
+ maxDebt: string;
25
+ maxTotalCollateral: string;
26
+ userCollateral: string;
27
+ collateralFromUserBorrowed: string;
28
+ collateralFromMaxDebt: string;
29
+ maxLeverage: string;
30
+ avgPrice: string;
31
+ }>>;
32
+ createLoanExpectedCollateral: ({ userCollateral, userBorrowed, debt, quote, }: {
33
+ userCollateral: TAmount;
34
+ userBorrowed: TAmount;
35
+ debt: TAmount;
36
+ quote: IQuote;
37
+ }) => Promise<{
38
+ totalCollateral: string;
39
+ userCollateral: string;
40
+ collateralFromUserBorrowed: string;
41
+ collateralFromDebt: string;
42
+ leverage: string;
43
+ avgPrice: string;
44
+ }>;
45
+ createLoanExpectedMetrics: ({ userCollateral, userBorrowed, debt, range, quote, healthIsFull, }: {
46
+ userCollateral: TAmount;
47
+ userBorrowed: TAmount;
48
+ debt: TAmount;
49
+ range: number;
50
+ quote: IQuote;
51
+ healthIsFull?: boolean;
52
+ }) => Promise<ILeverageMetrics>;
53
+ createLoanMaxRange: ({ userCollateral, userBorrowed, debt, getExpected, }: {
54
+ userCollateral: TAmount;
55
+ userBorrowed: TAmount;
56
+ debt: TAmount;
57
+ getExpected: GetExpectedFn;
58
+ }) => Promise<number>;
59
+ createLoanBandsAllRanges: ({ userCollateral, userBorrowed, debt, getExpected, quote, }: {
60
+ userCollateral: TAmount;
61
+ userBorrowed: TAmount;
62
+ debt: TAmount;
63
+ getExpected: GetExpectedFn;
64
+ quote: IQuote;
65
+ }) => Promise<IDict<[number, number] | null>>;
66
+ createLoanPricesAllRanges: ({ userCollateral, userBorrowed, debt, getExpected, quote, }: {
67
+ userCollateral: TAmount;
68
+ userBorrowed: TAmount;
69
+ debt: TAmount;
70
+ getExpected: GetExpectedFn;
71
+ quote: IQuote;
72
+ }) => Promise<IDict<[string, string] | null>>;
73
+ createLoanIsApproved: ({ userCollateral, userBorrowed, }: {
74
+ userCollateral: TAmount;
75
+ userBorrowed: TAmount;
76
+ }) => Promise<boolean>;
77
+ createLoanApprove: ({ userCollateral, userBorrowed, }: {
78
+ userCollateral: TAmount;
79
+ userBorrowed: TAmount;
80
+ }) => Promise<string[]>;
81
+ createLoan: ({ userCollateral, userBorrowed, debt, range, router, calldata, }: {
82
+ userCollateral: TAmount;
83
+ userBorrowed: TAmount;
84
+ debt: TAmount;
85
+ range: number;
86
+ router: string;
87
+ calldata: string;
88
+ }) => Promise<string>;
89
+ borrowMoreMaxRecv: ({ userCollateral, userBorrowed, getExpected, address }: {
90
+ userCollateral: TAmount;
91
+ userBorrowed: TAmount;
92
+ getExpected: GetExpectedFn;
93
+ address?: string;
94
+ }) => Promise<{
95
+ maxDebt: string;
96
+ maxTotalCollateral: string;
97
+ userCollateral: string;
98
+ collateralFromUserBorrowed: string;
99
+ collateralFromMaxDebt: string;
100
+ avgPrice: string;
101
+ }>;
102
+ borrowMoreExpectedCollateral: ({ userCollateral, userBorrowed, dDebt, quote, address }: {
103
+ userCollateral: TAmount;
104
+ userBorrowed: TAmount;
105
+ dDebt: TAmount;
106
+ quote: IQuote;
107
+ address?: string;
108
+ }) => Promise<{
109
+ totalCollateral: string;
110
+ userCollateral: string;
111
+ collateralFromUserBorrowed: string;
112
+ collateralFromDebt: string;
113
+ avgPrice: string;
114
+ }>;
115
+ borrowMoreExpectedMetrics: ({ userCollateral, userBorrowed, debt, quote, healthIsFull, address }: {
116
+ userCollateral: TAmount;
117
+ userBorrowed: TAmount;
118
+ debt: TAmount;
119
+ quote: IQuote;
120
+ healthIsFull?: boolean;
121
+ address?: string;
122
+ }) => Promise<ILeverageMetrics>;
123
+ borrowMoreIsApproved: ({ userCollateral, userBorrowed }: {
124
+ userCollateral: TAmount;
125
+ userBorrowed: TAmount;
126
+ }) => Promise<boolean>;
127
+ borrowMoreApprove: ({ userCollateral, userBorrowed }: {
128
+ userCollateral: TAmount;
129
+ userBorrowed: TAmount;
130
+ }) => Promise<string[]>;
131
+ borrowMore: ({ userCollateral, userBorrowed, debt, router, calldata }: {
132
+ userCollateral: TAmount;
133
+ userBorrowed: TAmount;
134
+ debt: TAmount;
135
+ router: string;
136
+ calldata: string;
137
+ }) => Promise<string>;
138
+ repayExpectedBorrowed: ({ stateCollateral, userCollateral, userBorrowed, quote }: {
139
+ stateCollateral: TAmount;
140
+ userCollateral: TAmount;
141
+ userBorrowed: TAmount;
142
+ quote: IQuote;
143
+ }) => Promise<{
144
+ totalBorrowed: string;
145
+ borrowedFromStateCollateral: string;
146
+ borrowedFromUserCollateral: string;
147
+ userBorrowed: string;
148
+ avgPrice: string;
149
+ }>;
150
+ repayIsFull: ({ stateCollateral, userCollateral, userBorrowed, quote, address }: {
151
+ stateCollateral: TAmount;
152
+ userCollateral: TAmount;
153
+ userBorrowed: TAmount;
154
+ quote: IQuote;
155
+ address?: string;
156
+ }) => Promise<boolean>;
157
+ repayIsAvailable: ({ stateCollateral, userCollateral, userBorrowed, quote, address }: {
158
+ stateCollateral: TAmount;
159
+ userCollateral: TAmount;
160
+ userBorrowed: TAmount;
161
+ quote: IQuote;
162
+ address?: string;
163
+ }) => Promise<boolean>;
164
+ repayExpectedMetrics: ({ stateCollateral, userCollateral, userBorrowed, healthIsFull, quote, address }: {
165
+ stateCollateral: TAmount;
166
+ userCollateral: TAmount;
167
+ userBorrowed: TAmount;
168
+ healthIsFull: boolean;
169
+ quote: IQuote;
170
+ address: string;
171
+ }) => Promise<ILeverageMetrics>;
172
+ repayIsApproved: ({ userCollateral, userBorrowed }: {
173
+ userCollateral: TAmount;
174
+ userBorrowed: TAmount;
175
+ }) => Promise<boolean>;
176
+ repayApprove: ({ userCollateral, userBorrowed }: {
177
+ userCollateral: TAmount;
178
+ userBorrowed: TAmount;
179
+ }) => Promise<string[]>;
180
+ repay: ({ stateCollateral, userCollateral, userBorrowed, router, calldata }: {
181
+ stateCollateral: TAmount;
182
+ userCollateral: TAmount;
183
+ userBorrowed: TAmount;
184
+ router: string;
185
+ calldata: string;
186
+ }) => Promise<string>;
187
+ estimateGas: {
188
+ createLoanApprove: ({ userCollateral, userBorrowed }: {
189
+ userCollateral: TAmount;
190
+ userBorrowed: TAmount;
191
+ }) => Promise<TGas>;
192
+ createLoan: ({ userCollateral, userBorrowed, debt, range, router, calldata }: {
193
+ userCollateral: TAmount;
194
+ userBorrowed: TAmount;
195
+ debt: TAmount;
196
+ range: number;
197
+ router: string;
198
+ calldata: string;
199
+ }) => Promise<number>;
200
+ borrowMoreApprove: ({ userCollateral, userBorrowed }: {
201
+ userCollateral: TAmount;
202
+ userBorrowed: TAmount;
203
+ }) => Promise<TGas>;
204
+ borrowMore: ({ userCollateral, userBorrowed, debt, router, calldata }: {
205
+ userCollateral: TAmount;
206
+ userBorrowed: TAmount;
207
+ debt: TAmount;
208
+ router: string;
209
+ calldata: string;
210
+ }) => Promise<number>;
211
+ repayApprove: ({ userCollateral, userBorrowed }: {
212
+ userCollateral: TAmount;
213
+ userBorrowed: TAmount;
214
+ }) => Promise<TGas>;
215
+ repay: ({ stateCollateral, userCollateral, userBorrowed, router, calldata }: {
216
+ stateCollateral: TAmount;
217
+ userCollateral: TAmount;
218
+ userBorrowed: TAmount;
219
+ router: string;
220
+ calldata: string;
221
+ }) => Promise<number>;
222
+ };
223
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { LeverageZapV2Module } from './leverageZapV2.js';
@@ -0,0 +1 @@
1
+ export { LeverageZapV2Module } from './leverageZapV2.js';
@@ -0,0 +1,253 @@
1
+ import memoize from "memoizee";
2
+ import type { TAmount, TGas, IDict, IQuote, ILeverageMetrics, GetExpectedFn } from "../../interfaces.js";
3
+ import type { LendMarketTemplate } from "../LendMarketTemplate.js";
4
+ import BigNumber from "bignumber.js";
5
+ /**
6
+ * LeverageZapV2 module for LendMarketTemplate
7
+ */
8
+ export declare class LeverageZapV2Module {
9
+ private market;
10
+ private llamalend;
11
+ constructor(market: LendMarketTemplate);
12
+ private _getMarketId;
13
+ hasLeverage: () => boolean;
14
+ _checkLeverageZap(): void;
15
+ _get_k_effective_BN(N: number): Promise<BigNumber>;
16
+ maxLeverage(N: number): Promise<string>;
17
+ leverageCreateLoanMaxRecv({ userCollateral, userBorrowed, range, getExpected }: {
18
+ userCollateral: TAmount;
19
+ userBorrowed: TAmount;
20
+ range: number;
21
+ getExpected: GetExpectedFn;
22
+ }): Promise<{
23
+ maxDebt: string;
24
+ maxTotalCollateral: string;
25
+ userCollateral: string;
26
+ collateralFromUserBorrowed: string;
27
+ collateralFromMaxDebt: string;
28
+ maxLeverage: string;
29
+ avgPrice: string;
30
+ }>;
31
+ leverageCreateLoanMaxRecvAllRanges: (({ userCollateral, userBorrowed, getExpected }: {
32
+ userCollateral: TAmount;
33
+ userBorrowed: TAmount;
34
+ getExpected: GetExpectedFn;
35
+ }) => Promise<IDict<{
36
+ maxDebt: string;
37
+ maxTotalCollateral: string;
38
+ userCollateral: string;
39
+ collateralFromUserBorrowed: string;
40
+ collateralFromMaxDebt: string;
41
+ maxLeverage: string;
42
+ avgPrice: string;
43
+ }>>) & memoize.Memoized<({ userCollateral, userBorrowed, getExpected }: {
44
+ userCollateral: TAmount;
45
+ userBorrowed: TAmount;
46
+ getExpected: GetExpectedFn;
47
+ }) => Promise<IDict<{
48
+ maxDebt: string;
49
+ maxTotalCollateral: string;
50
+ userCollateral: string;
51
+ collateralFromUserBorrowed: string;
52
+ collateralFromMaxDebt: string;
53
+ maxLeverage: string;
54
+ avgPrice: string;
55
+ }>>>;
56
+ private _leverageExpectedCollateral;
57
+ leverageCreateLoanExpectedCollateral({ userCollateral, userBorrowed, debt, quote }: {
58
+ userCollateral: TAmount;
59
+ userBorrowed: TAmount;
60
+ debt: TAmount;
61
+ quote: IQuote;
62
+ }): Promise<{
63
+ totalCollateral: string;
64
+ userCollateral: string;
65
+ collateralFromUserBorrowed: string;
66
+ collateralFromDebt: string;
67
+ leverage: string;
68
+ avgPrice: string;
69
+ }>;
70
+ leverageCreateLoanExpectedMetrics({ userCollateral, userBorrowed, debt, range, quote, healthIsFull }: {
71
+ userCollateral: TAmount;
72
+ userBorrowed: TAmount;
73
+ debt: TAmount;
74
+ range: number;
75
+ quote: IQuote;
76
+ healthIsFull?: boolean;
77
+ }): Promise<ILeverageMetrics>;
78
+ leverageCreateLoanMaxRange({ userCollateral, userBorrowed, debt, getExpected }: {
79
+ userCollateral: TAmount;
80
+ userBorrowed: TAmount;
81
+ debt: TAmount;
82
+ getExpected: GetExpectedFn;
83
+ }): Promise<number>;
84
+ private _leverageCalcN1;
85
+ private _leverageCalcN1AllRanges;
86
+ private _leverageBands;
87
+ private _leverageCreateLoanBandsAllRanges;
88
+ leverageCreateLoanBandsAllRanges({ userCollateral, userBorrowed, debt, getExpected, quote }: {
89
+ userCollateral: TAmount;
90
+ userBorrowed: TAmount;
91
+ debt: TAmount;
92
+ getExpected: GetExpectedFn;
93
+ quote: IQuote;
94
+ }): Promise<IDict<[number, number] | null>>;
95
+ leverageCreateLoanPricesAllRanges({ userCollateral, userBorrowed, debt, getExpected, quote }: {
96
+ userCollateral: TAmount;
97
+ userBorrowed: TAmount;
98
+ debt: TAmount;
99
+ getExpected: GetExpectedFn;
100
+ quote: IQuote;
101
+ }): Promise<IDict<[string, string] | null>>;
102
+ private _leverageHealth;
103
+ leverageCreateLoanIsApproved({ userCollateral, userBorrowed }: {
104
+ userCollateral: TAmount;
105
+ userBorrowed: TAmount;
106
+ }): Promise<boolean>;
107
+ leverageCreateLoanApproveEstimateGas({ userCollateral, userBorrowed }: {
108
+ userCollateral: TAmount;
109
+ userBorrowed: TAmount;
110
+ }): Promise<TGas>;
111
+ leverageCreateLoanApprove({ userCollateral, userBorrowed }: {
112
+ userCollateral: TAmount;
113
+ userBorrowed: TAmount;
114
+ }): Promise<string[]>;
115
+ private _leverageCreateLoan;
116
+ leverageCreateLoanEstimateGas({ userCollateral, userBorrowed, debt, range, router, calldata }: {
117
+ userCollateral: TAmount;
118
+ userBorrowed: TAmount;
119
+ debt: TAmount;
120
+ range: number;
121
+ router: string;
122
+ calldata: string;
123
+ }): Promise<number>;
124
+ leverageCreateLoan({ userCollateral, userBorrowed, debt, range, router, calldata }: {
125
+ userCollateral: TAmount;
126
+ userBorrowed: TAmount;
127
+ debt: TAmount;
128
+ range: number;
129
+ router: string;
130
+ calldata: string;
131
+ }): Promise<string>;
132
+ leverageBorrowMoreMaxRecv({ userCollateral, userBorrowed, getExpected, address }: {
133
+ userCollateral: TAmount;
134
+ userBorrowed: TAmount;
135
+ getExpected: GetExpectedFn;
136
+ address?: string;
137
+ }): Promise<{
138
+ maxDebt: string;
139
+ maxTotalCollateral: string;
140
+ userCollateral: string;
141
+ collateralFromUserBorrowed: string;
142
+ collateralFromMaxDebt: string;
143
+ avgPrice: string;
144
+ }>;
145
+ leverageBorrowMoreExpectedCollateral({ userCollateral, userBorrowed, dDebt, quote, address }: {
146
+ userCollateral: TAmount;
147
+ userBorrowed: TAmount;
148
+ dDebt: TAmount;
149
+ quote: IQuote;
150
+ address?: string;
151
+ }): Promise<{
152
+ totalCollateral: string;
153
+ userCollateral: string;
154
+ collateralFromUserBorrowed: string;
155
+ collateralFromDebt: string;
156
+ avgPrice: string;
157
+ }>;
158
+ leverageBorrowMoreExpectedMetrics({ userCollateral, userBorrowed, debt, quote, healthIsFull, address }: {
159
+ userCollateral: TAmount;
160
+ userBorrowed: TAmount;
161
+ debt: TAmount;
162
+ quote: IQuote;
163
+ healthIsFull?: boolean;
164
+ address?: string;
165
+ }): Promise<ILeverageMetrics>;
166
+ private _leverageBorrowMore;
167
+ leverageBorrowMoreIsApproved({ userCollateral, userBorrowed }: {
168
+ userCollateral: TAmount;
169
+ userBorrowed: TAmount;
170
+ }): Promise<boolean>;
171
+ leverageBorrowMoreApprove({ userCollateral, userBorrowed }: {
172
+ userCollateral: TAmount;
173
+ userBorrowed: TAmount;
174
+ }): Promise<string[]>;
175
+ leverageBorrowMoreEstimateGas({ userCollateral, userBorrowed, debt, router, calldata }: {
176
+ userCollateral: TAmount;
177
+ userBorrowed: TAmount;
178
+ debt: TAmount;
179
+ router: string;
180
+ calldata: string;
181
+ }): Promise<number>;
182
+ leverageBorrowMore({ userCollateral, userBorrowed, debt, router, calldata }: {
183
+ userCollateral: TAmount;
184
+ userBorrowed: TAmount;
185
+ debt: TAmount;
186
+ router: string;
187
+ calldata: string;
188
+ }): Promise<string>;
189
+ private _leverageRepayExpectedBorrowed;
190
+ leverageRepayExpectedBorrowed: ({ stateCollateral, userCollateral, userBorrowed, quote }: {
191
+ stateCollateral: TAmount;
192
+ userCollateral: TAmount;
193
+ userBorrowed: TAmount;
194
+ quote: IQuote;
195
+ }) => Promise<{
196
+ totalBorrowed: string;
197
+ borrowedFromStateCollateral: string;
198
+ borrowedFromUserCollateral: string;
199
+ userBorrowed: string;
200
+ avgPrice: string;
201
+ }>;
202
+ leverageRepayIsFull({ stateCollateral, userCollateral, userBorrowed, quote, address }: {
203
+ stateCollateral: TAmount;
204
+ userCollateral: TAmount;
205
+ userBorrowed: TAmount;
206
+ quote: IQuote;
207
+ address?: string;
208
+ }): Promise<boolean>;
209
+ leverageRepayIsAvailable({ stateCollateral, userCollateral, userBorrowed, quote, address }: {
210
+ stateCollateral: TAmount;
211
+ userCollateral: TAmount;
212
+ userBorrowed: TAmount;
213
+ quote: IQuote;
214
+ address?: string;
215
+ }): Promise<boolean>;
216
+ leverageRepayExpectedMetrics({ stateCollateral, userCollateral, userBorrowed, healthIsFull, quote, address }: {
217
+ stateCollateral: TAmount;
218
+ userCollateral: TAmount;
219
+ userBorrowed: TAmount;
220
+ healthIsFull: boolean;
221
+ quote: IQuote;
222
+ address: string;
223
+ }): Promise<ILeverageMetrics>;
224
+ private _leverageRepayBands;
225
+ private _leverageRepayHealth;
226
+ leverageRepayIsApproved({ userCollateral, userBorrowed }: {
227
+ userCollateral: TAmount;
228
+ userBorrowed: TAmount;
229
+ }): Promise<boolean>;
230
+ leverageRepayApproveEstimateGas({ userCollateral, userBorrowed }: {
231
+ userCollateral: TAmount;
232
+ userBorrowed: TAmount;
233
+ }): Promise<TGas>;
234
+ leverageRepayApprove({ userCollateral, userBorrowed }: {
235
+ userCollateral: TAmount;
236
+ userBorrowed: TAmount;
237
+ }): Promise<string[]>;
238
+ private _leverageRepay;
239
+ leverageRepayEstimateGas({ stateCollateral, userCollateral, userBorrowed, router, calldata }: {
240
+ stateCollateral: TAmount;
241
+ userCollateral: TAmount;
242
+ userBorrowed: TAmount;
243
+ router: string;
244
+ calldata: string;
245
+ }): Promise<number>;
246
+ leverageRepay({ stateCollateral, userCollateral, userBorrowed, router, calldata }: {
247
+ stateCollateral: TAmount;
248
+ userCollateral: TAmount;
249
+ userBorrowed: TAmount;
250
+ router: string;
251
+ calldata: string;
252
+ }): Promise<string>;
253
+ }