@curvefi/llamalend-api 2.0.1 → 2.0.2
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/lib/lendMarkets/LendMarketTemplate.js +2 -0
- package/lib/lendMarkets/interfaces/v1/leverageV1.d.ts +2 -0
- package/lib/lendMarkets/interfaces/v2/leverageV2.d.ts +2 -0
- package/lib/lendMarkets/modules/common/leverageZapV1Base.d.ts +2 -0
- package/lib/lendMarkets/modules/common/leverageZapV1Base.js +22 -0
- package/package.json +1 -1
- package/src/lendMarkets/LendMarketTemplate.ts +2 -0
- package/src/lendMarkets/interfaces/v1/leverageV1.ts +2 -0
- package/src/lendMarkets/interfaces/v2/leverageV2.ts +2 -0
- package/src/lendMarkets/modules/common/leverageZapV1Base.ts +28 -0
|
@@ -251,6 +251,7 @@ export class LendMarketTemplate {
|
|
|
251
251
|
borrowMoreApprove: leverageZapV1.leverageCreateLoanApprove.bind(leverageZapV1),
|
|
252
252
|
borrowMoreRouteImage: leverageZapV1.leverageBorrowMoreRouteImage.bind(leverageZapV1),
|
|
253
253
|
borrowMore: leverageZapV1.leverageBorrowMore.bind(leverageZapV1),
|
|
254
|
+
borrowMoreFutureLeverage: leverageZapV1.leverageBorrowMoreFutureLeverage.bind(leverageZapV1),
|
|
254
255
|
repayExpectedBorrowed: leverageZapV1.leverageRepayExpectedBorrowed.bind(leverageZapV1),
|
|
255
256
|
repayPriceImpact: leverageZapV1.leverageRepayPriceImpact.bind(leverageZapV1),
|
|
256
257
|
repayIsFull: leverageZapV1.leverageRepayIsFull.bind(leverageZapV1),
|
|
@@ -262,6 +263,7 @@ export class LendMarketTemplate {
|
|
|
262
263
|
repayApprove: leverageZapV1.leverageRepayApprove.bind(leverageZapV1),
|
|
263
264
|
repayRouteImage: leverageZapV1.leverageRepayRouteImage.bind(leverageZapV1),
|
|
264
265
|
repay: leverageZapV1.leverageRepay.bind(leverageZapV1),
|
|
266
|
+
repayFutureLeverage: leverageZapV1.leverageRepayFutureLeverage.bind(leverageZapV1),
|
|
265
267
|
estimateGas: {
|
|
266
268
|
createLoanApprove: leverageZapV1.leverageCreateLoanApproveEstimateGas.bind(leverageZapV1),
|
|
267
269
|
createLoan: leverageZapV1.leverageCreateLoanEstimateGas.bind(leverageZapV1),
|
|
@@ -62,6 +62,7 @@ export interface ILeverageV1 {
|
|
|
62
62
|
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
63
63
|
borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
64
64
|
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
|
|
65
|
+
borrowMoreFutureLeverage: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
65
66
|
repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
|
|
66
67
|
totalBorrowed: string;
|
|
67
68
|
borrowedFromStateCollateral: string;
|
|
@@ -79,6 +80,7 @@ export interface ILeverageV1 {
|
|
|
79
80
|
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
80
81
|
repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
81
82
|
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
|
|
83
|
+
repayFutureLeverage: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
82
84
|
estimateGas: {
|
|
83
85
|
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
84
86
|
createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
|
|
@@ -62,6 +62,7 @@ export interface ILeverageV2 {
|
|
|
62
62
|
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
63
63
|
borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
64
64
|
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
|
|
65
|
+
borrowMoreFutureLeverage: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
65
66
|
repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
|
|
66
67
|
totalBorrowed: string;
|
|
67
68
|
borrowedFromStateCollateral: string;
|
|
@@ -79,6 +80,7 @@ export interface ILeverageV2 {
|
|
|
79
80
|
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
80
81
|
repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
81
82
|
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
|
|
83
|
+
repayFutureLeverage: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
82
84
|
estimateGas: {
|
|
83
85
|
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
84
86
|
createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
|
|
@@ -93,6 +93,7 @@ export declare class LeverageZapV1BaseModule {
|
|
|
93
93
|
private _leverageBorrowMore;
|
|
94
94
|
leverageBorrowMoreEstimateGas(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number): Promise<number>;
|
|
95
95
|
leverageBorrowMore(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number): Promise<string>;
|
|
96
|
+
leverageBorrowMoreFutureLeverage(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress?: string, slippage?: number): Promise<string>;
|
|
96
97
|
private _leverageRepayExpectedBorrowed;
|
|
97
98
|
leverageRepayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
|
|
98
99
|
totalBorrowed: string;
|
|
@@ -115,4 +116,5 @@ export declare class LeverageZapV1BaseModule {
|
|
|
115
116
|
private _leverageRepay;
|
|
116
117
|
leverageRepayEstimateGas(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number): Promise<number>;
|
|
117
118
|
leverageRepay(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number): Promise<string>;
|
|
119
|
+
leverageRepayFutureLeverage(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress?: string): Promise<string>;
|
|
118
120
|
}
|
|
@@ -626,6 +626,17 @@ export class LeverageZapV1BaseModule {
|
|
|
626
626
|
return yield this._leverageBorrowMore(userCollateral, userBorrowed, debt, slippage, false);
|
|
627
627
|
});
|
|
628
628
|
}
|
|
629
|
+
leverageBorrowMoreFutureLeverage(userCollateral_1, userBorrowed_1, debt_1) {
|
|
630
|
+
return __awaiter(this, arguments, void 0, function* (userCollateral, userBorrowed, debt, userAddress = '', slippage = 0.1) {
|
|
631
|
+
userAddress = _getAddress.call(this.llamalend, userAddress);
|
|
632
|
+
this._checkLeverageZap();
|
|
633
|
+
const { stateCollateral, totalDepositFromUser } = yield this.market.userPosition.getCurrentLeverageParams(userAddress);
|
|
634
|
+
const expected = yield this.leverageBorrowMoreExpectedCollateral(userCollateral, userBorrowed, debt, slippage, userAddress);
|
|
635
|
+
const futureCollateralState = BN(stateCollateral).plus(expected.totalCollateral);
|
|
636
|
+
const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral).plus(expected.collateralFromUserBorrowed);
|
|
637
|
+
return futureCollateralState.div(futureTotalDepositFromUserPrecise).toString();
|
|
638
|
+
});
|
|
639
|
+
}
|
|
629
640
|
leverageRepayPriceImpact(stateCollateral, userCollateral) {
|
|
630
641
|
return __awaiter(this, void 0, void 0, function* () {
|
|
631
642
|
this._checkLeverageZap();
|
|
@@ -767,4 +778,15 @@ export class LeverageZapV1BaseModule {
|
|
|
767
778
|
return yield this._leverageRepay(stateCollateral, userCollateral, userBorrowed, slippage, false);
|
|
768
779
|
});
|
|
769
780
|
}
|
|
781
|
+
leverageRepayFutureLeverage(stateCollateral_1, userCollateral_1, userBorrowed_1) {
|
|
782
|
+
return __awaiter(this, arguments, void 0, function* (stateCollateral, userCollateral, userBorrowed, userAddress = '') {
|
|
783
|
+
userAddress = _getAddress.call(this.llamalend, userAddress);
|
|
784
|
+
this._checkLeverageZap();
|
|
785
|
+
const { stateCollateral: currentStateCollateral, totalDepositFromUser } = yield this.market.userPosition.getCurrentLeverageParams(userAddress);
|
|
786
|
+
const collateralFromUserBorrowed = yield this.market.amm.swapExpected(0, 1, userBorrowed);
|
|
787
|
+
const futureCollateralState = BN(currentStateCollateral).minus(stateCollateral);
|
|
788
|
+
const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral).plus(collateralFromUserBorrowed);
|
|
789
|
+
return futureCollateralState.div(futureTotalDepositFromUserPrecise).toString();
|
|
790
|
+
});
|
|
791
|
+
}
|
|
770
792
|
}
|
package/package.json
CHANGED
|
@@ -364,6 +364,7 @@ export class LendMarketTemplate {
|
|
|
364
364
|
borrowMoreApprove: leverageZapV1.leverageCreateLoanApprove.bind(leverageZapV1),
|
|
365
365
|
borrowMoreRouteImage: leverageZapV1.leverageBorrowMoreRouteImage.bind(leverageZapV1),
|
|
366
366
|
borrowMore: leverageZapV1.leverageBorrowMore.bind(leverageZapV1),
|
|
367
|
+
borrowMoreFutureLeverage: leverageZapV1.leverageBorrowMoreFutureLeverage.bind(leverageZapV1),
|
|
367
368
|
|
|
368
369
|
repayExpectedBorrowed: leverageZapV1.leverageRepayExpectedBorrowed.bind(leverageZapV1),
|
|
369
370
|
repayPriceImpact: leverageZapV1.leverageRepayPriceImpact.bind(leverageZapV1),
|
|
@@ -376,6 +377,7 @@ export class LendMarketTemplate {
|
|
|
376
377
|
repayApprove: leverageZapV1.leverageRepayApprove.bind(leverageZapV1),
|
|
377
378
|
repayRouteImage: leverageZapV1.leverageRepayRouteImage.bind(leverageZapV1),
|
|
378
379
|
repay: leverageZapV1.leverageRepay.bind(leverageZapV1),
|
|
380
|
+
repayFutureLeverage: leverageZapV1.leverageRepayFutureLeverage.bind(leverageZapV1),
|
|
379
381
|
|
|
380
382
|
estimateGas: {
|
|
381
383
|
createLoanApprove: leverageZapV1.leverageCreateLoanApproveEstimateGas.bind(leverageZapV1),
|
|
@@ -57,6 +57,7 @@ export interface ILeverageV1 {
|
|
|
57
57
|
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
58
58
|
borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
59
59
|
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
|
|
60
|
+
borrowMoreFutureLeverage: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
60
61
|
|
|
61
62
|
repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) =>
|
|
62
63
|
Promise<{ totalBorrowed: string, borrowedFromStateCollateral: string, borrowedFromUserCollateral: string, userBorrowed: string, avgPrice: string }>;
|
|
@@ -70,6 +71,7 @@ export interface ILeverageV1 {
|
|
|
70
71
|
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
71
72
|
repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
72
73
|
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
|
|
74
|
+
repayFutureLeverage: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress?: string, slippage?: number) => Promise<string>,
|
|
73
75
|
|
|
74
76
|
estimateGas: {
|
|
75
77
|
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
@@ -57,6 +57,7 @@ export interface ILeverageV2 {
|
|
|
57
57
|
borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
58
58
|
borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
|
|
59
59
|
borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
|
|
60
|
+
borrowMoreFutureLeverage: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress?: string, slippage?: number) => Promise<string>;
|
|
60
61
|
|
|
61
62
|
repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) =>
|
|
62
63
|
Promise<{ totalBorrowed: string, borrowedFromStateCollateral: string, borrowedFromUserCollateral: string, userBorrowed: string, avgPrice: string }>;
|
|
@@ -70,6 +71,7 @@ export interface ILeverageV2 {
|
|
|
70
71
|
repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
|
|
71
72
|
repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
|
|
72
73
|
repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
|
|
74
|
+
repayFutureLeverage: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress?: string, slippage?: number) => Promise<string>,
|
|
73
75
|
|
|
74
76
|
estimateGas: {
|
|
75
77
|
createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
|
|
@@ -687,6 +687,20 @@ export class LeverageZapV1BaseModule {
|
|
|
687
687
|
return await this._leverageBorrowMore(userCollateral, userBorrowed, debt, slippage, false) as string;
|
|
688
688
|
}
|
|
689
689
|
|
|
690
|
+
public async leverageBorrowMoreFutureLeverage(userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, userAddress = '', slippage = 0.1): Promise<string> {
|
|
691
|
+
userAddress = _getAddress.call(this.llamalend, userAddress);
|
|
692
|
+
this._checkLeverageZap();
|
|
693
|
+
|
|
694
|
+
const { stateCollateral, totalDepositFromUser } = await this.market.userPosition.getCurrentLeverageParams(userAddress);
|
|
695
|
+
|
|
696
|
+
const expected = await this.leverageBorrowMoreExpectedCollateral(userCollateral, userBorrowed, debt, slippage, userAddress);
|
|
697
|
+
|
|
698
|
+
const futureCollateralState = BN(stateCollateral).plus(expected.totalCollateral);
|
|
699
|
+
const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral).plus(expected.collateralFromUserBorrowed);
|
|
700
|
+
|
|
701
|
+
return futureCollateralState.div(futureTotalDepositFromUserPrecise).toString();
|
|
702
|
+
}
|
|
703
|
+
|
|
690
704
|
// ---------------- LEVERAGE REPAY ----------------
|
|
691
705
|
|
|
692
706
|
private _leverageRepayExpectedBorrowed = (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount):
|
|
@@ -909,4 +923,18 @@ export class LeverageZapV1BaseModule {
|
|
|
909
923
|
await this.leverageRepayApprove(userCollateral, userBorrowed);
|
|
910
924
|
return await this._leverageRepay(stateCollateral, userCollateral, userBorrowed, slippage, false) as string;
|
|
911
925
|
}
|
|
926
|
+
|
|
927
|
+
public async leverageRepayFutureLeverage(stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, userAddress = ''): Promise<string> {
|
|
928
|
+
userAddress = _getAddress.call(this.llamalend, userAddress);
|
|
929
|
+
this._checkLeverageZap();
|
|
930
|
+
|
|
931
|
+
const { stateCollateral: currentStateCollateral, totalDepositFromUser } = await this.market.userPosition.getCurrentLeverageParams(userAddress);
|
|
932
|
+
|
|
933
|
+
const collateralFromUserBorrowed = await this.market.amm.swapExpected(0, 1, userBorrowed);
|
|
934
|
+
|
|
935
|
+
const futureCollateralState = BN(currentStateCollateral).minus(stateCollateral);
|
|
936
|
+
const futureTotalDepositFromUserPrecise = BN(totalDepositFromUser).plus(userCollateral).plus(collateralFromUserBorrowed);
|
|
937
|
+
|
|
938
|
+
return futureCollateralState.div(futureTotalDepositFromUserPrecise).toString();
|
|
939
|
+
}
|
|
912
940
|
}
|