@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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/llamalend-api",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "JavaScript library for Curve Lending",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",
@@ -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
  }