@curvefi/llamalend-api 1.0.22-beta.2 → 1.0.23
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 +1 -1
- package/README.md +346 -0
- package/lib/constants/llammas.js +2 -2
- package/lib/external-api.d.ts +0 -1
- package/lib/external-api.js +0 -6
- package/lib/lendMarkets/LendMarketTemplate.js +1 -1
- package/lib/llamalend.d.ts +0 -1
- package/lib/llamalend.js +28 -34
- package/lib/mintMarkets/MintMarketTemplate.d.ts +21 -4
- package/lib/mintMarkets/MintMarketTemplate.js +52 -0
- package/lib/mintMarkets/interfaces/leverage.d.ts +90 -0
- package/lib/mintMarkets/interfaces/leverage.js +1 -0
- package/lib/mintMarkets/modules/index.d.ts +1 -0
- package/lib/mintMarkets/modules/index.js +1 -0
- package/lib/mintMarkets/modules/leverageV2.d.ts +131 -0
- package/lib/mintMarkets/modules/leverageV2.js +788 -0
- package/package.json +1 -1
- package/src/constants/llammas.ts +2 -2
- package/src/external-api.ts +0 -10
- package/src/lendMarkets/LendMarketTemplate.ts +1 -1
- package/src/llamalend.ts +28 -33
- package/src/mintMarkets/MintMarketTemplate.ts +67 -4
- package/src/mintMarkets/interfaces/leverage.ts +104 -0
- package/src/mintMarkets/modules/index.ts +1 -0
- package/src/mintMarkets/modules/leverageV2.ts +932 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { IDict, TAmount, TGas } from "../../interfaces";
|
|
2
|
+
export interface ILeverageV2 {
|
|
3
|
+
hasLeverage: () => boolean;
|
|
4
|
+
maxLeverage: (N: number) => Promise<string>;
|
|
5
|
+
createLoanMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, range: number) => Promise<{
|
|
6
|
+
maxDebt: string;
|
|
7
|
+
maxTotalCollateral: string;
|
|
8
|
+
userCollateral: string;
|
|
9
|
+
collateralFromUserBorrowed: string;
|
|
10
|
+
collateralFromMaxDebt: string;
|
|
11
|
+
maxLeverage: string;
|
|
12
|
+
avgPrice: string;
|
|
13
|
+
}>;
|
|
14
|
+
createLoanMaxRecvAllRanges: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<IDict<{
|
|
15
|
+
maxDebt: string;
|
|
16
|
+
maxTotalCollateral: string;
|
|
17
|
+
userCollateral: string;
|
|
18
|
+
collateralFromUserBorrowed: string;
|
|
19
|
+
collateralFromMaxDebt: string;
|
|
20
|
+
maxLeverage: string;
|
|
21
|
+
avgPrice: string;
|
|
22
|
+
}>>;
|
|
23
|
+
createLoanExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<{
|
|
24
|
+
totalCollateral: string;
|
|
25
|
+
userCollateral: string;
|
|
26
|
+
collateralFromUserBorrowed: string;
|
|
27
|
+
collateralFromDebt: string;
|
|
28
|
+
leverage: string;
|
|
29
|
+
avgPrice: string;
|
|
30
|
+
}>;
|
|
31
|
+
createLoanPriceImpact: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
32
|
+
createLoanMaxRange: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<number>;
|
|
33
|
+
createLoanBands: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
|
|
34
|
+
createLoanBandsAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[number, number] | null>>;
|
|
35
|
+
createLoanPrices: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<string[]>;
|
|
36
|
+
createLoanPricesAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[string, string] | null>>;
|
|
37
|
+
createLoanHealth: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
|
|
38
|
+
createLoanIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
|
|
39
|
+
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
40
|
+
createLoanRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
41
|
+
createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<string>;
|
|
42
|
+
borrowMoreMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<{
|
|
43
|
+
maxDebt: string;
|
|
44
|
+
maxTotalCollateral: string;
|
|
45
|
+
userCollateral: string;
|
|
46
|
+
collateralFromUserBorrowed: string;
|
|
47
|
+
collateralFromMaxDebt: string;
|
|
48
|
+
avgPrice: string;
|
|
49
|
+
}>;
|
|
50
|
+
borrowMoreExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, slippage?: number, address?: string) => Promise<{
|
|
51
|
+
totalCollateral: string;
|
|
52
|
+
userCollateral: string;
|
|
53
|
+
collateralFromUserBorrowed: string;
|
|
54
|
+
collateralFromDebt: string;
|
|
55
|
+
avgPrice: string;
|
|
56
|
+
}>;
|
|
57
|
+
borrowMorePriceImpact: (userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string>;
|
|
58
|
+
borrowMoreBands: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<[number, number]>;
|
|
59
|
+
borrowMorePrices: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string[]>;
|
|
60
|
+
borrowMoreHealth: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, full?: boolean, address?: string) => Promise<string>;
|
|
61
|
+
borrowMoreIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
|
|
62
|
+
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
63
|
+
borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
64
|
+
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
|
|
65
|
+
repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
|
|
66
|
+
totalBorrowed: string;
|
|
67
|
+
borrowedFromStateCollateral: string;
|
|
68
|
+
borrowedFromUserCollateral: string;
|
|
69
|
+
userBorrowed: string;
|
|
70
|
+
avgPrice: string;
|
|
71
|
+
}>;
|
|
72
|
+
repayPriceImpact: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
73
|
+
repayIsFull: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
|
|
74
|
+
repayIsAvailable: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
|
|
75
|
+
repayBands: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<[number, number]>;
|
|
76
|
+
repayPrices: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<string[]>;
|
|
77
|
+
repayHealth: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, full?: boolean, address?: string) => Promise<string>;
|
|
78
|
+
repayIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
|
|
79
|
+
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
80
|
+
repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
81
|
+
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
|
|
82
|
+
estimateGas: {
|
|
83
|
+
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
84
|
+
createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
|
|
85
|
+
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
86
|
+
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<number>;
|
|
87
|
+
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
88
|
+
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<number>;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LeverageV2Module } from './leverageV2.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LeverageV2Module } from './leverageV2.js';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import memoize from "memoizee";
|
|
2
|
+
import type { TAmount, TGas, IDict, IQuoteOdos } from "../../interfaces.js";
|
|
3
|
+
import type { MintMarketTemplate } from "../MintMarketTemplate.js";
|
|
4
|
+
/**
|
|
5
|
+
* LeverageV2 module for MintMarketTemplate
|
|
6
|
+
*/
|
|
7
|
+
export declare class LeverageV2Module {
|
|
8
|
+
private market;
|
|
9
|
+
private llamalend;
|
|
10
|
+
swapDataCache: IDict<IQuoteOdos>;
|
|
11
|
+
constructor(market: MintMarketTemplate);
|
|
12
|
+
private _getMarketId;
|
|
13
|
+
userLoanExists(address?: string): Promise<boolean>;
|
|
14
|
+
hasLeverage: () => boolean;
|
|
15
|
+
_checkLeverageZap(): void;
|
|
16
|
+
_get_k_effective_BN(N: number): Promise<BigNumber>;
|
|
17
|
+
maxLeverage(N: number): Promise<string>;
|
|
18
|
+
leverageCreateLoanMaxRecv(userCollateral: TAmount, userBorrowed: TAmount, range: number): Promise<{
|
|
19
|
+
maxDebt: string;
|
|
20
|
+
maxTotalCollateral: string;
|
|
21
|
+
userCollateral: string;
|
|
22
|
+
collateralFromUserBorrowed: string;
|
|
23
|
+
collateralFromMaxDebt: string;
|
|
24
|
+
maxLeverage: string;
|
|
25
|
+
avgPrice: string;
|
|
26
|
+
}>;
|
|
27
|
+
leverageCreateLoanMaxRecvAllRanges: ((userCollateral: TAmount, userBorrowed: TAmount) => Promise<IDict<{
|
|
28
|
+
maxDebt: string;
|
|
29
|
+
maxTotalCollateral: string;
|
|
30
|
+
userCollateral: string;
|
|
31
|
+
collateralFromUserBorrowed: string;
|
|
32
|
+
collateralFromMaxDebt: string;
|
|
33
|
+
maxLeverage: string;
|
|
34
|
+
avgPrice: string;
|
|
35
|
+
}>>) & memoize.Memoized<(userCollateral: TAmount, userBorrowed: TAmount) => Promise<IDict<{
|
|
36
|
+
maxDebt: string;
|
|
37
|
+
maxTotalCollateral: string;
|
|
38
|
+
userCollateral: string;
|
|
39
|
+
collateralFromUserBorrowed: string;
|
|
40
|
+
collateralFromMaxDebt: string;
|
|
41
|
+
maxLeverage: string;
|
|
42
|
+
avgPrice: string;
|
|
43
|
+
}>>>;
|
|
44
|
+
_setSwapDataToCache: (inputCoinAddress: string, outputCoinAddress: string, _amount: bigint, slippage: number) => Promise<void>;
|
|
45
|
+
_getSwapDataFromCache: (inputCoinAddress: string, _amount: bigint) => IQuoteOdos;
|
|
46
|
+
_leverageExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, user?: string) => Promise<{
|
|
47
|
+
_futureStateCollateral: bigint;
|
|
48
|
+
_totalCollateral: bigint;
|
|
49
|
+
_userCollateral: bigint;
|
|
50
|
+
_collateralFromUserBorrowed: bigint;
|
|
51
|
+
_collateralFromDebt: bigint;
|
|
52
|
+
avgPrice: string;
|
|
53
|
+
}>;
|
|
54
|
+
leverageCreateLoanExpectedCollateral(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number): Promise<{
|
|
55
|
+
totalCollateral: string;
|
|
56
|
+
userCollateral: string;
|
|
57
|
+
collateralFromUserBorrowed: string;
|
|
58
|
+
collateralFromDebt: string;
|
|
59
|
+
leverage: string;
|
|
60
|
+
avgPrice: string;
|
|
61
|
+
}>;
|
|
62
|
+
leverageCreateLoanPriceImpact(userBorrowed: TAmount, debt: TAmount): Promise<string>;
|
|
63
|
+
leverageCreateLoanMaxRange(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount): Promise<number>;
|
|
64
|
+
_leverageCalcN1: ((userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, user?: string) => Promise<bigint>) & memoize.Memoized<(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, user?: string) => Promise<bigint>>;
|
|
65
|
+
_leverageCalcN1AllRanges: ((userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, maxN: number) => Promise<bigint[]>) & memoize.Memoized<(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, maxN: number) => Promise<bigint[]>>;
|
|
66
|
+
_leverageBands(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, user?: string): Promise<[bigint, bigint]>;
|
|
67
|
+
_leverageCreateLoanBandsAllRanges(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount): Promise<IDict<[bigint, bigint]>>;
|
|
68
|
+
leverageCreateLoanBands(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number): Promise<[number, number]>;
|
|
69
|
+
leverageCreateLoanBandsAllRanges(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount): Promise<IDict<[number, number] | null>>;
|
|
70
|
+
leverageCreateLoanPrices(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number): Promise<string[]>;
|
|
71
|
+
leverageCreateLoanPricesAllRanges(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount): Promise<IDict<[string, string] | null>>;
|
|
72
|
+
_leverageHealth(userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, range: number, full: boolean, user?: string): Promise<string>;
|
|
73
|
+
leverageCreateLoanHealth(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, full?: boolean): Promise<string>;
|
|
74
|
+
leverageCreateLoanIsApproved(userCollateral: TAmount, userBorrowed: TAmount): Promise<boolean>;
|
|
75
|
+
leverageCreateLoanApproveEstimateGas(userCollateral: TAmount, userBorrowed: TAmount): Promise<TGas>;
|
|
76
|
+
leverageCreateLoanApprove(userCollateral: TAmount, userBorrowed: TAmount): Promise<string[]>;
|
|
77
|
+
leverageCreateLoanRouteImage(userBorrowed: TAmount, debt: TAmount): Promise<string>;
|
|
78
|
+
_leverageCreateLoan(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage: number, estimateGas: boolean): Promise<string | TGas>;
|
|
79
|
+
leverageCreateLoanEstimateGas(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number): Promise<number>;
|
|
80
|
+
leverageCreateLoan(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number): Promise<string>;
|
|
81
|
+
leverageBorrowMoreMaxRecv(userCollateral: TAmount, userBorrowed: TAmount, address?: string): Promise<{
|
|
82
|
+
maxDebt: string;
|
|
83
|
+
maxTotalCollateral: string;
|
|
84
|
+
userCollateral: string;
|
|
85
|
+
collateralFromUserBorrowed: string;
|
|
86
|
+
collateralFromMaxDebt: string;
|
|
87
|
+
avgPrice: string;
|
|
88
|
+
}>;
|
|
89
|
+
leverageBorrowMoreExpectedCollateral(userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, slippage?: number, address?: string): Promise<{
|
|
90
|
+
totalCollateral: string;
|
|
91
|
+
userCollateral: string;
|
|
92
|
+
collateralFromUserBorrowed: string;
|
|
93
|
+
collateralFromDebt: string;
|
|
94
|
+
avgPrice: string;
|
|
95
|
+
}>;
|
|
96
|
+
leverageBorrowMorePriceImpact(userBorrowed: TAmount, dDebt: TAmount): Promise<string>;
|
|
97
|
+
leverageBorrowMoreBands(userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string): Promise<[number, number]>;
|
|
98
|
+
leverageBorrowMorePrices(userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string): Promise<string[]>;
|
|
99
|
+
leverageBorrowMoreHealth(userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, full?: boolean, address?: string): Promise<string>;
|
|
100
|
+
leverageBorrowMoreRouteImage(userBorrowed: TAmount, debt: TAmount): Promise<string>;
|
|
101
|
+
_leverageBorrowMore(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage: number, estimateGas: boolean): Promise<string | TGas>;
|
|
102
|
+
leverageBorrowMoreEstimateGas(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number): Promise<number>;
|
|
103
|
+
leverageBorrowMore(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number): Promise<string>;
|
|
104
|
+
_leverageRepayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount) => {
|
|
105
|
+
_totalBorrowed: bigint;
|
|
106
|
+
_borrowedFromStateCollateral: bigint;
|
|
107
|
+
_borrowedFromUserCollateral: bigint;
|
|
108
|
+
avgPrice: string;
|
|
109
|
+
};
|
|
110
|
+
leverageRepayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
|
|
111
|
+
totalBorrowed: string;
|
|
112
|
+
borrowedFromStateCollateral: string;
|
|
113
|
+
borrowedFromUserCollateral: string;
|
|
114
|
+
userBorrowed: string;
|
|
115
|
+
avgPrice: string;
|
|
116
|
+
}>;
|
|
117
|
+
leverageRepayPriceImpact(stateCollateral: TAmount, userCollateral: TAmount): Promise<string>;
|
|
118
|
+
leverageRepayIsFull(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string): Promise<boolean>;
|
|
119
|
+
leverageRepayIsAvailable(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string): Promise<boolean>;
|
|
120
|
+
_leverageRepayBands: ((stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address: string) => Promise<[bigint, bigint]>) & memoize.Memoized<(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address: string) => Promise<[bigint, bigint]>>;
|
|
121
|
+
leverageRepayBands(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string): Promise<[number, number]>;
|
|
122
|
+
leverageRepayPrices(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string): Promise<string[]>;
|
|
123
|
+
leverageRepayHealth(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, full?: boolean, address?: string): Promise<string>;
|
|
124
|
+
leverageRepayIsApproved(userCollateral: TAmount, userBorrowed: TAmount): Promise<boolean>;
|
|
125
|
+
leverageRepayApproveEstimateGas(userCollateral: TAmount, userBorrowed: TAmount): Promise<TGas>;
|
|
126
|
+
leverageRepayApprove(userCollateral: TAmount, userBorrowed: TAmount): Promise<string[]>;
|
|
127
|
+
leverageRepayRouteImage(stateCollateral: TAmount, userCollateral: TAmount): Promise<string>;
|
|
128
|
+
_leverageRepay(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage: number, estimateGas: boolean): Promise<string | TGas>;
|
|
129
|
+
leverageRepayEstimateGas(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number): Promise<number>;
|
|
130
|
+
leverageRepay(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number): Promise<string>;
|
|
131
|
+
}
|