@curvefi/llamalend-api 1.0.41 → 1.1.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.
- package/.github/workflows/publish.yml +7 -14
- package/README.md +451 -1
- package/lib/constants/aliases.js +15 -0
- package/lib/interfaces.d.ts +11 -0
- package/lib/lendMarkets/LendMarketTemplate.d.ts +6 -3
- package/lib/lendMarkets/LendMarketTemplate.js +40 -1
- package/lib/lendMarkets/interfaces/leverageZapV2.d.ts +223 -0
- package/lib/lendMarkets/interfaces/leverageZapV2.js +1 -0
- package/lib/lendMarkets/modules/index.d.ts +1 -0
- package/lib/lendMarkets/modules/index.js +1 -0
- package/lib/lendMarkets/modules/leverageZapV2.d.ts +253 -0
- package/lib/lendMarkets/modules/leverageZapV2.js +681 -0
- package/lib/llamalend.js +1 -0
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +5 -0
- package/package.json +2 -1
- package/src/cache/index.ts +1 -1
- package/src/constants/aliases.ts +15 -0
- package/src/external-api.ts +4 -4
- package/src/interfaces.ts +19 -0
- package/src/lendMarkets/LendMarketTemplate.ts +81 -32
- package/src/lendMarkets/interfaces/leverageZapV2.ts +282 -0
- package/src/lendMarkets/modules/index.ts +1 -0
- package/src/lendMarkets/modules/leverageZapV2.ts +991 -0
- package/src/llamalend.ts +1 -0
- package/src/utils.ts +12 -1
|
@@ -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
|
+
}
|